◆ 软件需求:解决“做什么”。
◆ 软件设计:解决“怎么做”。
◆ 软件设计的任务:从软件需求规格说明书出发,形成软件的具体设计方案。(根据需求分析阶段确定的功能确定模块及每个模块算法和编写具体的代码)
1、软件设计内容
(1)软件设计定义
软件设计是把软件需求(定义阶段)转换为软件的具体设计方案,即划分模块结构的过程,是软件开发阶段最重要的步骤。
(2)软件设计划分 划分 名称 按工程管理角度 概要设计 详细设计 按技术观点划分 结构设计 数据设计 接口设计 过程设计 一般过程:是一个迭代过程,先进行高层次结构设计;再进行低层次过程设计;穿插数据设计和接口设计。
(3)软件设计过程
2、软件设计原则
为了开发出高质量低成本的软件,在软件开发过程中必须遵循下列软件工程原则:
(1)抽象(abstraction)
抽取事物最基本的特性和行为,忽略非基本的细节。采用分层次抽象的办法可以控制软件开发过程的复杂性,有利于软件的可理解性和开发过程的管理。
(2)信息隐藏(informationhiding)
信息隐蔽:采用封装技术,将程序模块的实现细节(过程或数据)隐藏起来,对于不需要这些信息的其它模块来说是不能访问的,使模块接口尽量简单。
按照信息隐藏的原则,系统中的模块应设计成“黑箱”,模块外部只能使用模块接口说明中给出的信息,如操作、数据类型等等。
(3)模块化(modularity)
使程序有许多个逻辑上相对独立的模块组成。模块(module)是程序中逻辑上相对独立的单元;模块的大小要适中;高内聚、低耦合。
(4)一致性(consistency)
整个软件系统(包括文档和程序)的各个模块均应使用一致的概念、符号和术语;程序内部接口应保持一致;软件与硬件接口应保持一致;系统规格说明与系统行为应保持一致;实现一致性需要良好的软件设计工具(如数据字典、数据库、文档自动生成与一致性检查工具等等)、设计方法和编码风格的支持。