资源描述
Slide Title,Articles and prepositions are not caps in titles,Unless,of course,the title starts with one,Proper names always have leading caps,Acronyms are always all caps,Fifth level,Capitalize the first word of all bullet items,This applies to subbullets too,Rose,Apex,and Ada,not ROSE,APEX,and ADA,*,第,8,章 软件工程,XX,XXX,中心,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学时),8,1,软件工程概述,8,1,1,软件及软件的特征,软件:计算机程序及说明程序的各种文档,即软件是指令、数据结构和文档的集合。程序是计算任务的处理对象和处理规那么的描述。软件是一个信息变换器,它对信息进行产生、管理、获取、修改、显示和传递等处理。被处理的信息可以是简单的比特也可以是复杂的多媒体。,软件应具备6个特征:,1 是一种逻辑产品,与物质产品有很大的区别。,2 软件产品的生产主要是研制,生产本钱主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。,3 软件产品不会用坏,不存在磨损、消耗。但软件是有生命周期的。,4 生产主要是脑力劳动,还未完全摆脱手工开发方式。,5 开发软件的费用不断增加,致使生产本钱相当昂贵,6 软件还必须具备可维护性Maintainability、独立性Dependability和效率性Efficiency和可用性Usability四个属性。,8,1,2,软件生产的历史,8,1,3,软件危机,软件开发技术的进步未能满足开展的要求。在软件开发中遇到的问题找不到解决的方法,问题积累起来,形成锋利的矛盾,导致了软件危机。,软件危机的表现:对软件开发本钱和进度的估计常常很不准确,经费预算经常突破,完成时间一再拖延;开发的软件不能满足用户要求,用户对“已完成的软件系统不满意的现象经常发生;开发的软件可维护性差;开发的软件可靠性差。,软件危机产生原因为:软件规模越来越大,结构越来越复杂;软件开发管理困难而复杂;软件开发费用不断增加;软件开发技术落后;生产方式落后,仍采用手工方式;开发工具落后,生产率提高缓慢。,归纳起来软件危机的核心原因是软件系统的复杂度远大于硬件,计算机工业中硬件产品制造已经标准化,工程化,产业化,但软件生产离此目标还很远。,假设一个人一年可以开发出一个一万行的程序,该软件是否集中4000人的力量一年就可以完成呢?绝对做不到!因为代码长度增加了4000倍,程序复杂程度的增加远远超过4000倍。,815工程失败的原因,因素,Factors,所占百分比,%,1.Incomplete Requirements,不完整的需求,13.1%,2.Lack of User Involvement,缺乏用户参与,12.4%,3.Lack of Resources,缺乏资源,10.6%,4.Unrealistic Expectations,不实际的期望,9.9%,5.Lack of Executive Support,缺乏执行的支持,9.3%,6.Changing Requirements&Specifications,需求和规格的变化,8.7%,7.Lack of Planning,缺乏计划,8.1%,8.Do not Need It Any Longer,不再需要,7.5%,9.Lack of IT Management,缺乏,IT,管理,6.2%,10.Technology Illiteracy,技术落后,(技术盲区),4.3%,11.Others,其他,9.9%,Standish Group 1995,8,1,6,软件工程的主要定义,软件工程根本思想:用科学的知识和技术原理来定义、开发、维护软件;用工程科学的观点进行费用估算,制定进度,制定方案和方案;用管理科学的方法和原理进行生产的管理;用数学的方法建立软件开发中的各种模型和算法。,软件工程目标:付出较低开发本钱;到达要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。,软件工程内容:研究内容包括开发技术和开发管理两个方面。开发技术主要研究软件开发方法,开发过程,开发工具和环境。开发管理主要研究软件管理学,软件经济学,软件心理学。,软件工程需要解决的问题:软件的费用,可靠性,可维护性,软件生产率和软件的重用。,软件工程规定了获取,供给,开发,操作和维护软件时,要实施的过程、活动和任务。目的是为各种人员提供一个公共的框架,以便用相同的语言进行交流。软件工程包括:获取过程,供给过程,开发过程,操作过程,维护过程,管理过程,支持过程。,软件开发方法:使用早已定义好的技术集及符号表示习惯来组织软件生产的过程。软件开发方法是克服软件危机的重要方面之一,对软件工程及软件产业的开展起了不可估量的作用。,软件工程工具和方法,本活动目的是给软件开发组织提供软件开发环境过程和工具软件。开发队伍需要它们的支持。程序(软件)的开发、运行都是在支持软件的根底上作出的。这些支持软件的总和我们称之为软件开发环境(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 system,IBM 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,Requirements,Implementation,Test,Use-CaseModel,DesignModel,BusinessModeling,Business,Use-Case Model,automated by,Business Object Model,8,3,面向对象的分析与设计,分析与设计,软件开发活动中软件需求和软件设计是软件开发活动中最重要的两个活动,并且与某一具体开发方法结合的最为紧密,软件需求和软件设计简称为分析与设计,.,分析与设计有时也叫软件建模,其方法也叫建模方法,建模方法采用的符号体系叫建模语言。,无论从学科角度还是从工程实践角度分析与设计涉及的问题是最具挑战性和革命性的。一旦分析与设计的方法发生改变会改变软件工程的历史。正是由于面向对象技术在分析和设计阶段提出了新的不同于结构化的方法,使软件工程从结构化方法时代进入了面向对象方法时代。,面向对象的分析与设计,面向对象软件开发方法的核心是面向对象的分析与设计,本节针对面向对象分析与设计方法,重点介绍UML方法。采用一个例子对UML方法进行描述,最后介绍一个UML的CASE工具ROSE,在实验指导书的帮助下学生要掌握ROSE的使用,并对一个简单问题进行建模,以掌握面向对象的根本思想和UML的主要方法。,面向对象的分析与设计(OOAOOD)方法的开展(自学),
展开阅读全文