第1章_软件工程学概述
软件工程导论复习重点总结很全第六版

第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.软件是一种( )产品。
A.有形 B.逻辑C.物质 D.消耗2.软件工程学的目的应该是最终解决软件生产的( )问题。
A.提高软件的开发效率 B.使软件生产工程化C.消除软件的生产危机 D.加强软件的质量保证3.与计算机科学的理论研究不同,软件工程是一门( )学科。
A.理论性 B.工程性 C.原理性 D.心理性4.软件危机的主要原因有( )。
①软件本身的特点②用户使用不当③硬件可靠性差· ④对软件的错误认识⑤缺乏好的开发方法和手段A.③④ B.①②④C.①⑤ D.①③5.在计算机软件开发和维护中所产生的一系列严重的问题通常称为软件危机,这些问题中相对次要的因素是( )。
A.文档质量 B.开发效率C.软件功能 D.软件性能6.软件工程与计算机科学性质不同,软件工程着重于( )。
A.原理探讨 B.理论研究C.建造软件系统 D.原理的理论7.软件工程学科出现的主要原因是( )。
A.计算机的发展B.其他工程科学的影响C.软件危机的出现D. 程序设计方法学的影响8.软件工程方法学的研究内容包含软件开发技术和软件工程管理两个方面,其期望达到的最终目标是( )。
A.软件开发工程化B.消除软件危机C.实现软件可重用D.程序设计自动化9.由于软件生产的复杂性和高成本性,使大型软件的生存出现危机,软件危机的主要表现包括了下述( )方面。
①生产成本过高②需求增长难以满足③进度难以控制④质量难以保证A.①② B.②③ c.④ D.全部10.软件工程方法学中的软件工程管理是其中的一个重要内容,它包括软件管理学和软件工程经济学,它要达到的目标是( )。
A.管理开发人员,以开发良好的软件B.采用先进的软件开发工具,开发优秀的软件c.消除软件危机,达到软件生产的规模效益D.以基本的社会经济效益为基础,工程化生产软件11.软件工程方法学的目的是使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是( )。
软件工程-张海藩 编著 复习提纲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)按照父类(基类)与子类(派生类)的关系,把若干个相关类组成一个层次结构的系统(也成为类的等级)。
(完整word版)软件工程导论(第6版)

第一章、软件工程学概述软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机包含下述两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。
2.如何维护数量不断膨胀的已有软件。
具体的说,软件危机主要有以下一些典型表现:1.对软件开发成本的进度的估计常常很不准确。
2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住。
4.软件常常是不可维护的。
5.软件通常没有适当的文档材料。
6.软件成本在计算机系统总成本中所占的比例逐年上升。
7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
软件生命周期:一个软件从定义、开发、使用和维护,知道最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期。
软件配置:程序、文档和数据。
软件工程学的一个重要的目标:就是提高软件的可维护性,减少软件维护的代价。
软件:是程序、数据及相关文档的集合。
程序:是能够完成预定功能和性能的可执行的指令序列。
数据:是使程序能够适当地处理信息的数据结构。
文档:是开发、使用和维护程序所需要的图文资料。
软件工程:指导计算机软件开发和维护的一门工程学科。
软件工程具有下属的本质特性:1.软件工程关注于大型程序的构造。
2.软件工程的中心课题是控制复杂性。
3.软件经常变化。
4.开发软件的效率非常重要。
5.和谐地合作是开发软件的关键。
6.软件必须有效地支持它的用户。
7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
软件工程的7条基本原理:1.用分阶段的生命周期计划严格管理。
2.坚持进行阶段评审。
3.实行严格的产品控制4.采用现代程序设计技术。
5.结构应能清楚的审查。
6.开发小组的人员应该少而精。
7.承认不断改进软件工程实践的必要性。
软件工程:包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为泛型。
第1章-软件工程学概述1-1

