開発プロセス・手法(ソフトウェア開発モデル、アジャイル開発など)についてまとめました。
【ソフトウェア開発モデル】
モデル | 概要 |
---|---|
ウォータフォールモデル | 開発の作業工程を「要求定義」「外部設計(概要設計)」「内部設計(詳細設計)」「開発(プログラミング)」「テスト」「運用」などと時系列順に分割し、滝のように上から下に流れるように開発していくモデルです。工程管理がしやすいため大規模なシステム開発に向いていますが、工程の後戻りが生じると大幅な時間のロスが生じるという欠点があります。 |
成長型プロセス(インクリメンタルプロセスモデル) | 初めにシステム全体の要件定義を行い、要求された機能を幾つかのサブシステムに分割した後、コアとなる部分を優先的に完成させ、機能を段階的に提供していく開発モデル。 |
スパイラルモデル | 開発サイクルを繰り返すことによって、システムの完成度を高めていくプロセスモデル。開発コストの増加などのリスクを最小にしてシステム開発を行える利点があります。 |
プロトタイピングモデル | 開発の初期段階で試作品を作り、利用者の要求を反映しながら開発を進める開発モデル。 |
エボリューショナルモデル | 簡単な部分から分析、設計、実装、テストを繰り返し行い、徐々に拡大していく開発モデル。 |
SOA | 業務機能を提供するサービスを組み合わせて、1つのシステムを構築する開発手法(Service Oriented Architectureの略)。個々のサービスが部品として独立し、サービス間の関係が疎結合(分離している)となる。 |
【アジャイル開発】
用語 | 概要 |
---|---|
スクラム | アジャイル開発の1種で、開発プロジェクトを短期間(数週間程度)で区切り、その期間内に分析、設計、実装、テストの一連の活動を行い、一部分を完成させるという作業(スプリント)を繰り返しながら、段階的に動作可能なシステムを開発する。 |
スクラムでは、スクラムチームを構成するプロダクトオーナ・開発チーム・スクラムマスターの役割、並びに5つのイベントと3つの作成物が定義されています。
【ソフトウェア再利用】
ソフトウェアのソースコードを1から作成すると、バグやセキュリティ脆弱性が入る余地を作りやすくなります。
既存の検証済ソースコードを再利用すると、バグやセキュリティ脆弱性を取り除くための工数を削減することができます。
そのため、コードの再利用は効率よく問題を起こしにくいソフトウェアを構築する上で重要なため、ソースコードを作成する際は、初期から流用可能な部品化を考慮に入れた開発を行うのが大切です。
【再利用の特徴】
● ソフトウェア再利用を前提とした部品開発は、様々な利用場面を想定して機能を実装するため初期には工数がかかります。
● 同一機能を実装する場合、複数の小さい部品を再利用するより、1つの大きい部品を再利用する方が開発工数の削減効果は大きい(部品の大きさに比例した工数の削減が期待できる)。
● 部品の再利用を促進するための表彰制度などによるインセンティブの効果は、初期が最も高い
部品を再利用したときに削減できる工数の比率は,部品の大きさに反比例する。
【リバースエンジニアリング】
リバースエンジニアリングは、既存ソフトウェアの動作を解析するなどして、製品の構造を分析し、そこから製造方法や動作原理、設計図、ソースコードなどを調査する技法です。
間違えやすい単語 | 概要 |
---|---|
リエンジニアリング | 既存のシステム資源を利用して新しいシステムを再構築する手法や技術全般。 |
リストラクチャリング | 日本語で再構築の意で、企業が事業規模に合わせて組織を再編成すること。 |
リファクタリング | プログラムの外部から見た動作を変えずにソースコードの内部構造を改善・整理すること。 |
【マッシュアップ】
すでに公開されている複数のサービスを組み合わせることで、新たなサービスを開発して提供することです。
(例)
店舗案内サイト上に、他のサイトが提供する地図探索機能を利用して出力された情報を表示する。
【構造化手法】
【形式手法】
【ソフトウェアライフサイクルプロセス(SLCP)】
– | SLCP |
---|---|
共通フレームとは | 共通フレームとは、情報処理推進機構が発行しているソフトウェアライフサイクルにおける用語や作業内容などを規定したガイドラインです。国際規格である「ソフトウエアライフサイクルプロセス(SLCP)」を日本独自に拡張したものが共通フレーム(SLCP-JCF)です。 |
【プロセス成熟度】CMMI
CMMI(Capability Maturity Model Integration:統合能力成熟度モデル)は、組織におけるプロセス改善をガイドするモデルです。
サービス(製品)の開発と保守やプロセスを改善するのを助けることを目的としています。
CMMIではプロセス成熟度に対して5つのレベルが設定されています。
レベル | 概要 |
---|---|
レベル1:初期 | 場当たり的で無秩序な組織として最も低い状態。 |
レベル2:管理された | プロジェクト管理のための基本的なプロセスが備わっている状態。 |
レベル3:定義された | 組織内に標準化された一貫性のあるプロセスが定義されている状態。 |
レベル4:定量的に管理された | 定量的な品質目標が存在し、プロセスはデータに基づき予測可能である状態。 |
レベル5:最適化している | 継続的な改善プロセスが常に機能している状態。 |
CMMIモデルにおける成熟度レベルが最も高いものはレベル5で、「プロセスを継続的に改善していくための仕組みが機能している」ことです。
【その他】エクストリームプログラミング
XP(eXtreme Programming:とは、1990年代後半、Kent Beck氏らによって定式化され、提唱されているソフトウェア開発手法でアジャイルソフトウェア開発と称される一連の手法の先駆けとなったものです。「プログラマーは人間である」という思想のもと、叩き台となるプログラムを早期に開発し、リスクを軽減するために開発初期から積極的にテストを繰り返していくことを重視しています。
XP(eXtreme Programming)は、1990年代後半、Kent Beck氏らによって提唱されたソフトウェア開発手法(アジャイルソフトウェア開発の先駆け)。
叩き台となるプログラムを早期に開発し、ソフトウェアの開発初期から積極的にテストを繰り返していくことでバグを減らしていく。
求める機能を明確化するために、プログラムを記述するよりも前にテストケースを作成する開発手法です。そのテストをパスする最低限の実装を行った後で、機能を維持したままコードを洗練していくという手順で開発を進めます。
用語 | 概要 |
---|---|
計画ゲーム | 実現するユーザ機能(ストーリー)とリリース計画を顧客と交渉する作業です。イテレーション(反復、繰り返し)の度に行います。 |
コーディング標準 | ソースコードを記述する際のルールを定めたもの。XPでは、ペアプログラミングやリファクタリングにおいて複数人によるコードの共有を前提としているため、コーディング標準の順守が重視されます。 |
テスト駆動開発 | 要求機能を明確化するため、プログラムを記述するよりも前にテストケースを作成する。そして、作成したテストケースをクリアする最低限の実装を行い、その機能を維持しつつ、コード開発を書いていく。 |
ペアプログラミング | 2人1組で1つのプログラムの実装を行い、1人が実際のコードをコンピュータに打ち込み、もう1人はそれをチェックしながら補佐するという役割を随時交代しながら作業を進めていく手法です。プログラムをコンピュータに打ち込む人を「ドライバ」、それを補佐する人を「ナビゲータ」といいます。 |
![](https://algorithm.joho.info/wp-content/uploads/2023/08/404-160x90.jpg)
コメント