背景
昨年から会社でWeb開発の手法を学んできましたが、開発技術面がある程度理解できてきたので、設計面での勉強を開始しました(開始させられました)。Udemy「【入門】システム要件定義と基本設計」を視聴して、理解したことをアウトプットしていこうと思います。
Udemyの講義はこちら
https://www.udemy.com/course/digisaku_requirements_definition_and_system_design/
システム開発全体の流れ
会社や状況、チームによって流れは変わるかもしれませんが、大まかに以下の流れで進められます。
企画構想→要件定義→設計→実装→テスト→リリース→保守
システム開発と聞いてイメージしやすいプログラミングなどの開発作業は全体の3割程度であり、残りの5割以上は概要設計、基本設計などの設計部分(上流工程)に費やされることが多いです。
つまり、システム開発においては設計作業がとても重要なフェーズになります。設計作業ではユーザーからの要望をヒアリングなどで集め、それをシステムに反映させるための詳細な仕様の策定や、システムの機能や要件の明確化などが含まれます。
設計作業がしっかりと行われないと、「こんな機能いらない」「欲しかった機能がない」などのトラブルにつながる可能性があります。
システム開発の関係者
大きくビジネス側とエンジニア側に分けられ、ビジネス側にはユーザーやPM、エンジニア側にはSEやPGが含まれます。
PMとSEが起点となり、リーダーとしてチームの舵取りを行います。
PMはユーザーからの要望を受け止め、それをシステムに反映させるための橋渡し役です。ユーザーからの要望を聞く→SEに伝えるという役割を担うため、正確に情報を伝えられないとユーザーが本当に求めているシステムを作り上げることができません。
SEやPGはシステムの設計や開発を担当するエンジニアです。ビジネス側の要望を的確に受け止め、それを機能として反映させることがエンジニア側の仕事です。
システム開発が難しくなる要因
最も重要なのはPMの役割です。関係者の部分にも書きましたが、要望をSEにまる投げするだけでユーザーが本当に欲しいものがSEに伝わっていなかったり、PMの勝手な思い込みでSEに伝えたりするとシステム開発が劇的に難しくなります。
また、PM側の思い込みだけでなくエンジニア側も勝手な仕様変更や経験則から勝手に仕様を決めるなど暴走することも注意が必要となります。
システム開発が難航する要因は技術要素よりもその前段階に原因があることが多いです。目的やゴールを明確にし、目的と手段を分けてとらえ、改善目的を定義してから設計を行うのが望ましいです。
まとめ
システム開発においては企画の時点で失敗する可能性が高いため、コミュニケーションを密にとることが大切です。