软件的本质特征和:
- 复杂性
- 一致性
- 可变性
为什么不断修改最终会导致软件退化,从而结束生命周期
- 不可见性
开发人员无法看到源代码是如何执行的???
瀑布式软件生命周期模型
需求的内容
需求规约
系统需求
它从用户的角度描述系统在做什么,与系统是有什么硬件和软件实现的无关。
例如:新的软件会让汽车的启动速度加倍
业务需求
可以帮组企业达成组织目标的需求项
例如:
携程旅行的业务卖买飞机票
功能性需求
满足系统需求所要提供的功能
例如:
订票系统需要提供一个通过信用卡付费的需求
非功能性需求
为了满足功能性需求而要满足的其他约束条件
质量需求
例如
依从性需求
着重描述软件对国家法律,国际公约,社交法则,文化与政治习惯,标准等环境约束的满足需求
例如:
体系结构设计需求
分布式约束:要求软件系统组件满足目标组织由于地理自然分布导致的对系统设备结点的分布式要求,以及数据的分布式存储与处理要求
例如:
安装约束:
要求软件能够在目标实现环境下正常运行
设计开发约束
是对软件系统设计过程的约束
包括:开发成本,开发周期,产品特征的变化性,可维护性,可重用性,可移植性
映出功能性需求的问题
引出设计约束及过程约束的问题
引出质量需求的问题