就転活のコツ・秘訣

【IT未経験40代】SE初心者から抜け出すもう一歩!【詳細設計】

2020年3月14日

オブジェクト指向の利点の1つに再利用しやすいシステムやプログラムを開発できるという利点があげられます。

この利点がシステム開発において「Java」が最も適した言語と言われてきた理由です。

昨今は「PHP」や「Ruby」等、未経験の方でも比較的覚えやすい言語が登場しています。

しかし私の経験上、現実は何処の開発案件も「Java」一択のように思います。

過去に請け負ってきたシステム開発は、100%「Java言語」での開発を指定されてきました。

ただ一度だけ「C#」での開発と競合したことがありますが、理由は簡単で、お偉いさんの政治的な大人の理由でした。

賛否両論あるとは思いますが、上記の理由から未経験の方にお勧めする言語は、やはり「Java言語」です。
※ あくまでも需要からオススメしています。習得は決して楽ではありません!

SE初心者から抜け出すもう一歩!

前回、40代未経験からのIT転職に必要なスキルとして「基本設計」についての記事を掲載してきました。

基本設計フェーズ」を熟せる力が付いたと認知されれば、次は「詳細設計フェーズ」まで求められることになるでしょう。

平然と作業を熟す熟練システムエンジニア(SE)も皆失敗を積み重ねて今があります。

大きな声でいいたくはありませんが、IT業界は決して楽ではありません。

企業は慈善事業ではないため、出来る限り速く一人前のシステムエンジニアとして、独り立ちしてほしいと願っています。

現状、システムエンジニア(SE)クラスの人材を同じプロジェクト内に複数人抱えるほどの余裕など、何処の企業にもありません。

基本設計フェーズを熟した後は、経験豊富なシステムエンジニア」として売り込まれて行くことでしょう。

当然のことながら、次のプロジェクトへはベテラン「システムエンジニア」としてアサインされていくことになります。

そこには、今までとは勝手の異なる知識が要求されます。

苦しいのはゴールが近い証拠

下記がシステムエンジニアに求められる作業となります。

  • システムエンジニアの実作業フェーズ
    • 要求分析
      クライアントが解決したい課題などをヒアリングして取りまとめる作業となります。
    • 要件定義
      クライアントはITについてはよく解らないことが多く、システムエンジニアがどのような技術で問題解決できるか取りまとめます。
    • 基本設計 or 外部設計
      本フェーズは基本設計や外部設計とも呼ばれ、一般的に外部設計までが上流工程に含まれます。
      基本設計書、外部設計書 、レビュー報告書 、システムテスト計画書 などが成果物となります。
    • 詳細設計 or 内部設計
      詳細設計では基本設計を基に、システム内部の動作や機能、物理データなど、ユーザーから見えにくい詳細な部分の設計を行います。
      詳細設計書、内部設計書、レビュー報告書などが成果物となります。
    • プログラム設計
      昨今では工数削減の影響から、プログラム設計フェーズを行わない現場が増えています。
    • 実装(プログラミング)
      プログラマーの作業
    • テスト
      テスターの作業
    • 納品
    • 運用

次からは「基本設計フェーズ」以外に、上記のフェーズ(青文字)が新たな作業として追加されていきます。

「要求分析」は設計に必要な情報のインプットになります。

つまり、ここで間違えると、最終的な成果物がすべて間違えたアプトプットとして作成されてしまいます。

システムエンジニアの作業はそんな「危険」な作業の積み重ねです。

ですが、このレベルまで来れればあと一息!

苦しいのはゴールが近い証拠」です。

ここを乗り越えてしまえば、一人前の「システムエンジニア」として独り立ちできるようになります。

プログラムにデザインパターンがある様に、システム開発にもパターンがあります。

いくつもいくつも案件を熟していくうちに、どのパターンに当てはまるプロジェクトかが判ってくるようになります。

ここでは、詳細設計書(内部設計書)にはどんな成果物があるのかを見ていきましょう。

詳細設計書(内部設計書)とは?

詳細設計では、プログラマーに渡す詳細な仕様書作成などをおこないます。

ソフトウェアの入力や画面出力、サーバーとのやりとりなどを機能別に細かくわけて、どのような処理でプログラムを動作させるかを具体的に決定します。

また、詳細設計書はプログラミングするプログラマーが理解できるようにわかりやすく、的確に伝える必要があります。

そして、その設計手法によく用いられる記法の一つがUML( Unified Modeling Language )と呼ばれるモデリング手法となります。
すべての現場がUMLを採用している訳ではありません。

注意ポイント


今回は、私が過去に請け負った某派遣エージェント様の人材管理システム(Java)の設計書を例に詳細設計書を説明します。
そのまま、すべてを公開することは出来ないため、かなり端折ってしまう箇所があるかもしれませんがご了承ください。

UML( Unified Modeling Language )

UMLとは、オブジェクト指向のソフトウェア開発において、データ構造や処理の流れなどソフトウェアに関連する様々な設計や仕様を図示するための記法を定めたもの。ソフトウェアのモデリング言語の標準としてとして最も広く普及している。

IT用語辞典

UMLの設計手法についての説明は、それだけで1記事使ってしまうため、個々では割愛します。

クラス一覧

プログラムの作業ボリュームを把握できるものがクラス一覧です。

システムに必要なプログラムが一覧できるだけでなく、制作担当者や進捗状況も記入しておくことで進捗管理表として活用します。

上記画像は、私が過去に受けた案件のクラス一覧です。クライアントに許可取得済み!

それぞれのクラスにクラスIDを付与することで、全体的に一貫した思想でサイトを設計してゆくことが可能になり、メンテナンス性も向上します。

一覧中にある「メソッドID」が各機能ごとに付与されるIDになります。

後述する機能設計は、この「メソッドID」毎に作成していくことになります。

クラス図( Class Diagram )

クラス図とは、ソフトウェアの設計などに用いられるUML規定された図(ダイアグラム)の一つで、システムを構成するクラスと、クラス間の相互の関係を表現する図を指します。

クラス図では、互いに関連する属性や操作を一体的に定義した「クラス」や、クラスを外部から操作する方法だけを定義した「インターフェース」を矩形で示し、それらの間の関係を線で表します。

矩形の内部には対象の性質や状態を表す「属性」を列挙します。

下記のクラス図は、共通で使用する「共通DBアクセス」専用のクラス構成を表現しています。

上記画像は、私が過去に受けた案件のクラス図です。クライアントに許可取得済み!

シーケンス図 ( Sequence Diagram )

シーケンス図とは、ソフトウェアの設計などに用いられるUML(Unified Modeling Language)で規定された図(ダイアグラム)の一つで、要素間の相互作用を時系列で表した図を指します。

シーケンス図では、すべてのオブジェクトの振る舞いを記述することができますが、設計を進める上で必要になるものだけを選択してシーケンス図を記述することをお勧めします。

区画から伸びている点線は、ライフラインと呼ばれているものでオブジェクトが存在する期間を表します。

したがって、時間は上から下へと流れることになります。

ライフライン上にある長方形は、オブジェクトが活性化していることを意味します。

上記画像は、私が過去に受けた案件のシーケンス図です。クライアントに許可取得済み!

実線は、関数呼び出し&同期メッセージを表し、点線は関数呼び出しからの戻りを表しています。

アクティビティ図 ( Activity Diagram )

アクティビティ図とは、ソフトウェアの設計などに用いられるUML(Unified Modeling Language)で規定された図(ダイアグラム)の一つで、業務や処理の実行手順を表した図を指します。

アクティビティ図は、シーケンス図などと同様にオブジェクトのふるまいを表現します。

アクティビティ図は、オブジェクトの振る舞いを記述する他の図とは少し異なり、従来使用されていたフローチャートにオブジェクト指向の考え方を導入したものです。

