软件工程导论第1章 软件工程概述

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
的支持。 –⑹供求矛盾。
2020/12/12
1.1 续
• 消除软件危机的途径
–⑴对计算机软件有一个正确的认识。 软件≠程序
–⑵软件开发是一种组织良好、管理严格、各类 人员协同配合、共同完成的工程项目,需要吸收 和借鉴成功的组织管理经验。
–⑶在开发过程中,推广使用在实践中总结出来 的开发软件的成功的技术和方法。
– 软件危机是指在计算机软件开发、使用与维护过 程中遇到的一系列严重问题和难题。
• 软件危机包含两方面的问题:
– 如何开发软件?
– 如何维护软件?
2020/12/12
1.1 续
• 软件危机的表现
– ⑴对软件开发成本和进度的估计常常很不准确。 – ⑵用户对已完成的软件不满意的现象时有发生。 – ⑶软件产品的质量往往是靠不住的。 – ⑷软件常常是不可维护的。 – ⑸软件通常没有适当的文档资料。 – ⑹软件成本在计算机系统总成本中所占比例逐年
–⑷开发和使用更好的软件工具,创建软件工程 支持环境。
2020/12/12
1.2 软件工程
• 软件工程介绍
–1968年,北大西洋公约组织在联邦德国召开计 算机科学会议,讨论软件危机问题。由Fritz Bauer首次提出了“软件工程”的概念。
–软件工程就是为了经济地获得可靠的且能在实 际机器上有效地运行的软件,而建立和使用完善 的工程原理。
–软件开发小组人员素质和数量是影响软件质量 和开发效率的重要因素。
–素质高的人员开发效率高,错误率低。
–开发小组的成员之间要交流情况、讨论问题,
随着人数的增加,通信开销将急剧增加。
–人员数:N
通信路径:N(N-1)/2
– 由于误解等原因可能增加出错的概率。
2020/12/12
1.2 续
• ⑺承认不断改进软件工程实践的必要性
1.2 续
• ⑴用分阶段的生命周期计划严格管理
–把软件生命周期划分成若干个阶段,并相应地 制定出切实可行的计划,然后严格按照计划对软 件的开发与维护工作进行管理。
–应该制定的计划有项目概要计划、里程碑计划 、项目控制计划、产品控制计划、验证计划和运 行维护计划等。
–不同层次的管理人员都必须严格按照计划各尽 其职地管理软件开发与维护工作。
软件工程导论第1章 软件工程概述
课程的任务和目的
• 《软件工程》
– 课程的性质是软件工程专业的必修课,是涉及多 门专业基础课与专业课的综合性应用课程。
– 本课程的任务和教学目的是使学生掌握软件工程 的基本概念、原理、典型的方法学,以及软件项 目的管理技术。并通过具体应用,运用所学知识 ,解决实际问题。
–进一步研究先进的软件开发与维护技术。
2020/12/12
1.2 续
• ⑸结果应能清楚地审查
–软件产品属于逻辑产品,可见性差,难以评审 和管理。
–为更好地进行评价与管理,应根据软件开发的 总目标和完成期限,规定开发小组的责任和产品 标准,以便结果的审查。
2020/12/12
1.2 续
• ⑹开发小组的人员应该少而精
–遵循上述六条基本原理,就能够较好地实现软 件的工程化生产。
– 按照这条原则,不仅要积极主动地采纳或创造新 的软件技术,而且要注意不断总结经验,收集工 作量、进度、成本等数据,并进行出错类型和问 题报告的统计。
– 收集的数据,一方面可用来评估新的软件技术的 效果,另一方面,可用来指明应优先进行研究的 软件工具和技术。
1.2 续
• 软件工程基本原理
–软件工程专家B. W. Boehm于1983年提出了软件 工程的7条基本原理。
–这7条基本原理被认为是确保软件产品质量和开 发效率的原理的最小集合。
–这7条原理是相互独立、缺一不可、相当完备的 最小集合,任意6条原理的组合都不能代替另一 条原理。
2020/12/12
成绩比例
1、学习态度 2、课堂提问 3、考勤 4、作业 5、考试
成绩评定方法
5% 5% 10% 10% 70%
注:旷课4学时取消考试资格。
2020/12/12
第1章 软件工程概述
• 主要内容 – 1.1 软件危机 – 1.2 软件工程 – 1.3 软件生命周期 – 1.4 软件过程
• 教学重点
– 软件工程的定义、基本原理及生命周期。
–缺点:数据和对数据的操作不能兼顾。
2020/12/12
1.2 续
• 面向对象方法学
–面向对象方法是一种以数据为主线,把数据和 对数据的操作紧密地结合起来的方法。
–基本原理:尽量模拟人类习惯的思维方式,使 开发软件的方法与过程尽可能接近人类认识世界 解决问题的方法与过程,从而使描述问题的问题 域与实现解法的求解域在结构上尽可能一致。
2020/12/12
课程的基本要求
- 1.了解软件危机发生的历史原因和软件工程学诞生 的背景。
- 2.学习软件开发过程中的工程化管理思想,并能够 自觉地运用这种思想指导软件设计实践。 ;
- 3.学习软件工程每一阶段应着重解决的问题和在该 阶段解决这些问题应该掌握的原理和方法;
- 4.学习面向对象分析、设计和实现的原理和方法, 领悟面向对象软件开发技术与软件工程学的关系。
–面向对象方法学开发软件的过程是一个主动地 多次反复迭代的演化过程,而不是顺序地完成。
–降低了软件产品的复杂性,提高了软件的可理 解性,简化了软件的开发和维护工作,促进了软 件的重用。
2020/12/12
1.3 软件生命周期
• 软件从定义开始,经过开发、使用和维护, 直到最终退役的全过程称为软件生命周期。
上升。 – ⑺开发生产率提高的速度远跟不上软件需求。
2020/12/12
100% 80% 60% 40% 20%
硬件
1.1 续
软件开发 软件维护
2020/12/12
1955年
1970年
软件、硬件成本变化趋势
1985年
1.1 续
• 产生软件危机的原因
–⑴用户对软件需求的描述不精确。 –⑵软件开发人员对用户需求的理解有偏差。 –⑶缺乏处理大型软件项目的经验。 –⑷开发大型软件易产生疏漏和错误。 –⑸缺乏有力的方法学的指导和有效的开发工具
1.2 续
• ⑷采用现代程序设计技术
–采用先进的技术不仅可以提高软件开发和维护 的效率,而且可以提高软件产品的质量。
–多年来,人们一直致力于研究新的“程序设计 技术”。
• 20世纪60年代——结构程序设计技术; • 结构分析(SA)和结构设计(SD)技术; • 面向对象分析(OOA)和面向对象设计(OOD)技术。
2020/12/12
• 软件的特点
1.1 续
– ⑴软件开发更依赖于开发人员的业务素质、智力 、人员的组织、合作和管理。
– ⑵软件存在潜伏错误,硬件错误一般能排除。
– ⑶软件开发成功后,只需对原版进行复制。
– ⑷软件在使用过程中维护复杂。
– ⑸软件不会磨损和老化。
2020/12/12
• 软件的发展
– 由系统分析员完成该阶段的系统分析工作。 – 软件定义时期可通过软件系统的问题定义、可行
性研究和需求分析三个阶段来完成。
2020/12/12
1.3 续
• ⑴问题定义阶段
– 问题定义阶段必须回答的关键问题是:“要解决 的问题是什么?”。
– 问题定义阶段的任务是:确定软件系统的工程需 求,也就是要搞清“做什么?”。
2020/12/12
1.2 续
• ⑵坚持进行阶段评审
–大部分错误是在编码之前造成的。 –设计错误:63% 编码错误:37% –错误发现与改正得越晚,所需付出的代价也就
越高。
2020/12/12
1.2 续
• ⑶实行严格的产品控制
–决不能随便改变需求,只能依靠科学的产品控 制技术来顺应用户提出的改变需求的要求。
2020/12/12
1.2 续
• 软件工程方法学
–通常把软件生命周期全过程中使用的一整套技 术方法的集合称为方法学(范型)。
–软件工程方法学包含3种要素:方法、工具和过 程。
–方法是完成软件开发的各项任务的技术方法。
–工具是为运行方法而提供的自动的或半自动的 软件工程支撑环境;
–过程是为了获得高质量的软件所需要完成的一 系列任务的框架,它规定了完成各项任务的工作 步骤。
2020/12/12
• 软件工程特性
1.2 续
–⑴软件工程关注于大型程序的构造。
–⑵软件工程的中心课题是控制复杂性。
–⑶软件经常变化。
–⑷软件开发效率的重要性。
–⑸和谐地合作是开发软件的关键。
–⑹软件必须有效地支持它的用户。
–⑺具有一种文化背景的人替具有另一种文化背 景的人创造产品。
2020/12/12
• 可将软件生命周期划分为3个时期,共8个阶 段。
• 3个时期:软件定义时期、软件开发时期、 运行维护时期。
• 8个阶段有:问题定义、可行性研究、需求 分析、总体设计、详细设计、编码和单元测 试、综合测试、维护。
2020/12/12
1.3 续
• 软件生命周期阶段的划分
问题定义
定义时期
可行性研究 需求分析
–为了保证软件各配置成份的一致性,必须实行 严格的产品控制,其中主要是实行基准配置管理 (变动控制)。
–凡是修改软件的建议,尤其是涉及对基准配置 的修改建议,都必须按规程进行严格的评审,评 审通过后才能实施修改。
–基准配置:经过阶段评审后的软件配置成份, 即各级段产生的文档或程序代码。
2020/12/12
2020/12/12
1.1 软件危机
• 软件与软件的组成
– 计算机软件:与计算机系统操作有关的程序、规 程、规则及任何与之有关的文档和数据。
– 软件: 程序及有关数据—机器可执行; 文档—不可执行。
– 程序:能够完成预定功能和性能的可执行的指令 序列。
– 数据:使程序能够适当地处理信息的数据结构。 – 文档:开发、使用和维护程序所需的图文资料。
2020/12/12
1.1 续
• 程序设计语言三种类型
– 1.机器语言、汇编语言:依赖于机器,面向机器 – 2.高级语言:独立于机器,面向过程或面向对象 – 3.面向问题语言:独立于机器,非过程式语言(
4GL)
• 文档作用
– 专业人员和用户之间的通信和交流; – 软件开发过程的管理; – 运行阶段的维护。
- 5.在理论学习的基础上,运用所学知识解决实际问 题,加深认识和体会。
2020/12/12
教材与参考书
• 教材:
《软件工程导论(第四版)》张海藩 编 清华大学出版社
• 参考书:
《实用软件工程》郑人杰 殷人昆 陶永雷 编 清华大学出版社
2020/12/12
• 教学进度表
学时安排
2020/12/12
–1993年IEEE给出了一个更全面具体的定义:
–软件工程是①把系统的、规范的、可度量的途 径应用于软件开发、运行和维护过程,也就是把 工程应用于软件;②研究①中提到的途径。
2020/12/12
软件工程定义
1.2 续
• 概括地说,软件工程是指导计算机软件开发 和维护的一源自文库工程学科。采用工程的概念、 原理、技术和方法来开发与维护软件,把经 过时间考验而证明正确的管理技术和当前能 够得到的最好的技术方法结合起来,以经济 地开发出高质量的软件并有效地维护它。
2020/12/12
• 传统方法学
1.2 续
–又称生命周期方法学,或结构化范型。
–采用结构化技术来完成软件开发的各项任务, 并使用适当的软件工具或软件工程环境来支持结 构化技术的运用。
–把软件生命周期的全过程依次划分为若干个阶 段,然后自顶向下顺序地完成每个阶段的任务。
–采用生命周期方法学可以降低软件开发的难度 ,提高软件的可维护性,保证软件质量,从而大 大提高软件开发的生产率和成功率。
– 通过对客户的访问调查,系统分析员扼要地写出 关于问题性质、工程目标和工程规划的书面报告 ,经过讨论和必要的修改之后,由顾客确认。
2020/12/12
• ⑵可行性研究
1.3 续
– 本阶段要回答的关键问题是:“对于上一个阶段 所确定的问题有行得通的解决办法吗?”。
总体设计
开发时期
详细设计 编码和单元测试
综合测试
维护时期
软件维护
退役
2020/12/12
1.3 续
• ⒈软件定义时期
– 软件定义时期的任务是:确定软件开发工程必须 完成的总目标;确定工程的可行性;导出实现工 程目标应该采用的策略及系统必须完成的功能; 估计完成该项工程需要的资源和成本,并且制定 工程进度表。
1.1 续
– 第一阶段:20世纪60年代中期以前,个体化生产 ;
– 第二阶段:60年代中期到70年代末期,软件作坊 ,软件危机出现;
– 第三阶段:70年代中期到20世纪80年代末期,采 用“工程的方法”,产业化生产;
– 第四阶段:80年代末期开始,软件工程大发展。
2020/12/12
• 软件危机
1.1 续
相关文档
最新文档