软件工程 Software Engineering 讲师:任世卿 沈阳理工大学信息学院 2007-2008第1学期
基本情况 总学时:64 讲课:56 上机:8 学分:8
基本情况 成绩评定: 期末考试(闭卷) :70% 上机 :10% 平时(出勤、作业、期中考试):20%
基本情况 参考书目: 1 《软件工程实用教程》,郭宁,人民邮电出版社 2 《软件工程导论》,张海藩,清华大学出版社 3 《软件工程原理、方法及应用》,史济民,高等教育出版社 4 《实用软件工程》,郑人杰,清华大学出版社
基本情况 要求:遵守纪律 1 课堂上禁止私自讲话,打接手机; 2 避免旷课、迟到、不交作业等行为。
第1章 软件工程引论 第1章 软件工程引论 1.1 软件及软件危机 1.2 软件工程 1.3 软件工程的基本原则
第1章 软件工程引论 1.1 软件及软件危机 1.1.1 软件 一个完整的计算机系统包括硬件和软件两部分。
第1章 软件工程引论 硬件 冯·诺依曼结构 计算机的基本组成
第1章 软件工程引论 硬件 微型计算机
第1章 软件工程引论 硬件
第1章 软件工程引论 硬件 总线 CPU 存储器 I/O设备 I/O设备 微型计算机的典型组织
第1章 软件工程引论 软件 系统软件 操作系统 语言处理系统 服务程序 应用软件
第1章 软件工程引论 关系 互为补充,不可或缺 应用软件层 其它系统软件层 OS 裸机 硬件---物质基础 第1章 软件工程引论 关系 互为补充,不可或缺 应用软件层 其它系统软件层 OS 裸机 硬件---物质基础 软件---硬件功能的扩充与完善:虚拟机
第1章 软件工程引论 1 定义:软件是与计算机系统操作有关的程序、规程、规则及其文档和数据的统称。 程序和有关的数据 文档
第1章 软件工程引论 2 特性: (1)软件固有的特性 复杂性 抽象性 依赖性 软件使用特性
第1章 软件工程引论 图 硬件/软件产品失效率曲线
第1章 软件工程引论 (2)软件生产特性 开发特性: 技术复杂性 管理复杂性
第1章 软件工程引论 图 软件技术的发展落后于需求
第1章 软件工程引论 产品形式的特性: 设计成本高 生产成本极低
第1章 软件工程引论 MicroSoft 从人力资源看,Vista及Office 2007两个团队开发设计成员总共9000余人。在开发资金方面,微软目前已为Vista投入90亿美元,包括Vista未来的配套及合作伙伴的投入,预计在180亿美元以上,如果加上新版Office的成本,投入资金在240亿~270亿美元之间。 微软的合作伙伴连邦软件公布了Vista各个版本的售价,其中Vista中文家庭普通版报价2060元,最低1530元也可买到。Office的新版本价格与之相仿。
第1章 软件工程引论 维护特性: 纠错性维护 完善性维护 适应性维护
第1章 软件工程引论 1.1.2 软件危机 1 突出表现: (1)生产率低 (2)产品常常与用户要求不一致 (3)复杂度增加 (4)不可维护性突出 (5)软件文档不完整、不一致
第1章 软件工程引论 《The Standish Group. Chaos. 1995.》一文报告了20世纪90年代中期美国商用软件产业的情况:1995年美国公司取消了810亿美元的软件项目;在所考察的软件项目中,在完成前就取消了其中的31%;53%的软件项目进度拖延,通常拖延的时间超过预定工期50%以上;只有9%的大型软件项目能够及时交付且费用不超支(对中型和小型软件公司来说这一数据为16%)。
2 产生原因: (1)软件独有的特点给开发和维护带来困难 (2)软件人员的错误认识 (3)软件开发工具自动化程度低 第1章 软件工程引论 2 产生原因: (1)软件独有的特点给开发和维护带来困难 (2)软件人员的错误认识 (3)软件开发工具自动化程度低 在1960~1980年期间,计算机硬件的生产由于采用计算机辅助设计、自动生产线等先进工具,使硬件生产率提高了100万倍,而软件生产率只提高了2倍,相差十分悬殊。
第1章 软件工程引论 3 解决方法: 利用工程的方法和管理手段
第1章 软件工程引论 作业: 1.分析我国软件产业发展的现状、存在的问题及可能对策。
1.2 软件工程 1.2.1 软件工程的形成和发展 自1968年NATO会议上提出软件工程这一概念以来,软件工程的发展经历了以下3个阶段。 第1章 软件工程引论 1.2 软件工程 1.2.1 软件工程的形成和发展 自1968年NATO会议上提出软件工程这一概念以来,软件工程的发展经历了以下3个阶段。
第1章 软件工程引论 第一阶段: 20世纪70年代,传统软件工程时代,基本形成了软件工程的概念、框架、方法和手段。 ◎应用传统工程学的原理、技术和方法
第1章 软件工程引论 ◎提出了软件生命周期的概念
第1章 软件工程引论 ◎提出了多种开发模型、方法与多种软件开发工具(编辑、编译、跟踪、排错、源程序分析、反汇编、反编译等) ◎提出了费用估算、文档评审等一些管理方法和工具。
第1章 软件工程引论 第二阶段:20世纪80年代,过程软件工程时代,从目标管理转向过程管理。 ◎提出了软件能力成熟度模型、个体软件过程和群体软件过程的概念 ◎提出了软件工作量估计COCOMO模型等
第1章 软件工程引论 软件能力成熟度模型(Capacity Maturity Model,CMM):5个级别,共计18个关键过程域、52个目标、300多个关键实践。 ★CMM 1级 初始级(Initial) 机构的软件过程是无序的,甚至是混乱的。几乎没有什么过程是经过妥善定义的,项目的成功往往依赖于某些个人的技能和经验。
第1章 软件工程引论 ★CMM 2级 可重复级(Repeatable) 已经建立了基本的项目管理过程规范,项目经理能跟踪成本、进度和产品功能等,项目能重复以前的成功。机构的过程能力可以概括为“有纪律的”(disciplined)。 它包括6个关键过程域: ※需求管理(Requirement Management) ※软件项目规划(Software Project Planning) ※软件项目跟踪与监督(Software Project Tracking and Oversight)
第1章 软件工程引论 ※软件子合同管理(Software Subcontract Management) ※软件质量保证(Software Quality Assurance) ※软件配置管理(Software Configuration Management)
第1章 软件工程引论 ★CMM 3级 已定义级(Defined) 已经将管理和开发两方面的过程文档化,并综合成为机构的标准软件过程(即过程规范)。所有项目都可以通过裁减机构标准软件过程而建立适合于本项目的过程规范。机构的过程能力可概括为“标准的”和“一致的”,它建立在整个机构对软件过程中的活动、角色、职责的共同理解上。 它包括7个关键过程域: ※机构过程焦点(Organization Process Focus)
第1章 软件工程引论 ※机构过程定义(Organization Process Definition) ※培训程序(Training Program) ※集成化软件管理(Integrated Software Management) ※组间协调(Inter-group Coordination) ※软件产品工程(Software Product Engineering) ※同行评审(Peer Reviews)
第1章 软件工程引论 ★CMM 4级 已管理级(Managed) 对软件过程与产品都有定量的理解和控制,有专门的数据库系统来收集和分析数据。机构的过程能力可概括为“定量的”和“可预测的”。 它包括2个关键过程域: ※定量过程管理(Quantitative Process Management) ※软件质量管理(Software Quality Management)
第1章 软件工程引论 ★CMM 5级 优化级(Optimizing) 能够主动有效地识别机构过程的优势和薄弱环节,发现并采用最佳的软件工程实践,预先防范过程和产品中的缺陷。整个机构强调持续地改进过程能力。 它包括3个关键过程域: ※预防缺陷(Defect Prevention) ※技术革新管理(Technology Change Management) ※过程变更控制(Process Change Management)
第1章 软件工程引论 截止于2002年4月,通过CMM评估的国内软件企业(不完全统计): 摩托罗拉中国软件中心 5 华为印度软件所 4 联想软件事业部 3 沈阳东大阿尔派 3 托普软件 3 浪潮电子集团 2 用友软件 2 北京鼎新 2 金蝶 2
第1章 软件工程引论 软件能力成熟度模型集成(Capacity Maturity Model Integration,CMMI):6个级别,共计22个过程域。 2004年12月7日上午10点,东软公司宣布该公司已经在12月3日通过由印度公司QAI India公司组织的CMMI(集成的能力成熟度模型)5级评估。据称,这是第一家通过CMMI5评估的中国公司
第1章 软件工程引论 东软集团有限公司招软件质量工程师 第1章 软件工程引论 东软集团有限公司招软件质量工程师 职位描述: 工作职责: ·对事业部的软件过程和工作产品进行评价,控制项目过程和产品质量; ·为项目执行过程提供咨询和培训; ·参与事业部软件过程改善和过程财富推广; 职位要求: ·本科及以上学历,计算机相关专业; ·具有2年以上软件开发或者项目管理、QA,CM方面工作经验; ·具备较强的逻辑思维及良好的敬业精神和团队合作精神;具有良好的沟通能力和协调能力; ·接受过CMM/CMMI培训者优先考虑;
第1章 软件工程引论 第三阶段:20世纪90年代,构件软件工程时代,软件复用和软件构件技术正逐步成为主流软件技术。 ◎公共对象请求中介结构CORBA(Common Object Request Broker Architecture ) ◎构件对象模型COM和分布式构件对象模型DCOM ◎EJB是JAVA技术中服务器端软件构件的技术规范和平台支持
第1章 软件工程引论 1.2.2 软件工程的基本概念 1.定义: ⊙为了经济地获得可靠的和能在实际机器上高效运行的软件,而建立和使用的健全的工程原则。(NATO会议上提出的) ⊙ Boehm曾为软件工程下过定义:“运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料”。
第1章 软件工程引论 ⊙ 1983年,IEEE(电气和电子工程师协会)给出的软件工程定义为:“软件工程是开发、运行、维护和修复软件的系统方法”。 ⊙ Fritz Bauer(美国著名的软件工程专家)则给出了另一个关于软件工程学的定义:“建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法”。
第1章 软件工程引论 ⊙ IEEE给出了关于软件工程的一个更加综合的定义: (1) 将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程。即将工程化方法应用于软件开发与维护过程中。 (2) 对上述方法的研究。
第1章 软件工程引论 2.目标: ⊙低开发成本 ⊙功能强 ⊙高性能 ⊙高可靠性 ⊙易于维护 ⊙按时交付 ⊙。。。
第1章 软件工程引论 3.软件工程技术: (1)软件开发方法 (2)软件开发工具 (3)软件开发过程
第1章 软件工程引论 (1)软件开发方法 主要解决什么时候做什么以及怎么做的问题,是软件工程最核心的研究内容。 常用的软件开发方法有: ▼结构化方法: 它通过数据流模型来进行软件的结构化分析,进而过渡到软件的结构化设计、结构化实现和结构化维护。
第1章 软件工程引论 ▼面向对象方法: 它通常包括:面向对象分析、面向对象设计、面向对象实现、面向对象维护。 其中,统一建模语言(UML)是面向对象方法中的公认标准。
第1章 软件工程引论 (2)软件开发工具 软件开发工具是指用来辅助软件开发、维护和管理的软件,使软件开发方法在计算机上的具体实现,从而为软件生命周期中某些过程的自动化提供更有效的支持。 例子:IBM Rational
第1章 软件工程引论 IBM Rational 2002年12月6日,IBM宣布以21亿美元收购软件设计工具厂商Rational。能够得到蓝色巨人青睐的公司绝非等闲之辈。截至到2002年6月30日止,该公司在之前十二个月里的营收已经高达六亿六千六百四十万美元,全世界几乎所有的大型软件项目中都不同程度地采用了它的技术、服务及软件工程环境或工具。
第1章 软件工程引论 IBM Rational 2004年,IBM为了满足行业发展需求,还推出了全新开发产品- Rational Software Development Platform (软件开发平台),使得原有的“生命周期开发”得到近一步完善,从而在一个高度集成、整合的环境下,为用户提供高质量的软件开发解决方案。
第1章 软件工程引论 IBM Rational 2005年,IBM发布Rational Portfolio Manager 6.2。这是业界第一款将软件开发最佳实践与可行性项目计划相结合的、整合的项目与产品组合管理解决方案。该软件能够为用户提供信息分析,帮助团队在把握项目进程和工作方向的同时,实现决策与审批流程自动化,以提升开发效率。
第1章 软件工程引论 IBM Rational 2006年,为实现企业对软件和系统开发更有效的管理,IBM宣布推出全新IBM Rational Systems Developer软件,旨在帮助系统工程师管理开发环境,从而更轻松地遵从特定行业法律法规。
第1章 软件工程引论 IBM Rational 2007年初,IBM在北京发布 Rational 软件 7.0 版本新产品。最新发布的 IBM Rational 软件交付平台 7.0 版本桌面产品是一套全面基于 Eclipse 的软件产品和最佳实践,有助于客户进行软件治理和强化系统开发流程,密切 IT 与业务部门之间的联系。全新版本的 Rational 软件将利 SOA 架构之器,强化面向服务的架构(Service Oriented Architecture,SOA)的架构(Architecutre,A)功能,帮助客户更加高效的交付高质量的软件和服务。
(3)软件开发过程 过程就是人们使用相应的方法、规程、技术、工具等将原始材料(即输入)转化为用户需要的产品(输出)。 第1章 软件工程引论 (3)软件开发过程 过程就是人们使用相应的方法、规程、技术、工具等将原始材料(即输入)转化为用户需要的产品(输出)。 人员 方法与规程 技术与工具 过程 产品 原材料 (输入) (可以为0) (输出) (至少为1)
第1章 软件工程引论 CMMI 3级精简并行过程(SPP)模型
第1章 软件工程引论 林锐,1973年生,1994年和1996年获西安电子科技大学应用物理学士学位和微电子硕士学位,2000年获浙江大学计算机应用博士学位。希赛顾问团高级顾问,大学期间两度被评为中国百名跨世纪优秀大学生,1996年获电子工业部科技进步二等奖,1997年获首届中国大学生电脑大赛软件一等奖。 2000年7月加入上海贝尔有限公司,从事软件工程、项目管理和CMM的研究推广工作,2003年7月当选为 Alcatel 集团技术专家(Alcatel 集团授予为保持全球技术领先地位做出突出贡献的技术专家荣誉和资格)。
第1章 软件工程引论 2004年初创建上海漫索计算机科技有限公司,任公司总经理,致力于创作适合国内企业需求的研发管理方法论和产品。 从2002至2006年,林锐出版了6部著作:《高质量程序设计指南—C++/C语言》,《CMMI3级软件过程改进方法与规范》,《软件工程与项目管理解析》,《面向企业的软件研发管理解决方案:方法与工具》,《Web软件用户界面设计指南》和《IT企业项目管理:问题、方法和工具》。电子工业出版社授予林锐“2003年最佳贡献奖”。
第1章 软件工程引论 4 软件工程管理 软件项目所涉及的管理主要体现在以下几个方面: (1)软件项目规划 (2)项目资源调配 (3)软件产品控制 软件质量管理 软件配置管理
第1章 软件工程引论 1.3 软件工程的基本原则 著名软件工程专家B.W.Boehm集众家所长,并总结了TRW公司多年开发软件的经验,在1983年提出了软件工程的七项基本原则,作为保证软件产品质量和开发效率的最小集合。具体包括:
第1章 软件工程引论 (1) 采用分阶段的生命周期计划,以实现对项目的严格管理。 (2) 坚持进行阶段评审,以确保软件产品的质量。 (3) 实行严格的产品控制,以适应软件规格的变更。 (4) 采用现代程序设计技术。 (5) 软件结果能清楚地审查。 (6) 开发小组人员应该少而精。 (7) 承认不断改进软件工程实践的必要性。
第1章 软件工程引论 图 变更代价随时间变化的趋势示意
第1章 软件工程引论 图 改正一个问题需要付出的代价
第1章 软件工程引论 作业: P10 2,3,5,7