全12講座のソフトウェア開発研修を行います。
研修の概要
ソフトウェア工学を含めて、以下の分野を網羅していきます。これにより、ソフトウェア開発の一部ではなく全体像を把握して、自立して動ける開発者を目指します。
- プロジェクト全体
- PMBOKによるスコープ定義
- プロジェクトマネジメントとは?
- プロジェクト手法(アジャイル、ウォーターフォール、チケット駆動、イテレーション開発など)
- ヒト、モノ、カネ
- スケジュール管理の手法
- 要件定義
- KJ法
- 契約
- スコープ、ステークホルダー
- 機能要件、非機能要件
- システム概要設計
- ポンチ絵
- 設計工程
- 概要設計
- 詳細設計
- UML(ユースケース、クラス図、シーケンス図)
- データベース設計
- ネットワーク設計
- 実装
- テスト駆動
- AIエージェントの活用
- 分業、労働集約、コンポーネント化
- 単体テスト、リファクタリング、モックアップ
- 構成管理(Gitなど)
- 開発環境(IDE、エディタ、Lint、CI/CDなど)
- 結合テスト、システムテスト
- テスト技法(組み合わせテスト、境界値分析、状態遷移テストなど)
- 不具合管理
- ユースケースによるテスト
- バージョン管理
- プロジェクト管理、進捗管理
- 進捗の予測(EVA、工事進行基準)
- チケット、タスク、WBS
- PERT図、ガントチャート
- プロジェクトバッファ、クリティカルチェーン
- ナレッジマネジメント
- SECIモデル
- 暗黙知の活用
- KJ法、守破離
- 行動経済学アプローチ
- 品質管理
- 品質とは?
- 品質の測定法
- PDCAサイクル
- トレーサビリティ
12講座の構成
1. プロジェクト全体の理解
ソフトウェア開発のプロジェクト全体を俯瞰します。
ソフトウェア開発は、新規開発、既存の改修案件、リプレース、保守運用などさまざまなものがあります。
それらのプロジェクトの違いを認めつつ、適したプロジェクト開発技法を利用することが求められます。
2. 要件定義の周辺
要件定義は、顧客との合意形成や契約のベースとなるとともに、ソフトウェア開発においてのスコープ定義とも繋がります。
提案依頼書と要件定義書を作成することにより、顧客のニーズを明確に把握して、開発の方向性を定めます。
システム概要設計や製造業で使われる「ポンチ絵」を用いて、システムの全体像を把握します。
3. 設計工程の周辺
要件定義を受けて、どのようにソフトウェアで実現するのかを設計していきます。
システムの概要設計から詳細設計までを行います。
UML(ユースケース、クラス図、シーケンス図)を用いて、システムの構造や動作を明確にします。
アジャイル開発、ウォーターフォール開発、これからのAIエージェントを利用した開発においても、設計の重要性は変わりません。
4. 実装・プログラミング技術
設計に従いプログラムコードを実装していきます。あるいは、実装しながら設計を組み立てていきます。
プログラミング言語が達成するコードは、顧客の要件を満たす動きです。
システム要件にマッチしたプログラミング言語やフレームワークが求められます。
5. テスト工程の周辺
実装したコードが設計や要件を満たすことを確認していく工程がテスト工程になります。
テスト駆動開発やイテレーション開発、AIエージェントを活用したテストなど、さまざまな手法があります。
基本的なテスト技法を知り、より効率よくテストを進めていきましょう。
不具合票管理やバージョン管理などのツールを活用して、テスト工程を効率化します。
6. プロジェクト管理、進捗管理
開発プロジェクトの進捗状態は何故把握する必要があるのでしょうか?
プロジェクトの進捗を把握することにより、プロジェクトの遅延や問題を早期に発見し、対策を講じます。
リスク管理を行いリスクが発生した場合には、予算や人員、スケジュールをいち早く調節します。
対処療法ではなく、予測型のプロジェクト管理を行うことを目的とします。
7. ナレッジマネジメント
ナレッジ(知識)を共有することは、ソフトウェア開発において重要な要素です。
ひとり開発であればひとりの頭に設計や実装などが入っていれば問題ありません。しかし、複数人で開発を行う場合には、ナレッジを共有することが求められます。
SECIモデル(Socialization, Externalization, Combination, Internalization)を活用して、ナレッジを共有し、開発プロジェクトを育てます。
8. 品質管理
ソフトウェアにおける品質とは何でしょうか?
食品業や自動車業などの製造業では、品質は製品の欠陥や不具合を指します。
ならば、ソフトウェアにおける品質とは、顧客の要件を満たしているか否か、ソフトウェアが正常に動くか否かが求められます。
ソフトウェアの品質を数値化して、客観的な根拠にします。
要件、設計、実装へとつながるトレーサビリティを確保します。
9. プロジェクト全体の理解2
ここまでソフトウェア開発を各工程ごとに観てきましたが、再びプロジェクト全体を俯瞰していきましょう。
ソフトウェア開発技法の違い(アジャイル開発、ウォーターフォール開発、イテレーション開発など)により、各工程はどのように違いがあるのでしょうか?
あるいは、ソフトウェア開発と製造業や建築業との違いを理解していきましょう。
10. 要件定義から実装まで
再び、要件定義から設計、実装までおさらいします。
計画駆動(ウォーターフォール)では、要件から設計、実装まではほぼ一方通行ではアジャイル開発では混沌としています。
イテレーション開発では、要件定義から実装までを繰り返し行います。
それぞれの工程にかかる時間はことなりますが、必要な要素は同じです。
11. 実装から運用まで
実装したコードをテストしたのち運用に組み込んでいきます。
運用したコードをWEB開発ではダイナミックに変更できますが、組み込み系や業務システムでは運用後の変更は難しいこともあります。
それぞれの要件に応じて、実装から運用までの違いを理解していきましょう。
12. 部分から全体最適化へ
ソフトウェア開発といえば、プログラミング言語や知識、フレームワークの習得に注力しがちです。
しかし、それらはソフトウェア開発の一部に過ぎません。
ソフトウェア開発の全体像を把握し、部分ではなく全体最適化を目指すことが重要です。
ソフトウェア開発の全体を知ることによって、自分の立ち位置や、プロジェクトの現状を正確に把握していきましょう。