三四而后行:前期准备 Measure Twice,Cut Once:Upstream Prerequisites

 

问题定义的先决条件(Program-Definition Prerequisite)

    好的“问题定义”是构建活动的基础,只应定义“问题是什么”。而不涉及任何可能的解决方案。问题定义在具体的需求分析工作之前,而需求分析是对所定义的问题的深入调查。
    定义语言应该用客户的语言来书写,而且应该从客户的角度来描述问题。通常不应该用计算机的专业术语叙述。最好的解决方案未必是一个计算机程序。

需求的先决条件(Requirements Prerequisite)

    稳定的需求是软件开发的圣杯。(需求像水,如果冻结了,就容易在上面开展建设)

    在构建期间处理需求变更
        使用需求核对表来评估需求质量
        确保每一个人都知道需求变更的代价
        建立一套变更控制程序
        使用能适应变更的开发方法
        放弃这个项目
        注意项目与的商业案例

架构的先决条件(Architecture Prerequisite)   

    架构的质量决定了系统的“概念完整性”,后者继而决定了系统的最终质量。一个经过慎重考虑的架构为“从顶层到底层维护系统的概念完整性”提供了必备的结构和体系,他为程序员提供了指引——其细节程度与程序员的技能和手边的工作相配。

架构的典型组成部分 Typical Architectural Components

程序组织 Program Organization
主要的类 Main Classes
数据设计 Data Design
业务规则 Business Rules
用户界面设计 User Interface Design
资源管理 Resource Management
安全性 Security
性能 Performance
可伸缩性 Scalability
互用性 Interoperability
国际化 本地化 Internationalization/Localization
输入输出 Input/Output
错误处理 Error Processing
容错性 Fault Tolerance
架构的可行性 Architectural Feasibility
过度工程 Overengineering
关于“买”还是“造”的决策 Buy-Vs.-Build Decisions
关于复用的策略 Peuse Decisions
变更策略 Change Strategy
架构的总体质量 General Architectural Quality