物理设计:要分析细节,规划如何实现解决方案。逻辑设计步骤的输出是物理设计步骤的输入。
逻辑设计步骤得出业务对象模型与一个业务对象和服务列表。该输出准确描述了实现内容,但用的是逻辑方式。现在要将这些模型和描述转换为开发人员实现解决方案需要的图和描述。换而言之,图和描述必须足够详细,以便转交给开发人员并使他们能开始实现方案。进一步细化物理设计,并改进技术,直到项目团队感到,开发人员可基于这个物理设计实现该解决方案。

物理设计需要经过的步骤:
1、选择技术
2、构建物理数据库模型
3、构建物理.net服务的模型
4、优化系统过程
5、部署服务

选择技术的约束分类:
1、使用要求:
用户特点
用户技能
2、可伸缩性:
必须支持多少个并发用户?
用户总数是多少?
对未来有何影响?
3、可维护性
识别未来变化次数和频率。
总体可维护性(包括更新和错误更正)
4、可靠性:
可造性需要达到多高?
能接受系统崩溃吗?
如能,接受级别有多高?
5、性能:
响应时间
总体性能
6、安全:
系统数据的机密性如何?
讨论的是不是加密数据?
7、开发人员知识和经验:
8、未来规划
公司的解决方案和机构未来如何发展?

用户对可靠性、速度和安全的期望经常被记录在服务级别协议(Service Level Agreement,简写SLA)中。

可维护性(修改并继续工作的简单程度如何)
可扩展性(新添加功能的简单程度如何)

需要询问大量问题:
用户数目有多少?
并发用户的数目有多少?
需要多大的数据存储量?
对响应时间有何要求?
需要的数据机密级别有多高?
需要的解决方案可用性级别如何?

在开始物理设计时,最早应设计数据存储部分。

三层服务设计:
1、数据服务,它的任务只是从数据库检索数据,并将数据传给调用者。
2、业务服务:从数据服务调用数据。它不对数据做任何更改,仅传送之。
3、用户服务:接收数据,展示给用户。

接口对服务非常关键。服务必须了解如何与其他服务通信,通信任务由接口完成。

设计的优化:
1、测试用户情景
2、原型化
3、分析开发块的共性
4、观察现场听众

规划解决方案:
1、日程安排:确定开始日期、结束日期和涉及的资源,需要制订项目预算,不仅要考虑开发资源,还要考虑项目的所有花费,以及许可、硬件投资、软件投资和培训。一般日程安排应以小时和工作日表达。
2、里程碑:“里程碑”表示完成的工作,被用作项目过程的中间状态点。
3、通信规划:通常客户只能与产品经理(客户项目经理)通信。没有产品经理的参与,不允许客户直接通过访问开发人员来制定协议。还需要确定以哪种形式(书面或口头形式)更改请求是可接受的。另一个重要问题是确定资格,谁能签署项目文档?是客户,还是客户指定的产品经理?
4、迭代规划:企业软件开发需要在迭代中实施,以保持重点,并简化和加速过程。在早期阶段,需要确定执行的迭代、涉及的资源和涉及的日程安排。构建迭代规划的一个重要规则是,第一个迭代应包含需要的核心功能,第二个迭代应包含最重要的特性(从风险最高的特性开始)。这样,在项目过程,总体项目风险将降低。
5、测试规划:应确定测试的开始和结束日期,以及如何报告和解决问题。有必要向客户通知他们的参与方式,包括日期和需要的工作。还需要确定达不到这些要求时造成的影响。

重要的一点:权衡策略可能忽略后期特性,故在构建迭代规划时,应从核心特性开始。在这些核心特性中,应根据风险排列确定开发的优先级。

记录解决方案应及早开始,在设计时就应开始记录规划阶段的解决方案:记下用例和情景。记录文档必须以电子形式归档,并易于访问。