プログラムを作るうえでシステム設計は要中の要です。
設計がきちんとできていなければ、プログラムはうまく作動しません。バグの発生も危惧されます。リスク回避のためには適切な設計が大事なのです。
今回はシステム設計とは、またその設計方法についてご紹介します。
システム設計とは?その流れ
システム設計とは、コンピュータのシステムで業務をどう便利にできるかを考え、実現できる方法を計画することです。
厳密にはシステムの目的や要件を満たすために、具体的に何を使ってどのように実現するかを設計していきます。
時には目的とコンピュータシステムが合致しない場合もあり、目的を満たす代替技術を提案し設計を見直す必要もあります。
そして設計を行うのは主にシステムエンジニアの役割です。
最近では大規模システムよりも小規模システムでリリースして、改修・機能追加をしていく方法が主流です。チームも少数精鋭で仕上げることが多いでしょう。
そのためシステムエンジニアとプログラマーが区別されず、どちらも出来るハイブリッドな人材でが求められるケースが多々あります。
システム設計方法
システム設計には種類がありますが一般的に昔から行われている手法がウォーターフォール型の開発手法です。
各フェーズがあります。
1.要件定義
2.外部設計・内部設計
3.コーディング
4.テスト
5.運用
大規模開発に使われることが多く開発期間は数か月から数年かかるでしょう。
ただ小規模開発を繰り返すという手法が主となっている現在では、ウォーターフォール型の開発は不向きです。
小規模開発にはアジャイルソフトウェア開発が使われます。
その特徴は、1週間~数週間という短期間において小規模な機能を追加してリリースするということを繰り返します。実装機能を小規模にすることでバグなどのリスクを小規模に抑えることができるルメリットがあります。
システム設計の要、リスクを想定できているか?
システム設計において大切なことは要件を満たすシステムが実装できているかということです。
上流工程といわれる要件定義の段階で、隠れたリスクをきっちり見つけて、対処方法を設計しておかなければなりません。時間が経過するごとに影響が大きくなるからです。
不要なものを作ってしまった場合、納得してお金を払ってくれる企業はありません。
ウォーターフォール型の開発手法では、設計段階でのミスがあとで見つかるとさかのぼって修正を行う必要があります。
その場合はプログラムのバグでは済まされないこともあり、設計してきたことがすべて無駄になることも考えられます。
また、設計を行うときにはプログラム知識以上に業務知識が必要です。
業務改善のためにシステム開発を行うことが目的なのに、プログラムの仕様ばかりにとらわれてしまうと無駄を生みだしてしまうことになりかねません。
システムが大きくなればなるほど、慎重に設計をすることが大切であり、業務知識とプログラミングを紐づける知識にバランスも必要になってきます。
システム設計をするのは誰?
設計をするのはシステムエンジニアの仕事ですが、業務知識を豊富に持った人が行うべきです。
そのため使用するプログラム言語を知っていることが望まれます。
では、システムエンジニアが業務知識を知らず、プログラミングがわからないとどのようになるでしょうか?
ダメなシステムを作ってしまう可能性が高くなります。
目的を見失ってしまうからです。
どんな問題を解決するシステムなのかを理解できないままシステムを作るのは、目隠しをして歩くようなものです。
また、問題点が分からないため提案をすることができずクライアントから不信感を持たれるケースもあるでしょう。
自分でわからないので、プログラマーの言いなりになってしまうこともあります。
システム設計はしっかり経験を積んだ、知識の幅のひろいエンジニアにまかせるのが必然なのです。
システム設計の必要性・まとめ
システムエンジニアは企業によって求められるスキルや業務がちがいます。
求人を見るとプログラミングの知識があまりないという条件で、社内システムエンジニアを募集している企業が多々あります。
これはどちらかというと営業よりの業務で、システム設計は他のエンジニアがするケースが多いでしょう。
方向性が全然ちがってくるので、募集に応募する際にはしっかり業務内容を確認した方がいいですね。