• 软件用后不磨损
• 随着时间的推移,应用程序
的某些部分可能会变得不再 相关(例如,需求改变时), 而需要修改
• 但是,没有备件的概念
1.1、软件的定义
硬件和软件故障率曲线
由于副作用造成 故障率的提高 原来的软件已经面目全非了!
故障率
磨损后
生命初期
修改
硬件的故障率曲线 实际曲线
软件故障率的理想曲线
1.2、软件危机
软件危机案例
3 . 软件产品的质量靠不住 [案例]:
ARIANE 5 火箭 1996 年6 月,耗资70 亿美元,发射
本章内容
1.1、软件的定义 1.2、软件危机 1.3、软件工程 1.4、软件生存期 1.5、软件过程
1.2、软件危机
软件危机
Crisis!
“软件危机”(Software crisis) 的出现是由于软件的规模越来越大,复杂 度不断增加,软件需求量增大。而软件开 发过程是一种高密集度的脑力劳动,软件 开发的模式及技术不能适应软件发展的需 要。致使大量质量低劣的软件涌向市场, 有的花费大量人力财力,而在开发过程中 就夭折。
时间
1.1、软件的定义
硬件和软件故障率曲线的比较
软件不会用坏(wear out).
软件会退化( deteriorate)!
1.1、软件的定义
软件的特点-7
要求
软件产品不允许误差
软件产品的高质量取决于好的设计( High quality is achieved through) 依赖于人(Depend on people) 需要对产品进行构造(Require the construction of a “product”)
第1章软件工程学概述

(3)软件经常变化 (4)开发软件的效率非常重要 (5.) 和谐地合作是开发软件的关键 (6.) 软件必须有效地支持它的用户 开发软件的目的就是支持用户的工作,满足 用户对软件的需求 (7. )在软件工程领域中通常由具有一种文 化背景的人替具有另一种文化背景的人创 造产品
37
软件工程的研究内容
软件是计算机系统中与硬件(hardware)相互依存 的另一部分,与硬件合为一体完成系统功能。 软件定义包括如下几点: (1)功能和性能的指令集(即程序); (2)程序能正常操纵信息的数据结构(即相关数 据); (3)与程序开发维护和使用有关的各种图文数据 (即说明文档)。
16
软件=程序+数据+相关文档
软件的发展主要经历了以下3个发展阶段:
第一阶段(20世纪50年代初期至20世纪60年 代中期) 特点:(1)称为程序设计阶段 (2)软件生产以个体化为主 (3)编写程序的工具只有低级语言 (4)软件规模小,几乎没有系统化的 标准可循
11
(5)软件由软件使用者自己开发和编写,适 合个人应用 (6)没有“软件”概念,对于程序有关的文 档的重要性认识不足,开发主要围绕硬件 进行 (7)工程规模小,使用工具单一,开发者之 间没有明确分工 第二阶段(20世纪60年代中期至70年代末期) 称程序系统阶段
7
ENIAC诞生于二战时期,最初是作为辅助炮兵计 算炮弹轨迹的工具,在盟军登陆西欧前一年开始 制造,但直到1945年停火时还没完成。在冷战初 期军方就发现了ENIAC的大量用途,它的17468 根真空管被用来测试氢弹的早期设计的可行性。 这台计算机每秒能执行5000条指令,在当时的情 况下它的运算速度比电动式计算机快1000倍。当 然,现在iPhone 6每秒能响应250亿条指令。
第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个要点
面向对象方法=对象+类+继承+用消息通信
太原理工大学软件工程-第一章软件工程概述

