软件工程泉州移动支撑中心林鑫显Email:13959748898@139.com2010年9月内部资料注意保密主要内容软件工程基础知识软件开发过程软件开发模型面向对象技术统一建模语言(UML)结构化分析方法软件文件标准与规范结构化设计方法和工具过程管理2内部资料注意保密IEEE定义:软件工程是(1)将系统的、严格约束的、可量化的方法应用于软件的开发、运行和维护。即将工程化应用于软件。(2)在(1)中所述方法的研究。软件工程目的:为建造高质量的软件提供一个框架。软件工程包含:一个过程、一组方法、一系列工具什么是软件工程内部资料注意保密主要内容软件工程基础知识软件开发过程软件开发模型面向对象技术统一建模语言(UML)结构化分析方法软件文件标准与规范结构化设计方法和工具过程管理4内部资料注意保密可行性分析需求分析和定义概要设计详细设计编写代码单元测试集成测试系统测试提交系统维护软件开发的几个阶段1.计划2.需求分析3.设计4.编码5.测试6.运行与维护内部资料注意保密6软件开发过程1.需求分析需求分析是根据客户的要求,清楚地了解客户需求中的产品功能、特性、性能、界面和具体规格等,然后进行分析,确定软件产品所能达到的目标。软件产品需求分析是软件开发过程的第一个环节,也是最重要的一个环节。如果需求分析做不好,下面的设计、编程做得再好,客户(用户)也不可能对开发出来的软件产品感到满意。软件产品需求分析的结果要文档化,而且这类文档的描述尽量不要用专业术语,从而使用户能够完全理解需求分析的结果,参与对其复审的过程。内部资料注意保密7软件开发过程2.设计软件设计是根据需求分析的结果,考虑如何在逻辑、程序上去实现所定义的产品功能、特性等。可以分为概要设计和详细设计,也可以分为数据结构设计、软件体系结构设计、应用接口设计、模块设计、算法设计、界面设计等。设计过程将需求转换成软件表示,设计的结果将作为编码的框架和依据,以提高编码的效率和质量。设计的文档化体现在产品规格说明书(functionalspecification)、技术设计文档(developmentdesigndocument)和软件配置文档(softwareconfigurationdocument)。内部资料注意保密8软件开发过程3.编程经过需求分析、设计之后,接下来就是用一种或多种具体的编程工具(如VS.Net,JBuild、Eclipse、Delphi等)进行编码,即将设计转换成计算机可读的形式。如果设计做得好、做得仔细,编程就容易了。4.测试任何编程,免不了存在这样或那样的错误,所以有必要进行软件测试。测试过程集中于软件的内部逻辑——保证所有语句都测试到,以及外部功能——即引导测试去发现错误,并保证定义好的输入能够产生与预期结果相同的输出。测试按不同的过程阶段分为单元测试、集成测试、功能测试、系统测试、验证测试等。内部资料注意保密黑盒测试黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。内部资料注意保密白盒测试白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。内部资料注意保密11软件开发过程5.维护从理论上,软件测试的覆盖率不可能做到百分之百,所以软件在交付给用户之后有可能存在某些问题,而且用户的需求会发生变化,特别是开始使用产品之后,对计算机系统有了真正的认识和了解,会提出适用性更好的、功能增强的要求。所以,软件交付之后不可避免地要进行修改、升级等。软件维护复杂、周期长,其成本必然很高。通过提高软件的需求分析、设计和编程的质量,强化软件测试,可以大幅度降低软件的维护成本。内部资料注意保密主要内容软件工程基础知识软件开发过程软件开发模型面向对象技术统一建模语言(UML)结构化分析方法软件文件标准与规范结构化设计方法和工具过程管理12内部资料注意保密13软件开发模型(模式)软件开发模式–大棒模式或边写边改模式–瀑布模式–原型模式V模式螺旋模式增量模式和跌代模式喷泉模型内部资料注意保密14大棒模式或边写边改模式大棒模式优点是简单。几乎无计划。项目成员精力都花在开发软件和编写代码上。最终的软件产品是什么样不可知。边写边改模式在大棒模式的基础上考虑了产品的要求。项目成员通常只有粗略的想法就进行简单的设计,然后开始漫长的编码、测试、修复。内部资料注意保密维护部署测试实现规范设计分析需求软件开发瀑布模型内部资料注意保密16使早期的流水线式的软件开发转变为软件工程消除非结构化软件、降低软件复杂度有一套严格的计划、步骤、规格、方法,保证软件产品达到预期的质量要求软件开发瀑布模型内部资料注意保密瀑布模型的缺点:僵化瀑布模型要求:各阶段要遵守严格的顺序。瀑布模型要求:预先定义并“冻结”软件需求。实际情况是:软件开发往往在反复实践中完成。实际情况是:某些系统的需求的一个逐渐明确的过程,且预先定义的需求到软件完成时可能已经过时内部资料注意保密18瀑布模型适用于:需求改变很小的开发。作为一个架构,来学习软件开发中使用不同的技术:尽管瀑布方法对于实际的开发来说过于简单,但仍包含逻辑顺序的经典阶段,适合于学习。是螺旋模型中的一遍过程。用于开发人员较少的小项目的快速开发。需要接受一个观点:不可能一次开发出一个软件。内部资料注意保密19软件开发模式-原型模型在进行了基本需求分析之后,快速开发出产品的原型,然后基于这个原型,同客户沟通、交流,更好地了解客户需求,不断修改这个原型,到了双方认可的程度,再做详细地分析、设计和编程,最终开发出令客户满意的产品。一般步骤如下:–(1)先定义软件的总体目标,根据已知的需求来规划出可实现的区域。–(2)然后是“快速设计”,集中于系统的总体框架、基本功能和直观的输入方式和输出格式等。–(3)有了原型,使客户对系统实现哪些具体功能、功能实现到什么程度有更好的理解。开发者可以边开发边评估,不断细化软件的需求,逐步调整原型使其满足客户的要求。这形成一个迭代的过程。内部资料注意保密20原型模型原型模型的优点:1.使用户能够感受到实际的系统,使开发者能够快速地构造出系统的框架。2.开发者能减少开发中的风险和不确定性。原型模型的缺点:1.原型是粗糙的,没考虑软件总体质量和长期的可维护性。2.开发者常要在实现上的折衷以使得原型能尽快工作。内部资料注意保密21V模型V模型。由于其模型构图形似字母“V”,故称V模型,是属于线性顺序一类的软件开发模型。特点:将测试和分析设计关系起来,强调反馈,不将问题留到下一步。单元测试所检测代码的开发是否符合详细设计的要求。集成测试所检测此前测试过的各组成部分是否能完好地结合到一起。系统测试所检测已集成在一起的产品是否符合系统规格说明书的要求。而验收测试则检测产品是否符合最终用户的需求。内部资料注意保密v-模型内部资料注意保密23螺旋模型螺旋模型,是一个演化软件过程模型,它将原型的迭代特征与线性顺序模型中控制和系统化方面结合起来,使得软件增量版本的快速开发成为可能。在螺旋模型中,软件开发是一系列的增量发布。内部资料注意保密螺旋模型规范分析设计需求实现测试部署维护在完成了一次循环后,就增进了对问题域和解决方案的理解,还使用户参与进来,这样用户就可以更正我们对最终系统中包含的事务或功能的误解。在经过三四遍的开发过程,完成系统后,就可以全面测试和部署系统了。内部资料注意保密与瀑布相比,问题少:•用户参与整个生命周期;•每个人都可以看到开发人员的工作;•可以调整改动的次数和每次改动所花的时间;•比较适合于软件开发的创新性。不完美之处:•只是把瀑布开发过程进行了三四次,尽管问题越来越小,但并没有消失。•不灵活,在经典阶段要按照有序的方式进行。•如果发现错误,必须在下一遍开发过程中才能更正。螺旋模型内部资料注意保密26增量模式和跌代模式软件开发分阶段可以通过两种模型来描述,即增量模型和迭代模型。增量模型描述软件产品的不同阶段是按产品所具有的功能进行划分,先开发主要功能或用户最需要的功能,然后,随着时间推进,不断增加新的辅助功能或次要功能,最终开发出一个强大的、功能完善的、高质量的、稳定的产品。迭代模型描述软件产品的不同阶段是按产品深度或细化的程度来划分。先将产品的整个框架都建立起来,在系统的初期,已经具有用户所需求的全部功能。然后,随着时间推进,不断细化已有的功能或完善已有功能,这个过程好像是一个迭代的过程。最终的目标是一致的,也是为了实现一个强大的、功能完善的、高质量的、稳定的产品。内部资料注意保密增量模式和跌代模式在首次交付的系统版本(1.0)中,将包含最基本、最重要的功能。在以后的某个时间交付1.1版本,其中包含附加的功能(替代1.0)。之后,在对整体进行大的修改,交付2.0版本。这将延续至系统的生命周期。能满足不断变化的需求,适应市场的变化。时间发布1.01.12.02.1内部资料注意保密喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于采用面向对象技术的软件开发项目。该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。软件的某个部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分。无间隙指在各项活动之间无明显边界,如分析和设计活动之间没有明显的界限,由于对象概念的引入,表达分析、设计、实现等活动只用对象类和关系,从而可以较为容易地实现活动的迭代和无间隙,使其开发自然地包括复用。喷泉模型内部资料注意保密1、喷泉模型的优点喷泉模型不像瀑布模型那样,需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。2、喷泉模型的缺点由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。内部资料注意保密主要内容软件工程基础知识软件开发过程软件开发模型面向对象技术统一建模语言(UML)结构化分析方法软件文件标准与规范结构化设计方法和工具过程管理30内部资料注意保密31面向对象技术(Object-OrientedAnalysis,OOA)面向对象是一种目前主流的软件工程方法,新的程序设计范型•基本技术:使用对象、类、继承、封装、消息等基本概念进行程序设计和实现•基本思想:尽可能地运用人类的自然思维方式来构造软件系统。现实世界的问题是由客观实体和实体之间的联系构成的,对象就是客观实体的抽象。内部资料注意保密32面向对象技术的基本观点客观世界是由对象组成的。具有相同类型数据和相同操作的对象可以归并为一类,对象是类的一个实例。类可以产生对象。类可以派生子类,子类继承父类的特性。对象之间通过消息传递相互联系。软件工程学家认为:面向对象=对象+类+继承+通讯内部资料注意保密33面向对象的系统分析与设计方法---面向对象中的基本概念对象(Object)/类(Class)抽象(Abstraction)继承(Inheritance)多态性(Polymorphism)封装(Encapsulation)消息(Message)关联(Association)聚集(Aggregation)内部资料注意保密34什么是对象?(Object)一个对象代表了一个现实的