软件工程导论期末复习

软件工程导论期末复习
1.2软件工程
软件工程是指导计算机软件开发与维护的一门工程学科(实用学科)
**软件工程的
本质特性

**(1)软件工程关注于大型工程的构造
(2)软件工程的中心课题是控制复杂性
(3)软件经常变化
(4)开发软件的效率非常重要
(5)和谐的合作是开发软件的关键
(6)软件必须有效的支持他的用户
**(7)在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品
瀑布模型
**传统软件工程方法学的软件过长基本可以用瀑布模型来描述。它有以下
特点

1、阶段间具有顺序性和依赖性
这个特点具有两重含义:(1)必须等前一阶段的工作完成后才能开始后一阶段的工作(2)前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段额工作才能获得正确的结果。
2、推迟实现的观点
在编码之前设置了系统分析和系统设计的各个阶段,分析与设计阶段的基本任务规定:主要考虑目标系统的逻辑模型,不涉及软件的物理实现。
3、质量保证的观点
(1)每个阶段必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。(2)每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题
瀑布模型适用
:在开发早期阶段软件需求被完整确定

瀑布模型的优点
:可强迫开发人员使用规范的方法;严格规定了每个阶段必须提交的文档;要求每个阶段交出的产品都必须经过质量保证小组的仔细验证。

瀑布模型的缺点
:瀑布模型是由文档驱动;最终产品不能真正满足客户的需求

快速原型模型
开发人员尽可能快的建造出原型系统,让用户体验,之后提出意见,随之进行修改,再让用户体验,直到用户满意为止,据此写出规格说明文档。
特点:
1、快速原型模型是不带反馈环的,优点:软件产品的开发是线性顺序进行的
2、软件一旦交付给用户,维护便开始了
3、快速原型的本质是快速,开发人员应尽可能快得建造出原型系统,加速软件开发,节约开发成本
4、原型的意图是获知用户真正的需求、一旦需求确定了,原型将被抛弃
增量模型
融合了瀑布模型的基本成分(重复应用)和原型实现的迭代特征,该模型采用随日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”
优点:
能在较短时间内向用户提交可完成部分工作的产品
逐步增加产品功能,可以使用户有充裕的时间学习和适应新产品,从而减少一个全新的软件可能对用户组织带来的冲击。
缺点:
需要软件具备开放式的体系结构;容易退化为边做边改模型,从而使软件过程中的控制失去整体性;增加系统内部的耦合复杂性。
第二章 可行性研究
**2.1、可行性研究的
目的

**可行性研究的目的
不是为了解决问题,而是确定问题是否值得去解决

2.2、可行性研究的任务
至少从三个方面研究每种解法的可行性
技术可行性 现有技术能实现这个系统吗
经济可行性 这个系统经济效益能超过它的开发成本吗
操作可行性 系统的操作方式在这个用户组织内行得通吗
必要时还应该从法律、道德、 会效益等方面研究每种解法的可行性
2.3****可行性研究过程
· 复查系统规模和目标
· 研究正在使用的系统
· 导出新系统的高层逻辑模型
· 进一步定义问题
· 导出和评价供选择的解法
· 推荐行动方针
· 草拟开发计划
· 书写文档提交审查
2.4、数据流图
数据流图表示方法:实线表示数据流;虚线表示控制流;圆框代表处理数据的过程;矩形框表示产生与接收数据的对象;平行线表示数据存储区。
订货系统的功能级数据流图:

第三章 需求分析
(1)确定对系统的综合要求
(2)性能需求
(3)可靠性和可用性分析需求
(4)出错处理需求
(5)接口需求
(6)约束
(7)逆向需求
(8)将来可能提出的要求
实体—联系图
组成:
(1)数据对象(实体)
(2)属性
(3)联系

数据对象彼此之间互相连接的方式称为联系,联系可分为3种类型,一对一(1:1),一对多(1:N),多对多(M:N)
例子:
某校教学管理ER图

第五章 总体设计
总体设计****又称为概要设计或初步设计,总体设计阶段的另一项重要任务是设计软件的结构
模块化
模块化就是把程序划分成独立命名并且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户要求。
为什么要模块化
(1)采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。(2)模块化使软件容易测试和调试,因而有助于提高软件的可靠性。(3)模块化能够提高软件的可修改性。(4)模块化也有助于软件开发工程的组织管理。
模块独立的概念是模块化、抽象、信息隐藏、局部化的直接结果。追求高内聚低耦合。
耦合
耦合是一个软件结构内部不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。
耦合的分类
数据耦合:如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据。数据耦合是低耦合
控制耦合:传递的信息中有控制信息。中等耦合,增加了系统的复杂性
特征耦合:当整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素时
公共环境耦合:当两个或多个模块通过一个公共数据环境互相作用时。公共环境可以是全程变量、共享通信区、内存的公共覆盖区、任何存储介质的文件、物理设备等。
内容耦合:如果发生之一就是①一个模块访问另一个模块的内部数据,②一个模块不通过正常入口而转到另一个模块的内部,③两个模块有一部分程序代码重叠,④一个模块有多个入口
**从
,耦合性越来越高,功能独立性越来越低。**
设计原则
尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境的耦合的范围,完全不用内容耦合。
内聚
内聚**:标志着一个模块内各个元素彼此之间结合的紧密程度,它是信息隐藏和局部化概念的扩展。**
设计原则:力求高内聚,通过提高模块间的内聚降低耦合从而使模块获得较高的独立性。高内聚意味着低耦合
内聚的优劣评分
功能内聚 10 时间内聚 3
顺序内聚 9 逻辑内聚 1
通信内聚 7 偶然内聚 0
过程内聚 5
HIPO图
层次图和层次方框图相同,但是表现的内容不一样,层次图中的每一个矩形都代表一个模块,方框间的连线表示的是调用关系而不是像层次方框图表示的那样是组成关系。

结构程序设计经典定义
如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。
过程设计的工具:
程序流程图**(看书** P124)
又称程序框图,它是历史最悠久、使用最广泛的描述过程设计的方法。
盒图**(看书** p****125)
特点:****(1)功能域明确(即一个特定控制结构的作用域),可以从合图上一眼就看出来。
(2)不可能任意转移控制
(3)很容易确定局部和全部数据的作用域。
(4)很容易表现嵌套关系,也可以表示模块的层次结构。
判定表**(看书** P****128)
一张判定表由4部分组成,左上部列出了所有条件,左下是所有可能做的动作,右上是表示各种条件组合的一个矩阵,右下是和每种条件组合相对应的动作。例子参考P128。
流图(看书 P****137)
结点:用圆表示,一个圆代表一条或多条语句
边:箭头线称为边,代表控制流
区域:由边和结点围成的面积 称为区域,当计算区域数时应该包括图外未被围起来的区域
判定结点:包含条件的结点
计算环形复杂度的方法
流图中线性无关的区域数等于环形复杂度
流图G的环形复杂度V(G)=E-N+2,其中E是流图中边的条数,N是结点数
流图G的环形复杂度V(G)=P+1,其中P是流图中判定结点的数目

习题
4、图6. 18给出的程序流程图代表一个非结构化的程序,问:(1)为什么说它是非结构化的2)设计一个等价的结构化程序。(3)在(2)题的设计中使用附加的标志变量flag了吗没有,再设计一个使用flag的程序:若用了,再设计一个不用flag的程序答: (1)图示程序的循环控制结构有两个出口,不符合结构程序的定义,因此是非结构化的程序。****(2)设计的等价结构化程序盒图如下所示:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年11月4日
下一篇 2019年11月4日

相关推荐