欢迎来到天天文库
浏览记录
ID:46664659
大小:352.00 KB
页数:70页
时间:2019-11-26
《高级软件工程软件设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、高级软件工程软件设计4.1软件设计的目标和任务软件设计的基本目的就是回答“系统应该如何实现?”。软件设计的任务,就是把分析阶段产生的软件需求说明转换为用适当手段表示的软件设计文档。1.软件设计的目标不管采用何种软件设计方法,软件设计一般都包括数据设计、体系结构设计、接口设计和过程设计(或称构件级设计)等设计活动。软件设计的过程和目标:根据用信息域表示的软件需求,以及功能和性能需求,进行数据设计、系统结构设计、过程设计。在每个设计活动中,软件开发者产生软件的数据设计模型、体系结构设计模型、接口设计模型和过程设计模型。软件设计过程最终目标是产生一个设计规约,该规
2、约包括描述数据、体系结构、接口和构件的设计模型。体系结构设计定义软件主要结构性元素之间的关系。体系结构设计表示(即基于计算机的系统的框架)可以从系统规约、分析模型以及分析模型中所定义子系统的交互导出。数据设计将分析阶段创建的信息模型转变成实现软件所需的数据结构。部分数据设计可能和软件体系结构的设计同时发生,但更详细的数据设计活动则会发生在每个具体软件构件(或模块)设计的时候。接口设计描述软件内部模块之间以及软件与人之间是如何通信的(包括数据流和控制流)。一个接口意味着特定信息流(如数据流和/或控制流)以及行为类型,因此,数据和控制流图提供了接口设计所需的信息
3、。构件级设计将软件体系结构的结构性元素转变成对软件构件的过程性描述,即描述软件构件的详细内部设计细节。软件设计非常重要,它将最终影响软件构造是否成功、最终软件的质量以及软件维护的难易程度。软件设计为我们提供了可以用于质量评估的软件表示,设计是我们能将用户需求准确地转化为完整的软件产品或系统的唯一方法。软件设计是所有软件维护步骤的基础。2.软件设计的任务从工程管理的角度来看,传统的软件设计任务通常分两个阶段完成:第一个阶段是概要设计(总体设计或初步设计),将软件需求转化为数据结构和软件的系统结构,包括结构设计和接口设计,并编写概要设计文档。第二阶段是详细设计阶
4、段(过程设计),其任务是通过对结构表示进行细化,确定各个软件构件的详细数据结构和算法,产生描述各软件构件的详细设计文档。概要设计主要确定实现目标系统的总体思想和设计框架。系统分析员使用系统流程图或其他工具,描述每种可能的系统,推荐一个较好的系统方案(最佳方案),并且制定实现所推荐系统的详细计划。在用户确认后,系统分析员就要设计软件的整体结构和框架,确定程序有哪些某块组成,以及模块与模块之间的关系,最后提出总体设计说明书;详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统。面向对象开发方法中,概要设计的部分内容,例如类及对象的设计将提前到OOA阶段开始
5、,而在OOD阶段,概要设计将更多地关心对象之间的协作与交互。4.2软件设计基本概念在过去四十年中发展起来一套基本的软件设计概念,每一种概念都为设计者提供了应用更加复杂设计方法的基础。4.2.1构件与构件化1.构件在软件系统设计中,构件是指这样一组程序语句,它包括输入、输出和逻辑处理功能、内部信息及其运行计划。构件指可单独命名且可通过名字访问的过程函数、子程序或宏调用。模块就是构件的一种具体形式。模块是一个拥有明确定义的输入、输出和特性的程序实体。一般构件/模块具有以下几种特征:(1)接口,模块的输入输出;(2)功能,指模块实现什么功能,有什么作用;(3)逻辑
6、,描述模块内部如何实现需求及所需数据;(4)状态,该模块的运行环境,模块间调用与被调用关系。2.构件化构件化就是将程序划分成若干个独立的模块,每个模块完成一个特定子功能,每个模块既是相对独立的,又是相互联系的,它们共同完成系统指定的各项功能。构件化的目的:降低软件的复杂性。对软件进行适当的分解,不但可以降低复杂性,而且可减少开发工作量,从而降低软件开发成本。我们常说的模块化就是构件化的一种具体形式。4.2.2抽象与逐步求精1.抽象抽象是指从一些事物中抽取其本质的共同的特性,而忽略其非本质细节的差异。当我们考虑对求解问题的模块化时,可以进行多层次抽象。在抽象的
7、最高层次使用问题环境的语言,以概括的方式叙述问题的解法,在较低层次上使用更过程化的方法,把面向问题的术语和面向实现的术语结合起来描述问题的解法。软件工程中的每个步骤都是对软件解决方案抽象化程度的一次细化(即求精)。2.逐步求精逐步求精是一种先总体、后局部的思维原则,也就是一种逐层分解、分而治之的方法。在面对一个复杂的大问题时,它采用自顶向下、逐步细化的方法,将一个大问题逐层分解成许多小问题,然后每个小系统再分解成若干个更小的问题,经过多次逐层分解,每个最低层问题都足够简单,最后再逐个解决。逐步求精是与抽象相反但又互补的一个概念。抽象使得设计者能够刻画过程和数
8、据的同时,忽略低层细节,求精有助于设计者在数据过程中
此文档下载收益归作者所有