第三章-三思而后行:前期准备

第三章-三思而后行:前期准备


一、需求

1.为什么要有正式的需求

(1)明确需求有助于确保用户(而非程序员)驾驭系统的功能。避免程序员在编程期自行决定需求。

(2)重视需求有助于减少开始编程开发之后的系统变更情况。如果在编码阶段发现需求错误,你可能得改变设计,重新编码,重新测试。花费大量时间。

2. 需求分析阶段主要考虑的问题

   a功能需求:

    (1)系统的输入输出是否详细定义(输入输出格式,精度,取值范围等)?

    (2)是否详细定义了软件的外部接口,相关协议(通信协议,握手协议等)?

    (3)是否包含了用户想要的所有功能?

  b. 非功能需求:

    (1)是否从用户的视角,对每一个操作描述了期望相应时间?

    (2)是否考虑了系统的处理时间,数据传输率,系统吞吐量,机器内存和磁盘空间的最小值?

    (3)是否定义了系统的安全级别和可靠性,如软件失灵的后果,发生故障时数据保护,错误检测与恢复策略等?

    (4)是否定义了系统的可维护性,如操作环境的变更,功能变更以及与其他软件接口的变更能力?

  c. 需求的质量

    (1)需求是用用户语言写的吗?用户也这样认为吗?

    (2)每条需求与需求之间存在冲突吗?

    (3)是否定义了相互竞争的特性之间的权衡,如健壮性与正确性之间的权衡?

    (4)是否每条需求都是课测试的?是否可能进行独立测试?

    (5)需求是否足够清晰?能让开发者或其他成员理解。

    (6)需求的描述是否粗细得当?

      (7)  每一条需求是否都与待解决的问题或解决方案相

  d.  需求的完备性

    (1)对于开发前无法获得的信息,是否对信息不完全的区域做了详细描述?

    (2)需求的完备度是否能达到这种程度:如果产品满足所有需求,那么它就是可接受的?

    (3)是否去掉了不可能实现的需求?

二、架构

1. 架构的典型组成部分

(1)程序组织:即系统架构的组织结构综述。

(2)主要的类

(3)数据设计:注意信息隐藏

(4)业务规则

(5)用户界面设计

(6)资源管理:管理稀缺资源

(7)安全性

(8)性能

(9)可伸缩性:能满足未来需求的能力

(10)互用性

(11)国际化、本地化

(12)输入输出:I/O错误检测

(13)错误处理:仅仅检测还是进行纠正?主动检测还是被动检测?如何处理错误?错误处理的相关约定?如何处理异常,记录log?

(14)容错性

(15)架构的可行性。

(16)过度工程

(17)“买”还是“造”?:利用开源软件,购买软件还是自己开发软件?

(18)关于复用的决策

(19)变更决策

(20)架构的总体质量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值