社内SEになりました

社内SEは本当に楽なのか?ユーザー系IT企業とSierとの違いは?これからIT企業への就職や転職を考えている人むけに、ユーザー系IT企業から社内SEに40代で転職した筆者がITエンジニアの仕事内容やプロジェクト管理のノウハウ等をご紹介。

開発工程(詳細設計)

開発工程の中の詳細設計の説明です。

1.基本設計との違い

基本設計は要件を実現するための設計で、詳細設計は実際にプログラミングするための設計です。

基本設計が終わると、機能ごとにどのようなビジネスロジックがあって、どのようなテーブルにアクセスするかが設計されます。この機能のカタマリが要件を実現することになります。

詳細設計では、この基本設計書をインプットとして実際にプログラミングする際に必要な情報を設計します。基本設計書はプログラミングスキルが無い人でも理解することができますが、詳細設計書はプログラミングスキルがある人を前提としたドキュメントになります。

2.詳細設計でやること

詳細設計でやることは、プロジェクトによってかなり差があります。

・テーブルの物理設計
・プログラム一覧
・プログラム仕様書(JAVAだとメソッド定義書等)

といったドキュメントを作ります。基本設計書で定義した機能は、一つのプログラムでは実現できないので、まずは何個のプログラムで実現するかプログラムの単位を設計します。このプログラムもJavaだったりhtmlだったりJavascriptだったり、種類もいろいろあります。また該当の機能だけで使用するプログラムもあれば、複数の機能で共通で使用するプログラムもあります。それらを一覧化しますが、例えばJAVAフルスクラッチの場合にはプログラム(ソースファイル)の数が何千、何万とあるので、かなりの大仕事です。

個々のプログラムの役割が決まると、今度はプログラムの中身の設計です。いわゆるプログラム仕様書ですが、これはプログラミング言語を日本語で書いたものです。そのためドキュメントの量は非常に膨大になります。このドキュメントを作るかどうかが、プロジェクトによって差が出ます。

プログラム仕様書を作るケースは、大規模システムで、基本設計と詳細設計で担当する会社が異なる、あるいは詳細設計と製造で担当する会社が異なるといったケースです。逆に規模が大きくなく基本設計から製造まで1社で対応する場合には、プログラム仕様書は作りません。

また開発時にプログラム仕様書を作ったとしても、ほとんどの場合には保守フェーズに入るとプログラム仕様書の更新はやめてしまいます。エンハンスの場合、プログラム仕様書を見ることはなく、直接ソースファイルを見て修正してしまうため、プログラム仕様書の修正が必要ないためです。

3.スクラッチ開発とパッケージ利用の違い

クラッチ開発とパッケージ利用では、詳細設計の進め方が異なります。

そもそもパッケージ利用の場合には、基本設計と詳細設計、製造の工程を分けないことが多いです。(パッケージのカスタマイズやアドオンは、ここではスクラッチ開発の扱いにしています)

パッケージ利用の場合、要件定義が終わった後の作業をインプリと呼びます。パッケージには利用者に合わせて機能を変えるための、様々なパラメーターが用意されています。このパラメータを一つ一つ設定していく作業をインプリと呼びます。

パッケージは様々な利用者を想定しているため、自分たちに必要の無い機能が多数あります。それらの機能の要不要をパラメータで制御することができます。例えばワークフローのパッケージであれば、承認者へのメール通知の有無、代理承認の有無、申請後の申請内容の変更可否などをパラメータで制御できます。

パッケージには機能の要不要だけでなく、非常に様々な大量のパラメータが用意されているので、要件定義が終わった後は、要件を実現するようにそれら一つ一つを設定していきます。多くのパッケージでは、パッケージに設定した内容をドキュメントとして出力する機能もあるので、「パラメーターを設定」→「動作確認」→「パラメータシートを出力」といった流れで作業をしていくことになります。

【振り返り】

今回は詳細設計の説明でした。次回は製造・単体テストの説明をしていきたいと思います。

①戦略・企画
②要求定義
③要件定義
④基本設計
⑤詳細設計
⑥製造
単体テスト
結合テスト
⑨総合テスト
⑩受入テスト