当前位置:文档之家› 软件工程导论第1章 软件工程概述

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

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