4.第四代软件工程
90年代起,基于构件的开发方法取得了重要的进展,软件系统的开发可通过使用 现存的可复用构件组装完成,而无需从头构造,从而达到提高效率和质量、降低 成本的目的,称为构件工程。
1.2软件危机
1.2.1软件危机及其表现
软件危机的定义:软件危机是指在计算机软件的 开发和维护过程中所遇到的一系列严重问题及矛 盾。
3.软件工程时代: 70年代至今
20世纪60-70年代是计算机系统发展的第三阶段.为了克 服软件危机,1968年北大西洋公约组织的专家们在联邦 德国召开国际会议,在这次会上正式提出并使用了“软 件工程”这个名词。这阶段主要采用“工程化的生产方 式”。
软件过程提出至今,它的发展已经经历了4个阶段:
1.第一代软件工程(20世纪60年代到70年代)
3.第三代软件工程
随着规模的不断增大,开发人员的增多,开发时间相应持续增长,加上软件是知 识密集型的逻辑思维产品,这些都增加了软件工程的管理难度,人们在软件开发的 实践中认识到:提高软件生产率、保证软件质量的关键是“软件过程“的控制和管 理,提出了对软件项目管理的计划、组织、成本估算、质量保证、软件配置等技术 和策略,逐步形成了软件过程工程。
1.1.2软件 的发展
自从第一台计算机诞生以来,就开始了软件的生产,到目前为 止,软件发展经历了三个阶段:
1.程序设计时代:20世纪50-60年代,采用“个体生产方 式”,人们认为软件就是程序,没有相关的文档资料。
2.程序系统时代 :20世纪60-70年代是计算机系统发展 的第二阶段,出现了“软件作坊”,软件质量低下, 可靠性差,可维护性差,却价格昂贵,供不应求。在 该阶段的后期,于是出现了“软件危机”。
软件工程知识点归纳

软件工程知识点归纳第1章软件工程学概述 (3)1.1 软件危机 (3)1.2 软件工程 (3)1.3 软件生命周期 (3)1.4 软件过程 (3)第2章可行性研究 (4)2.1 可行性研究的任务 (4)2.2 可行性研究过程 (4)2.3 系统流程图 (4)2.4 数据流图 (4)2.5 数据字典 (5)2.6 成本/效益分析 (5)第3章需求分析 (5)3.1 需求分析的任务 (5)3.2 与用户沟通获取需求的方法 (5)3.3 分析建模与规格说明 (5)3.4 实体-联系图 (5)3.5 数据规范化 (5)3.6 状态转换图 (6)3.7 其他图形工具 (6)3.8 验证软件需求 (6)第4章形式化说明技术 (6)第5章总体设计 (6)5.1 设计过程 (6)5.2 设计原理 (7)5.3 启发规则 (7)5.4 描绘软件结构的图形工具 (7)5.5 面向数据流的设计方法 (8)第6章详细设计 (8)6.1 结构程序设计 (8)6.2 人机界面设计 (8)6.3 过程设计的工具 (8)6.4 面向数据结构的设计方法 (8)6.5 程序复杂程度的定量度量 (8)第7章实现 (9)7.1 编码 (9)7.2 软件测试基础 (9)7.3 单元测试(模块测试) (10)7.4 集成测试(子系统测试和系统测试) (10)7.5 确认测试(验收测试) (10)7.6 白盒测试技术 (10)7.7 黑盒测试技术 (11)7.8 调试(修改测试发现的错误) (11)7.9 软件可靠性 (11)第8章维护 (11)8.1 软件维护的定义 (11)8.2 软件维护的特点 (11)8.3 软件维护过程 (12)8.4 软件的可维护性 (12)8.5 预防性维护 (12)8.6 软件再工程过程 (12)参考书目 (12)第1章软件工程学概述1.1 软件危机1. 软件危机的定义、表现、产生原因2. 消除软件危机的途径3. 软件产品必须由一个完整的配置组成,软件配置主要包括程序、文档和数据等成分。
软件工程导论第1章(第4版)

