システム開発の工程には、要件定義で開発するシステムの要件を固めた後、基本設計、詳細設計へと進んでいきます。ここで設計が終わったらすぐにプログラム開発に進むのではなく、プログラム開発をスムーズに行うために、プログラム設計を行います。プログラム設計で作成されるプログラム設計書は、プログラムを開発するのに欠かせないものです。
では、プログラム設計はどういったことを行い、プログラム設計書にはどのような内容のものを記載するのでしょうか。本記事ではプログラムの品質を高めるために大事なプログラム設計のコツを解説します。
プログラム設計とは?
プログラム設計とは、これから作るプログラムの内容を整理する工程であり、プログラム設計書としてまとめます。この設計書を見れば、誰でもそのプログラムが作れるレベルまで、詳細に落とし込む必要があります。
「設計書を見れば誰でもそのプログラムが作れるレベル」ですので、設計書に記載すべき内容が数多くあります。開発するプログラムの目的、入力データおよび出力データ、作成する関数や変数などの定義情報、具体的な処理内容、必要なライブラリなどを整理し、記載します。
プログラム設計のメリットは、あらかじめ処理内容を整理しておくことで、スムーズなプログラミング作業ができる点です。完成後のプログラムをイメージでき、無駄なコードの作成やエラー発生を防止にも繋がります。
また、作成したプログラム設計書は開発したシステムがリリースされた後も、運用・保守の過程でプログラムの内容を理解する際に役立ちます。
プログラム設計の手順
それでは、プログラム設計を行うための手順をご紹介します。「プログラム設計は何をしたらいいかわからない」という方は、参考にしてみてください。
手順1.作成するプログラムの目的を明確にする
最初に、そのプログラムが果たすべき目的を明確にします。プログラムの目的は、前工程の成果物である要件定義書、基本設計書、詳細設計書から確認します。目的を明確にすることで、その目的を達成するために必要なデータ、処理内容が明らかになっていきます。これらを整理することがプログラム設計の第一歩です。
手順2.データと処理を分けて考える
プログラムの目的を明確にしたら、実際に実装する処理について考えます。このとき、プログラムが行うことは目的にあわせてデータを加工することであるため、対象のデータを中心に考えましょう。
つまり、更新対象(入力データ)、最終結果(出力データ)はなにで、加工するのにどのような変数が必要なのか。そのデータの単位や関連性、値、属性などを含めて整理していきます。
必要なデータが揃ったら、目的に合わせてどのような処理を行うか考えます。繰り返し処理を行うのか、分岐が必要か、といった点です。
手順3.機能ごとに分割する
プログラムの品質を高めるポイントとして、1つの関数や機能に大きな処理や複雑な処理をいれないよう、できるかぎり分割していくことです。こうすることで、1つ1つのプログラムがシンプルなものとなり、理解しやすくなります。
逆に大きな処理や複雑な処理をいれると理解が難しくなるだけでなく、不具合が見つかったときの改修も困難です。たとえば、1つ修正すると、複数の処理に影響を及ぼす場合が出てしまいます。
そのため、1つの処理で実現する内容もシンプルにすることで、プログラムが分かりやすくなり品質も高まります。また、プログラム1つ1つに独立性を持たせると、変更が出た場合に他のプログラムへの影響を小さくできます。
手順4.目的のプログラムが作成できるか設計書上で確認する
目的にあわせたデータや処理内容を考え、機能ごとに分割して整理できたら、それを見ながら実際にプログラムが作成できるか確認します。作成されたプログラム設計書をみて、何も悩むことなくプログラミングできるような内容であれば、OKです。
プログラム設計で使う表記法
プログラムの処理内容をわかりやすく伝えるため、プログラム設計書ではさまざまな図を多用します。ここでは、代表的な表記法をご紹介します。
ユースケース図
ユースケース図は、ユーザや外部システムなどの要求に対するシステムの振る舞いを表す図です。以下は、レンタルシステムを表現したユースケース図です。
利用者が商品をレンタルするために「会員登録」「商品貸出」「商品返却」の3つの処理をシステムで行うことを示しています。また、事業者からも「商品登録」「貸出状況確認」といった処理を行います。
このように、ユーザや外部システムからのシステムに対する要件の定義や、説明するために利用します。
状態遷移図
状態遷移図は、状態遷移を図で表現したものです。たとえば、ストップウォッチの状態を状態遷移図で表すと以下のようになります。ストップウォッチは0を表示して計測準備中の状態から始まり、STARTボタンを押すことで計測が開始されます。計測中にSTOPボタンを押すと一時停止しますが、一時停止状態から再びSTARTボタンを押すと、状態は計測中となり計測が再開されます。一時停止の状態でRESETボタンを押すと、0を表示し計測準備中に戻ります。
ストップウォッチ以外にも、扇風機や冷蔵庫といった家電製品だけでなくシステムも含め、ボタンの押下やデータの入力によって表示される画面の内容や入力受付など、プログラムの状態が多彩に変化します。そのような状態遷移をわかりやすく表現したのが状態遷移図です。
アクティビティ図
アクティビティ図は、処理の開始から終了までの一連の流れを図で表したものです。アクティビティ図により、複雑な処理でも理解がしやすくなり、余計な処理を作成することがなくなります。また、要件定義書や設計書をもとにアクティビティ図を作成することで、要件の理解度を確認することにも役立ちます。
クラス図
クラス図は、システムを構成するクラスの属性やクラス間の関係、システム全体の構造を静的に表した図です。主にJavaやC++などオブジェクト指向プログラミング言語でのプログラミング設計する際に使用されます。
クラスごとに属性と操作(メソッド)を記載していき、またクラスごとの関連性も表します。これにより、関係するデータやそのクラスが実行する関数などが可視化され、システム全体がわかりやすくなります。
このほかにも、プログラム設計で使用される表記法はたくさんありますが、すべての表記法を使用することが必須ではありません。あくまで作成するプログラムがどのようなものかを理解することが目的であるため、必要に応じて記載しましょう。
まとめ
本記事では、プログラム設計のコツについて解説しました。システム開発の現場では、開発者がプロジェクトから抜けてしまい、開発されたプログラムを誰も理解できず途方にくれてしまう、ということがよくあります。そうならないためにも、わかりやすいプログラム設計を行い、成果物としてプログラム設計書を残すことはとても大切です。
プログラム設計を行うことで、プログラミングが効率力でき品質を高めるだけでなく、システム運用後のメンテナンスもしやすくなるという大きなメリットがあります。
システムエンジニア、プログラマーを目指す方は、今回の内容を理解してプログラム設計を行い、品質の高いプログラムの開発を目指しましょう。
- カテゴリ:
- キーワード: