软件工程复习自用---第五章

这篇具有很好参考价值的文章主要介绍了软件工程复习自用---第五章。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

总体设计

考题重点

软件工程复习自用---第五章,软件工程复习自用,软件工程

软件工程复习自用---第五章,软件工程复习自用,软件工程

设计过程

软件工程复习自用---第五章,软件工程复习自用,软件工程

典型的总体设计步骤

 1.设想供选择的方案

        在总体设计阶段分析员应该考虑各种可能的实现方案,并且力求从中选出最佳方案。 需求分析阶段得出的数据流图是总体设计的极好的出发点。 设想供选择的方案的一种常用的方法是,设想把数据流图中的处理分组的各种可能的方法,抛弃在技术上行不通的分组方法(例如,组内不同处理的执行时间不相容),余下的分组方法代表可能的实现策略,并且可以启示供选择的物理系统

2.选取合理的方案

        应该从前一步得到的一系列供选择的方案中选取若干个合理的方案,通常至少选取低成本、中等成本和高成本的3种方案。在判断哪些方案合理时应该考虑在问题定义和可行性研究阶段确定的工程规模和目标,有时可能还需要进一步征求用户的意见。 对每个合理的方案,分析员都应该准备下列4份资料。 (1) 系统流程图。 (2) 组成系统的物理元素清单。 (3) 成本/效益分析。 (4) 实现这个系统的进度计划

3.推荐最佳方案

        用户和有关的技术专家应该认真审查分析员所推荐的最佳系统,如果该系统确实符合用户的需要,并且是在现有条件下完全能够实现的,则应该提请使用部门负责人进一步审批。在使用部门的负责人也接受了分析员所推荐的方案之后,将进入总体设计过程的下一个重要阶段——结构设计

4.功能分解

        为了最终实现目标系统,必须设计出组成这个系统的所有程序和文件(或数据库)。对程序(特别是复杂的大型程序)的设计,通常分为两个阶段完成:首先进行结构设计,然后进行过程设计。 为确定软件结构,首先需要从实现角度把复杂的功能进一步分解。分析员结合算法描述仔细分析数据流图中的每个处理,如果一个处理的功能过分复杂,必须把它的功能适当地分解成一系列比较简单的功能

5. 设计软件结构

        通常程序中的一个模块完成一个适当的子功能。应该把模块组织成良好的层次系统,顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,完成程序的一个子功能,最下层的模块完成最具体的功能

6. 设计数据库

        对于需要使用数据库的那些应用系统,软件工程师应该在需求分析阶段所确定的系统数据需求的基础上,进一步设计数据库

7. 制定测试计划

        在软件开发的早期阶段考虑测试问题,能促使软件设计人员在设计时注意提高软件的可测试性。第7章具体讨论

8. 书写文档

        应该用正式的文档记录总体设计的结果,在这个阶段应该完成的文档通常有下述几种。 系统说明 用户手册 测试计划包括测试策略,测试方案,预期的测试结果,测试进度计划等 详细的实现计划 数据库设计结果

9.审查和复审

        最后应该对总体设计的结果进行严格的技术审查,在技术审查通过之后再由客户从管理角度进行复审

设计原理

模块化

        模块是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。

        模块是构成程序的基本构件。

        模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求

软件工程复习自用---第五章,软件工程复习自用,软件工程

软件工程复习自用---第五章,软件工程复习自用,软件工程

软件工程复习自用---第五章,软件工程复习自用,软件工程

抽象

        人类在认识复杂现象的过程中使用的最强有力的思维工具是抽象。人们在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。或者说抽象就是抽出事物的本质特性而暂时不考虑它们的细节。

        软件工程过程的每一步都是对软件解法的抽象层次的一次精化。在可行性研究阶段,软件作为系统的一个完整部件;在需求分析期间,软件解法是使用在问题环境内熟悉的方式描述的;当由总体设计向详细设计过渡时,抽象的程度也就随之减少了;最后,当源程序写出来以后,也就达到了抽象的最低层。 

逐步求精

        逐步求精定义是为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。

        逐步求精最初是由Niklaus Wirth提出的一种自顶向下的设计策略。按照这种设计策略,程序的体系结构是通过逐步精化处理过程的层次而设计出来的。通过逐步分解对功能的宏观陈述而开发出层次结构,直至最终得出用程序设计语言表达的程序。

        求精实际上是细化过程。

        抽象与求精是一对互补的概念。

信息隐藏和局部化

        信息隐藏原理:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。        

        局部化是指把一些关系密切的软件元素物理地放得彼此靠近。        

        如果在测试期间和以后的软件维护期间需要修改软件,使用信息隐藏原理作为模块化系统设计的标准就会带来极大好处。

模块独立

        模块独立性:开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立

        模块的独立性很重要,因为1.有效的模块化(即具有独立的模块)的软件比较容易开发出来。2.独立的模块比较容易测试和维护。

        模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。

耦合

        耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。 模块耦合分为数据耦合、控制耦合、特征耦合、公共环境耦合和内容耦合

        数据耦合 两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。数据耦合是低耦合。系统中至少必须存在这种耦合。

        控制耦合 传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现),则这种耦合称为控制耦合。控制耦合是中等程度的耦合。

        特征耦合 当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素时,就出现了特征耦合。

        公共环境耦合 当两个或多个模块通过一个公共数据环境相互作用时,它们之间的耦合称为公共环境耦合。 公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等。 公共环境耦合的复杂程度随耦合的模块个数而变化,当耦合的模块个数增加时复杂程度显著增加。

        只有两个模块有公共环境,耦合有下面两种可能。 (1) 一个模块往公共环境送数据,另一个模块从公共环境取数据。这是数据耦合的一种形式,是比较松散的耦合。 (2) 两个模块都既往公共环境送数据又从里面取数据,这种耦合比较紧密,介于数据耦合和控制耦合之间。

        内容耦合 最高程度的耦合是内容耦合。如果出现下列情况之一,两个模块间就发生了内容耦合。 一个模块访问另一个模块的内部数据。  一个模块不通过正常入口而转到另一个模块的内部。  两个模块有一部分程序代码重叠(只可能出现在汇编程序中)。  一个模块有多个入口(这意味着一个模块有几种功能)。 应该坚决避免使用内容耦合。

        应该采取下述设计原则: 尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。

内聚

内聚衡量一个模块内部各个元素彼此结合的紧密程度。

内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。简单地说,理想内聚的模块只做一件事情。 内聚和耦合是密切相关的,模块内的高内聚往往意味着模块间的松耦合。 内聚分为三大类低内聚、中内聚和高内聚

低内聚

        一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散的,就叫做偶然内聚。 一个模块完成的任务在逻辑上属于相同或相似的一类,则称为逻辑内聚。 一个模块包含的任务必须在同一段时间内执行,就叫时间内聚

中内聚

        一个模块内的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚。 模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据,则称为通信内聚

高内聚

        一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据),则称为顺序内聚。 模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚功能内聚是最高程度的内聚

软件工程复习自用---第五章,软件工程复习自用,软件工程

启发规则

1.改进软件结构提高模块独立性 设计出软件的初步结构以后,应该审查分析这个结构,通过模块分解或合并,力求降低耦合提高内聚。

2. 模块规模应该适中 一个模块的规模不应过大,最好能写在一页纸内(通常不超过60行语句)

3.深度、宽度、扇出和扇入都应适当

        深度:软件结构中控制的层数

        宽度:软件结构内同一个层次上的模块总数的最大值

        扇出:一个模块直接控制(调用)的模块数目

        扇入:一个模块被多少个上级模块直接调用的数目

4.模块的作用域应该在控制域之内 作用域:受该模块内一个判定影响的所有模块的集合。 控制域:模块本身以及所有直接或间接从属于它的模块的集合。

软件工程复习自用---第五章,软件工程复习自用,软件工程

 软件工程复习自用---第五章,软件工程复习自用,软件工程

5.力争降低模块接口的复杂程度 模块接口复杂是软件发生错误的一个主要原因。应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致。

6.设计单入口单出口的模块 这条启发式规则警告软件工程师不要使模块间出现内容耦合。当从顶部进入模块并且从底部退出来时,软件是比较容易理解的,因此也是比较容易维护的。

7.模块功能应该可以预测 模块的功能应该能够预测,但也要防止模块功能过分局限。 

描绘软件结构的图形工具

层次图和HIPO图

软件工程复习自用---第五章,软件工程复习自用,软件工程

 软件工程复习自用---第五章,软件工程复习自用,软件工程

结构图 

软件工程复习自用---第五章,软件工程复习自用,软件工程

软件工程复习自用---第五章,软件工程复习自用,软件工程

常用的四个模块

1.传入模块
从下属模块取得数据,进行某些处理,再将其结果传给上级模块。在此,将它传送的数据流称为逻辑输入数据流

2.传出模块
从上级模块获得数据,进行某些处理,再将其结果传给下属模块。在此,将它传送的数据流称为逻辑输出数据流

3.变换模块/加工模块
它是从上级模块获得数据,进行特定的处理,将其转换为其他形式,再传回上级模块它所加工的数据流叫做变换数据流

4.协调模块
对所有下属模块进行协调和管理的模块。在一个好的软件结构图中,协调模块应在较高层出现
软件工程复习自用---第五章,软件工程复习自用,软件工程

面向数据流的设计方法 

        面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。信息流有下述两种类型

变换流:信息沿输入通路进入系统,由外部形式变换成内部形式,进入系统的信息通过变换中心, 经加工处理以后再沿输出通路变换成外部形式离开软件系统。 当数据流图具有这些特征时,这种信息流就叫作变换流

软件工程复习自用---第五章,软件工程复习自用,软件工程

事务流:数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这类数据流应该划为一类特殊的数据流,称为事务流

图中的处理T称为事务中心, 它完成下述任务

1.接收输入数据(输入数据又称为事务)

2.分析每个事务以确定它的类型

3.根据事务类型选取一条活动通路

