1.软件工程学概述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程
Software Engineering
内容
什么是软件 软件危机 软件工程 软件过程
Page 2,
19:37
什么是软件 • 软件是计算机系统中与硬件相互依存的 另一部分,它是包括程序,数据及其相 关文档的完整集合 • 程序是按事先设计的功能和性能要求执 行的指令序列 • 数据是使程序能正常操纵信息的数据结 构
一般使用软件生命周期模型(过程模 型)描述软件过程。生命周期模型规 定了把生命周期划分为几个阶段以 及各阶段的执行顺序。
§3.软件过程
软件维护
综合测试 编码和单元测试 详细设计 总体设计 需求分析 可行性研究 问题定义
§3.软件过程
1、瀑布模型(Waterfall Model) :
定 义 Definition Feasibility Study Requirements Analysis System Design 开 发 Program Design Coding & Module Testing Integration & System Testing 维护 Delivery & Maintenance
• 文档是与程序开发,维护和使用有关的 图文材料
软件的特点
• 软件是一种逻辑实体,而不是具体 的物理实体。因而它具有抽象性
软件的特点
• 软件的生产与硬件不同,在它的开 发过程中没有明显的制造过程
软件的特点
软件的特点
软件的特点
• 在软件的运行和使用期间,没有硬 件那样的机械磨损,老化问题
软件的特点
§3.软件过程
2、原型模型
开始
需求的采 集与细化
结束
产生 样品
快速 设计
对原型 加工
建造 原型 客户评 价模型
§3.软件过程
3、螺旋模型
§3.软件过程
4、敏捷开发
敏捷开发以用户的需求 进化为核心,采用迭代、 循序渐进的方法进行软件 开发。
个体和交互胜过过程和工具 可以工作的软件胜过面面俱到 的文档 客户合作胜过合同谈判 响应变化胜过遵循计划
பைடு நூலகம்
软件的特点
• 软件本身是复杂的
实际问题的复杂性
程序逻辑结构的复杂性
• 软件成本相当昂贵 • 相当多的软件工作涉及到社会因 素
软件的特点
• 软件的开发和运行常受到计算机 系统的限制,对计算机系统有着 不同程度的依赖性
软件的特点
• 软件的开发至今尚未完全摆脱手 工艺的开发方式
软件的特点
§1.软件危机
Truly large attempted software systems were
§1.软件危机
例: 美国IBM公司在1963年至1966年 开发的IBM360机的操作系统。这一 项目花了5000人一年的工作量,最多 时有1000人投入开发工作,写出了近 100万行源程序。......据统计,这 个操作系统每次发行的新版本都是从 前一版本中找出1000个程序错误而修 正的结果。......
§1.软件危机
这个项目的负责人F. D. Brooks事后总结了他在组织 开发过程中的沉痛教训时说:“......正像一只逃亡的野兽 落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法 逃脱灭顶的灾难。......程序设计工作正像这样一个泥 潭,......一批批程序员被迫在泥潭中拼命挣扎,...... 谁也没有料到问题竟会陷入这样的困境......”。IBM360操 作系统的历史教训成为软件开发项目的典型事例为人们所记 取。
§1.软件危机
解决问题的想法: Better management
TeamLab NavalPlan
Different team organizations
Better languages & tools
Uniform coding conventions
§1.软件危机
必须意识到:“软件” ≠ 编程, 它有自己的生命周期 (life cycle)。 大型软件系统的开发与其它工程 项目如建造桥梁、制造飞机、轮 船等的开发是同理的。
• 嵌入式系统:系统设备控制系统-糖尿病胰岛
素泵控制系统
– 目前开发利用微型传感器自动胰岛素传送系统,可以监
控血糖浓度,根据需要输送适当的胰岛素。这样的系统
可以永久植入糖尿病患者体内
§4.案例研究
• 嵌入式系统:系统设备控制系统-糖尿病胰岛
素泵控制系统
– 该系统利用一个植入在人体内的微传感器来测量一些血
§1.软件危机
Managers —— evaluate, track progress, ...... Programmers —— communicate to each other Maintainers ——
人与人的交流比写程序困难得多。
§1.软件危机
⑶ 软件可靠性(reliability) 缺少度量的标准,质量无 法保证。
§1.软件危机
⑷ 软件难以维护 (maintainability)
不易升级(evolvability)
Myth: Once we write the program and get it to work, our job is done.
§1.软件危机
Reality: Someone once said that “the sooner you begin ‘writing code’, the longer it’ll take you to get done.” Industry data indicate that between 50 and 70 percent of all effort expended on a program will be expended after it is delivered to the customer for the first time.
液参数,这些参数与血糖浓度成正比。这些参数被送到
泵控制器。控制器计算血糖浓度,得出胰岛素需要量, 然后向一个小型化的泵发送信号使之通过持久连接的针
头输送胰岛素
§4.案例研究
• 嵌入式系统:系统设备控制系统-糖尿病胰岛
素泵控制系统
§4.案例研究
• 信息系统:心理健康治疗患者管理信息系统 MHC-PMS
Late 1950’s:
Software specifically written for each specific application
Early 1960s:
Very few large software projects were done by some experts
Middle to late 1960s:
5、微软开发过程
§4.案例研究
• 3个系统的案例
– 嵌入式系统:系统设备控制系统
– 信息系统:医疗信息管理 – 数据采集系统:野外气象站数据采集
§4.案例研究
• 嵌入式系统:系统设备控制系统-糖尿病胰岛
素泵控制系统
– 糖尿病患者使用这个系统。糖尿病是一种常见病症,是
由于人体无法产生足够数量的胰岛素而引起的。糖尿病
⑶ 实行严格的产品控制——基准配置管理(Baseline configuration management) ⑷ 采用现代程序设计技术 ⑸ 结果应能清楚地审查— set standards
⑹ 开发小组的成员应该少而精 1+1 < 2
⑺ 承认不断改进软件工程实践的必要性
§3.软件过程
软件过程是为了获得高质量软件所 需要完成的一系列任务的框架,它 规定了完成各项任务的工作步骤
§1.软件危机
问题出在哪里?
⑴ 项目没有被很好地理解; 计划不周,最终导致进度 拖延。
§1.软件危机
⑵ 没有充分的文档资料 (documentation) Myth:The only deliverable for a successful project is the working program.
§1.软件危机
Reality: A working program is only one part of a software configuration that includes programs, documents, and data. Documentation forms the foundation for successful development and, more important, provides guidance for the software maintenance task.
的治疗方法是长期规律地注射人工胰岛素。通过使用一 种外部仪器测试糖尿病患者的血糖值,从而计算所需要
注射的胰岛素剂量
§4.案例研究
• 嵌入式系统:系统设备控制系统-糖尿病胰岛
素泵控制系统
– 这个治疗方法存在问题,血液中的胰岛素浓度不仅与血
液中的葡萄糖浓度相关,还与最后一次注射胰岛素的时
间有关。
§4.案例研究
如何保证软件产品的质 量,是非常复杂困难的问 题。特别对于规模庞大的 软件,如:
§1.软件危机
The software supporting the American space shuttle consists of 3 million lines of code, including computers on the ground controlling the launch and the flight; there were one hundred thousand lines of code in the shuttle itself in 1985. President Reagan’s proposed Strategic Defense Initiative (SDI) is estimated to require 10 to 100 million lines of code. Many computer scientists and software engineers continue to believe there is no way to write and test the software to guarantee adequate reliability.
“软件工程”(Software Engineering):采用工程的概念,原理,
技术和方法来开发和维护软件
NATO Conference , Garmisch , Germany , 1968.
§2.软件工程
1、原理(Principles): P.7-9 ⑴ 用分阶段的生命周期计划严格管理 项目概要计划 里程碑计划 项目控制计划 产品控制计划 验证计划 运行维护计划 ⑵ 坚持进行阶段评审
Software Crisis !
在计算机软件开发和维护过程中所遇到的一系列 严重问题
§1.软件危机
1967年苏联“联盟一号”载人宇宙飞船在返航时,由于软 件忽略一个小数点,在进入大气层时因打不开降落伞而烧 毁.
§1.软件危机
北京市三露厂在1998年3月20日与联想集成(后来划归到神州数码)签 订了ERP实施合同。合同中联想集成承诺6个月内完成实施,如不能按 规定时间交工,违约金按千分之五来赔偿。ERP软件是联想集成独家代 理瑞典Intentia公司的MOVEX。合作的双方,一方是化妆品行业的著名 企业(全国人民恐怕都忘不了“大宝天天见”那句广告语),1998年 销售额超过7亿,有职工1200多人。一方是国内IT业领头羊的直属子公 司,这场本应美满的“婚姻”,然而,因为Intentia软件产品汉化不彻 底造成了一些表单无法正确生成等问题出现了“婚变”。后虽经再次的 实施、修改和汉化,包括软件产品提供商Intentia公司也派人来三露厂 解决了一些技术问题。但是由于汉化、报表生成等关键问题仍旧无法彻 底解决,最终导致项目的失败。合作的结果是不欢而散,双方只得诉诸 法律,在经历了15个月的ERP官司之后,三露厂以退还MOVEX计算机 管理信息系统软硬件和获得200万元人民币的庭内调解方式
§3.软件过程
4、敏捷开发的实践-xp编程
极限编程是把敏捷开放过程运用到极致的 开发实践,应用于需求模糊且经常改变的 场合
§3.软件过程
4、敏捷开发的实践-xp编程
客户作为开发团队的成员 使用用户素材
短交付周期
验收测试
结对编程
……..
§3.软件过程
• XP项目的整体开发过程
§3.软件过程
Software Engineering
内容
什么是软件 软件危机 软件工程 软件过程
Page 2,
19:37
什么是软件 • 软件是计算机系统中与硬件相互依存的 另一部分,它是包括程序,数据及其相 关文档的完整集合 • 程序是按事先设计的功能和性能要求执 行的指令序列 • 数据是使程序能正常操纵信息的数据结 构
一般使用软件生命周期模型(过程模 型)描述软件过程。生命周期模型规 定了把生命周期划分为几个阶段以 及各阶段的执行顺序。
§3.软件过程
软件维护
综合测试 编码和单元测试 详细设计 总体设计 需求分析 可行性研究 问题定义
§3.软件过程
1、瀑布模型(Waterfall Model) :
定 义 Definition Feasibility Study Requirements Analysis System Design 开 发 Program Design Coding & Module Testing Integration & System Testing 维护 Delivery & Maintenance
• 文档是与程序开发,维护和使用有关的 图文材料
软件的特点
• 软件是一种逻辑实体,而不是具体 的物理实体。因而它具有抽象性
软件的特点
• 软件的生产与硬件不同,在它的开 发过程中没有明显的制造过程
软件的特点
软件的特点
软件的特点
• 在软件的运行和使用期间,没有硬 件那样的机械磨损,老化问题
软件的特点
§3.软件过程
2、原型模型
开始
需求的采 集与细化
结束
产生 样品
快速 设计
对原型 加工
建造 原型 客户评 价模型
§3.软件过程
3、螺旋模型
§3.软件过程
4、敏捷开发
敏捷开发以用户的需求 进化为核心,采用迭代、 循序渐进的方法进行软件 开发。
个体和交互胜过过程和工具 可以工作的软件胜过面面俱到 的文档 客户合作胜过合同谈判 响应变化胜过遵循计划
பைடு நூலகம்
软件的特点
• 软件本身是复杂的
实际问题的复杂性
程序逻辑结构的复杂性
• 软件成本相当昂贵 • 相当多的软件工作涉及到社会因 素
软件的特点
• 软件的开发和运行常受到计算机 系统的限制,对计算机系统有着 不同程度的依赖性
软件的特点
• 软件的开发至今尚未完全摆脱手 工艺的开发方式
软件的特点
§1.软件危机
Truly large attempted software systems were
§1.软件危机
例: 美国IBM公司在1963年至1966年 开发的IBM360机的操作系统。这一 项目花了5000人一年的工作量,最多 时有1000人投入开发工作,写出了近 100万行源程序。......据统计,这 个操作系统每次发行的新版本都是从 前一版本中找出1000个程序错误而修 正的结果。......
§1.软件危机
这个项目的负责人F. D. Brooks事后总结了他在组织 开发过程中的沉痛教训时说:“......正像一只逃亡的野兽 落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法 逃脱灭顶的灾难。......程序设计工作正像这样一个泥 潭,......一批批程序员被迫在泥潭中拼命挣扎,...... 谁也没有料到问题竟会陷入这样的困境......”。IBM360操 作系统的历史教训成为软件开发项目的典型事例为人们所记 取。
§1.软件危机
解决问题的想法: Better management
TeamLab NavalPlan
Different team organizations
Better languages & tools
Uniform coding conventions
§1.软件危机
必须意识到:“软件” ≠ 编程, 它有自己的生命周期 (life cycle)。 大型软件系统的开发与其它工程 项目如建造桥梁、制造飞机、轮 船等的开发是同理的。
• 嵌入式系统:系统设备控制系统-糖尿病胰岛
素泵控制系统
– 目前开发利用微型传感器自动胰岛素传送系统,可以监
控血糖浓度,根据需要输送适当的胰岛素。这样的系统
可以永久植入糖尿病患者体内
§4.案例研究
• 嵌入式系统:系统设备控制系统-糖尿病胰岛
素泵控制系统
– 该系统利用一个植入在人体内的微传感器来测量一些血
§1.软件危机
Managers —— evaluate, track progress, ...... Programmers —— communicate to each other Maintainers ——
人与人的交流比写程序困难得多。
§1.软件危机
⑶ 软件可靠性(reliability) 缺少度量的标准,质量无 法保证。
§1.软件危机
⑷ 软件难以维护 (maintainability)
不易升级(evolvability)
Myth: Once we write the program and get it to work, our job is done.
§1.软件危机
Reality: Someone once said that “the sooner you begin ‘writing code’, the longer it’ll take you to get done.” Industry data indicate that between 50 and 70 percent of all effort expended on a program will be expended after it is delivered to the customer for the first time.
液参数,这些参数与血糖浓度成正比。这些参数被送到
泵控制器。控制器计算血糖浓度,得出胰岛素需要量, 然后向一个小型化的泵发送信号使之通过持久连接的针
头输送胰岛素
§4.案例研究
• 嵌入式系统:系统设备控制系统-糖尿病胰岛
素泵控制系统
§4.案例研究
• 信息系统:心理健康治疗患者管理信息系统 MHC-PMS
Late 1950’s:
Software specifically written for each specific application
Early 1960s:
Very few large software projects were done by some experts
Middle to late 1960s:
5、微软开发过程
§4.案例研究
• 3个系统的案例
– 嵌入式系统:系统设备控制系统
– 信息系统:医疗信息管理 – 数据采集系统:野外气象站数据采集
§4.案例研究
• 嵌入式系统:系统设备控制系统-糖尿病胰岛
素泵控制系统
– 糖尿病患者使用这个系统。糖尿病是一种常见病症,是
由于人体无法产生足够数量的胰岛素而引起的。糖尿病
⑶ 实行严格的产品控制——基准配置管理(Baseline configuration management) ⑷ 采用现代程序设计技术 ⑸ 结果应能清楚地审查— set standards
⑹ 开发小组的成员应该少而精 1+1 < 2
⑺ 承认不断改进软件工程实践的必要性
§3.软件过程
软件过程是为了获得高质量软件所 需要完成的一系列任务的框架,它 规定了完成各项任务的工作步骤
§1.软件危机
问题出在哪里?
⑴ 项目没有被很好地理解; 计划不周,最终导致进度 拖延。
§1.软件危机
⑵ 没有充分的文档资料 (documentation) Myth:The only deliverable for a successful project is the working program.
§1.软件危机
Reality: A working program is only one part of a software configuration that includes programs, documents, and data. Documentation forms the foundation for successful development and, more important, provides guidance for the software maintenance task.
的治疗方法是长期规律地注射人工胰岛素。通过使用一 种外部仪器测试糖尿病患者的血糖值,从而计算所需要
注射的胰岛素剂量
§4.案例研究
• 嵌入式系统:系统设备控制系统-糖尿病胰岛
素泵控制系统
– 这个治疗方法存在问题,血液中的胰岛素浓度不仅与血
液中的葡萄糖浓度相关,还与最后一次注射胰岛素的时
间有关。
§4.案例研究
如何保证软件产品的质 量,是非常复杂困难的问 题。特别对于规模庞大的 软件,如:
§1.软件危机
The software supporting the American space shuttle consists of 3 million lines of code, including computers on the ground controlling the launch and the flight; there were one hundred thousand lines of code in the shuttle itself in 1985. President Reagan’s proposed Strategic Defense Initiative (SDI) is estimated to require 10 to 100 million lines of code. Many computer scientists and software engineers continue to believe there is no way to write and test the software to guarantee adequate reliability.
“软件工程”(Software Engineering):采用工程的概念,原理,
技术和方法来开发和维护软件
NATO Conference , Garmisch , Germany , 1968.
§2.软件工程
1、原理(Principles): P.7-9 ⑴ 用分阶段的生命周期计划严格管理 项目概要计划 里程碑计划 项目控制计划 产品控制计划 验证计划 运行维护计划 ⑵ 坚持进行阶段评审
Software Crisis !
在计算机软件开发和维护过程中所遇到的一系列 严重问题
§1.软件危机
1967年苏联“联盟一号”载人宇宙飞船在返航时,由于软 件忽略一个小数点,在进入大气层时因打不开降落伞而烧 毁.
§1.软件危机
北京市三露厂在1998年3月20日与联想集成(后来划归到神州数码)签 订了ERP实施合同。合同中联想集成承诺6个月内完成实施,如不能按 规定时间交工,违约金按千分之五来赔偿。ERP软件是联想集成独家代 理瑞典Intentia公司的MOVEX。合作的双方,一方是化妆品行业的著名 企业(全国人民恐怕都忘不了“大宝天天见”那句广告语),1998年 销售额超过7亿,有职工1200多人。一方是国内IT业领头羊的直属子公 司,这场本应美满的“婚姻”,然而,因为Intentia软件产品汉化不彻 底造成了一些表单无法正确生成等问题出现了“婚变”。后虽经再次的 实施、修改和汉化,包括软件产品提供商Intentia公司也派人来三露厂 解决了一些技术问题。但是由于汉化、报表生成等关键问题仍旧无法彻 底解决,最终导致项目的失败。合作的结果是不欢而散,双方只得诉诸 法律,在经历了15个月的ERP官司之后,三露厂以退还MOVEX计算机 管理信息系统软硬件和获得200万元人民币的庭内调解方式
§3.软件过程
4、敏捷开发的实践-xp编程
极限编程是把敏捷开放过程运用到极致的 开发实践,应用于需求模糊且经常改变的 场合
§3.软件过程
4、敏捷开发的实践-xp编程
客户作为开发团队的成员 使用用户素材
短交付周期
验收测试
结对编程
……..
§3.软件过程
• XP项目的整体开发过程
§3.软件过程