欢迎来到天天文库
浏览记录
ID:39778603
大小:447.50 KB
页数:39页
时间:2019-07-11
《西安工业大学《软件工程》第五章 软件设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章软件设计进入设计阶段,要把软件“做什么”的逻辑模型变换为“怎么做”的物理模型,即着手实现软件的需求,并将设计的结果反映在“设计规格说明书”文档中,所以软件设计是一个把软件需求转换为软件表示的过程,最初这种表示只是描述了软件的总的体系结构,称为软件概要设计或结构设计。然后对结构进一步细化,称为详细设计或过程设计。计算机科学与工程学院软件工程(SoftwareEngineer)5.1软件概要设计的基本任务1.设计软件系统结构(简称软件结构)2.数据结构及数据库设计3.编写概要设计文档4.评审5.软件概要设计说明书的主要内容计算机科学与工程学院软件工程(SoftwareE
2、ngineer)5.2软件设计的过程1软件设计在开发阶段的重要性设计提供了软件的表示,使得软件的质量评价成为可能。同时,软件设计又是将用户要求准确地转化成为最终的软件产品的唯一途径。另一方面,软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统。只要出现一些小小的变动,就会使得软件垮掉,而且难于测试。计算机科学与工程学院软件工程(SoftwareEngineer)2软件设计的过程软件设计是一个把软件需求变换成软件表示的过程。从工程管理的角度来看,软件设计分两步完成。首先做概要设计,将软件需求转化为数据结构和软件的系统结构,并建立接口。然后是详
3、细设计,即过程设计。通过对结构表示进行细化,得到软件的详细的数据结构和算法。计算机科学与工程学院软件工程(SoftwareEngineer)5.3软件设计的原则1.抽象化对软件进行模块设计的时候,可以有不同的抽象层次。在最高的抽象层次上,可以使用问题所处环境的语言描述问题的解法。而在较低的抽象层次上,则采用过程化的方法。过程的抽象数据抽象控制抽象计算机科学与工程学院软件工程(SoftwareEngineer)2.自顶向下,逐步细化NiklausWirth提出的设计策略。将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能
4、够实现为止,从而最后确立整个的体系结构。计算机科学与工程学院软件工程(SoftwareEngineer)3.模块化软件系统的层次结构正是模块化的具体体现。就是说,整个软件被划分成若干单独命名和可编址的部分,称之为模块。这些模块可以被组装起来以满足整个问题的需求。计算机科学与工程学院软件工程(SoftwareEngineer)4.控制层次控制层次也叫做程序结构,它表明了程序构件(模块)的组织情况。控制层次往往用程序的层次(树形或网状)结构来表示。计算机科学与工程学院软件工程(SoftwareEngineer)5.结构划分程序结构可以按水平方向或垂直方向进行划分。水平划分按主
5、要的程序功能来定义模块结构的各个分支。6.数据结构数据结构是数据的各个元素之间的逻辑关系的一种表示。数据结构设计应确定数据的组织、存取方式、相关程度以及信息的不同处理方法。计算机科学与工程学院软件工程(SoftwareEngineer)典型的数据结构计算机科学与工程学院软件工程(SoftwareEngineer)7.软件过程程序结构描述了整个程序的控制层次关系和各个部分的接口情况,而图所示的软件过程则着重描述各个模块的处理细节。计算机科学与工程学院软件工程(SoftwareEngineer)8.信息隐蔽如何分解一个软件才能得到最佳的模块组合?为了明确怎样去做,需要了解什么
6、是信息隐蔽。由parnas提倡的信息隐蔽是指,每个模块的实现细节对于其他模块来说是隐蔽的。就是说,模块中所包含的信息(包括数据和过程)不允许其他不需要这些信息的模块使用。计算机科学与工程学院软件工程(SoftwareEngineer)5.4有效的模块设计1.模块模块又称构件,在传统的方法中指用一个名字就可调用的一段程序。类似于高级语言中的过程、函数等。它一般具有如下三个基本属性:功能:即指该模块实现什么功能,做什么事情。逻辑:即描述模块内部怎么做。状态:即该模块使用时的环境和条件。2.模块独立性所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而
7、和软件系统中其他的模块的接口是简单的。3.内聚性内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。一个内聚程度高的模块(在理想情况下)应当只做一件事.计算机科学与工程学院软件工程(SoftwareEngineer)4.耦合性耦合是模块之间的相对独立性(互相连接的紧密程度)的度量。它取决于各个模块之间接口的复杂程度、调用模块的方式以及哪些信息通过接口。计算机科学与工程学院软件工程(SoftwareEngineer)一般模块之间可能的连接方式有七种,构成耦合性的七种类型。两个模块之间的耦合不只是一种类型,而是多种
此文档下载收益归作者所有