个人理解软件需求需要包含以下部分(非官方介绍):
功能需求:产品提供的需求文档中提到的,需要实现的功能。
系统需求:包括在运行时占用CPU、磁盘、GPU等硬件资源、杀毒软件等安全性、系统稳定性、系统错误日志保留、问题排查的方便性、系统环境依赖方面的能力。
架构需求:软件在开发过程中的模块的可扩展性、架构的伸缩性,代码的可读性、可维护性,接口的稳定性。
在软件设计的时候,需要针对这三个方面都进行分析,首先先进行自然语言上的信息的提取,然后逐渐使用面向对象语言配合UML做系统设计,逐渐将自然语言转换成符号语言。最后转换成代码。
面向对象设计的可扩展性在于在指定技术下的程序的扩展性,当底层技术发生变更——框架变更、语言变更、底层接口变更、实现方式变更等等,对已有的设计都是毁灭性的,需要在一定范围内重新做软件的设计。当然,需求上的某些改变也有可能会对已有的设计造成影响。因此,需要上面的变更做出预防、预测,跟要尽量避免自己在设计时对底层框架理解问题造成的重构。
来源:CSDN
作者:zYongheng
链接:https://blog.csdn.net/zYongheng/article/details/104014631