执行阶段
图 5-1 执行阶段的任务和工件
分析产品的关键需求、对架构设计有影响的需求和风险较高的需求,直到分析的程度能开展足界面原型设计和架构设计工作。
《需求规格说明书》的内容包括:
商业或业务需求 |
从商业或业务角度宏观上对产品或系统的要求。它主要在宏观的层面归纳总结为满足客户提出的要求或赢得市场竞争所必须实现的功能、性能、质量等要求。
|
使用者需求 |
从客户对软件产品或系统使用方案的角度出发,描述和总结使用者利用该软件产品或系统能够做的事或能够完成的任务。 |
功能需求 |
根据上述使用者需求列出的使用方案,列出开发者必须为软件产品或系统实现的功能。 |
性能需求 |
|
系统需求 |
(包括运行平台、网络及其他硬件要求)
(包括与操作系统、数据库、浏览器及其他应用软件的兼容要求)
|
质量需求 |
(可靠性、效率性、灵活性、安全性、互操作性、稳定性、健全性、可用性)
(可维护性、多用转换性、重复使用性、可测试性) |
其他需求 |
不属于上述需求范围的,但受到其他环境和商业合同影响的要求。
|
开发的局限 |
对开发的成功与否起很大影响的因素,是开发能力的局限:
|
表 5-1 需求分析告
《需求分析报告》的编制方式可以是多样的,例如把所有“非功能性需求”组织成“外部接口需求”、“质量属性需求”和“需求约束”。【如:图5-2】
图 5-2 需求规格说明书
明确了系统的关键需求后,就可以进行界面原型设计工作,获取用户的反馈,尽快确定产品的界面基调。同时要编写一份《界面设计概要》文档,作为后续的界面设计工作的指导。
《界面设计概要》的内容包括:
架构设计从关键需求开始,建立概念性的架构,并逐步细化和验证。最终生成架构设计说明书和架构基线代码。
架构设计的方法:可以从几个不同的视角进行架构设计,然后汇总综合得出完整的设计。(架构设计的五个视图【如:图5-3】)
图 5-3 架构设计的五视图
《架构设计说明书》的内容包括:
概 述 |
说明编写的目的、适用范围以及设计原则等。 |
逻辑架构 |
关注功能。其设计着重考虑功能需求。
|
开发架构 |
关注程序包。其设计着重考虑开发期质量属性,如可扩展性、可重用性、可移植性、易理解性和易测试性等。
|
数据架构 |
关注持久化数据的存储方案。其设计着重考虑“数据需求”。
|
运行架构 |
关注进程、线程、对象等运行时概念,以及相关的并发、同步、通信等问题。其设计着重考虑运行期质量属性,例如性能、可伸缩性、持续可用性和安全性等。
|
物理架构 |
关注软件系统最终如何安装或部署到物理机器。其设计着重考虑“安装和部署需求”。
|
总 结 |
基于上述的设计进行总结,并描述架构基线。 |
表 5-2 架构设计说明书
架构设计的另一个重要任务是编写架构基线代码,基线代码表述和验证架构,同时也是指导后续开发的基础代码。架构基线代码的内容包括:
图 5-4 和图 5-5 展示了软件架构师的工作和成功的软件架构设计包含的内容:
图 5-4 软件架构师的工作
图 5-5 成功的软件架构设计
1 软件构建
软件可以分阶段进行构建,每个阶段可以使用增量的方式开发,用通过若干个Build构建,最后发布阶段性产品成果。
(注意:在这里 ,名词“阶段”的含义和本文其他地方的含义不一样)
构建阶段计划的内容包括:
详见:下一节
构建阶段完成后发布阶段产品成果,向用户展示并接受用户反馈,同时做好阶段总结。
《发布清单》的内容包括:
《阶段总结报告》的内容包括:
Build构建以增量的方式执行阶段的开发任务,每个Build构建的周期一般不超过两星期,每一次Build构建都会发布为一个内部版本,并提交测试。测试发现的问题留待以后的Build构建解决。
《Build计划》的内容包括:
根据《Build计划》,细化本次Build要实现的需求,细化到能进行详细设计为止。有了细化的需求后就编写本次Build的测试计划。
《测试计划》的内容包括:
根据细化的需求设计用户界面,当界面确定后即可编写测试用例。
《测试用例》的内容包括:
详细实际每项需求的实现方法,对于重要的设计决策、算法、公共模块和外部接口等必须以模块设计文档的形式进行记录。《模块设计文档》的内容包括:
编码和单元测试是开发人员的工作,对于重要的代码都必须进行单元测试,编写代码必须遵守下列准则:
代码集成发布前需冻结代码,所有人把要提交的代码Check In,并保证编译后的程序能在测试服务器上正常启动,界面能正常打开。同时还要提交Build清单。
《Build清单》的内容包括:
按照《测试计划》针对《Build清单》执行《测试用例》,测试完成后编写测试报告。
《测试报告》的内容包括: