はじめに
求人を見ていて、これなんだと思った開発手法を発見したので覚えるためにも記事を書いてみました。
##ウォータフォール型開発
古くから使用されている手法の一つで、段階一つずつ確認しながら次の工程に進む手法。
企画 ➜ 設計 ➜ 実装 ➜ テスト ➜ 納品
物作りの基本的な開発の流れですね!
▷メリット
・スケジュールが立てやすい
・進捗状況も把握しやすい
予算の見積もり、エンジニアの配置、事前の準備や計画を明確かつスムーズに進めていくことが可能です。
▶デメリット
・修正、仕様変更が必要時に時間がかかる。
・各工程の完璧さが重要
途中段階で完成形が目に見える形で出てこないというデメリットはありますが、全体像を把握しやすい開発手法のため、作業に関わる人員規模を把握しやすい一面があります。
アジャイル開発
開発工程が機能単位で分かれている。
実装したい機能ごとに開発工程を何度も繰り返し行う手法。
「開発において修正や変更はつきもの」という前提で開発を進める。
▷メリット
・変更、修正に対応しやすい。
・コストが抑えられる。
小単位ごとにその都度リリースを行うので、実際にユーザーが使用した際の評価や意見を取り入れることができ、柔軟かつ素早くフィードバックを行うことが可能。
▶デメリット
・スケジュールの把握等が難しくなる。
・当初の計画から方向性が大きくずれてしまう可能性もあり得る。
仕様の変更が発生しやすいWebでのサービスや近年増加しているアプリの開発に適している。
スクラム開発
プロダクトへの要望を優先順位ごとに並べ替えて、その順に機能を作る。
固定の短期間(1〜4週間程度)の単位で開発を区切り、その中で計画を立てる。
プロジェクトの状況や進め方に問題がないか、メンバー同士で毎日確認しあう。
作っている機能が正しいかどうか、定期的に確認の場を設ける。
▷メリット
・短い期間で、最大限の成果をあげる
・作業の工数見積もりが正確になる
・自立的なチーム作りが出来る
・チーム内で発生している問題の検知が早い
・早めに軌道修正が出来る
▶デメリット
・開発手法を習得するまでの時間がかかる
・顧客の協力も必要になる
チケット駆動開発
プロジェクトの中で発生する数あるタスクをチケットという単位に分割してタスク処理する手法。
アジャイル開発に、似ていますね!
▷メリット
・ソースコードのコミットのログにチケットIDを入れておけばソースコードの編集履歴とチケットが紐づくので、ソースコードの可視化ができる。
・チケットごとの工数を登録すると全部の工程でどれくらい時間が、かかったのかの集計を取ることもできる。
▶デメリット
・全体の設計が見えなくなる
・工程がその通りになるとは限らない
DevOps開発
DevOps(デブオプス)という言葉は、Development(開発チーム)とOperations(運用チーム)のふたつの言葉を組み合わせた言葉。
本来、社内のチーム間の協力は不可欠ですが、新しい機能の実装とリリースを重視する開発チームと、サービスの安定性・維持・利便性を重視する運用チームの間で対立が生まれることも珍しくはありません。そこで、このような対立を一切なくし、協力体制を確立して開発を推進していくことがDevOps開発の特徴。
うまくハマった時は、良質な開発が出来そうですね!
◾必要な組織文化
・お互いを尊重すること
・お互いを信頼すること
・失敗を避難しないこと
・一緒に解決策を考える
プロトタイピング
プロトタイピング(Prototyping)は「試作」の意味。
ソフトウェア開発の初期段階に試作モデルを作り、機能や操作性を確認し、ユーザーの要求や評価を本番のシステムに反映して完成させる開発手法。
▷メリット
・処理内容、使い勝手を確認できる。
・利用者の望むシステムとのズレや不具合を早期発見。
▶デメリット
・再びプロトタイプを作成する手順が増える。
・工数、コストの増加につながる。
ユニケージ開発手法
UNIX系のコマンドやシェルスクリプトでシステム開発を行うもので、日本発の開発手法。
あらかじめ用意されているコマンドを、パイプやリダイレクトでつなぎ、基幹システムなどを構築します。
▷メリット ・処理速度が高速 ・データ処理を短時間で出来る
▶デメリット ・ソースコードが読みにくい。 ・保守やメンテナンスの負担がある
最後に
こんな感じかなというのが、はっきりしたかなと思います。
また、忘れた時は見返します。
開発の手法一つも、目的や状況にあった方法を選択して開発して行きたいですね。