软件工程导论 (第4版)
张海藩 编著
总目录
第1章 软件工程学概述 第8章 维护
第2章 可行性研究
第9章 面向对象方法学引论
第3章 需求分析
第10章 面向对象分析
第4章 形式化说明技术 第11章 面向对象设计
第5章 总体设计
第12章 面向对象实现
第6章 详细设计
第13章 软件项目管理
测试、综合测试又称为系统实现。 设计出实现目标系统的方案,设计程序的体系结构。 确定实现模块功能所需要的算法和数据结构; 设计出程序的详细规格说明; 用适当的程序设计语言写出正确的容易理解、容易维护的
程序模块并进行单元测试; 根据设计的软件结构,把各模块装配起来并进行测试; 通过对软件测试结果的分析预测软件的可靠性; 写出测试计划和详细测试方案并记录实际测试结果; 按照规格说明书的规定,由用户对目标系统进行验收。
第7章 实现
第1章 软件工程学概述
软件成为独立的商品 计算机应用的普及,促使人们对软件的品种、
数量、功能、质量等提出了越来越高的要求 在1970前,计算机硬件工程技术由于电子技术
的发展而建立 重视软件开发过程、方法、工具和环境的研
究—软件工程
1.1 软件危机 一.软件
1.软件的定义 软件是能够完成预定功能和性能的可执行的计算
2. 产生软件危机的原因
(1)软件开发个体化,采用了错误的方法和技术,无设计资 料留存; (2)软件规模的增长,使得软件的复杂度增加,软件的可靠 性随软件规模的增长而下降,质量保证越来越困难; (3)软件维护费用急剧上升。
据统计,软件维护费用大约占到软件总花费的2/3; (4)软件生产技术进步缓慢,是加剧软件危机的重要原因。
软件工程概述

第1章 软件工程概述
二、软件危机
20世纪60年代末70年代初,西方工业发达国 家经历了一场“软件危机”。这场软件危机表现 在:一方面软件十分复杂,价格昂贵,供需差日 益增大,另一方面软件开发时又常常受挫,质量 差,指定的进度表和完成日期很少能按时实现, 研制过程很难管理,即软件的研制往往失去控制。 我们称软件开发和维护过程中所中遇到的这一系 列严重问题为软件危机。
1.2 软件的发展和软件危机
一、计算机系统的发展历程 第一代(20世纪60年代中期以前):程序设计阶段。 第二代(从20世纪60年代中期到70年代中期):程
序系统阶段——“软件工程” 学科诞生。 第三代(从20世70年代中期到80年代中期):软
件工程阶段。 第四代(从20世纪80年代中期至今):软件产业在
第1章 软件工程概述
二、软件开发模型
1.瀑布模型:将软件生存周期的各项活动规定为依 照固定顺序连接的若干阶段工作,形如瀑布流水, 最终得到软件产品。
如同任何其他事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程,一般称之为计算机软件的生存期。
第1章 第1章
软软软件件件工工程程概概工述述 程下的定义为:软件工程是开发、运
行、维护和修复软件的系统方法,其中“软
件”的定义为:计算机程序、方法、规则、
相关的文档资料以及在计事机上运行时所必
第1章 软件工程概述
(2)可行性研究:任务是为前一阶段提出的问 题寻求一种至数种在技术上可行、且在经济上有 较高效益的解决方案。
第1章 软件工程概述
2.软件开发时期
(1)需求分析:弄清用户对软件系统的全部需求, 主要是确定目标系统必须具备哪些功能。
《软件详细设计教程》课件第1章

