软件
工程学
h28rf
第8章 软件工程,XXXXX中心XXXX大学,基本要求,1了解软件工程的基本概念、基本原则2理解软件工程的主要定义3理解软件的概念及软件的特征4了解软件生产的历史、软件危机及项目失败的原因5了解软件开发活动6了解软件的生命周期概念7理解软件过程及模型8了解面向对象的分析与设计(软件建模)的概念及过程9了解标准建模语言UML的历史沿革及特点10初步掌握UML主要建模元素11初步掌握UML建立小型系统的主要步骤和方法12简单掌握建模工具ROSE,内容及安排,授课(课内4学时,课外4学时)81软件工程概述(0.5学时)811软件及软件的特征812软件生产的历史813软件危机815项目失败的原因816软件工程的主要定义82 软件开发活动(1学时)821软件的生命周期822软件开发活动823软件过程及模型83 面向对象的分析与设计831标准建模语言UML(1学时含实验介绍)832用UML建立学籍管理系统举例(1学时含实验介绍)84建模工具ROSE介绍(自学),实验(课内4学时,课外4学时)Rose的软件界面(自学)实验-1 UML建模元素的创建和组织(1学时)实验-2 学籍管理系统建摸(3学时),81软件工程概述,811软件及软件的特征,软件:计算机程序及说明程序的各种文档,即软件是指令、数据结构和文档的集合。程序是计算任务的处理对象和处理规则的描述。软件是一个信息变换器,它对信息进行产生、管理、获取、修改、显示和传递等处理。被处理的信息可以是简单的比特也可以是复杂的多媒体。软件应具备6个特征:1 是一种逻辑产品,与物质产品有很大的区别。2 软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。3 软件产品不会用坏,不存在磨损、消耗。但软件是有生命周期的。4 生产主要是脑力劳动,还未完全摆脱手工开发方式。5 开发软件的费用不断增加,致使生产成本相当昂贵6 软件还必须具备可维护性(Maintainability)、独立性(Dependability)和效率性(Efficiency)和可用性(Usability)四个属性。,812软件生产的历史,813软件危机,软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形成尖锐的矛盾,导致了软件危机。软件危机的表现:对软件开发成本和进度的估计常常很不准确,经费预算经常突破,完成时间一再拖延;开发的软件不能满足用户要求,用户对“已完成的”软件系统不满意的现象经常发生;开发的软件可维护性差;开发的软件可靠性差。软件危机产生原因为:软件规模越来越大,结构越来越复杂;软件开发管理困难而复杂;软件开发费用不断增加;软件开发技术落后;生产方式落后,仍采用手工方式;开发工具落后,生产率提高缓慢。归纳起来软件危机的核心原因是软件系统的复杂度远大于硬件,计算机工业中硬件产品制造已经标准化,工程化,产业化,但软件生产离此目标还很远。,假如一个人一年可以开发出一个一万行的程序,该软件是否集中4000人的力量一年就可以完成呢?绝对做不到!因为代码长度增加了4000倍,程序复杂程度的增加远远超过4000倍。,815项目失败的原因,Standish Group 1995,816软件工程的主要定义,软件工程基本思想:用科学的知识和技术原理来定义、开发、维护软件;用工程科学的观点进行费用估算,制定进度,制定计划和方案;用管理科学的方法和原理进行生产的管理;用数学的方法建立软件开发中的各种模型和算法。软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。软件工程内容:研究内容包括开发技术和开发管理两个方面。开发技术主要研究软件开发方法,开发过程,开发工具和环境。开发管理主要研究软件管理学,软件经济学,软件心理学。,软件工程需要解决的问题:软件的费用,可靠性,可维护性,软件生产率和软件的重用。软件工程规定了获取,供应,开发,操作和维护软件时,要实施的过程、活动和任务。目的是为各种人员提供一个公共的框架,以便用相同的语言进行交流。软件工程包括:获取过程,供应过程,开发过程,操作过程,维护过程,管理过程,支持过程。软件开发方法:使用早已定义好的技术集及符号表示习惯来组织软件生产的过程。软件开发方法是克服软件危机的重要方面之一,对软件工程及软件产业的发展起了不可估量的作用。,软件工程工具和方法,本活动目的是给软件开发组织提供软件开发环境过程和工具软件。开发队伍需要它们的支持。程序(软件)的开发、运行都是在支持软件的基础上作出的。这些支持软件的总和我们称之为软件开发环境(Environment)早期的环境只有最必要的软件工具:语言的编译器、连接器、加载和运行工具、排错(debugging)工具,终端显示和编辑工具。我们称最小环境工具集。70年代中期,软件工程师迫于软件危机的压力,提出了计算机辅助软件工程(CASE)的设想,开发出一系列工具尽量使软件过程的各项活动自动化、半自动化。工具日益增多,单点式使用工具很不方便,使用者要逐个将工具调入,使用后其生成的产物需要逐个保管,一个工具要用到另一工具的输出,其格式不对就无法用,消除或修改一个名字,则各工具产物中所有相同的名字都要逐个修改。这就在客观上产生了对于集成的CASE工具的需求。,软件工程工具,信息工程工具过程模型和管理工具项目计划工具风险分析工具项目管理工具需求追踪工具度量和管理工具文档工具系统软件工具质量保证工具数据库管理工具,软件质量,软件质量保证的SQA活动,贯穿于软件过程始终。开发单位成立SQA小组负责全面质量管理。在开发项目计划时就要做出SQA计划。对于SQA组的工作不外乎以下几方面:各种测试 测试软件是否满足规格说明的要求。各种评审 为多种人员参与的讨论会,以规格说明或各种标准,规范为准评价各项软件工作。各种审计 审计(Audit),以职能人员为主审,审查软件过程产物是否符合标准或规格说明书。报告和记录 所有测试、评审、审计都要详细记录并写出报告,报告和记录均要整理、归档。以上活动均应在软件质量保证计划中列出。,软件过程模型,定义:描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生命周期模型化技术的基础,也是建立软件开发环境的核心。A software development process defines Who is doing What,When and How in building a software product作用:是确立了软件开发中各阶段的次序限制,活动准则,所要遵守的规定和限制,便于各种活动的协调,人员之间的有效通信,有利于活动重用和活动管理。准则:模型能表示各种活动的实际工作方式,能随情况变化而演化,能表示各种活动间同步和制约关系,能表示活动的动态特性。容易为开发人员理解,能适应不同软件项目,具有较强灵活性,能支持软件开发环境的建立。,模型举例-RUP,软件工程领域在20世纪末取得最重要的的成果之一就是统一建模语言(UML:Unified Modeling Language),目前UML已得到了广泛的应用,这是面向对象技术和软件工程的新进展The Unified Modeling Language(UML)is a language for specifying,visualizing,constructing,and documenting the artifacts of a software-intensive systemIBM Rational公司为了配合UML提出了统一过程模型(Rational Unified Process RUP)。RUP说明如何应用软件工程的最佳方案,以及如何使用工具来实现软件工程流程的自动化。注意:选用RUP这样一个具体的过程模型作为教学的案例,RUP,用二维结构或沿着两个坐标轴来表达。横轴代表了制订开发过程时的时间,体现了过程的动态结构周期(cycle)、阶段(phase)、迭代(iteration)和里程碑(milestone)纵轴表现了过程的静态结构活动(activity)、制品(artifact)、角色(worker)和工作流(workflow),Major Workflows Produce Models,Analysis&Design,ImplementationModel,TestModel,realized by,implemented by,verified by,Use-CaseModel,