软件工程 第一章 概述.ppt_第1页
软件工程 第一章 概述.ppt_第2页
软件工程 第一章 概述.ppt_第3页
软件工程 第一章 概述.ppt_第4页
软件工程 第一章 概述.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、软 件 工 程 概 论,湖北工业大学计算机学院 赵 岚 ,软件工程是计算机专业的一门重要的专业基础课,它对于培养学生软件素质,提高学生的软件开发能力与软件项目管理能力具有重要的意义。,课程主要内容,本课程主要介绍软件的基本要领和软件工程的目标,通过对传统的面向过程的软件开发方法和面向对象的软件开发方法的介绍,使学生掌握开发高质量软件的方法;通过对软件开发过程和过程管理技术的学习,使学生了解如何进行软件度量和管理,怎样进行质量保证活动,从而有效地策划和管理软件开发活动。,软件工程课程与其它软件专业课的区别,立足于系统的整体 讲授系统分析、系统设计、测试及维护的理论和方法 构筑一个软件系统,实现软

2、件开发全过程,1.1 软件,一、软件 “软件”一词最初是在1960年出现的,目前还没有一个公认的定义。在某些文献里定义软件为: 软件 程序 + 数据 + 文档,6,软件的定义: 软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它包括程序(program)、相关数据(data)及其说明文档(document)。 软件由计算机程序、数据及文档组成。,*注: (1)在运行中提供所希望的功能和性能的指令集(即程序) (2)使程序能够正确运行的数据结构 (3)是与程序开发,维护和使用有关的图文材料。,二、软件的特点:,软件是一种逻辑实体,而不是具体的物理实体。因而它具

3、有抽象性。 软件的生产与硬件不同,它没有明显的制造过程。,(3)在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。所以软件的维护比硬件的维护要复杂得多,与硬件的维修有着本质的差别。,(4) 软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。 (5) 软件的开发至今尚未完全摆脱手工艺的开发方式。 (6) 软件本身是复杂的。 (7) 软件成本相当昂贵。 (8) 相当多的软件工作涉及到社会因素。,10,软件生产的发展,程序设计时代,程序系统时代,软件工程时代,时间,19461956,19561968,1968至今,生产方式,个体手工劳动,作坊式小集团合作,工程化的生

4、产,使用工具,机器、汇编语言,高级语言,开发工具,开发方法,个人编程技巧,个人编程技巧,开始提出结构化方法,使用数据库、网络、分布式、面向对象技术等,硬件特征,价格贵,存储容量小,运行可靠性差,速度、容量及工作可靠性明显提高,价格降低,向超高速、大容量、微型化以及网络化方向发展,软件特征,只有程序设计概念,不重视程序设计方法,程序员数量猛增,但开发人员素质差,开发技术没有新突破。软件危机产生。,开发技术有很大进步,但没有突破性进展,没有完全摆脱软件危机。,等于程序加技术文档,完整定义,等于程序,软件定义,从软件发展的三个时期及其特点的对比,可以看出软件发展最根本的变化体现在:,人们改变了对软件

5、的看法 软件的需求是软件发展的动力 软件工作的范围从只考虑程序的编写扩展到整个软件生存周期,12,软件种类可以从六个方面进行划分: 按功能分类 应用软件工程和科学计算软件、嵌入式软件、计算机辅助设计制造(CADCAM)软件、系统仿真软件、人工智能软件等 。 系统软件操作系统、数据库管理系统、设备驱动程序以及通信处理程序等。它是计算机系统必不可少的一个组成部分。 支撑软件支持软件设计的图形软件包,支持软件实现的编辑程序、预编译程序等。它是协助用户开发软件的工具性软件,1.1.2软件的分类,13,按规模分类 按工作方式分类 分时软件 实时软件 交互式软件 批处理式软件,14,按服务对象分类 项目软

6、件也称定制软件,是受某个特定客户(或少数客户)的委托,由一个或多个软件开发机构在合同的约束下开发出来的软件。例如军用防空指挥系统、卫星控制系统。 产品软件是由软件开发机构开发出来直接提供给市场,或是为千百个用户服务的软件。例如,文字处理软件、文本处理软件、财务处理软件、人事管理软件等。 按使用频度分类 一次性使用软件 频繁使用软件 按失效影响分类 高可靠性软件 一般可靠性软件 每一类软件在管理方面要求程度不同。,15,1. 软件危机 软件危机指的是软件开发和维护过程中遇到的一系列严重问题。 软件危机包含以下两方面的问题:如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软

7、件。,1.1.3 软件危机,16,美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。,1995年SEI统计,美国共取消了810亿美元的商业软件项目,其中31的项目未做完就被取消,53的软件项目进度通常要延长50%的时间,只有9的软件项目能够及时交付并且费用也控制在预算之内。,1962年7月22日美国一个计划飞往金星的飞船水手1号在升空290秒之后坠毁。经调查发现,地面控制计算机中一段运行程序执行

8、了类似这样的代码:If not 雷达发现火箭 then 不调整火箭的飞行路线。然而程序员一个不小心漏掉了not,导致了这些事故的发生,17,2000年TechRepublic公司发表了有关IT项目的调查结果。该调查是以北美的1375个IT专家为对象实施问卷调查进行的。根据此调查,IT项目中有40%失败,这些项目的平均成本每年花费100万美元。,18,软件危机的表现 开发成本难以控制,进度不可预计; 软件系统的质量和可靠性很差,难以满意; 软件文档相当缺乏,软件系统不可维护; 软件开发生产率很低,软件产品供不应求。 软件产品成本十分昂贵。,软件危机产生的原因 1软件本身的特点: - 软件是一种逻

9、辑实体,而不是具体的物理实体,具有高度的抽象性; - 软件是一个逻辑上复杂而规模上庞大的系统,涉及技术、管理等多方面的问题; - 软件的生产方式与硬件明显不同:产品的质量控制在设计和制造阶段的不同;产品的生产方式不同;设计和制造阶段的资金和人力投入、 技术复杂度不同; - 软件的运行和维护阶段,没有传统意义上的机械磨损、老化问题。 - 软件与硬件有关,对软件有可移植性的要求。 - 软件工作涉及许多社会因素。 2对软件开发与维护存在许多错误认识和做法:忽视软件需求分析的重要性;对软件与程序的概念不清;轻视软件维护。 3软件开发与维护的方法不正确:对系统需求没有清楚和准确的认识就进入开发阶段, 忽

10、视对软件开发过程的管理;,19,软件的定义(Boehm):软件是程序以及开发、使用和维护程序需要的所有文档。,早,中,晚,引入同一变动付出的代价随时间变化的趋势,改正一个问题的估计费用(美元),改正一个问题的估计工作量(人天),20,200,1000,2000,0.05,0.5,2.5,5.0,需求分析,概要设计,详细设计,编码,集成测试,系统测试,现场,Bell 实验室统计结果(US),软件产品需要分阶段的定义、设计和开发,严格的产品质量控制,完整的文档记录。,50,60,70,80,90,硬件,软件,20,解决软件危机的途径 将软件开发看成是一种组织严密、管理严格、各类人员协同配合共同完成

11、的工程项目。 研究和推广成功的软件开发技术和方法。 开发和使用好的软件工具。 基本概念: 软件生命周期:软件所经历的定义、开发、使用和维护直到废弃所经历的时期。 程序设计环境:源程序编辑,编译或解释,链接,调试和运行工具的集合。 软件工程环境:软件定义,设计和实现,测试和维护等各个阶段所使用的软件工具的集合。,21,1.2.1软件工程定义 研究如何应用一些科学理论和工程上的技术来指导软件的开发,用较少的投资获得高质量的软件的一门学科。,1.2软件工程,22,软件工程的两个典型定义: 1968年在第一届NATO会议上曾经给出了软件工程的一个早期定义:“软件工程就是为了经济地获得可靠的且能在实际机