第1章 软件工程概述
(3) 第三阶段:20世纪80年代。微处理器的出现与应用 使计算机真正成为大众化的东西,而软件系统的规模、复杂 性以及在关键领域的广泛应用,促进了软件开发过程的管理 及工程化开发。在这一时期,软件工程开发环境CASE及其 相应的集成工具大量涌现,软件开发技术中的度量问题受到 重视,出现了著名的软件工作量估计COCOMO模型、软件 过程改进模型CMM等。20世纪80年代后期,以Smalltalk、 C++等为代表的面向对象技术重新崛起,传统的结构化技术 受到了严峻的考验。
第1章 软件工程概述
在著名的《没有银弹:软件工程中的根本和次要问题》 一文中,Fred Brooks认为正是软件固有的复杂性造成了软件 开发的诸多问题。由于复杂性,人们难以全面理解问题,团 队成员之间的沟通也变得非常困难,从而导致了产品缺陷、 成本超支和进度拖延;由于复杂性,描述和理解软件系统所 有可能的状态是极其困难的,影响了产品的可靠性;由于软 件结构及其依赖关系的复杂性,软件的任何更改和扩充都有 可能带来灾难性的后果,形成所谓的“雪崩效应”。
第1章 软件工程概述
(3) 软件是不断变化的。软件是纯粹思维活动的产物, 它不会像硬件一样发生磨损,而是需要随着应用、硬件、用 户和社会等各种因素的变化不断地被修改和扩展。由于软件 是人类思维和智能的一种延伸,因此当软件被真正应用之后, 人们往往希望超越原有的应用边界进行软件功能的提升或扩 展;另外,由于软件必须依附于硬件平台,因此需要随着硬 件设备的更新和接口的不同而变化。
第1章 软件工程概述 图1.3 软件成本在系统总成本中所占比例
第1章 软件工程概述
(4) 软件维护极其困难,而且很难适应不断变化的用户 需求和使用环境。在软件交付使用的初期,需要识别和纠正 软件的错误,改正软件性能上的缺陷,避免实施中的错误使 用。即使软件进入了正常的使用期,由于计算机新技术的出 现和用户新需求的提出,也需要修改和改进软件。然而,软 件维护依然是一件非常困难的工作,常常出现诸如错误难以 修改或者修改又带来新的错误等现象,长期不断的修改也引 起了软件的退化。
张海藩《软件工程导论》(第6版)笔记和课后习题详解

第 3 章 需求分析 ......................................................................................................................................... 28 3.1 复习笔记 ........................................................................................................................................ 28 3.2 课后习题详解 ................................................................................................................................. 32
太原科技大学软件工程考试重点知识(一)

太原科技大学软件工程考试重点知识(一)第1章软件工程学概述1.1软件危机概念:指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
实际上,几乎所有软件都不同程度地存在这些问题。
原因:1.与软件本身的特点有关。
1)软件不同于硬件,缺乏“可见性”,它是计算机系统的逻辑部件而不是物理部件。
2)软件不同于一般程序,规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。
2.与软件开发与维护的方法不正确有关。
1)忽视软件需求分析的重要性。
对用户要求没有完整准确的认识就匆忙着手编写程序。
2)认为软件开发就是写程序并设法使之运行。
3)在软件开发的不同阶段进行修改需要付出的代价是很不相同的。
4)轻视软件维护。
消除途径:1.对计算机软件有正确的认识:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。
即Software=Program+Data+Document。
2.必须充分认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。
3.推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。
4.开发和使用更好的软件工具。
1.2软件工程软件工程:是指导计算机软件开发和维护的一门工程学科。
软件工程的本质特性:1.软件工程关注于大型程序的构造;2.软件工程的中心课题是控制复杂性;3.软件经常变化;4.开发软件的效率非常重要;5.和谐地合作是软件开发的关键;6.软件必须有效地支持它的用户;7.在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。
软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。
软件工程方法学的3要素:方法、工具和过程。
目前使用最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。
1.传统方法学也称为生命周期方法学或结构化范型。
结构化方法(StructureMethod)有:1)结构化设计方法(SD);2)结构化分析方法(SA);3)结构化分析与设计技术(SADT);4)JACKSON方法;5)WARNIER方法。
软件工程学概述