软件工程复习自用---第五章,软件工程复习自用,软件工程

DFD转软件结构图

变换流

软件工程复习自用---第五章,软件工程复习自用,软件工程

以CD为变换中心         箭头尾部记得加圆圈

软件工程复习自用---第五章,软件工程复习自用,软件工程

以D为变换中心

软件工程复习自用---第五章,软件工程复习自用,软件工程

事务流

软件工程复习自用---第五章,软件工程复习自用,软件工程

软件工程复习自用---第五章,软件工程复习自用,软件工程

软件工程复习自用---第五章,软件工程复习自用,软件工程文章来源地址https://www.toymoban.com/news/detail-797873.html

到了这里,关于软件工程复习自用---第五章的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 软件工程复习自用---第四章

    非形式化方法的缺点 形式化方法的优点 应用形式化方法的准则 1.应该选用适当的表示方法。 2.应该形式化,但不要过分形式化。 3.应该估算成本。 4.应该有形式化方法顾问随时提供咨询。 5.不应该放弃传统的开发方法。 6.应该建立详尽的文档。 7.不应该放弃质量标准。 8.不

    2024年01月19日
    浏览(47)
  • 【软件工程】《软件工程》期末复习提纲

    《软件工程》期末复习提纲 第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 第九章 第十章 第十一章 第十二章 第十三章 第十四章 小题参考 大题参考 1.在下列选项中,( )不是软件的特征。 A.系统性与复制性         B.可靠性与一致性 C.抽象性与智能性  

    2024年01月17日
    浏览(49)
  • 【软件工程】软件工程期末考试复习题

    软件工程期末考试试题及参考答案 一、单向选择题 1、软件的发展经历了(D)个发展阶段。 一 二 三 四 2、需求分析的任务不包括(B)。 问题分析 系统设计 需求描述 需求评审。 3、一个软件的宽度是指其控制的(C)。 模块数 层数 跨度 厚度 4、当模块中包含复杂的条件组

    2024年02月10日
    浏览(53)
  • 【软件工程】山东大学软件工程复习提纲

    涵盖所有考点,复习绝对高效,点赞+留邮箱获取pdf版本 本提纲可以完全摘抄,考试命中率100%,先上考试带的A4纸: 1. 软件工程三要素 方法:为软件开发提供了“如何做 ”的技术,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计等; 工具:为软件工

    2024年02月13日
    浏览(43)
  • 软件工程之软件测试(考试复习篇)

      理解软件危机,及其产生的原因。 软件危机:落后的软件生产技术难以满足增长的计算机需求。开发过程碰到的一系列问题。 产生原因:预算、速度、质量低、不能满足需求,混乱杂乱的,维护困难。 (2)软件测试定义: 为了发现错误。 (3)软件质量属性,ISO9126。 功

    2024年02月06日
    浏览(66)
  • 软件工程 | 期末复习

    1、软件发展经历三个阶段: 程序设计 、 程序系统 、 软件工程 2、软件的概念:软件是计算机系统与硬件相互依存的另一部分,包括 程序 、 数据 以及相关 文档 的完整集合,软件=程序+数据+文档 数据 :使程序能够适当处理信息的数据结构 程序 :能够完成预定功能和性能

    2024年02月05日
    浏览(48)
  • 软件工程复习篇

    目录 一、概述 1.1软件与软件危机 软件的概念 软件危机 1.2软件工程 软件工程的本质特性: 软件工程基本原理: 软件工程方法学: 软件工程方法学分类 1.3软件生命周期 1.4软件过程 瀑布模型 快速原型模型 增量模型 螺旋模型 喷泉模型 二、可行性研究 2.1可行性研究任务 

    2024年01月17日
    浏览(48)
  • 软件工程-期末复习题

    第1章软件工程概述 1、软件的概念及特点 概念: 计算机软件是由专业人员开发并长期维护的软件产品。完整的软件产品包括了在各种不同容量和体系结构计算机上的可执行的程序,运行过程中产生的各种结果,以及以硬复制和电子表格等多种方式存在的软件文档 特点: 1)

    2024年02月13日
    浏览(50)
  • 软件工程期末复习+数据仓库ETL

    1.AdventureWorks数据库下载地址和方式 下载地址:https://github.com/Microsoft/sql-server-samples/releases 下载方式: 2.将.bak文件导入SQL Server Management Studio Management Studio 19 首先在安装SSMS在此不赘述: 右键单击 “数据库” 节点,然后选择 “还原数据库”,选择设备选择.bak文件: 软件工程

    2024年02月03日
    浏览(47)
  • 第五章 ip层安全协议——IPsec(郑大网安自用)

    提供如下3种服务: 数据完整性验证 通过哈希函数(如MD5)产生的校验来保证 数据源身份认证 通过在计算验证码时加入一个共享密钥来实现 防重放攻击 AH报头中的序列号可以防止重放攻击 格式、封装:…… 运行模式 传输模式 AH插入到IP首部(包括IP选项字段)之后、传输层

    2024年02月19日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包