要件の仕様を確認するとき、“大罪”対処する必要がありますか? [閉まっている]
-
06-07-2019 - |
質問
要件の仕様(機能、非機能の要件、制約などを含む)を検討する場合、規模が大きくても大きくても、「致命的な罪」は何ですか?作者が気をつけようとしていますか?
要件の仕様で行われている(または行われていない)ソフトウェア製品の品質に悪影響を与える、最も重要なもの(重大度の降順)を7つまでリストしてください。 7未満でも問題ありません。
解決
OK、これは7以上ですが、良い要件には次の属性があります:
- ユニーク。他にありますか 同様の要件ですか?
- 識別可能、できますか 要件は一意に識別されますか?開発プロセス全体で追跡できますか?
- 完了。足りないものはありますか 忘れた?徹底的ですか?やる 作るのに必要なすべてを含める スタンドアロンですか?
- 正確。それが正しいか?適切に定義していますか ゴール?エラーがありますか?
- 明確な。は 説明は正確で曖昧ではありませんか? 単一の解釈はありますか?は 読みやすく、理解しやすいですか?
- 一貫性のある。の説明です そのように書かれた機能 の他のアイテムと競合しません 仕様ですか?
- 関連。文は必要ですか 機能に?余分ですか 除外すべき情報は? それは追跡可能ですか 元の顧客のニーズ?
- 実行可能。できますか 利用可能な実装 人員、ツール、およびリソース 指定された予算内で スケジュール?
- コードフリー。仕様は 製品の定義に固執し、 基礎となるソフトウェア設計ではなく、 アーキテクチャ、およびコード?
- テスト可能。テストできますか?十分です テスターが提供する情報 要件が満たされていることを検証するテストを作成できますか?
- 優先度。それ以上ですか 他の要件よりも重要度が低いですか?
- アクティブな音声を使用。は 仕様はアクティブな音声を使用しますか? 受動的音声は常に指定するわけではありません 誰または何がアクションを実行します。
- 分類。要件です 同様に論理的にグループ化 要件?可能なカテゴリー 行動、パフォーマンス、 インターフェイス、データ構造/要素、 実装、コンプライアンス/品質、 運用(信頼性、安全性、 セキュリティ)、派生/エンジニアリング。
まともな要件追跡ツールは、Identifiable、Prioritized、Categorizedのような上記の一部を自動化/実施できますが、残りをチェックできるのはチームによるレビューのみです。重要なのは、これらの属性についてチームをトレーニングし、要件の良い例と悪い例の両方を読んで実践し、ライフサイクルの早い段階で要件をチェックして下流のアクティビティに影響を与える効率的なレビュープロセスを確立することです。
他のヒント
要件の欠落-把握するのがはるかに困難です。要件を明確なセクション(安全性、パフォーマンス、スタイリングなど)に分けると、見つけやすくなります。
機能、時間、品質-2つ選択してください。要件がチームに3つすべてを課していないことを確認してください。
プロセスを制御しようとする要件を後戻りします。
最初から明確な優先順位付けを求めます。
各要件の明確な受け入れ基準を主張します。
要件は、必要なものに関して具体的かつ明確でなければなりませんが、要件を満たす方法についてはそれほど重要ではありません。
仮定の作成-仮定のように見えるものが実際に検証されたことを再確認してください。
満たされていることを確認するのが容易ではない要件-レビュー時に、満たされているかどうかをより簡単にマークできるフォームに変更します。
要件は、誰が何を行うかを指定しません。
"The invoice is reconciled to the purchase order."
これは、システムが何かをするのか、それともユーザーを意味するのですか?
私がコーディングしたプロジェクトで見た最悪の例:-
The system shall interface to SAP as required.
まず、「必要に応じて」という要件。それは愚かです。その1行には40万ドルのコストが必要です。顧客はそれを指摘し続け、何とか何とかやろうと言っていると言った。
過度に厳しい-可能であれば、関連する許容値を指定します。
あいまいな要件は悪いです。
検証不能かつ定量化不可能な要件は2倍になります。
当然、これはすべて、どのような要件を得るかによって異なります。典型的なGuiまたはWebアプリケーション、バッチプロセス、および
に慣れています。- 各仕様で定義する必要のない標準を最初に作成し、それらを参照します
- できるだけ小さくします-200ページのドキュメントを読んですべてを念頭に置くことはめったにありません
- 具体的、測定可能、具体的
- 例(図面、会計文書)を行う
- 機能を説明する前に目的を説明します
- パフォーマンス基準、復元力の標準、展開手順、必要な操作に関するドキュメントを含む
レビュアーへのアドバイスも1つあります。テーマを知る
要件のコンテキスト、特定のクライアントのニーズ、技術環境、およびおそらくこの要件の対象となる最も重要なもの、およびグローバルな理解のレベルについて、非常に詳細な知識が必要です。
個々の知識が非常に浅いため、多くの人が仕様をレビューするプロジェクトで非常に悪い経験をしました。フィードは同じレベルで返されますが、ほとんどは正式な修正ですが、仕様の深刻な欠如はプロジェクトのごく最近になって発見されます。
「イタチの言葉」を避ける-その文脈から奪い取られ、悪い音にさせることができる言語はどれも悪い。
すべてが明確であることを確認してください:vague == Bad Thing(tm)
新しいプロジェクトが始まる前に私の推奨事項と私がいつもしていることは、上のチェックリストを再確認してください
すべてを知っているwikpediaには、要件の良い概要があります- http://en.wikipedia。 org / wiki / Requirement#Good_requirements 。これらの点のうち、検証可能性の欠如が最も一般的であると思います。全体像を理解することは人生では重要ですが、要件などで明確に説明する必要があります。システムは迅速に応答する必要があります。代わりに、システムは2秒未満ですべての要求に応答します。
- 機能、アーキテクチャ、インターフェイス、非機能要件の分離。
- 明確かつ一貫した表記法を使用してエンティティを記述する
- ユースケースのエントリと終了の基準をクリア
- フロー図を使用する(マインドマップはUMLと同じ目的を果たし、描画しやすい)
- 範囲を明確な用語で定義し、対象とする対象と対象としない対象を定義し、それらの未知の場所を見つける
- トレーサビリティマトリックスを作成