3. 实行严格的产品控制 基线配置管理(变动控制)
4. 采用现代程序设计技术 结构化分析、设计技术、结构化程序设计技术,面向对
象分析和设计技术。
实践表明,采用先进的技术不仅可以提高软件开发和 维护的效率,而且可以提高软件产品的质量。
5. 结果应该能够清楚地审查 依据开发项目的总目标和完成期限,规定开发小组的
易地改动。”
◦ “软件投入生产性运行以后需要的维护工作并不多,而且维护是一 种很容易做的简单工作。”软件维护的费用占软件总费用的55%- 70%
◦ 不完善的系统定义往往是导致软件项目失败的主要原因。 ◦ 只有质量差的软件产品才需要维护。
◦ 在软件开发的过程中,若能推迟暴露其中的错误,则为修复和改正错误 所花费的代价就会降低。
不全,坚持认为软件开发就是写程序、运行程序; (c)轻视软件维护。
不同阶段修改软件需付出的代价很不相同:
代价
高
中
低
早期 中期 后期 软件开发时期
引入同一修改的代价随时间变化的趋势
关于软件开发的常见观点:√ or X
◦ “有一个对目标的概括描述就足以着手编写程序了,许多细节可以 在以后再补充。”
◦ “所谓软件开发就是编写程序并设法使它运行。” ◦ “用户对软件的要求不断变化,然而软件是柔软而灵活的,可以轻
5. 详细设计 任务:怎样具体实现该系统 ◦ 详细地设计每个模块,确定实现模块功能所需要的算法和数 据结构。
结果: ◦ 每个模块的算法和数据结构(程序流程图、 N-S图、 PAD图
等)。
6. 编码和单元测试 任务:得到正确的程序模块 ◦ 选取一种适当的高级程序设计语言(必要时用汇编语言),把 详细设计的结果翻译成用选定的语言书写的程序; ◦ 并且仔细测试编写出的每一个模块。 结果: ◦ 代码和测试报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机基础
计算机组成
冯.诺依曼体系结构: 输入设备 输出设备 存储器 运算器 控制器
计算机中数的表示
二进制(bit) 八进制(byte) 十进制 数据:数值型、文本型、图形、图像、音频数据(多媒体数据
)
计算机语言
语言类型:机器语言(二进制指令),汇编语言,高级语言, BASIC,C,FORTRAN,COBOL,C++,JAVA……
教材
《软件工程》,21世纪高等学校计算机系列 实用规划教材,东北大学出版社,2010,李 惠明等编著
教材特点:
一本传统的软件工程教材,以软件生命周期阶段为线 索讲解软件过程的概念、原理、方法和软件工具。
由国人编写,语言易读易懂 难度适中,适合初学者作为教材使用
参考文献
软件工程(原书第9版)原书名:Software Engineering,Ninth Edition,作者:(英)lan Sommerville 著 译者:程成等译,2011年5月
. 软件是一种逻辑实体,而不是具体的物理实体 . 软件的生产与硬件不同
. 在软件的运行和使用期间,没有硬件那样的机械 磨损,老化问题
失 磨合 效 调整 率
修改点
失
磨损
效
用坏
率
实际曲线 理想曲线
硬件失效率曲 线
时 间
软件失效率曲 线
时 2间020/10/22
. 软件的成本相当昂贵
软
件
成本%
复
杂
软件需求
在一些人眼里,今天的软件开发似乎已 成为简单的事情,已有了不少很好的开发工 具和软件库,软件开发人员训练有素,都强 烈渴望去编写很酷的软件,可以在几天的时 间里编写出一个相当复杂的软件。但为什么 有一些软件能够得到用户的喜欢,而另一些 则不能?为什么有些软件能够在市场上成功 ,而有些则受到冷落?由此可见,开发软件 并不一定难,难就难在如何开发有用的软件。
专业课
数据结构、C/C++、计算机导论 大学英语、离散数学。。。
专业基础课
基础课
课程的性质、目的与任务
软件工程是计算机科学与技术专业、 软件工程的一门专业核心课程。通过本课 程的学习,使学生掌握系统的软件开发理 论、技术和方法,使用正确的工程方法开 发出成本低、可靠性好并在机器上能高效 运行的软件,为今后从事软件开发和维护 打下坚实的基础。
关系数据库管理系统
支持设计:
支持测试:
图形软件包
静态分析器
结构化流程图绘图程 序测试覆盖检来自程序支持实现: 编辑程序
支持管理: 标准检验程序
连接编辑程序
库管理程序
2020/10/22
2、按软件的规模进行划分
按开发软件所需的人 力、时间以及完成的源 代码行数。
类别
微型 小型 中型 大型 甚大型 极大型
微软凌小宁博士
我最大的心得是,一个产品一定要找到能 够真正适用的场合,不能只是为了技术而从事 技术为了研究而进行研究,却不管用户对你所 研究的技术和产品有没有需求。否则,无论你 的技术是多么优秀,多么先进,恐怕你的产品 在市场上都无法获得成功。
微软张益肇博士
第1章 软件工程概述
➢ 计算机基础 ➢ 软件 ➢ 软件危机 ➢ 软件工程的概念 ➢ 小结
算法:求解问题的步骤序列。
1.每个步骤精确描述,无歧义; 2.步骤是有限的; 3.可以用计算机表示
软件的概念与特点
1、软件
software soft+ware
软制品 (软体)
软件是计算机系统中与硬件相互依存的另一部分。 它包括程序、数据及其相关文档的完整集合。
2020/10/22
2、软件特点
软件工程
Software Engineering
请思考以下问题
你的打算: 你准备找一个什么样的工作? 你能分清机关、事业和企业性质的单位吗? 想学到什么知识?想找工作、考研、考公务员?想过四 六级?想考哪些专业认证? 你了解目前软件行业人才需求的现状吗? 你理想中的工作岗位可能需要什么技能? 你和别人合作是否会有什么障碍? 你估计一下软件工程是门什么样的课?
性
差距
硬件
软件技术
软件
时间
1950 1970 1985 1995 年份
软件技术的发展落后于需求 硬、软件成本比例的变化
2020/10/22
3、软件的分类
1、按软件的功能进行划分
系应支 统用撑 软软软 件件件
2020/10/22
支撑软件
一般类型: 文本编辑程序 文本格式化程序
支持需求分析:
PSL/PSA问题描述语 言
语言要素:词汇,语法,控制逻辑 控制逻辑:顺序、分支、循环
程序
为解决某个计算问题,用计算机语言表示的计算步骤。如: input r if r<0 message(“半径应大于0”) A=PI*r*r
output A
程序=数据结构+算法 数据结构
变量,数组,记录,文件 存储结构(物理结构),逻辑结构
2020/10/22
本课程比较全面、系统地介绍软件工程的概念、 技术与方法。
主要内容包括:软件工程概述、软件生存周期及 软件需求分析、软件设计方法、软件测试技术等。
通过本课程的学习,使学生能真正的从中了解软 件开发的整个过程。为了让学生真正得以实践,结合 一些项目案例,让学生从问题定义开始,经过可行性 研究、需求分析、概要设计、详细设计、编码、测试 ,这样一个软件开发过程,从而使学生掌握软件开发 的基本技能。
参加人数
1 1 2-5 5-20 100-1000 2000-5000
研制期限
1-4周 1-6周 1-2年 2-3年 4-5年 5-10年
产品规模(源代码行数)
约500行 约2000行 5000-50000行 5万-10万行 100万行 1000万行
2020/10/22
学习本课程的基本要求
本课程是继程序设计课程之后,对提高 学生软件开发能力有重要作用的一门课程。 要求学生在学习本课程前应掌握信息管理系 统、数据结构、结构化程序设计、面向对象 程序设计以及程序设计方法。
通过本课程的学习,为学生后期的毕业 设计环节奠定了良好的基础。
2020/10/22
软件工程导论,陈明,机械工业出版社,2010 年1月 软件工程-实践者的研究方法,R S. Pressman, 机械
工业出版社,2011年5月 软件工程导论, 张海潘编著, 清华大学出版社,2013年
8月 Internet上的各类学习网站.
4
课程地位
计算机专业的重要专业课之一
软件工程、数据库、网络。。。