系统需求分析、软件需求分析、软件体系结构设计、软件详细设计、程序设计就是软件设计的分层。软件设计过于复杂,需要划分为不同的层次以分解设计复杂度,实现分而治之,如图1-1所示。
图1-1 软件设计分层示意
软件设计的分层为:
● 系统需求分析负责产品的业务目标和功能范围设计,类似于其他行业的概念产品设计。业务目标是指产品能解决哪些用户痛点和实现哪些战略目标。功能范围是高层次的功能特性,不涉及功能细节。
● 软件需求分析负责产品的解决方案设计,重点在于软件产品的功能细节设计。这里的功能细节是指完成任务的人机交互过程、界面细节、数据要求等。
● 软件体系结构设计负责系统的高层结构设计,类似于建筑的体系结构设计,关注于系统的框架(高层次)结构和整体质量。整体质量是指系统可靠性、性能、可扩展性、安全性等分布在系统高层结构中的质量特性。
● 软件详细设计负责系统的详细结构分解和详细结构搭建,关注于产品设计方案的详细结构和细节质量。详细结构通常是指类协同结构、类协同过程、类结构、功能及过程结构、数据结构等。细节质量通常是指可理解性、可维护性、可修改性、可复用性、灵活性等详细结构能够影响到的质量。
● 程序设计负责系统的程序代码设计,关注编程和代码质量。编程是用程序设计语言实现算法和数据结构。代码质量是指正确性、易读性、可靠性、可修改性等与代码编写方式有关的质量。