软件工程学概述12

合集下载

软件工程概述

软件工程概述
2018/7/2 计算机科学与工程学院 22
3.克服危机的途径
1968年秋季,NATO(北约)的科技委员会召集了 近50名一流的编程人员、计算机科学家和工业界巨头, 讨论和制定摆脱“软件危机”的对策。由于认识到软 件的设计、实现、维护和传统的工程规则有相同的基 础,在那次会议上首次提出了“软件工程” (software engineering)这个概念。
计算机科学与工程学院
2018/7/2
27
软件工程方法:为软件开发提供“如何做”的技术。 它包括了项目计划、需求分析、系统设计、程序实现、 测试与维护等一系列的任务。 软件工程工具:为过程和方法提供自动的或半自动的 支持。这些软件工具被集成起来,建立起一个支持软 件开发的系统,称之为计算机辅助软件工程(CASE, Computer Aided Software Engineering)。CASE集成 了软件、硬件和一个存放开发过程信息的软件工程数 据库,形成了一个软件工程环境。
2018/7/2
计算机科学与工程学院
20
2.危机的原因
①用户对软件需求的描述不精确,可能有遗漏、有二 义性、有错误,甚至在软件开发过程中,用户还提出 修改软件功能、界面、支撑环境等方面的要求。 ②软件开发人员对用户需求的理解与用户的本来愿望 有差异,这种差异必然导致开发出来的软件产品与用 户要求不一致。 ③大型软件项目需要组织一定的人力共同完成,多数 管理人员缺乏开发大型软件系统的经验,而多数软件 开发人员又缺乏管理方面的经验。各类人员的信息交 流不及时、不准确、有时还会产生误解。
2018/7/2
计算机科学与工程学院
8
故 障 率
生命 初期 "磨损"后
故 障 率
实际曲线 修改

软件工程考研真题-选择题

软件工程考研真题-选择题

1、软件工程学概述1.1 软件危机1、软件是一种()A.有形产品B.逻辑产品C.物质产品D.消耗产品【答案】B -重庆大学2015【解析】2、以下哪一项不是软件危机的表现形式( )A.成本高B.生产率低C.技术发展快D.质量得不到保证【答案】C【解析】3、开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做()。

A.软件工程B.软件周期C.软件危机D.软件产生【答案】C【解析】4、“软件危机”是指()。

A. 计算机病毒的出现B.利用计算机进行经济犯罪活动C.软件开发和维护中出现的一系列问题D.人们过分迷恋计算机系统【答案】C【解析】软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

1.2 软件工程概念和任务1、下列不是软件工程基本要素的是()A过程B生产C方法D工具【答案】B【解析】软件工程三要素:方法、过程、工具。

2、软件工程是采用()的概念、原理、技术方法指导计算机程序设计的工程学科。

A.工程B.系统工程C.体系结构D.结构化设计【答案】A[中国传媒大学2014研]【解析】软件工程是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,从而经济地开发出高质量的软件,并且进行有效的维护。

3、为了解决软件危机,人们提出了用()的原理来设计软件。

A.运筹学B.工程学C.软件学D.数学【答案】B【解析】为了解决软件危机,通过采用软件工程来指导软件的设计。

软件工程是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护。

4、下列有关软件工程的标准,属于国际标准的是( )A.GBB.ANSIC.ISOD.IEEE【答案】C【解析】5、软件工程的基本要素包括方法、工具和()。

软件工程导论复习重点总结很全第六版

软件工程导论复习重点总结很全第六版

第1章软件工程学概述1.1 软件危机1.1.1 软件危机旳简介软件危机(软件萧条、软件困扰): 是指在计算机软件旳开发和维护过程中所碰到旳一系列严重问题。

软件危机包括下述两方面旳问题:怎样开发软件, 满足对软件日益增长旳需求;怎样维护数量不停膨胀旳已经有软件。

软件危机旳经典体现:(1)对软件开发成本和进度旳估计常常很不精确;(2)顾客对“已完毕旳”软件系统不满意旳现象常常发生;(3)软件产品旳质量往往靠不住;(4)软件常常是不可维护旳;(5)软件一般没有合适旳文档资料;(6)软件成本在计算机系统总成本中所占旳比例逐年上升;(7)软件开发生产率提高旳速度, 远远跟不上计算机应用迅速普及深入旳趋势。

1.1.2 产生软件危机旳原因(1)与软件自身旳特点有关(2)与软件开发与维护旳措施不对旳有关1.1.3 消除软件危机旳途径对计算机软件有对旳旳认识。

认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完毕旳工程项目。

应当推广使用在实践中总结出来旳开发软件旳成功技术和措施, 并继续研究探索。

应当开发和使用更好旳软件工具。

总之, 为了处理软件危机, 既要有技术措施(措施和工具), 又要有必要旳组织管理措施。

1.21.2.1 软件工程旳简介软件工程: 是指导计算机软件开发和维护旳一门工程学科。

采用工程旳概念、原理、技术和措施来开发与维护软件, 把通过时间考验而证明对旳旳管理技术和目前可以得到旳最佳旳技术措施结合起来, 以经济地开发出高质量旳软件并有效地维护它, 这就是软件工程。

(期中考)软件工程旳本质特性:软件工程关注于大型程序旳构造软件工程旳中心课题是控制复杂性软件常常变化开发软件旳效率非常重要友好地合作是开发软件旳关键软件必须有效地支持它旳顾客在软件工程领域中是由具有一种文化背景旳人替具有另一种文化背景旳人发明产品1.2.2 软件工程旳基本原理用分阶段旳生命周期计划严格管理坚持进行阶段评审实行严格旳产品控制采用现代程序设计技术成果应能清晰地审查开发小组旳人员应当少而精承认不停改善软件工程实践旳必要性1.2.3 软件工程措施学软件工程包括技术和管理两方面旳内容。

软件工程知识点

软件工程知识点

软件工程知识点1. 软件工程概述软件工程是一门研究和应用工程原则、方法和工具来开发和维护高质量软件系统的学科。

它涵盖了软件开发的整个生命周期,包括需求分析、设计、编码、测试、部署和维护。

2. 软件生命周期软件生命周期定义了软件开发过程中的各个阶段,包括需求定义、系统设计、详细设计、编码、测试、部署和维护等。

每个阶段都有特定的任务和交付物,通过严格遵循软件生命周期来管理项目,可以提高软件开发的质量和效率。

3. 软件需求分析软件需求分析是确定软件系统所需功能和性能的过程。

它包括对用户需求进行调查、分析和规范化,以便从中获得详细的系统需求。

4. 软件设计软件设计是根据需求分析的结果,确定软件系统的结构和组成部分的过程。

它包括软件架构设计、模块设计、数据结构设计等。

5. 软件编码软件编码是将设计好的软件系统转化为可执行的计算机程序的过程。

在编码过程中,开发人员需要遵循相应的编程规范和标准,以确保代码的可读性和可维护性。

6. 软件测试软件测试是为了发现和修复软件中的错误和缺陷。

测试可以分为单元测试、集成测试、系统测试和验收测试等不同的层级和类型,旨在确保软件功能的正确性和稳定性。

7. 软件部署软件部署是将软件安装和配置到用户的计算机系统中的过程。

在部署过程中,需要注意安装环境、配置文件和用户权限等问题,确保软件能够正常运行。

8. 软件维护软件维护是为了修复软件中的错误、改进功能以及适应新的需求而进行的修改和更新。

维护过程中包括问题分析、修改设计、修改代码、测试和发布等环节。

9. 软件质量保证软件质量保证是通过制定和执行软件质量标准、流程和方法,以确保软件开发过程中的质量问题被及时发现和解决的一系列活动。

包括代码审查、测试自动化、性能测试等。

10. 软件项目管理软件项目管理是对软件开发项目进行规划、组织、监控和控制的活动。

它包括项目需求管理、进度管理、资源管理、风险管理等方面,以确保软件项目按时、按质量要求完成。

软件工程ppt课件完整版

软件工程ppt课件完整版

修改与测试
对软件进行修改,并进行测试以确保 修改的正确性。
版本管理与发布
对修改后的软件进行版本管理,并发 布新版本。
软件演化策略与方法
增量式演化
逐步增加新功能或修改现有功能。
迭代式演化
通过不断迭代改进软件质量。
软件演化策略与方法
组件化演化
将软件拆分为独立组件进行演化。
重构
改进软件内部结构而不改变其外部行为。
处理团队冲突,化解矛盾,促进团队合作
版本控制与文档管理
使用版本控制工具(如Git) 管理项目代码和文档
建立完善的文档管理体系, 包括需求文档、设计文档、 测试文档等
制定版本控制规范,包括 分支管理、代码提交和合 并流程等
定期评审和更新文档,确 保文档与项目实际进展保 持一致
07 软件维护与演化
软件维护类型及流程
版本迁移与数据迁移
将旧版本的数据迁移到新版本,确保数据的 完整性和一致性。
持续集成与持续交付
持续集成
频繁地将代码集成到主干, 并进行自动化测试以快速发 现问题。
持续交付
在持续集成的基础上,将软 件以可发布的状态交付给用 户,以便用户能够快速获得 新功能或修复问题。
自动化测试与部署
监控与反馈
利用自动化工具进行测试和 部署,提高开发效率和质量。
软件工程的发展
软件工程经历了从程序设计、软件 工程方法、软件工程过程到软件工 程学科的逐步成熟过程。
软件工程目标与原则
软件工程的目标
在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护 性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求 的软件产品。
软件工程的原则

软件工程_张海蕃

软件工程_张海蕃

应该推广使用在实践中总结出来的开发软件的成功 的技术和方法,并且研究探索更好更有效的技术和 方法,尽快消除在计算机系统早期发展阶段形成的 一些错误概念和做法。 应该开发和使用更好的软件工具。正如机械工具可 以“放大”人类的体力一样,软件工具可以“放大” 人类的智力。在软件开发的每个阶段都有许多繁琐 重复的工作需要做,在适当的软件工具辅助下,开 发人员可以把这类工作做得既快又好。如果把各个 阶段使用的软件工具有机地集合成一个整体,支持 软件开发的全过程,则称为软件工程支撑环境。
与软件开发和维护有关的许多错误认识和作法的形 成,可以归因于在计算机系统发展的早期阶段软件 开发的个体化特点。错误的认识和作法主要表现为 忽视软件需求分析的重要性,认为软件开发就是写 程序并设法使之运行,轻视软件维护等。
事实上,对用户要求没有完整准确的认识就匆忙着 手编写程序是许多软件开发工程失败的主要原因之 一。只有用户才真正了解他们自己的需要,但是许 多用户在开始时并不能准确具体地叙述他们的需要, 软件开发人员需要做大量深入细致的调查研究工作, 反复多次地和用户交流信息,才能真正全面、准确、 具体地了解用户的要求。对问题和目标的正确认识 是解决任何问题的前提和出发点,软件开发同样也 不例外。急于求成,仓促上阵,对用户要求没有正 确认识就匆忙着手编写程序,这就如同不打好地基 就盖高楼一样,最终必然垮台。事实上,越早开始 写程序,完成它所需要用的时间往往越长。
另一方面还必须认识到程序只是完整的软件产品的 一个组成部分,在上述软件生命周期的每个阶段都 要得出最终产品的一个或几个组成部分(这些组成 部分通常以文档资料的形式存在)。也就是说,一 个软件产品必须由一个完整的配置组成,软件配置 主要包括程序、文档和数据等成分。必须清除只重 视程序而忽视软件配置其余成分的糊涂观念。 作好软件定义时期的工作,是降低软件成本提高软 件质量的关键。如果软件开发人员在定义时期没有 正确全面地理解用户需求,直到测试阶段或软件交 付使用后才发现“已完成的”软件不完全符合用户 的需要,这时再修改就为时已晚了。

软件工程概述

软件工程概述

这种情况导致了严重的后果—— 这种情况导致了严重的后果
– 软件可靠性下降;开发效率低下;维护极为困难。 软件可靠性下降;开发效率低下;维护极为困难。
软件危机” 是指在计算机软件的开发和维护过程中遇到的一 “软件危机”----是指在计算机软件的开发和维护过程中遇到的一 系列严重问题
3 1-3
寻求摆脱危机的出路
OOA
演化
集成 测试 编程 设计 分析
14 1-14
螺旋模型
综合了瀑布模型和原型模型的优点,两者结合, 综合了瀑布模型和原型模型的优点,两者结合,并加 入了风险分析机制。 入了风险分析机制。 螺旋模型的每一个周期都包括计划(需求定义 需求定义), 螺旋模型的每一个周期都包括计划 需求定义 ,风险 分析,工程实现和评审。 分析,工程实现和评审。 螺旋模型的优点: 螺旋模型的优点: 1)支持需求的动态变化 ) 2)原型可以看作是形式上可执行的需求规格说明书 ) 易于开发人员和用户理解。 ,易于开发人员和用户理解。 3)强调原型的可扩展性和可修改性,有助于目标软 )强调原型的可扩展性和可修改性, 件的可适应性。 件的可适应性。 适用范围: 支持需求不明确, 适用范围: 支持需求不明确,特别是大型软件系统开 支持面向过程,面向对象的软件开发方法。 发,支持面向过程,面向对象的软件开发方法。
面向对象软件工程概述
1
理论课
1 1-1
目标
了解软件危机是怎么产生的, 了解软件危机是怎么产生的,了解解决软件危机的出路 掌握软件工程的含义, 掌握软件工程的含义,目标和原理 掌握软件开发模型的种类及其适用的环境 面向对象的系统分析的主要目标
2 1-2
软件危机
硬件性能提高,价格则下降,应用领域迅速扩大; 硬件性能提高,价格则下降,应用领域迅速扩大; 要求计算机做的事越来越多,也越来越复杂; 要求计算机做的事越来越多,也越来越复杂; 这使计算机软件的功能、规模及复杂性与日俱增。 这使计算机软件的功能、规模及复杂性与日俱增。 软件的复杂性达到了它的开发者难以控制的程度。 软件的复杂性达到了它的开发者难以控制的程度。 大系统的复杂性是小程序无法比拟的。 大系统的复杂性是小程序无法比拟的。

第1章 软件工程学概述

第1章 软件工程学概述
上海大学计算机学院
Robert Martin Arie van Bennekun Alistair Cockburn Ward Cunningham Martin Fowler
31
软件过程:敏捷开发
开发原则
尽早地、持续地交付有价值的软件来使客户满意。
即使到了开发后期,也欢迎改变需求。敏捷过程利用变化来为客户创造 竞争优势。 经常交付可工作的软件,其时间间隔可以是几周到几个月。 开发期间,业务人员和开发人员必须天天在一起工作。 最有效果的、最有效率的传递信息的方法,就是面对面的交谈。 首要的进度度量标准是工作的软件。 简单是根本的 ……
2013-7-16
重构:建造产品的过程中不断地调整设计 上海大学计算机学院
33
各种生命周期模型的比较
第1章 软件工程学概述
软件危机
软件工程
软件生命周期
软件过程
2013-7-16
上海大学计算机学院
1
软件危机
软件发展的四个阶段
1. 1950’s~1960’s中
规模较小,个体开发
2. 1960’s中~1970’中
软件作坊,产品软件 “软件危机” 出现,“软件工程” 学科诞生(1968年)
3. 1970’中 ~1980’s
方法
2013-7-16
上海大学计算机学院
10
软件工程
传统方法学
也称为生命周期方法学或结构化范型
采用结构化技术(结构化分析、设计和实现) 结构化范型要么面向行为,要么面向数据
面向对象方法学
把数据和行为看成同等重要,以数据为主线, 把数据和对数据的操作紧密地结合
4个要点
面向对象方法=对象+类+继承+用消息通信
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

19
4.2 设计原理
实例讲评:改控制耦合为数据耦合示例
20
4.2 设计原理
外部耦合 一组模块与同一外部环境关联(例如,I/O模 块与特定的设备、格式和通信协议相关联), 它们之间便存在外部耦合 外部耦合必不可少,但这种模块数目应尽量少 公共耦合(公共数据区耦合) 一组模块引用同一个公用数据区(也称全局数 据区、公共数据环境) 公共数据区指:全局数据结构、共享通讯区, 内存公共覆盖区等
27
4.2 设计原理
内聚类型:七种类型
低内聚:偶然内聚:出现错误的概率比其他类型 的模块要高/0分;
28
4.2 设计原理
偶然内聚(巧合内聚) 实例讲评:偶然内聚示例
29
4.2 设计原理
逻辑内聚: 把几种相关功能(逻辑上相似的功能)组合在 一模块内,每次调用由传给模块的参数确定执 行哪种功能 修改困难/1分
21
4.2 设计原理
实例讲评:公共耦合实例
22
4.2 设计原理
实例讲评:公共耦合示例
23
4.2 设计原理
公共耦合存在的问题 1. 软件可理解性降低 2. 诊断错误困难 3. 软件可维护性差 4. 软件可靠性差 (公共数据及全程变量无保护措施) 慎用公共数据区和全程变量!!!
24
4.2 设计原理
实例讲评:时间内聚:初始程内聚:程序流程图作为工具设计软件时得 到模块/5分 模块内各处理成分相关,且必须以特定次序执 行 属中内聚
34
4.2 设计原理
实例讲评:过程内聚:定时器与中断标志
35
4.2 设计原理
实例讲评:过程内聚
LOGO
软件工程
主讲: 孙亮 Email: liangsun@ 大连理工大学计算机科学与技术学院
1
4.2 设计原理
4. 模块独立性(module independence) 概括了把软件划分为模块时要遵守的准则,也 是判断模块构造是否合理的标准。一般地,坚 持模块独立性是获得良好设计的关键 两个定性度量标准-内聚和耦合 耦合用于衡量不同模块彼此之间相互依赖(连 接)的紧密程度
2
4.2 设计原理
内聚用于衡量一个模块内部各个元素间彼此结 合的紧密程度 模块独立的概念:模块化、信息隐蔽和局部化 的直接结果
• 完成特定功能 • 模块之间关系简单
需要模块独立的原因
• 易开发 • 易测试
3
4.2 设计原理
耦合强度取决于模块接口的复杂程度、通过接 口的数据等 应该追求尽可能松散耦合的系统:影响系统的 可理解性、可测试性、可靠性和可维护性 耦合的七种类型
8
4.2 设计原理
实例讲评:数据耦合程序示例
9
4.2 设计原理
特征耦合 • 也称标记耦合(复合型耦合) • 如两个模块通过传递数据结构(不是简单数 据,而是纪录、数组等)加以联系,或都与 一个数据结构有关系,则称这两个模块之间 存在标记耦合
10
4.2 设计原理
实例讲评:特征耦合实例
11
5
4.2 设计原理
内容耦合:最高程度耦合 无直接耦合:两个模块没有直接关系(模块1和 模块2),模块独立性最强
6
4.2 设计原理
实例讲评:无直接耦合示例
7
4.2 设计原理
数据耦合:一模块调用另一模块时,被调用模 块的输入、输出都是简单的数据(若干参数)。 属松散耦合 实例讲评:数据耦合示例
4.2 设计原理
实例讲评:特征耦合示例
12
4.2 设计原理
实例讲评:特征耦合示例
13
4.2 设计原理
将特征耦合修改为数据耦合举例
14
4.2 设计原理
实例讲评:将特征耦合修改为数据耦合示例
15
4.2 设计原理
控制耦合 模块向下属模块传递的信息(开关量、标志等 控制被调用模块决策的变量)控制了被调用模 块的内部逻辑
36
4.2 设计原理
通信内聚 模块内各部分使用相同的输入数据,或产生相 同的输出结果 通信内聚:7分 属中内聚
37
4.2 设计原理
实例讲评:通信内聚示例
38
4.2 设计原理
实例讲评:通信内聚示例
39
4.2 设计原理
顺序内聚 数据流图作为工具设计软件时得到的模块/9 分 信息内聚 模块完成多个功能,各功能都在同一数据结构 上操作,每一功能有唯一入口 属高内聚
16
4.2 设计原理
实例讲评:控制耦合示例
17
4.2 设计原理
去除模块间控制耦合的方法 控制耦合增加了理解和编程的复杂性,调用模 块必须知道被调模块的内部逻辑,增加了相互 依赖
• 将被调用模块内的判定上移到调用模块中进行 • 被调用模块分解成若干单一功能模块
18
4.2 设计原理
改控制耦合为数据耦合举例
内容耦合
25
4.2 设计原理
耦合设计原则 尽量使用数据耦合 少用控制耦合 限制公共环境耦合范围 完全不用内容耦合
26
4.2 设计原理
内聚概念:衡量一个模块内部各元素彼此结合的 紧密程度 简单地说,理想内聚的模块只做一件事情。设计 时应该力求做到高内聚,通常中等程度的内聚也 是可以采用的,而且效果和高内聚相差不多。但 是,坚决不要使用低内聚
30
4.2 设计原理
实例讲评:逻辑内聚示例
31
4.2 设计原理
时间内聚 时间内聚,比逻辑内聚好一些/3分。模块完 成的功能必须在同一时间内执行,这些功能只 因时间因素关联在一起 实例讲评:时间内聚示例 例如:初始化系统模块、系统结束模块、紧急 故障处理模块等均是时间性聚合模块
32
4.2 设计原理
4
4.2 设计原理
耦合强度 非直接耦合/无耦合:最低 数据耦合:低耦合/可以只包括该耦合 控制耦合:中耦合/通常模块分解可以用数据 耦合 公共环境耦合:全程变量、共享通信区、内存 公共覆盖区、存储介质上文件或设备等;复杂 程度随耦合模块个数变化;/一读一取;属松 散耦合;既读又取;介于数据耦合与控制耦合 之间
内聚设计原则: 力求高内聚 中等内聚也可以采用 低内聚不要用 与耦合关系:高内聚意味松耦合 实践表明,内聚更重要,应该把更多注意力集中 到提高模块的内聚程度上
44
LOGO
45
40
4.2 设计原理
实例讲评:顺序内聚示例
41
4.2 设计原理
功能内聚 最高内聚/理想内聚只做一件事/10分 模块仅包括为完成某个功能所必须的所有成分 模块所有成分共同完成一个功能,缺一不可 内聚性最强 属高内聚
42
4.2 设计原理
实例讲评:功能内聚示例
43
4.2 设计原理
相关文档
最新文档