ch1软件危机与软件工程_第1页
ch1软件危机与软件工程_第2页
ch1软件危机与软件工程_第3页
ch1软件危机与软件工程_第4页
ch1软件危机与软件工程_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、09.08.2020,.,1,软件工程导论,徐贤 ,09.08.2020,.,2,课程安排,理论 内容:基本原理、方法和技术 形式:讲授、自学 作业 内容:模拟开发一个应用系统 形式:提交分阶段文档,09.08.2020,.,3,软件工程的内容,软件工程的基本概念 软件过程 软件开发各阶段的任务、技术、方法 传统方法、面向对象方法 项目管理 软件质量保证,09.08.2020,.,4,软件产业,2000年,国家发布了鼓励软件产业和集成电路产业发展的若干政策,这便是著名的18号文件 十五”期间,中国软件产业获得了高速发展,保持着30%以上的年均增长速度 2005年中国软件产业产值达到3900亿元

2、人民币(472.2亿美元),在多个领域拥有了自主知识产权的产品,09.08.2020,.,5,发展模式,基于网络的软件开发 软硬结合,大力发展嵌入式软件 基于互联网的服务业将成为软件与信息服务业新的增长点。 以 为代表的“互联网+软件”模式的成功,一扫几年来的低迷,为产业的发展注入了新的动力。 软件外包和业务流程外包 开放源代码技术、构件技术广泛应用,09.08.2020,.,6,发展中的问题,诚信体系 文化环境 例如,印度的宗教对印度软件产业的影响是很大的,因为他们心中有神。印度人认为,人生是修来的,所以很安分守己,很忠诚。因为他们认为,如果不忠诚,下辈子就会做牛做马。 政策环境 知识产权保

3、护 人才培养,09.08.2020,.,7,“在印度企业招聘的员工中,新员工中没有经验的学生高达60%-70%,他们愿意付出巨大的培训成本,帮助这些新生力量成长起来。由于印度企业拥有一整套完善的培训机制,通过这种工厂式的模式,可以迅速把一个毫无经验的应届毕业生迅速培养成企业所需要的合格人才。Infosys去年一年新增了3万多员工,如果这发生在毫无制度可言的中国企业中,绝对会出现灾难性的后果,但是,在Infosys,一切井井有条。”,09.08.2020,.,8,我国软件业发展不理想的原因除了政策和盗版外,最大的问题是我国绝大多数软件企业对其软件开发工作过程缺乏有效的管理和控制。多数软件企业开发

4、和生产基本上处于“技术少标准、开发缺规范、生产无检验、质量无保证”的状态。在这方面印度软件业的发展能够给我们以启发。,09.08.2020,.,9,它山之石,印度软件业能够这么迅速地发展起来,除了有政府支持、英语程度、人才储备等原因外,最重要的是从标准化与产品流程入手,重视管理。 印度的软件开发管理的特点是流程重于项目,流程管理人员独立于研发部门,专门检查研发部门的开发流程是不是按照既定流程走,如果流程不对,项目肯定就此停止。另外,所谓的项目经理一般都是从编码人员升上来的,至少有四年以上的经验,而公司所有的东西(包括草稿)都有文档,其详细文档要求达到只有这个文档就可以编码的程度。,09.08.

5、2020,.,10,它山之石,印度软件公司开发出来的软件整个体系架构非常清晰,而且相当稳定。 由于印度企业不是靠一两个软件英雄搞研发,而是靠一大批软件技术人员的分工协作,所以,他们必须注重标准化,注重开发的流程管理,以与国际接口。 目前印度软件公司中有170家公司获得ISO9000质量标准认证,是世界上获得质量认证软件企业最多的国家。在得到卡内基梅隆大学软件工程学会最高级别的全球23家计算机软件公司中,有15家是印度公司。,09.08.2020,.,11,第一章 软件危机与软件工程,软件与软件危机 软件工程,09.08.2020,.,12,软件,程序、软件与软件产品 独唱-小合唱-合唱-万人大

6、合唱 | | | 简单程序 较复杂程序 软件 软件是计算机系统中与硬件相互依存的另一部分, 包括 程序:按事先设计的功能和性能需求执行的指令序列 数据:是程序能正常操纵信息的数据结构 文档:与程序开发、维护和使用有关的图文材料,09.08.2020,.,13,软件的特点,软件是一种逻辑实体,而不是物理实体 软件的生产与硬件不同,没有明显的制造过程 在软件的运行和使用期间,没有磨损,老化问题,09.08.2020,.,14,软件的特点,软件的开发和运行对计算机系统有着不同程度的依赖性 软件的开发至今尚未完全摆脱手工艺的开发方式 软件本身的复杂性 问题的复杂性 程序逻辑结构的复杂性 软件成本相当昂

7、贵,09.08.2020,.,15,软件的分类,按软件的功能进行划分: 系统软件 使计算机系统各个部件协调、高效地工作的软件 操作系统 数据库管理系统等,09.08.2020,.,16,软件的分类,支撑软件 协助用户开发软件的工具软件 文本编辑程序 支持需求分析、设计、实现、测试和支持管理的软件,09.08.2020,.,17,软件的分类,应用软件 商业数据处理软件 工程与科学计算软件 系统仿真软件 医疗、制药软件 事务管理、办公自动化软件,09.08.2020,.,18,软件的分类,按软件规模进行划分: 类别 参加人员数 研制期限 源程序行数 微型 1 14周 0.5k 小型 1 16月 1

8、k2k 中型 25 12年 5k50k 大型 520 23年 50k100k 甚大型 1001000 45年 1M(=1000k) 极大型 20005000 510年 1M10M,09.08.2020,.,19,软件的分类,按软件工作方式划分: 实时处理软件 分时软件 交互式软件 批处理软件,09.08.2020,.,20,软件开发的发展过程,计算机应用发展,软件数量多规模大,软件成本高质量低,个体化软件开发方法,软件维护困难,软件危机,软件工程,09.08.2020,.,21,软件的发展,1960 早期: 非常少的由专家开发的软件项目 1960中后期: 尝试了真正大型的软件. 1968以后:

9、 发展出软件工程(Software Engineering),09.08.2020,.,22,软件的角色,软件在社会上扮演了双重角色 它本身是一种产品(将计算机硬件的计算能力发挥出来) 同时,它传递了我们这个时代重要的产品: 信息,09.08.2020,.,23,软件危机,定义 计算机软件的开发和维护过程所遇到的一系列严重问题 表现 对软件开发成本和进度的估算很不准确 用户很不满意 质量很不可靠 没有适当的文档 软件成本比重上升 供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势,09.08.2020,.,24,软件危机,美国IBM公司在1963年至1966年开发的IBM360机的操作系统

10、。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。.据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。.这个项目的负责人F. Brooks事后总结了他在组织开发过程中的沉痛教训时说:“.正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。.程序设计工作正像这样一个泥潭,.一批批程序员被迫在泥潭中拼命挣扎,.谁也没有料到问题竟会陷入这样的困境.”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。,Software Crisis !,09.08.2020,.,

11、25,软件危机,原因 客观:软件本身特点 逻辑部件 规模庞大 主观:不正确的开发方法 忽视需求分析 软件开发=程序编写 轻视软件维护,09.08.2020,.,26,软件危机, 项目没有被很好地理解;计划不周,最终导致进度拖延。,开发方法中的问题出在哪里?, 没有充分的文档资料(documentation),人与人的交流比写程序困难得多。,09.08.2020,.,27,软件危机, 软件可靠性(reliability)缺少度量的标准,质量无法保证。 如何保证软件产品的质量,是非常复杂困难的问题。尤其是对于规模庞大的软件, 软件难以维护(maintainability) , 不易升级(evolv

12、ability),Myths(神话),Reality(现实),09.08.2020,.,28,软件危机,解决途径 组织管理 工程项目管理方法 不同的队伍组织 技术措施 软件开发技术与方法:更好的语言工具 软件工具 更统一的编码风格,09.08.2020,.,29,软件工程,“软件” 编程,有自己的生命周期 (life cycle)。大型软件系统的开发与建造桥梁、制造飞机、轮船等其它工程项目的开发是同理的。,“软件工程”(Software Engineering) NATO Conference , Garmisch , Germany , 1968.,09.08.2020,.,30,软件工程,