IPO( 入力=Input、処理=Process、出力=Output )

入力=Input、処理=Process、出力=Outputの頭文字をとってIPOと呼ばれます。

IPOは機能の「Input(入力パラメータ)」⇒「Process(処理)」⇒「Output(出力パラメータ)」の流れを文章で記載して作成します。

上記画像は、私が過去に受けた案件のIPOです。クライアントに許可取得済み!

図だけでは、細かい部分が伝わりにくく、最終的には文章をもって処理の流れを表現していきます。

ですが、昨今の風潮として、このIPOを使う現場は少なくなったように思います。

まとめ

まとめ

以上、簡単に詳細設計で作成する成果物について簡単に説明してきました。

かなり端折ってしまったところもありますが、ここまでに説明してきた内容は、すべてプログラマー側に向けた成果物です。

システム全体の成果物としては、さらに数倍のボリュームになります。

インフラ側には、まったく異なる設計書が存在しますし、セキュリティ側や運用についても同様です。

とはいえ、システムエンジニア(プログラム側)を目指すにあたって、どのような設計書が存在するのかは大まかに理解できたのではないでしょうか。

全行程を通して重要なのは、すべてに対して常に最悪の状態を頭の隅に置いておくことです。

プロジェクトの作業以外も含めてすべてです。

  • ピアスを叱ったら次の日から来なくなってしまった。
  • 追い詰められたエンジニアがトイレにこもって出てこなくなってしまった。
    問題の解決方法が分からずに、うちに閉じこもってしまった感じです
  • 追い詰められたエンジニア(女性)がハサミをもって暴れだした。
    溜まりに溜まった鬱憤が爆発したようです
  • 優秀なプログラマが「痴漢」で捕まり、プロジェクトを抜けてしまった。
    相当ストレスが溜まっていたようです
  • アサインされたメンバーが全員外国人で日本語が話せなかった。

私の環境が特別だったのかもしれませんが、つい最近まで上記は私にとっては日常でした。
最近は減りましたが・・

もっとも、エンジニアは誰であれ、常にストレスを抱えているものです。

360度目を光らせて、おかしいと思ったらすぐにケアしましょう。

40代なら技術以外でも活かせるキャリアは沢山あります。

他には出来ない「尖った才能」を持つシステムエンジニアを目指してください。

よく読まれている記事

1

21世紀の現在、ネット上では掲示板やアンケートフォームと言った一見簡単に見えるサービス機能から、商品カタログ、eコマースなどのスケールの大きなコンテンツまで、様々なダイナミックコンテンツが普及するよう ...

2

テクノロジーの進化により今後10年で50%以上の仕事がなくなると言われています。 それは現在の仕事がプログラムに取って代わられることを意味します。 今後「プログラミング」は「文字」と同様に「一般教養」 ...

3

2019年、出生数は過去最小の86万4千人!推計より2年早く、初めての90万人割れ日本の経済成長(2019年10~12月期の実質GDP)は、年率6.3%減! コロナウィルスとは関係なく急落しています。 ...

4

ITエンジニア転職に必要な知識として一番最初に挙げられるのは「プログラミング」の知識でしょう。 20代、30代であれば確かにそれは正しいと言えます。 しかし、40代、50代を対象にした場合、果たして「 ...

5

ここ数年、メディアなどでフリーランスという言葉を耳する機会が増え、それに比例するようにフリーランスを志す人が急増しています。 テクノロジーの進歩により、個人単位でのロケーションにとらわれないスタイルで ...

6

人口知能や機械学習というキーワードは、IT業界で働く人にとっては馴染みが深くなりつつあります。 これらを駆使するAIエンジニアには高いスキルが要求され、日本だけでなく世界的に見ても不足している状況です ...

-就転活のコツ・秘訣

Copyright© Beエンジニア , 2020 All Rights Reserved.