《软件工程第1次课课件》由会员分享,可在线阅读,更多相关《软件工程第1次课课件(78页珍藏版)》请在金锄头文库上搜索。
1、1,软件工程概述,主讲:郭俊颖 Email: ,软件工程课程说明,考查; 48学时 成绩= 平时成绩20%(考勤+课堂表现) +平时实验(作业)50%+报告成 绩30% 教学方式: 重实践,轻理论;遵循先实践,后理论,再实践; 随堂讨论,随堂实战演练为主,课后作业为辅,调动学生的学习积极性 主要内容:需求获取与分析 系统架构分析与设计 子系统与类的分析与设计 数据库设计 参考书: 1 青润著, 软件工程之全程建模实现M. 北京:机械工业出版社, 2010.8 2 温昱著, 软件架构设计M. 北京: 电子工业出版社, 2007.5 3 程杰. 大话设计模式M北京: 清华大学出版社,2007 4
2、(美)Roger S. Pressman著, 郑人杰,马素霞等译. 软件工程实践者的研究方法M. 北京: 机械工业出版社, 2011.4,揭开软件工程虚伪的面纱,笑话1:软件工程很有用,但似乎编程从来没有用过。 笑话2:软件工程学了也没用,上课去不去都行,反正都及格。 笑话3:,揭开软件工程虚伪的面纱吧,谈谈对软件工程的认识? 谈谈如何学好软件工程?,本节课的主要内容,软件与软件产业 软件工程:概念及范围 软件工程发展回顾 软件工程现状及未来,软件概念(1),软件计算机系统中的程序、数据及其文档 程序:计算任务的处理对象和处理规则的描述 数据:程序能够满意地处理信息的数据结构 文档:为了便于了
3、解程序所需的阐明性资料 软件的作用 作为计算机用户和硬件间的接口界面 在计算机系统中起指挥管理作用 计算机体系结构设计的重要依据,计算机软件,计算机软件是“意外效应法则”的一个最好体现。 软件促进了新科技的创新(如基因工程和纳米技术),现代科技的发展(如通信),以及传统技术的根本转变(如印刷业) 在大量软件的驱动下,互联网迅速发展,对人们生活诸多方面-图书馆搜索、消费购物、政治演说到年轻人(或者不那么年轻的人)的约会习惯等都引起革命性的变化。 软件可嵌入到各种系统中:交通运输、医疗、通信、军事、工业等不胜枚举。 .,软件概念(2),软件的分类(1) 基础设施类 运行支撑类(操作系统、中间件、应
4、用服务器等)系统软件 开发支撑类(各类软件工具、可复用软件资源等)支撑软件 应用类 各种领域、行业的应用软件系统(业务逻辑的体现)应用软件 软件的分类(2) 一般性软件和嵌入式软件,固化式,装载式,软件概念(3),软件研究的3个层次 软件模型层 主要体现为计算模型(程序模型)的研究 运行开发层 针对具体计算模型,提供运行平台及开发方法、技术和工具 应用层 根据具体应用需求,基于上述模型、平台和方法开发应用系统 软件技术研究主要针对前两个层次,形成两条主线 软件系统技术 软件的本质、特征与模型,即软件的基本元素、体系结构、交互协议、行为模式、效率机制和质量保障机制等 软件开发技术 软件开发方法论
5、及相应的工程原则、支撑工具和环境等,10,软件特征(1),软件是一种逻辑实体,不是具体物理实体,具有抽象性 软件的生产与硬件不同,软件没有明显的制造过程 软件在使用过程中,没有磨损、老化的问题,11,软件特征(2),软件对硬件和环境有着不同程度的依赖性 软件的开发至今尚未完全摆脱手工作坊式 的开发方式,生产效率低 软件是复杂的,而且以后会更加复杂 大多数软件是自定的,而不是通过已有的 构件组装而来的 软件工作牵涉到很多社会因素,软件的成本相当昂贵,软件特征(3),软件发展的阶段,第一阶段:40年代中期到50年代中期,实用高级语言的出现前 第二阶段:50年代中期到60年代后期,软件工程出现前 第
6、三阶段:60年代后期以来,软件工程出现以后 第四阶段:新世纪以来,互联网广泛应用以后,软件技术发展的驱动力(1),追求更具表达能力、更符合人类思维模式、更具可构造性和演化性的计算模型,软件的基本模型 = 实体元素连接和交互,机器指令顺序和转移 高级语句 三种控制结构 函数和过程 子程序调用 模块 模块互联 对象 消息传递 构件 连接子,贯穿 特征,面向侧面的程序设计,软件技术发展的驱动力(2),通过虚拟的运行平台追求更高效地发挥下层硬软件资源所提供的计算能力,单 机 操 作 系 统,引导程序,管理程序,多道程序,网络 操作系统,并行 操作系统,嵌入式操作系统,软硬件 资源管理,高效 可信 统一
7、的 虚拟资源,软件技术发展的驱动力(3),尽可能多地凝练共性,提高软件开发的效率和质量,中间件,网 络,终端用户编程,操作系统,随需即取, ,模型驱动开发,手工作坊式软件开发,软件工业化生产,软件技术发展的驱动力(4),尽可能平滑地桥接异构性,增加互操作性 异构是市场行为的自然产物,开放互操作同样是市场行为的产物,.NET/COM,Web Services,UNIX,Windows,Linux,应用系统,支撑软件中间件,CORBA,J2EE/EJB,软件技术的发展 本身就是一个 不断桥接 异构性的过程,全球软件产业发展(1),全球软件产业规模一直保持快速增长,自2004年起增长率趋于平稳,20
8、01-2006年 全球软件产业规模及年增长率,从2000年 5960 亿美元 增加到 2006年 8750 亿美元 全球软件产业 年增长率 保持在 5%-10% 高于 全球经济年平均增长率的 4%,年增长率,产业规模,全球软件增长率趋于平稳,全球软件产业发展(2),全球软件企业500强营业总额2006年开始回落,中小企业的贡献增强,2003-2006年全球软件企业500及占全球软件产值比例,2003-2005年间 全球软件企业500强营业总额 由 2899 亿美元上升至 3833 亿美元 占全球软件产业产值的比例 由 38.78% 上升至 46.52% 2005-2006年间 500强营业总额
9、降到 3808 亿美元 占全球比例 降到 43.50% 同期内 全球软件产业以 6.2% 的速度 平稳增长,营业总额,占全球比 例,全球软件产业发展(3),开源软件持续增长,促进全球软件产业多元化发展,形成 全球软件产业新格局 : 开源软件与私有软件的 界限 正被混合架构 打破 两者竞争与合作 将成为 世界软件产业发展 总势趋,2006 年微软 在开源软件方面 与 Novell 开展 大规模合作 2006 年Oracle 宣布为Red Hat Linux 提供 完整的技术支持 IBM SAP Google 等企业 纷纷加入 开源软件领域,推动,促使,全球软件产业发展(4),企业并购重新升温,市
10、场竞争加剧,2000-2006年美国软件产业并购发展趋势,2004-2006年间 并购活动 重新活跃 2005年美国并购 10176 起 其中软件企业并购 1628 起 占16% 位居各行业之首 2006年 Google 以 16.5 亿美元 收购YouTube HP 以 45 亿美元 收购 Mercury Interactive IBM 以 16 亿美元 收购 FileNet EMC 以 21 亿美元 收购 RSA Security,全球软件市场竞争趋于加剧,并购 是 软件企业 整合产品线 争夺客户资源 拓展市场空间 重要方式,(资料来源:软件产业年鉴2007),中国软件产业现状(1),产业
11、规模增长十分迅速,但增长率自2006年起明显回落,数据来源:中国软件产业年鉴20042007,从2003年到2005年 年增长率超过 40% 2006年增长率为 23.1%,2006年发展速度比2005年回落 17.2个百分点 从2006年下半年起 增速低于硬件产品,软件产品增速,硬件产品增速,下降17.2%,产业规模,年增长率,中国软件产业现状(2),软件产业产值逐年增加,但产业增加值仍很小,数据来源:中国软件产业年鉴(2003-2007),2006年中国软件与信息服务业构成图,2006年 软件产值4800亿元 但 产业增加值 仅 1838亿元 系统集成 占产业产值的27.6% 所占份额 最
12、多 但 增加值极少,增加值较高的基础软件仍很弱小 如: 2005年国产操作系统 销售额 89亿元 占国内市场份额的 4.9%,2005年国产操作系统占国内市场份额,国产操作系统所占份额 4.9%,嵌入式软件 21.4%,系统集成 27.6%,软件产品 26.7%,软件服务 22.1%,IC设计 2.2%,中国软件产业现状(3),企业实力增强,但仍缺乏具有国际竞争力的龙头企业,2006年中外软件代表性企业软件销售额对比 (单位:亿美元),20022006年中国企业销售额分布情况图,中国软件企业规模不断扩大,到2006年 10亿以上的企业有35家 510亿的企业有51家 15亿的企业有310家,与
13、国外巨头相比 中国软件企业普遍较小 缺乏大型跨国软件企业集团,中国软件产业发展的瓶颈,从软件产业分类上看,基础软件是瓶颈 从软件产业组织上看,缺乏大企业、软件产业生态环境不完善是瓶颈 从软件技术上看,缺乏核心技术是瓶颈 从软件产业要素配置上看,高级人才缺乏、融资难是瓶颈 注:关于软件产业的描述摘自中国科学院学部咨询评议项目报告,软件危机,应用的繁荣带来了软件危机:不断增加的为大系统制造可靠软件的困难度 软件系统的规模和复杂性不断增长,对软件的需求增长超过供应(开发、演化和维护)能力。软件开发人员极度短缺、开发效率和软件质量不能满足用户的需求,最终延缓经济和社会的发展 1968年NATO会议(G
14、armisch,Germany)第一次提出了“软件危机”的说法 例如,IBM公司1963年至1966年开发的 IBM 360/OS 耗资几千万美元,投入5000人年的工作量,近一百万行源程序,拖延了几年才交付使用,交付使用后仍不断发现新的错误 每次发行新版本都修改了上一版本的1000个左右的程序错误 项目负责人F.D.Brooks曾说:“就像一只逃亡的野兽落入泥潭做垂死挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶之灾。”,1963年美国飞往火星的火箭爆炸,造成1000万美元的损失。原因是FORTRAN程序: DO 5 =1,3 误写成:DO 5 =1 . 3 1967年苏联“联盟一号”载人宇宙飞
15、船在返航时,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁。,软件危机,软件复杂性的增长,软件规模越来越大,复杂度越来越高 Windows VISTA操作系统开发:3000开发人员,59个开发节点,逾6千万行代码 每台汽车系统代码量:10万行(1970s)1亿行(2010s) 波音飞机:总代码量超过400万行 宇宙飞船:软件代码2000万行 航天飞机:软件代码4000万行 空间站:软件代码10亿行 应用软件系统也越来越复杂,规模快速增长,动辄数百万行代码已是常见现象!,软件现状危机仍然存在,对软件的需求远超出现有的生产能力 信息技术的爆炸性增长促进了对新软件的空前需求 软件系统的规
16、模和复杂性不断增长 用来开发这些软件的资源没有与上述需求保持同步 人们依赖于脆弱的软件 不可靠、缺乏安全性、性能下降、出错、难以升级 73的软件项目被延迟、超资、取消或失败 构造可靠、安全软件的技术能力不足 过去40年,硬件性能至少跨越了8个重要的阶段 开发软件的能力未能与硬件提供的机会保持同步,软件工程的诞生,历史角度 社会角度 个人角度,历史角度发展的必然软件危机,六十年代以来,随着计算机应用需求的驱动,系统软件和应用软件有很大的发展,如操作系统,编译系统和大型应用软件等。由于软件生产的 复杂性 和 高成本,使大型软件的生产出现了很大的困难,即出现软件危机。 软件工程正是为克服软件危机而提出的一种概念,并在实践中不断地探索它的原理,技术和方法。在此过程中,人们研究和借鉴了工程学的某些原理和方法,并形成了一