软件工程1-史济民
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
--软件的特征
• 硬件磨损(浴缸曲线)vs.软件退化
由于变更的副作用而 导致软件失效率提高
失效率
变更点
硬件
实际曲线 理想曲线 时间
8
--软件应用领域
系统软件 应用软件 工程/科学软件 嵌入式软件 产品线软件 Web应用软件 人工智能软件
2014-09-09
9
--软件应用领域
• 随着程序设计从结构化程序设计发展到面向对象程序 设计,软件工程也由传统的软件工程演变为面向对象 的软件工程,现正向更新一代的基于构件的软件工程 迈进。
• 长期的实践,软件工程积累了许多行之有效的原理与 方法,已经为产业界广泛接受与应用。
思考题/练习题
• 1.什么是软件危机?为什么会产生软件危 机? • 2.什么是软件工程?工程化生产方法与早 期的程序设计方法的主要差别在哪里? • 4.你用过哪些软件工具?谈谈软件工具在 软件开发中的作用。
• 现在,庞大的软件产业已经成为工业经济中的 主导因素。早期的独立程序员也已经被多个专 业的软件开发团队所代替。 • 同过去的独立程序员一样,开发现代计算机系 统时,软件开发人员依然面临同样的问题:
• 为什么软件需要如此长的开发时间? • 为什么开发成本居高不下? • 为什么在将软件交付顾客使用时,我们无法找到所 有的错误? • 为什么维护已有的程序要花费高昂的时间和人力代 价? • 为什么软件开发和维护的过程难以度量?
• 软件工程管理
• 目的:为了按进度及预算完成软件计划 • 内容:成本估算、进度安排、人员组织、质量保证等
1.2 软件工程学的范畴
• 软件工程的定义
1. Fritz Bauer的定义: 建立和利用一套合理的工作原则,以便经济地 获得可靠的,可以在实际机器中高效运行的软件。 1. IEEE的定义: (1) 将系统化的,规范的,可量化的方法应 用于软件的开发,运行和维护,即将工程化方法应 用于软件。 (2)在(1)中所述方法的研究。
• 现在的软件技术具有产品和产品生产载体的双 重作用。 • 作为一个产品,软件显示了由计算机硬件体现 的计算能力。 • 作为产品生产的载体,软件提供了计算机控制 (操作系统)、信息通信(网络)以及应用开 发和控制(软件工具和环境)的基础平台。 • 软件扮演信息转换的角色:生产,管理,获取, 修改,显示,传输各种信息。
• 基于构件的软件工程
• 开发过程经历的阶段:领域分析和测试计划定制 → 领域设计 → 建立可复用构件库 → 查找并 集成构件
1.4 软件工程的应用
• 软件工程指导中小型软件 • 软件工程指导大型软件 • 软件工程的成就
• 解决软件开发中的部分问题(非本质) (参见Brooks的书) • 软件生产率稳步增长
--软件的特征
软件与硬件的不同
软件开发不同于硬件设计; 软件生产与硬件制造不同; 软件维护不同于硬件维修。
软件是逻辑的,而不是物理的
软件开发成本大,而且是人工成本大; 软件生产是简单的拷贝; 软件不会磨损,但会落伍,会因变更(维护)而退化; 软件大多为定制,构件复用才开始;
• 软件工程发展的展望
• 开发伴随软件复用,开发为了软件复用 • 软件就是服务
软件项目的成 功率仍不高。 仍需努力! 28
1.5 软件工程的教学:教材导读
• 参看P13-
小结
• 软件工程自 1968 年提出以来,在过去 40 余年中,已发 展成为用于指导软件生产工程化,覆盖软件开发方法 学、软件工程管理、软件工具与环境等内容的一门新 学科。
12
--软件危机
• 软件危机
指人们难以控制软件的开发和维护。 表现: (1)软件系统大型化,复杂化, 很难理解和维护; (2)软件开发周期过长; (3)大型软件系统的可靠性差; (4)软件费用往往超出预算。
13
--软件危机
• 软件危机的表现
对软件开发成本和进度的估算很不准确,常 超时超资; 质量很不可靠; 用户很不满意; 没有适当的文档; 软件成本比重上升; 供不应求:软件开发生产率跟不上计算机应 用迅速深入的趋势 。
--软件危机
• 解决途径
• 组织管理
----工程项目管理方法 • 技术措施 ----软件开发技术与方法 ----软件工具
• 促使了软件工程的诞生
• 按工程化的原理和方法组织软件开发是解决 软件开发中的问题一个主要出路。
1.2 软件工程学的范畴
• 软件工程学的研究范畴
• “软件工程”一词是在1968年北大西洋公约组织在联 邦德国召开的一次会议上提出。有多种定义,中心思 想是把软件当做一件工业产品。
软件工程
授课人:袁 晓峰
湘 潭 大
学
第1章 绪论
• 某些新科技的发明创造会给其他一些看 似无关的技术领域、商业企业、公众甚 至整个社会文化带来深远而出人意料的 影响和作用。这就是所谓的“意外效应 法则”。 • 计算机软件已经成为世界舞台上最为重 要的科技领域,并且是“意外效应法则” 的一个最好的体现。
软件—新的类型
• 开放计算—普适计算,分布式计算 • 网络资源—万维网发展为一个计算引擎 • 开放源码—“免费” 源代码开放了计
算机群体
10
--软件应用领域 软件—新的类型
• 其他
•数据挖掘 •网格计算 •认知机 •纳米技术软件 •大数据
11
--软件应用领域
遗留软件
(年代久远,多变,但仍支持核心业务功能) 为什么一定要变更? • 软件必须进行适应性调整,以满足新 的计算环境和技术的需求。 • 软件必须升级以实现新的商业需求。 • 软件必须扩展使之具有与更多现代系 统和数据库的互操作能力。 • 软件必须进行改建使之能适应多样化 的网络环境。
Fra Baidu bibliotek
--软件危机
• 硬件/软件成本变化趋势
100%
硬件
软件
0% 1955 1970 1985
借用摘图:反应硬件发展的快速
--软件危机
• 软件技术进步落后于需求增长
--软件危机
• 软件危机的原因
• 客观:软件本身特点
----逻辑部件 ----规模庞大、复杂度高 • 主观:不正确的开发方法 ----忽视需求分析 ----个人化方式:软件开发=程序编写 ----轻视软件维护
22
1.2 软件工程学的范畴 软件工程是一种层次化技术
工具 方法 过程 质量关注点
R.S.Pressman
23
. 1.3 软件工程的发展
三种编程范型
过程式编程范型 程序由一组被动数据和一组能动过程组成 程序=数据结构+算法 着眼于程序的过程和基本控制结构,粒度最小 面向对象编程范型 数据及其操作被封装在对象中 程序=对象+消息 着眼于程序中的对象,粒度比较大 基于构件技术的编程范型 构件是通用的、可复用的标准化对象类 程序=构件+架构 着眼于适合整个领域的类对象,粒度更大
1.1 软件和软件危机
软件的定义 软件是能够完成预定功能和性能的可执行的计 算机程序,包括使程序正常执行所需的数据, 以及有关描述程序操作和使用的文档(R. S. Pressman) 软件=程序(包括数据)+文档 程序是为了解决某个特定问题而用程序设计语 言描述的适合计算机处理的语句序列。 数据是使程序能正常操纵信息的数据结构。 文档是与程序开发,维护和使用有关的图文材 料。
软件开发技术 软件工程学 软件工程管理 软件管理学 软件经济学 软件度量学 软件方法 软件工具 软件工程环境
1.2 软件工程学的范畴
• 软件开发方法
• 为软件开发提供了 “如何做” 的技术
• 个性化方法-〉结构化方法-〉面向对象方法-〉软件复用
• 软件工具
• 为软件开发提供了自动的或半自动的软件支撑环境 • 单个工具-〉工具箱、集成工具-〉环境
• 过程式和面向对象的编程范型
存款 帐户余额
存 款 取 帐户余额 款
取款
利息 结算
银行储蓄处理业务
利息结算
三代软件工程
• 传统软件工程
• 开发过程经历的阶段:结构化分析 →结构化设 计 → 面向过程的编码 → 软件测试
• 面向对象软件工程
• 开发过程经历的阶段: OO分析与对象抽取 → 对象详细设计 → 面向对象的编码和测试