软件工程-软件设计

引言

软件工程经过需求分析阶段后,也就明确了软件应该“做什么”的概念,下面就进入了设计阶段,设计阶段侧重于解决需求问题应如何解决,反过来通过设计更加清楚地了解需求的内涵,并对不正确的需求加以改正。

软件设计的重要性

软件设计作为实现、测试和维护阶段的基础,在应用设计工程的软件开发中,保证后续工作可以顺利开展。所以缺少设计工程的软件开发一旦发生问题就会使整个的开发过程陷入混乱。
软件工程-软件设计

软件设计任务

设计的分类方法有两种,一种从管理角度来看,将设计分为概要设计和详细设计两个阶段,另一种是从技术上讲设计分成体系结构设计、数据设计、接口设计、过程设计四方面的工作。
软件工程-软件设计

软件设计过程

软件工程-软件设计

软件设计基础

软件工程-软件设计
1、自顶向下,逐步细化
将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化。
2、软件结构
软件结构包括两部分。程序的模块结构和数据的结构。
3、结构图
结构图反映程序模块之间的层次调用关系和联系。
4、程序结构
软件工程-软件设计
5、模块化
能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。
6、抽象化
软件系统进行模块设计时,可有不同的抽象层次。
抽象层次1:用问题所处的环境的术语来描述这个软件。
抽象层次2:任务需求的描述。在这个抽象层次上,未给出“怎样做”的信息,不能直接实现。
抽象层次3:程序过程表示。
7、数据抽象
在不同层次上描述数据对象的细节,定义该数据对象相关的操作。
8、模块的独立性
功能:描述该模块实现什么功能
逻辑:描述模块内部该怎么做
状态:该模块使用时的环境和条件
模块独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能。一般采用两个准则度量模块独立性。即模块间耦合和模块间内聚。
软件工程-软件设计

结构化设计方法

首先研究、分析和审查数据流图;然后根据数据流图决定问题的类型。数据处理问题典型的类型有两种:变换型和事务型;针对两种不同的类型分别进行分析处理。

变换型系统结构图

变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。
软件工程-软件设计

事务型系统结构图

它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。

软件模块结构的改进

1、模块 功能的完善化
一个完整的模块应当有一下几部分:执行规定的功能的部分;出错处理的部分;给它的调用者返回一个结束状态标志。
2、消除重复功能,改善软件结构
局部相似;完全相似
3、模块的作用应在控制范围之内
4、尽可能减少高扇出结构,随着深度增大扇入
5、避免或减少使用病态连接:直接病态连接;公共数据域病态连接;通信模块连接
6、设计功能可预测的模块,但要避免过分受限制的模块
7、软件包应满足设计约束和可移植性

后记

这篇博文也只是写到了软件设计的一部分内容,软件设计是一个很重要的阶段,软件危机形成的一个原因在于忽略设计过程,或设计过程不成熟而不能形成良好的设计结果。所以作为将来的软件开发人员,在软件设计这块,我们应该有足够的重视。