目录
软件设计可分为概要设计和详细设计两个阶段
1、概要设计
也称为高层设计或总体设计,即将软件需求转化为数据结构和软件的系统结构。
例如,如果采用结构化设计,则从宏观的角度将软件划分成各个组成模块,并确定模块的功能及模块之间的调用关系。
概要设计主要包括设计软件的结构、确定系统由哪些模块组成,以及每个模块之间的关系。
它采用的是结构图(包括模块、调用和数据)来描述程序的结构,还可以使用层次图和 HIPO(层次图加输入/处理/输出图)。
整个过程主要包括复查基本系统模型、复查并精化数据流图、确定数据流图的信息流类型(包括变换流和事务流)、根据流类型分别实施变换分析或事务分析,以及根据软件设计原则对得到的软件结构图进一步进行优化。
1)层次图(H图)
2)HIPO图
层次图 + 输入/处理/输出图
获得模块间的调用关系以及调用时传递的信息
2、详细设计
也称为低层设计,即对结构图进行细化,得到详细的数据结构与算法。
同样如果采用结构化设计,则详细设计的任务就是为每个模块进行设计。
详细设计确定应该如何具体地实现所要求的系统,得出对目标系统的精确描述。
它采用自顶向下、逐步求精的设计方式和单入口单出口的控制结构。
经常使用的工具包括程序流程图、盒图、PAD图(Problem AnalysisDiagram,问题分析图)及PDL(Program Design Language,伪代码)。
1)流程图
2)盒图(N-S图)
3)PAD 问题分析图
4)PDL伪代码图
3、软件设计过程
(1)制定规范,作为设计的共同标准。
(2)完成软件系统结构的总体设计,将复杂系统按功能划分为模块的层次结构,然后确定模块的功能,以及模块间的调用关系和组成关系。
(3)设计处理方式,包括算法、性能、周转时间、响应时间、吞吐量和精度等。
(4)设计数据结构
(5)可靠性设计
(6)编写设计文档,包括概要设计说明书、详细设计说明书、数据库设计说明书、用户手册和初步的测试计划等。
(7)设计评审,主要是对设计文档进行评审
4、软件设计活动
数据设计、软件结构设计、人机界面设计和过程设计。这4个活动完成以后就得到了全面的软件设计模型。
4.1、数据设计
第一个。由于数据结构对程序结构和过程复杂性都有影响,
好的数据设计将改善程序结构和模块划分,降低过程复杂性。
数据设计将分析时创建的信息域模型变换成实现软件所需的数据结构。
E-R图中定义的数据对象和关系,
数据字典中描述的详细数据内容为数据设计活动奠定了基础。
4.2、软件结构设计
主要目标是开发一个模块化的程序结构,并表示出模块间的控制关系。此外,软件结构设计将程序结构和数据结构相结合,为数据在程序中的流动定义了接口。
4.3、人机界面设计(接口设计)
描述了软件内部、软件和协作系统之间,以及软件与人(用户)之间如何通信。
一个接口意味着信息流(如数据和/或控制流),数据和控制流图提供了人机界面设计所需的信息。
人机界面设计要实现的内容包括一般交互、信息显示和数据输入。
人机界面设计主要包括以下3个方面。
(1)设计软件模块间的接口。
(2)设计模块和其他非人的信息生产者和消费者(比如外部实体)之间的接口。
(3)设计人(用户)和计算机间的接口(通常简称为“人机接口”或“人机界面”)。
4.4、过程设计
最终阶段,应该在数据设计、体系结构设计和接口设计完成之后进行。
所有的程序都可以建立在一组已有的逻辑构成元素上,这一组逻辑构成元素强调了“对功能域的维护”其中每一个逻辑构成元素有可预测的逻辑结构,即从顶端进入,从底端退出,读者可以很容易地理解过程流。
5、结构化设计
结构化设计包括体系结构设计、接口设计、数据设计和过程设计等任务。
它是一种面向数据流的设计方法,是以结构化分析阶段所产生的成果为基础,进一步自顶而下、逐步求精和模块化的过程。
将一个待开发的软件分解成为若于个小的简单部分。
每个模块可以独立地开发、测试。
模块是指执行某一特定任务的数据结构和程序代码。
通常将模块的接口和功能定义为其外部特性,
将模块的局部数据和实现该模块的程序代码称为内部特性。
5.1、抽象化
(1)过程抽象。在软件工程过程中,从系统定义到实现,每进展一步都可以看做是对软件解决方案的抽象化过程的一次细化。在从概要设计到详细设计的过程中,抽象化的层次逐渐降低,当产生源程序时到达最低的抽象层次。
(2)数据抽象。数据抽象与过程抽象一样,允许设计人员在不同层次上描述数据对象的细节。
(3)控制抽象。控制抽象可以包含一个程序控制机制而无须规定其内部细节。
5.2、自顶向下
将软件的体系结构按自顶向下的方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个体系的结构。
5.3、信息隐藏
信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在-个单一的设计模块中,并且尽可能少地暴露其内部的处理过程。
通常会将困难的决策、可能修改的决策、数据结构的内部连接,以及对它们所做的操作细节、内部特征码、与计算机硬件有关的细节等隐蔽起来。
以提高软件的可修改性、可测试性和可移植性
5.4、模块独立
指每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系最简单。
内聚程度从高到低
耦合程度从低到高
保持模块的大小适中;
尽可能减少调用的深度;
直接调用该模块的次数应该尽量多,但调用其他模块的次数则不宜过多;
保证模块是单入口、单出口的;
模块的作用应该在模块之内;
功能应该是可预测的。
6、工作流设计
工作流管理系统(WFMS)通过软件定义、创建工作流并管理其执行。
基本功能:
(1)定义工作流,包括具体的活动、规则等
(2)遵循定义创建和运行实际的工作流。
(3)监察、控制、管理运行中的业务(工作流),例如任务、工作量与进度的检察、平衡等。
在系统分析师软考中,可以使用 软考真题 APP 进行专项题目训练,上面题目多多,种类齐全