0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コードコンプリート<上> −3−

Posted at

第3章 2回測って一度で切る:上流工程の必要性
コンストラクションの準備は品質向上のため。
品質向上のためには
プロジェクトの

  • 終わり=システムテストの強化
  • 途中=コンストラクションのプラクティスの強化
  • 最初=高品質な製品計画、要求、設計

上流工程(アーキテクチャ、設計、プロジェクト計画)
この工程の目標は、リスクを減らすこと

例えば、組み込み医療システムのライフサイクルモデルは、

  • 段階的デリバリー
  • スパイラル型開発
  • 進化型デリバリー
    がある。他にも、進化がプロトタイプなど、規模が小さいもの向けのモデルが有る。

要求の80%を事前に指定し、後から要求を追加する時間を設ける(逐次性)
要求の最重要な20%を指定し、残りを少しずつ開発しながら、要求設計を追加していく(反復性)
という2つの手法がある。
形式や環境、スキル、ビジネスゴール似合わせて選択すると良い。

コンストラクションの準備
1.課題定義:ユーザーの立場での課題の説明
2.要求:ソフトウェアシステムが何をすべきか
3.アーキテクチャ:システムの概念的な整合性に必要な構造を提供する
良いアーキテクチャ:分割できるので、複数の開発者、複数の開発チーム、それぞれが個別に作業できる。
悪いアーキテクチャ:コンストラクションはほぼ無理
優れたアーキテクチャの要素

  • プログラムの構成:システム全体像を説明する概要
  • 主要なクラス:主なクラスの役割と、他のクラスとのやり取りする方法、クラス従属、状態遷移図、オブジェクトの永続性について
  • データ設計:使用する主なファイルやテーブル設計の説明。他に検討されたデータ構造の説明と選ばなかった理由の説明
  • 業務ルール:よくわからない!!!
  • ユーザーインターフェースの設計:インターフェースは要求か、アーキテクチャで説明する。
  • リソース管理
  • セキュリティ:脅威モデルの構築
  • パフォーマンス
  • スケーラビリティ:将来の要求に応えてシステムを拡張できる
  • 相互運用性
  • 国際かと地域化:文字などローカルサポート
  • 入出力
  • エラー処理
    • エラーを修正するか、検出するか。修正するなら回復、検出するなら継続、中止どうするか 
    • エラー検出は能動的?受動的?
    • エラーをどのように伝達するか
    • エラーメッセージのための規約
    • 例外は度のタイミングでどのように処理されるのか
    • 入出力データをどの程度検証するのか
    • どの例外処理メカニズムを使うのか(独自のものか、実環境のものか)
  • フォールトトレランス:どのようなフォールトレランスが想定されているのか)フォールトレランスとは、障害の検出をし、回復を試み、失敗したら除外の悪影響を阻止。例えば、部分的運用二変更、機能セーブ、自動シャットダウン・再起動)
  • アーキテクチャの実現可能性
  • オーバーエンジニアリング(堅牢性):エラーが検出された後でも、システムを継続的にどれだけのレベルで運用できるか
  • 購入か、構築か
  • 再利用の決断:前も使っていたからは不十分
  • 変更方針:変更できるような柔軟性
  • アーキテクチャの全体的な品質
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?