您好,欢迎访问三七文档
课件制作人:谢希仁1软件与软件危机1.1软件的定义指令的集合(计算机程序),通过执行这些指令可以满足预期的特征、功能和性能需求。数据结构,使得程序可以充分利用信息。描述程序操作和使用的文档。1.1软件的定义指令的集合(计算机程序),通过执行这些指令可以满足预期的特征、功能和性能需求。数据结构,使得程序可以充分利用信息。描述程序操作和使用的文档。课件制作人:谢希仁1.2软件危机许多软件项目不能满足客户的要求。许多软件项目超出预算和时间安排。软件受其自身特点的影响,生产过程不象硬件那样规范,受人的因素和外界影响很大,在软件生产的各阶段都会引入不同程度的错误,造成不能预期完成任务,致使成本上升,甚至导致软件失败。课件制作人:谢希仁软件危机的表现对软件开发成本和进度的估计常常很不正确。用户对“已完成的”软件系统不满意的现象经常发生。软件产品的质量往往靠不住。软件常常是不可维护的。软件通常没有适当的文档资料。软件成本在计算机系统总成本中所占的比例逐年上升。软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势。课件制作人:谢希仁软件危机的原因软件是逻辑产品,开发进度、成本难以估计。缺乏或不完整、不一致的文档给维护带来困难。用户对软件需求的描述往往不够精确,有遗漏,有二义。软件开发人员对需求的理解与用户的本来愿望有差异。大型软件项目需多人协同完成,缺乏管理经验。开发人员不能有效地、独立自主地处理大型软件的全部关系。缺乏有力的方法学和工具的支持。软件项目的特殊性和人类智力的局限性。课件制作人:谢希仁1.3软件工程的发展由于软件开发方法可分为三大类:面向过程的开发方法(传统的)面向对象的开发方法基于构件的开发方法相应地软件工程方法也分为三大类:面向过程的软件工程(传统的)面向对象的软件工程基于构件的软件工程课件制作人:谢希仁一、结构化开发方法是一种面向数据流的开发方法,是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点是快速,自然和方便。结构化方法总的指导思想是自顶向下、逐步求精,以数据流,数据的封闭性准则来逐层分解的,它的基本原则是功能的分解与抽象。结构化方法强调结构的合理性。提出了一组提高软件结构质量的准则,如功能的分解与抽象、模块独立性、信息屏蔽等。课件制作人:谢希仁JACKSON方法是一种面向数据结构的设计方法。强调程序结构与问题结构相对应。JACKSON方法由两部分构成:1、JSP(JacksonstructuredProgramming)(杰克逊结构程序设计)2、JSD(JacksonSystemDevelopment)二、Jackson方法课件制作人:谢希仁面向对象软件工程OOSD(Object-OrientedSoftwareDevelopment)法这是80年代推出的一种全新的软件开发方法。非常实用而强有力,被誉为90年代软件的核心技术之一。其基本思想是:对问题领域进行自然的分割,以更接近人类通常思维的方式建立问题领域的模型,以便对客观的信息实体进行结构和行为的模拟,从而使设计的软件更直接地表现问题的求解过程。面向对象的开发方法以对象作为最基本的元素,是分析和解决问题的核心。课件制作人:谢希仁2.2软件生存期模型软件生存期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。划分软件生存周期的阶段时所应遵循的基本原则是各阶段的任务尽可能相对独立。软件开发模型是对软件过程的建模边做边改模型瀑布模型原型模型增量模型螺旋模型RUP过程敏捷过程极限编程微软过程模型课件制作人:谢希仁2.2.1边做边改模型遗憾的是,许多产品都是使用“边做边改”模型来开发的。在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改。课件制作人:谢希仁2.2.2瀑布模型1970年WinstonRoyce提出了著名的瀑布模型,直到80年代早期,它一直是唯一被广泛采用的软件开发模型。该模型将基本的过程活动、描述、开发、有效性验证和进化,看成是一些界限分明的独立的过程阶段,如:需求描述阶段、软件设计阶段、实现阶段、测试阶段等。该模型也可以看成是软件的生命周期模型。该模型是计划驱动的,理论上,在开始工作之前,必须对所有的过程活动制定计划并给出进度安排。课件制作人:谢希仁问题定义可行性研究需求分析概要设计详细设计编码测试维护计划时期开发时期运行时期课件制作人:谢希仁瀑布模型的特点1.阶段间具有顺序性和依赖性关系顺序性的含义是必须待前一阶段的工作完成之后,才能进行下一阶段的工作。依赖性的含义是前一阶段的输出就是后一阶段的输入,只有前一阶段的输出正确,后一阶段的工作才有可能获得正确的结果。。课件制作人:谢希仁2.2.3快速原型模型由于在项目开发的初始阶段人们对软件的需求认识常常不够清晰,因而使得开发项目难于做到一次开发成功,出现返工再开发在所难免。做两次或多次:第一次只是试验开发,其目标只是在于探索可行性,弄清软件需求。第二次则在此基础上获得较为满意的软件产品。需求分析原型开发与建模原型评价系统设计系统实现测用户反馈课件制作人:谢希仁快速原型模型特点在需求定义之前,需要快速构建一个系统。根据构建系统的优缺点,用户给开发人员提出反馈意见。根据反馈意见修改软件需求规格,以便系统可以更正确地反映用户的需求。减少各种假设以及风险。课件制作人:谢希仁2.2.4增量模型在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。课件制作人:谢希仁在使用增量模型时,第一个增量往往是实现基本需求的核心产品。核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最终的完善产品。课件制作人:谢希仁增量模型也存在以下缺陷(1)由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。(2)在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程的控制失去整体性。课件制作人:谢希仁增量模型总结融合了瀑布模型和原型的迭代特征。每一个增量均发布一个可操作产品。课件制作人:谢希仁2.2.5螺旋模型螺旋模型是目前软件开发中最常用的一种软件开发模型,是在组合瀑布模型与快速原型模型基础上演变而成的,尤其适用于大型软件的开发。螺旋模型沿着螺线旋转,在四个象限上分别表达了四个方面的活动,即:制定计划──确定软件目标,选定实施方案,弄清项目开发的限制条件。风险分析──分析所选方案,考虑如何识别和消除风险。工程实现──实施软件开发。评审──评价开发工作,提出修正建议。课件制作人:谢希仁课件制作人:谢希仁螺旋模型的限制条件(1)螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发。(2)如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。(3)软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险。课件制作人:谢希仁螺旋模型总结基于风险驱动的开发模型,使用原型法或其它方法来尽量降低风险。适用于需求不明确的大规模软件项目。课件制作人:谢希仁增量模型和螺旋模型的主要区别(1)增量模型的通过避免使用未成熟技术和经常的客户反馈等方法减少风险;而螺旋模型中直接增加了风险分析,评价所选方案,识别和消除风险。(2)增量模型经常是先做总体需求分析和设计,然后在编码和测试中逐个增量开发;螺旋模型在每个开发周期内采用简化瀑布模型或快速模型。(3)增量模型通过迭代来逐步添加功能和需求,以完善产品;螺旋模型是事先定义大部分需求,开发过程中计划性比较强。课件制作人:谢希仁功能分解方法将系统看作若干功能模块的集合,每个功能又可以分解为子功能,子功能还可继续分解,分解的结果即是系统的雏形。存在问题1.需要人工完成2.无法对描述的准确度进行验证。3.难以适应需求的变化。问题空间功能子功能映射3-1.3需求分析方法课件制作人:谢希仁分解:对于一个复杂的系统,为了将复杂性降低到可以掌握的程度,可以把大问题分解成若干小问题,然后分别解决(如右图)。抽象:分解可以分层进行,即先考虑问题最本质的属性,暂把细节略去,以后再逐层添加细节,直至涉及到最详细的内容,这种用最本质的属性表示一个系统的方法就是“抽象”。1.11.21.3x2132.12.22.31.11.33-1.4结构化分析方法3-1.4.1SA法的基本思想——“分解”和“抽象”。课件制作人:谢希仁基本思想与步骤SA法的描述方法1、分层的数据流图(DFD图)2、数据词典3、描述加工逻辑的结构化语言、判定表及判定树当前系统具体模型建立当前系统逻辑模型抽象目标系统逻辑模型建立完善的系统逻辑模型改进深入调查研究分析用户需求,用DFD图描述分析系统需求,用DFD图描述修改完善DFD图,增添功能3-1.4.2SA法的步骤课件制作人:谢希仁数据流图(DFD,DataFlowDiagram)是用来描绘软件系统的逻辑模型的工具。通过数据流图描绘信息在系统中流动和加工处理的情况。是各类人员之间极好的交流、沟通的工具设计数据流图只需考虑系统必须完成的基本逻辑功能,一般在图中不使用具体的物理元素,完全不需要考虑如何具体地实现这些功能。3-1.4.3数据流图课件制作人:谢希仁组成符号课件制作人:谢希仁首先:建立系统环境,确定系统边界,画出顶层DFD。其中:1数据流为:销售的商品,日销售额等2数据源点为:营业员,经理,收款员3数据终点为:经理,收款员4加工名为:要建立的系统名字课件制作人:谢希仁然后自顶向下,逐层分解。A、按人或部门的功能要求,将加工“打碎”,形成:录入、修改或删除商品信息录入、修改现金额,并计算余额查询商品销售情况计算日销售额123注:需给每一加工编号课件制作人:谢希仁B、”分派”数据流,形成:录入、修改或删除商品信息2录入、修改现金额,并计算余额查询商品销售情况计算日销售额销售的商品现金额现金余额查询要求销售情况日销售额13其中:要根据特定的加工要求进行分派;保持与顶层数据流的一致;可以不引入数据源和数据终点。课件制作人:谢希仁C、引入文件,使之形成一个有机整体—系统录入、修改或删除商品信息24录入、修改现金额,并计算余额查询商品销售情况计算日销售额销售的商品现金额现金余额查询要求销售情况日销售额销售文件123注:到一个文件,既有输入流,又有输出流,则可简化为,并可不给出标识。至此,体现精化,形成0层数据流图。课件制作人:谢希仁继续A、B、C:自顶向下,逐层分解。例如:加工3查询商品销售情况计算日销售额查询要求销售情况日销售额销售文件3可分解为:3.1判定要求查询要求3.2统计销售情况3.3计算日销售额销售文件查询要求2查询要求1销售情况日销售额课件制作人:谢希仁描述银行取款过程的数据流图课件制作人:谢希仁加工分解的原则自然性:概念上合理、清晰;均匀性:理想的分解是将一个问题分解成大小均匀的几个部分;分解度:一般每一个加工每次分解最多不要超过7个子加工,分解应分解到基本加工为止。画分层DFD图的基本原则数据守恒与数据封闭原则数据守恒是指加工的输入/出数据流是否匹配,即每一个加工既有输入数据流又有输出数据流。数据封闭是对整个系统而言。课件制作人:谢希仁合理使用文件当文件作为某些加工之间的交界面时,文件必须
本文标题:软件工程总复习 2
链接地址:https://www.777doc.com/doc-3876662 .html