1章 ソフトウェアとソフトウェアエンジニアリング
- ソフトウェアエンジニアリングとは、ソフトウェアを正しく作るフレームワーク(プロセス、手法、ツール)のことを指す
- ソフトウェアは問題理解が大事で、その後が解決策の構築である(WhyとWhat → How)
- ソフトウェアは設計が中心
- 高品質でなければならない
- メンテナブル
ソフトウェアエンジニアリングと規律
- IEEEの定義: ソフトウェアの開発・運用・保守に対するシステマティックで規律(discipline)ある定量化できるアプローチの適用、ソフトウェアに対するエンジニアリングの適用。
ソフトウェアエンジニアリングの階層:
- 品質に焦点を合わせる(Quality Focus): エンジニアリングは品質に対して責任を持ち、実施されなければならない
- プロセス: ソフトウェアエンジニアリング技術を効果的に適用するフレームワークを定義する。
- これによって、プロジェクトマネジメントの基礎、成果物の作成、マイルストーン、品質の確認、変更管理などが行われる
- 手法: ソフトウェア構築のための技術的方法。
- コミュニケーション、要求分析、モデル設計、プログラム実装、テスト、保守といったタスクが含まれる
- ツール: プロセス・手法を自動化するようなツール
ソフトウェアプロセス
- プロセスは、ソフトウェアを作る方法を具体的に規定したものではない。業務を行うチームが適切なアクションとタスクを選択する適応行動である。
- プロセスの要素:
- アクティビティ: 上位の目的を達成するために取り組むこと。ドメイン、規模、複雑さ、厳密さにかかわらず実施される。
- アクション: 主要な成果物を生み出す複数のタスクから構成される
- ex) アーキテクチャ設計というアクションの成果物はアーキテクチャモデル
- タスク: 成果物を生み出すために分割された、明確な目標を持った活動
- アーキテクチャ設計なら、技術選定、スパイク、アーキテクチャモデリング、レビュー×コンポーネント(e.g. Backend, Frontend, Network, Infrastructure, Database)がタスクに分かれて、アーキテクチャモデルが決まる、みたいな感じかな
プロセスフレームワークとフレームワークアクティビティ
- プロセスフレームワークとは、複数のフレームワークアクティビティによってソフトウェアエンジニアリングプロセスが表現されたもの
- フレームワークアクティビティは規模や複雑さに関わらず適用される(普遍的なもの)
- プロセス全体に適用される包括的アクティビティをもつ
- プレセスフレームワークを構成する一般的フレームワークアクティビティ
- コミュニケーション: ステークホルダーとコミュニケーションする
- 計画: ソフトウェアプロジェクト計画を行う。技術的タスク、リスク、必要なリソース、成果物、スケジュールを明確にする。
- モデリング: 何をどう組み合わせて動かすかのスケッチをする。ソフトウェア要求、設計を理解するためのモデルを作成する。
- 構築: コードを作ってテストする
- デプロイ: デリバリーして、評価され、フィードバックを受ける
- これらを組み合わせたフレームワークアクティビティが反復的に行われ(イテレーション)、ユーザーに機能やフィーチャーがソフトウェアにインクリメントされる
図示: