第1章软件工程概述(1)
软件工程概述

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.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.1 符号
符号 名称 处理 说明 如:程序,处理机,人工加工
输入/输出 表流 指明数据流动方向
图2.1 基本符号
符号
名称
穿孔卡片 文档 磁带 联机存储 磁盘 磁鼓 显示 人工输入 人工操作 辅助操作 通信链路
说明 穿孔卡片输入/输出,或穿孔卡片文件
1)复查系统规模和目标; 2)研究目前正在使用的系统; 3)导出新系统的高层逻辑模型(数据流 图、数据字典);
4)重新定义问题;
2.2 可行性研究的步 骤
5)导出和评价供选择的解法(物理解决方案);
6)推荐行动方案;
7)草拟开发计划;
8)书写文档提交审查。
2.3 系统流程图 (描绘物理系统 的工具)
SDC公司的形式化开发方法FDM: (Formal Development Methodology) IBM公司的维也纳开发方法VDM:
1.3 软件生命周期
软件生命周期: 指软件从提出到最终被淘汰的这个存在期。
软件生命周期组成:
1)软件定义;
A.问题定义 B.可行性研究 C.需求
软件的总体目标什么? 有什么用途? 为那些用户设计?
问题定义是软件生命周期中时间最短的阶
段,一般都比较简单,因此在实际开发中它是
最容易被忽视的一个阶段。
这一阶段工作主要由系统分析员来完成,
系统分析员要尽可能从较高的角度概括软件所
要做的工作,而不用写明问题的实现细节。
第2章:可行性研究
1.2 软件工 程
1.2.1 软件工程的介绍
1968 年 NATO 会议:软件工程就是为了经济地获 得可靠的且能在实际机器上有效地运行的软件, 而建立和使用完善的工程原理。 1993 年 IEEE :软件工程是( 1 )把系统的、规范 的、可度量的途径应用于软件开发、运行和维护 过程;(2)研究(1)中提到的途径。
软件工程导论第一章PPT

2015年5月11日
第1章
概述
第15页
1.2.2 软件工程的研究内容和基本原理
软件工程的研究内容 软件工程的主要研究内容是指软件开发技术和软件开发过程 管理两个方面。
– 在软件开发技术方面主要研究软件开发方法、软件开发过程、软 件开发工具和技术。 – 在软件开发过程管理方面主要研究软件工程经济学和软件管理学。
“软件工程”一词是由北大西洋公约组织(North Atlantic Treaty Organization,NATO)的计算机科学家 在联邦德国召开的国际会议上首次提出来的。产生软件工 程这门学科的时代背景是“软件危机”。软件工程的发展 和应用不仅缓和了软件危机,而且促使一门新兴的工程学 科诞生了。 本章将讲述软件、软件危机及软件工程的相关概念、历史 发展和开发模型。
2015年5月11日
第1章
概述
第10页
1.1.3 软件危机的产生原因及解决途径
产生原因
(1) 软件是计算机系统中的逻辑部件,软件产品往往规模 庞大,结构复杂。 (2) 软件开发的管理困难。 (3) 软件开发费用不断增加,维护费用急剧上升,直接威 胁计算机应用的扩大。 (4) 软件开发技术落后。 (5) 生产方式落后。 (6) 开发工具落后,生产效率提高缓慢。
2015年5月11日 第1章 概述 第6页
1.1.1 软件的定义、特点及分类
二、软件的特点 软件是一种特殊的产品,与传统的工业产品相比,它具有以下 一些独特的特点。 (1)软件是一种逻辑产品,而不是具体的物理实体,具有抽象 性。 (2)软件产品的生产主要是开发研制,没有明显的制造过程。 (3)软件产品在使用过程中,不存在磨损、消耗、老化等问题 (4)软件产品的开发主要是脑力劳动,还未完全摆脱手工开发 方式,大部分产品是“定做的”,生产效率低。
软件工程导论第一章

2013-7-4
liang@
6
软件的规模
类别 微型 小型 参加人员数 1 1 研制期限 1~4周 1~6月 产品规模(源程序行数) 0.5k 1k~2k
中型
大型 甚大型 极大型
2~5
5~20 100~1000 2000~5000
1~2年
2~3年 4~5年 5~10年
5k~50k
2013-7-4 liang@ 4
软件的特点
软件是一种逻辑实体,而非有形的系统元件
因而它具有抽象性,其开发成本和进度难以估算
软件的生产与硬件不同,在它的开发过程中没有 明显的制造过程
一旦开发成功只需复制即可使用,但维护工作量大
在软件的运行和使用期间,没有硬件那样的机械 磨损,老化问题
liang@ 10
Cutter Consortium在2002年的报告
2013-7-4
软件危机的典型表现
对软件开发成本和进度的估计常常很不准确
时常发生用户对“已完成的”软件系统不满意的现象
软件产品的质量不可靠 软件常常是不可维护的 软件通常没有适当的文档资料 软件开发生产率提高的速度,既跟不上硬件的发展速度,也
典型开发:编码:10%-20%;测试:40%-50% 软件产品的完整配置——程序、文档、数据
轻视软件维护
事实上,用于软件维护的费用占总费用的55-70% 开发每一行源代码耗资25美元,维护每一行源代码需要耗资1000美元
提高软件的可维护性,减少软件维护的代价
2013-7-4 liang@ 14
在类等级中,下层派生类自动拥有上层基类中定义的数据和操作——继承 (Inheritance)
软件工程-张海藩 编著 复习提纲1-6章

第一章软件工程学概述第一节软件危机1.为了消除软件危机,20世纪60年代后期形成了新学科:计算机软件工程学。
2.软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
(这些问题不是不能运行的软件才仅仅具有的,几乎所有的软件都不同程度存在这些问题。
)3.软件危机包含两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。
2.如何维护数量不断膨胀的已有软件。
4.产生软件危机的原因(page4—图1.1)1.一方面与软件本身的特点有关2.另一方面也和软件开发与维护的方法不正确有关。
5.软件不同于一般程序,它的一个显著特点是:“规模庞大”。
6.软件开发流程:1. 问题定义:(确定要求解决的问题是什么)2. 可行性研究:(决定该问题是否存在一个可行的解决办法)3. 需求分析:(深入具体的了解用户需求)进入开发时期:对软件设计概要设计详细设计编写程序(全部工作量10%—20%)测试交付使用7.软件产品的配置:包括:程序、文档、数据8.软件危机的一些典型表现:1.对软件开发成本和进度的估计常常不准确2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住4.软件常常是不可维护的5.软件通常没有适当的文档资料。
6.软件成本在计算机系统总成本中所占的比例逐年上升。
7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
第二节软件工程1.软件工程定义软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;2. 软件工程方法学包含3个要素:方法、工具和过程。
3. 软件工程方法学: 1. 传统方法学2. 面向对象方法学4. 面向对象方法学的4个特点:(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。
(2)把所有的对象都划分成类(class)。
(3)按照父类(基类)与子类(派生类)的关系,把若干个相关类组成一个层次结构的系统(也成为类的等级)。
软件工程导论复习

软件⼯程导论复习第1章软件⼯程概述1.软件危机定义:111软件危机是指在计算机软件的开发和维护过程中所遇到的⼀系列严重问题产⽣原因:软件本⾝特点、软件开发与维护的⽅法不正确2.什么是软件⼯程?111软件⼯程是:软件⼯程是指导计算机软件开发和维护的⼀门⼯程学科。
采⽤⼯程的概念、原理、技术和⽅法来开发与维护软件,把经过时间考验⽽证明正确的管理技术和当前能够得到的最好的技术⽅法结合起来,以经济地、⾼效的开发出⾼质量的软件并有效地维护它,这就是软件⼯程。
3.软件⼯程基本原理111:1)⽤分阶段的⽣存周期严格管理。
(2)坚持进⾏阶段评审。
(3)实⾏严格的产品控制。
(4)采⽤现代程序设计技术。
(5)结果应能清楚地审查。
(6)开发⼩组⼈员应该少⽽精。
(7)承认不断改进软件⼯程实践的必要性2、软件⼯程的主要⽬标是什么?基本⽬标是什么?软件⼯程的⽬标:从管理和技术两个⽅⾯开发和维护计算机软件,⽤低成本,开发出达标、⾼性能、易于移植、可靠性⾼的软件。
软件⼯程的基本⽬标是:优质、⾼产。
3. 软件⼯程⽅法学111通常把在软件⽣命周期全过程中使⽤的⼀整套技术⽅法的集合称为⽅法学也称为“范性”。
在软件⼯程领域中这两个术语的含义基本相同。
软件⼯程⽅法学包括3个要素⽅法、⼯具和过程。
⽅法完成软件开发的各项任务的技术⽅法⼯具运⽤⽅法提供的⾃动的或半⾃动的软件⼯程⽀撑环境过程为了获得⾼质量的软件所要完成的⼀系列任务框架规定了完成各项任务的⼯作步骤⽬前使⽤得最⼴泛的软件⼯程⽅法学分别是传统⽅法学和⾯向对象⽅法学1 传统⽅法学传统⽅法学⼜称⽣命周期⽅法学或结构化范型。
软件⼯程采⽤的⽣命周期⽅法学就是从时间⾓度对软件开发和维护的复杂问题进⾏分解把软件⽣命的很长周期依次划分为若⼲个阶段每个阶段有相对独⽴的任务然后逐步完成每个阶段的任务。
对于任何两个相邻的阶段⽽⾔前⼀阶段的结束标准就是后⼀阶段的开始标准。
在每⼀个阶段结束之前都必须进⾏正式严格的技术审查和管理复审从技术和管理两⽅⾯对这个阶段的开发成果进⾏检查通过之后这个阶段才算结束如果检查迈不过则必须进⾏必要的返⼯并且返⼯后还要再经过审查。
软件工程(习题与参考答案)