13、定义 指导计算机软件开发和维护的工程学科 工程方法 管理技术 技术方法,09.08.2020,.,31,软件工程定义,Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料 IEEE:软件工程是开发、运行、维护和修复软件的系统方法 Fritz Bauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法,09.08.2020,.,32,软件工程要素,软件工程包括三个要素:方法、工具和过程 方法为软件开发提供了 “how to do it” 的技术 工具提供了自动的或半自动的软件支撑环境 过程定义了: 方法

14、使用的顺序 要求交付的文档资料 为保证质量和适应变化所需要的管理 软件开发各个阶段完成的里程碑,09.08.2020,.,33,软件工程原理, 用分阶段的生命周期计划严格管理 项目概要计划 项目控制计划 产品控制计划 验证计划 运行维护计划 坚持进行阶段评审 实行严格的产品控制基准配置管理(Baseline configuration management), 开发小组的成员应该少而精, 采用高级程序设计技术, 结果应能清楚地审查和评估, 承认不断改进软件工程实践的必要性,09.08.2020,.,34,软件工程的发展,从学术的角度看,软件工程还是一个年轻的学科 第一次相关会议在20世纪60年

15、代后期 而在80年代才从计算机科学分离开 不成熟,缺乏重要的元素,如评估 缺乏科学的研究方法,09.08.2020,.,35,软件工程的发展,20世纪60年代晚期,刊物上开始出现软件工程的专业文章 出现专业杂志 ACM Transactions on Software Engineering and Methodologies Software Engineering Notes IEEEs Transactions on Software Engineering Software,09.08.2020,.,36,软件生命周期,软件生命周期 软件定义 问题定义 可行性分析 需求分析 软件开发

16、系统设计 编码 测试 软件维护,09.08.2020,.,37,技术复审和管理复审,复审 每阶段结束前 技术复审 从技术角度确保质量 降低软件成本(尽早发现问题) 建立审查小组,开展审查过程:准备,简要介绍情况,阅读被审文档,开审查会,返工,复查等 管理复审 成本、进度、经费等,09.08.2020,.,38,两种软件工程范型,传统软件工程 程序=数据结构+算法 软件分析总体设计详细设计面向过程的编码测试 面向对象软件工程 程序=对象+消息 软件分析与对象抽取对象详细设计面向对象的编码测试,09.08.2020,.,39,软件工程的成就与局限,F. Brooks: 在1986年发表的论文没有银

17、弹中指出“在近十年内,没有任何单独的软件工程进展可以使软件生产率有数量级的提高” -目前还没有“银弹”! 软件工程还无法解决软件生产中固有的、本质上的困难 建议的(可能)银弹:更好的高级语言、面向对象的程序设计、人工智能、专家系统、自动程序设计、图形化程序设计、程序验证等,09.08.2020,.,40,没有银弹一文的开头如下: 在所有恐怖民间传说的妖怪中,最可怕的是人狼,因为它们可以完全出乎意料地从熟悉的面孔变成可怕的怪物。为了对付人狼,我们在寻找可以消灭它们的银弹。 大家熟悉的软件项目具有一些人狼的特性(至少在非技术经理看来),常常看似简单明了的东西,却有可能变成一个落后进度、超出预算、存在大量缺陷的怪物。因此,我们听到了近乎绝望的寻求银弹的呼唤,寻求一种可以使软件成本像计算机硬件成本一样降低的尚方宝剑。 但是,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论