ここからは、ECサイトの開発を例にしてソフトウェア開発の一連の流れを整理します。また、犬小屋を作るプロセスと比較してみるのもよいでしょう。
要求仕様フェーズでは、顧客が求める「ECサイト像」について具体的にヒアリングします。例えば、「インターネットで通販を始めたい」「海外の顧客にも販路を広げたい」「VIP会員向けのサービスを始めたい」といった要望をまとめます。ECサイトというありふれたサービスでも、顧客によって要望は大きく異なります。「動物園にいる動物」とひとまとめにしても、個々の動物を見ると、「体重が6トンを越える象」「鳥なのに飛べないダチョウ」「身長が5mを超えるキリン」「蟻しか食べないアリクイ」など、全てが別物です。
顧客の要望をまとめたものを「要件定義書」や「要求仕様書」という文書にまとめます。
設計フェーズでは、作成した仕様を実現するための検討作業を行います。例えば、「どのようなデータが必要か(データの設計)」「どのような処理にするか(アルゴリズムや処理方式の設計)」「どんな画面が必要か(ユーザーインタフェースの設計)」を考えます。
上記を、概要設計書、データ定義書、詳細設計書、画面設計書などにまとめます。
実装フェーズでは、ここまでで作成した要求仕様、設計書などに従って実装(プログラミング、コーディング)をします。この工程では、仕様書、設計書の不整合に悩みながら作ることになり、大変な作業ですが、作ったものが動作する達成感は何にも変えられません。
上記の3つのフェーズで作る「要求仕様書」「設計書」「コーディング」は、対象者が異なりますが、全く同じものです(図1)。
テストフェーズでは、作成したプログラムが仕様書/設計書通りに動作することを確認します。一定規模のソフトには必ずミスがあります。このミスを、「バグ」と呼びますね。バグをテストによって徹底的につぶします。「現実の自分と向かい合うフェーズ」であり、「コーディングは天国、テストは地獄」と嘆く開発者も少なくありません。
昨今のソフトウェアは、製品としての第1回目のリリース後にもアップデートなどで細かな機能追加、バグ修正をすることが一般的ですね。例えば、「サイトの応答性能の高速化」「特別な会員向けに割引機能を入れたい」「新規顧客に向けてキャンペーンをやりたい」などのさまざまな修正を行います。
以上がソフトウェア開発の全体的な流れです。新シリーズでは、上記の全フェーズを取り上げ、具体的な成果物を自分で作りながら、ソフトウェア開発の全体像を把握することを目的にしています。
今回から、入門者を対象とした新シリーズとして、「イチから全部作ってみよう」を始めます。まず、イントロダクションとしてソフトウェア開発の大まかな流れを説明しました。
ソフトウェア開発の具体的な手順を知ることで、実務のイメージを把握し、実践的なエンジニアになっていただければと思います。
前々シリーズ「ソフトウェア技術者のためのバグ百科事典」を大幅に加筆、修正した山浦恒央先生の書籍「ソフトウェア技術者のためのバグ検出テキスト」が日科技連出版から好評発売中です。連載でも取り上げた、「要求仕様書のバグ」「実装抜けのバグ」「テスト業務のバグ」など、バグを36種類に分類して解説しています。囲碁や将棋であれば、「相掛かり」「矢倉」「四間飛車」「藤井システム」のような戦法を網羅した内容になっています。
前著「ソフトウェア技術者のためのバグ検出ドリル」(2019年11月刊行)も好評発売中です。実際にバグを含む要求仕様書、設計書、コーディング、デバッグ、保守を具体的に取り上げ、練習問題として31問を出題しました。同書は、囲碁や将棋における「次の一手」的な問題であり、ピンポイントの場面を取り上げ、実践力を鍛えることを目的としています。
両書とも興味のある方は、Amazon.comや書店でチェックしてください!
東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)
Copyright © ITmedia, Inc. All Rights Reserved.