第1章概述(习题与参考答案)[判断题]1. 由于今天个人计算机不断发展壮大,人们不再采用软件团队的开发方式。
(×)2. 由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。
(×)3. 购买大多数计算机系统所需的硬件比软件更昂贵。
(×)4. 大多数软件产品在其生命周期中不需要增强功能。
(×)5. 大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。
(√)6. 一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。
(×)[选择题]1. ()因素促使计算机系统越来越复杂。
(D)A. 计算机内存和存储容量上的巨大增长B. 外部输入/输出选项的更加多样性C. 计算机体系结构方面的深刻变化D. 以上所有选项2. 下面的()不再是现代软件工程师关注的问题。
(A)A. 为什么计算机硬件的成本这么高?B. 为什么软件需要很长时间才能完成?C. 为什么开发一个软件的成本这么高?D. 为什么不能在产品发布前去除软件错误?3. 软件会逐渐退化而不会磨损,其原因在于()。
(C)A. 软件通常暴露在恶劣的环境下B. 软件错误通常发生在使用之后C. 不断的变更使组件接口之间引起错误D. 软件备件很难订购4. 大多数软件仍然是定制开发的,其原因在于()。
(C)A. 软件组件重用是十分普遍的B. 可重用的组件太昂贵而无法使用C. 软件在不使用其他组件的情况下很容易构造出来D. 商业组件在很多应用领域中可以得到5. 下面的()说法是正确的。
(C)A. 软件危机在20世纪70年代末期全面爆发B. 当前先进的软件工程方法已经解决了软件危机的问题C. 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题D. 软件危机是指在软件产品中存在一系列的质量问题6. 软件工程的基本目标是()。
(B)A. 消除软件固有的复杂性B. 开发高质量的软件C. 努力发挥开发人员的创造性潜能D. 更好地维护正在使用的软件产品7. ()是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。