12、器上有效地运行的软件,而建立和使用完善的工程原理。”这个定义不仅指出了软件工程的目标是经济地开发出高质量的软件,而且强调了软件工程是一门工程学科,它应该建立并使用完善的工程原理。 1993年IEEE进一步给出了一个更全面更具体的定义:“软件工程是: 把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件; 研究中提到的途径。”,23,软件工程性质:涉及计算机科学、工程科学、管理科学、数学等领域,着重于如何建造一个软件系统。用工程科学中的观点来进行费用估算、制定进度、制定计划和方案。用管理科学中的方法和原理进行软件生产的管理。用数学的方法建立软件开发中的各种模型和各

13、种算法,如可靠性模型,说明用户需求的形式化模型等。 软件工程三要素:方法、工具和过程。,24,软件方法,是完成软件开发的各项任务的技术方法,回答“如何做”的问题;工具是为方法的运用提供自动的或半自动的软件支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 传统方法学 面向对象方法学,25,需要解决的问题:软件成本、软件可靠性、软件维护、软件生产率和软件复用。 基本内容:包括理论、结构、方法、工具、环境与规范等 目标:以较少的投资获得易维护、易理解、可靠和高效率的软件产品。 原则:即分解、抽象和信息隐蔽、一致性和确定性 原理:工程化和系统化。,软件

14、工程框架,27,ISO 9000定义:软件过程是把输入转化为输出的一组彼此相关的资源和活动。 从软件开发的观点看,它就是使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)。,1.2.2软件过程,软件工程过程包含四种基本的过程活动: Plan 软件规格说明:规定软件的功能及其运行的限制 Do 软件开发:产生满足规格说明的软件 Check 软件确认:确认软件能够完成客户提出的要求 Action 软件演进:为满足客户的变更要求,软件必须在使用的过程中演进,29,过程元素之间的关系,30,标准软件过程体系结构图,31,详细

15、的软件过程层次体系结构,32,软件过程模型,*注:软件过程模型即为下章的软件开发模型,具体模型下次课详细介绍,33,【例】若要开发一个软件系统(如图书馆信息系统),为了完成这项任务,首先要选择软件开发模型,确定开发方法、准备开发工具、设计开发环境和运行环境,然后进行需求分析、设计、编程、测试、试运行、正式运行、验收和交付,最后是系统维护或系统升级换代。这样就按照所选择的开发模型,走完了软件的一个生命周期,这一系列的软件开发过程和管理过程,就是软件工程。,三、软件工程的基本原理 1968年,在联邦德国加尔密斯,北大西洋公约组织(NATO),召开的有关计算机软件会议上正式“软件工程”术语。 目前有

16、100多条关于软件工程的准则,其中最出名的是著名软件工程专家B.W.Boehm在1983年提出的7条基本原理。,35,软件工程的基本原理有: 按软件生存期分阶段制定计划并认真实施; 坚持进行阶段评审; 坚持严格的产品控制; 使用现代程序设计技术; 明确责任,使得工作结果能够得到清楚的审查; 用人少而精;不断改进开发过程。 承认不断改进软件工程实践的必要性,不仅主动采纳新技术,还要注意总结经验 “二八”定律,一般认为完成了实际上只完成了,的问题存在在的程序中等。,理解软件工程的基本原理,强调使用生存周期方法学: 就是从时间角度对软件开发和维护的复杂问题进行分解,把软件生存的漫长周期依次划分为若干阶段,每个阶段有相对独立的任务,然后逐步完成每个阶段的任务。,理解软件工程的基本原理(续),强调使用结构分析与结构设计任务: 在软件生存周期的每个阶段都采用学的管理技术和良好的技术方法。每个阶段结束之前都从技术和管理两个角度进行严格的审查。,四、软件工程的目标、框架及原则,1、 软件工程的目标可概括为“生产具有正确性、可用性以及开销合宜的产

温馨提示

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

评论

0/150

提交评论