《软件工程概述.pptx》由会员分享,可在线阅读,更多相关《软件工程概述.pptx(31页珍藏版)》请在第壹文秘上搜索。
1、1. 软件工程概述1本章重点和难点:本章重点和难点:重点:掌握软件工程学的有关基本概念重点:掌握软件工程学的有关基本概念掌握软件工程的研究对象、研究方法和工掌握软件工程的研究对象、研究方法和工具。具。难点:对软件分工合作重要性和存在的困难点:对软件分工合作重要性和存在的困难的体会;对软件需求、软件维护重要性难的体会;对软件需求、软件维护重要性的认识。的认识。2 1.1 什么是软件什么是软件软件程序?开发软件写程序?软件程序?开发软件写程序? 认识的误区! 程序只是软件的一个组成部分 写程序只是软件开发的过程中的一个步骤 3 在运行中能提供所希望的功能和性能的指令集(即程序) 使程序能够正确运行
2、的数据 描述程序研制过程和方法使用的文档 软软 件件可执行部分可执行部分不可执行部分不可执行部分软件是软件是程序程序、数据数据以及有关以及有关文档文档资料的集合资料的集合4 1.2 软件的特点软件的特点软件不是传统意义上的“制造”产生的,而是“研发”出来的。 导致:软件项目管理和软件产品管理困难。软件不会被“用坏”。 导致:软件维护困难(软件维护不能通过重复制造解决)。软件大多是“定制”的。 导致:软件开发的质量和效率受到影响。软件成本难于估计。 导致:软件项目计划失效。 软件特征反映了软件发展所需面对的不同问题5 1.3 软件的分类软件的分类功能划分工作方式划分规模划分软件服务对象的范围划分
3、使用的频度进行划分软件失效的影响进行划分6软件的分类软件的分类 按软件的功能进行划分:按软件的功能进行划分:u 系统软件系统软件p 操作系统操作系统p 数据库管理系统数据库管理系统p 设备驱动程序设备驱动程序p 通信处理程序等通信处理程序等u支撑软件支撑软件p文本编辑程序文本编辑程序p文件格式化程序文件格式化程序7p程序库系统程序库系统p支持需求分析、设计、实现、测试和支持管理的软件支持需求分析、设计、实现、测试和支持管理的软件u 应用软件应用软件p 商业数据处理软件商业数据处理软件p 工程与科学计算软件工程与科学计算软件p 计算机辅助设计制造软件计算机辅助设计制造软件p 智能产品嵌入软件智能
4、产品嵌入软件p 事务管理、办公自动化软件事务管理、办公自动化软件p 计算机辅助教学软件计算机辅助教学软件8按软件规模进行划分:按软件规模进行划分: 类别 参加人员数 研制期限 源程序行数 微型 1 14周 0.5K 小型 1 16月 1K2K 中型 25 12年 5K50K 大型 520 23年 50K100K 甚大型 1001000 45年 1M(=1000K) 极大型 20005000 510年 1M10M9按软件工作方式划分:按软件工作方式划分:u 实时处理软件实时处理软件u 分时软件分时软件u 交互式软件交互式软件u 批处理软件批处理软件按软件服务对象的范围划分:按软件服务对象的范围划
5、分:u 项目软件项目软件u 产品软件产品软件10按使用的频度进行划分:按使用的频度进行划分:u 一次使用一次使用u 频繁使用频繁使用按软件失效的影响进行划分:按软件失效的影响进行划分:u 高可靠性软件高可靠性软件u 一般可靠性软件一般可靠性软件11 1.4 软件的历史与发展软件的历史与发展l软件是由计算机程序和程序设计的概念发展演化过来的。是程序和程序设计发展到一定规模后并且逐步商品化的过程中形成的。l19世纪初,法国人约瑟夫雅各(Josephe Marie Jaquard)设计的织布机,就能够通过“读”穿孔卡上的信息完成预定的任务。l英国诗人拜伦(Byron)的女儿,数学家爱达奥古斯塔拉夫拉
6、斯伯爵夫人(Ada Augusta Lovelace) 在帮助巴贝奇研究分析机时,指出分析机可以向织布机一样进行编程,并发现进行程序设计和编程的基本要素,被认为是有史以来的第一位程序员,而著名的计算机语言Ada就是以此命名的。12 1.4 软件的历史与发展软件的历史与发展l计算机软件产业开始于20世纪50年代,随着计算机在商业、国防、教育等领域的使用的迅速增加,导致对程序设计人员需求的增长。出现一部分具有计算机程序设计经验的人分离出来专门从事程序设计工作,并创立自己的程序设计服务公司,根据用户的订单提供相应的程序设计服务。l如1955年,Elmer Kubie和John W.sheldon创建
7、的计算机使用公司(CUC)。l1959年创立的应用数据研究(ADR)公司。l1968年Martin Goetz获得世界上第一个软件专利。l1969年春,ADR公司就IBM垄断软件产业提出诉讼,促使IBM在1969年6月30日宣布结束一些软件和硬件的捆绑销售,为软件产品单独定价。l在这一时期成立的软件公司有美国计算机公司(CCA)、Information Builder、Oracle公司等。13 1.5 软件产业的三次浪潮软件产业的三次浪潮l1968-1985年,称为第一次浪潮u 满足在软件需求和复杂性方面日益增加的要求和因此导致的开发团队规模的不断扩大。建立了以瀑布模型为主体的软件开发过程,以
8、及结构化的软件分析与设计方法。u1985年美国防部发布DoD-2167(1988年,发布2167A)可说是该阶段的总结。u 结构化方法关注的是方法本身,即,需求定义的正规化以及设计、创建那些可以在最终系统中加以追踪的需求的方法。自动化工具在某种程度上对此起到辅助的作用。这是从“家庭作坊”到大规模开发的良好的开端。u 而导致这些项目成功/失败的真正原因(例如,需求管理和配置管理等)还未成为关注的焦点。14 1.5 软件产业的三次浪潮软件产业的三次浪潮l过程改进的研究工作u “二十多年来,并未实现用新的软件方法和技术解决软件产业化和软件质量方面问题的承诺,工业界和政府组织认识到根本的问题是软件开发
9、过程管理上的不足”。-DoD, Report of the Defense Science Board Task Force on Military Software, September 1987u软件过程改进是对不断提高的软件项目失败率的一种反应。从美国国防部对SEI的赞助开始,标志对过程的关注。u从SEI87后,对软件过程的关注开始影响世界的软件行业。Watts Hmphrey在软件开发中引入了传统工业(20世纪30年代开始,70-80年代盛行的质量控制运动)的质量控制概念。从1987年的SEI87开始到1997/8年ISO/IEC发表ISO/IEC15504,形成的过程成熟度成为第二次
10、浪潮。15 1.5 软件产业的三次浪潮软件产业的三次浪潮l软件工业化u过程成熟度运动为软件行业的第三次浪潮铺平了道路,而第三次浪潮就是“软件工业化”。u在第三次浪潮中,软件开发将变得如同装配和制造过程一样。发动第三次浪潮的技术因素包括:面向对象技术和重用软件技术,这使得利用标准重用组件以装配软件成为可能(代表性的技术方法是:UML,SDL96/2000/SDL-RT)。u推动第三次浪潮的关键因素是规范化的软件工程过程,使用这样的过程,确保该过程中,质量、进度和功能是可以预测的和可以控制的。16 在计算机软件的开发和维护过程中所遇到的一系列严重问题,长期找不到解决这些问题的办法,使问题逐渐积累起
11、来,形成了尖锐的矛盾,从而导致了软件危机。 矛盾:软件技术跟不上硬件技术发展而造成的诸多问题;软件的开发跟不上社会的发展。 1.6 软件危机软件危机17 1.6 软件危机软件危机18产生软件危机的原因产生软件危机的原因(1)用户对软件需求的描述不精确。)用户对软件需求的描述不精确。(2)软件开发人员对用户需求的理解有偏差,这将导致软件产品与用户的需)软件开发人员对用户需求的理解有偏差,这将导致软件产品与用户的需 求不一致。求不一致。(3)缺乏处理大型软件项目的经验。)缺乏处理大型软件项目的经验。(4)开发大型软件易产生疏漏和错误。)开发大型软件易产生疏漏和错误。(5)缺乏有力的方法学的指导和有
12、效的开发工具的支持。)缺乏有力的方法学的指导和有效的开发工具的支持。 软件开发过多地依靠程序员的软件开发过多地依靠程序员的“技巧技巧”,从而加剧了软件产品的个性化。,从而加剧了软件产品的个性化。(6)面对日益增长的软件需求,人们显得力不从心。从某种意义上说)面对日益增长的软件需求,人们显得力不从心。从某种意义上说,解决供,解决供 求求矛盾将是一个永恒的主题。矛盾将是一个永恒的主题。19既要有技术措施(方法和工具),又要有必要的组织管理措施。 (1) 将软件开发看作是一个工程项目。(2) 正确地应用各种方法和工具。(3) 有效地使用各种软件工具和环境。软件工程概念的出现源自软件危机。软件工程概念
13、的出现源自软件危机。 解决软件危机的途径解决软件危机的途径20什么是软件工程什么是软件工程? Fritz Bauer在在NATO会议上给出的定义:会议上给出的定义: “软件工程是为了经济地获得可靠的和能在实际机器上高效软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而确立和使用的健全的工程原理(方法)。运行的软件而确立和使用的健全的工程原理(方法)。” IEEE【IEEE 83】给出的软件工程定义:给出的软件工程定义: “软件工程是开发、运行、维护和修复软件的系统方法。软件工程是开发、运行、维护和修复软件的系统方法。” IEEE【IEEE 93】给出了一个更加综合的定义:给出了一个
14、更加综合的定义: “将系统化的、规范的、可度量的方法应用于软件的开发、将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。运行和维护的过程,即将工程化应用于软件中。”21软件工程与编程区别 前者是一门学科,一种科学前者是一门学科,一种科学理论来指导软件系统开发,理论来指导软件系统开发,标准化,自动化的过程。标准化,自动化的过程。 考虑如何分解一个系统,以考虑如何分解一个系统,以便各人分工开发;考虑如何便各人分工开发;考虑如何说明每个部分的规格要求;说明每个部分的规格要求;怎样才能易于维护。怎样才能易于维护。 单纯的代码编写单纯的代码编写 是软件工程发展的
15、前身是软件工程发展的前身 是软件工程中占据很少是软件工程中占据很少时间和空间的一部分时间和空间的一部分22用工程、科学和数学的原则与方法开发、维护计算机软件的有关技术及管理方法。软件工程构成三要素软件工程构成三要素- 过程过程 管理管理部分部分- 方法方法 “如何做如何做” 技术手段技术手段- 工具工具 自动自动或半自动地支持软件的支撑环境或半自动地支持软件的支撑环境(开发和管理开发和管理)过程过程方法方法工具工具软件工程软件工程F 要素之间相互关联和支持要素之间相互关联和支持1.7 软件工程的概念软件工程的概念23软件工程是一门交叉学科软件工程的主要研究内容u 软件开发技术软件开发技术:软件
16、开发方法学软件开发方法学 软件开发过程软件开发过程 软件工具和软件工程环境软件工具和软件工程环境 u 软件工程管理软件工程管理:软件管理学软件管理学 软件经济学软件经济学 软件心理学软件心理学 软件工程所包含的内容不是一成不变的,随着人们对软件软件工程所包含的内容不是一成不变的,随着人们对软件系统的研制开发和生产的理解,应用发展的眼光看待它。系统的研制开发和生产的理解,应用发展的眼光看待它。24软件工程软件工程 一种层次化技术工具方法过程质量焦点Software engineering layers软件工程三个要素:方法、工具、过程25软件工程知识结构 软件需求软件需求 软件设计软件设计 软件构造软件构造 软件测试软件测试 软件维护软件维护 软件配置管理软件配置管理 软件工程管理软件工程管理 软件工程过程软件工程过程 软件工程工具和方法软件工程工具和方法 软件质量软件质量26软件工程的目标:软件工程的目标:在给定成本、进度的前提下,开在给定成本、进度的前提下,开发满足用户需求的并具有以下特性的软件产品。发满足用户需求的并具有以下特性的软件产品。 可修改性可修改性有效性有效性可靠性可靠性