技術系

【ソフトウェア開発】ソフトウェア開発の2つの手法ご紹介

どうも。ひろです。

皆さんはソフトウェア開発手法についてご存知でしょうか?

ソフトウェア開発の現場はプロジェクトの特性などによって様々な開発手法が用いられています。

開発手法によってプロジェクトの進められ方など変わってきます。

今回は代表的なものから以下の2つをピックアップしてメリット、デメリットをお話ししていきます。

ウォーターフォール開発

アジャイル開発

ちなみに私はアジャイル開発の経験の方が長いです。

ウォーターフォールは学生時代に体験した程度なのでそれを踏まえて読んでいただけると幸いです。

開発工程

開発には工程があります。

プロジェクトによって差はあると思いますが以下の手順で開発していきます。

  1. 要件定義
  2. 外部設計
  3. 内部設計
  4. 実装
  5. テスト
  6. 運用

この6工程を上からやっているということを頭の隅に置いておいてください。

ウォーターフォール開発

大規模開発でよく採用されている開発手法です。

上記の開発工程で、前工程が完了していないと次工程に進みません。

その結果成果物の品質を確保し前工程に戻る手間を最小限にする開発手法です。

開発工程が水のように流れて進むことからこの名前で呼ばれています。

メリット

上流工程から下流工程まで順番に進めていくので、前の工程が終わっていないのに次の工程に進んでしまうということがありません。

要件定義の段階で作成する計画の通りに開発が進むのでスケジュール、進捗の管理が容易です。

そのため大規模なシステム開発にあっている手法になります。

デメリット

手戻りすることが考えられていないので万が一手戻りが発生した場合は、納期遅延・予算が超過してしまいます。

実際に開発に取り組んでいくと要件定義のときは明確ではなかった要望などが、

仕様を詳細化していく過程で明らかになることがあります。

その結果外部設計からやり直しになってしまうなどのことがあります。

所感

学生時代に実際に6人チームでウォーターフォール手法で開発するという授業がありました。

お客さんがいないので全員で要件定義を行い進めていきました。

設計も特に問題もなくできていると思い実装作業に移っていきました。

ここで問題が発生したのですが、設計が甘く実装が不可能等いうことがわかり

実際に手戻りしてしまったことで締め切り1時間前くらいに終了したことを覚えています。

しっかりと最初の段階で細かく要件定義、設計ができていれば手戻りはなかったのでしっかり上流工程に時間をかけるべきであったと思いました。

アジャイル開発

ウォーターフォール開発が長期間で開発工程を進めていくのに対して、

短期間で開発工程のサイクルを回していくのが特徴です。

開発工程といっても設計、実装、テストを繰り返すようなイメージです。

また開発は優先度の高いものから開発していきます。

期間は主に1〜4週間くらいに設定されることが多いです。

メリット

優先度の高いものから開発を進めていくので、

ユーザーが本当に欲しい機能のみ提供することができます。

また短期間で開発が進むので仕様の変更があったとしても柔軟に対応することができます。

たくさん詳細な仕様書を作成するというよりも実際に動き使えるものを作ることを重視して開発するので、

成果物の価値の最大化を目指したシステム開発が可能です。

デメリット

短期間で開発し仕様の変更に対して柔軟に対応していると、

要求が収束しなくなる可能性があります。

ウォーターフォールに比べてプロジェクトの計画を立てることが難しいため、

開発のタイミングでスケジュールを計画しなければいけません。

また期間が短いので何か問題があったときに対応することが困難になる可能性があります。

所感

1年間経験してきましたが、やはり開発期間がとても短い中で成果を求められるため

技術力が求められます。

何度か開発期間中に問題があり、原因も全然わからず納期ギリギリで納品するような形になってしまいました。

スケジュールを立てた時にリスクも考慮して工数を算出しましたが、

規模間が分からず工数がかなりかかってしまいました。

また仕様がころころわかるので対応終わったと思ったら新しい仕様になり、

また対応しないといけないという状況にも陥りました。

アジャイル開発は短期間で難しいところもありますが、サイクルを回すスピードが速いので、

技術力の向上、問題解決力が向上していっているなと感じています。

まとめ

今回はウォーターフォール開発、アジャイル開発についておはなししました。

まとめとして

  •   ウォーターフォール開発

 要求定義の段階で開発の計画を立てるため大規模な開発に向いている。

 急な仕様変更があると納期延長、予算超過してしまう可能性がある。

  •  アジャイル開発

 仕様の変更に強く、ユーザーが本当に欲しいものを提供できる。

 仕様の変更に柔軟に対応しようとして要求が収束しなくなる。

どちらもメリット・デメリットがありますが、それぞれの特徴を掴んでプロジェクトに適応すると良いと思います。

私はアジャイル開発の方が、技術力の向上、モチベーションの維持、問題解決能力の向上ができるので好みです。

他にも開発手法があるのでいつか記事にします。

皆さんも色々な開発手法を経験して、実際に体で特徴をつかんでいきましょう。

ここまで読んでくださりありがとうございました。

-技術系
-, , , , , , , , , ,

Copyright© 日常で感じたことブログ , 2020 All Rights Reserved Powered by AFFINGER5.