《第11章节软件开发课件》由会员分享,可在线阅读,更多相关《第11章节软件开发课件(53页珍藏版)》请在金锄头文库上搜索。
1、,软件开发,第11章,11.1 软件发展与软件工程,11.3 软件开发过程,11.4 UML简介,11.2 软件开发模型,11.1 软件发展与软件工程,软件危机:软件需求量不断增大,软件开发的复杂度和成本越来越高,软件的开发效率却越来越低,软件的质量越来越难以保证,这种现象称为软件危机。,出现软件危机的原因: 软件本身所固有的复杂性; 软件开发方法和软件开发过程不正确。,软件工程:采用工程的概念、原理、技术和方法,把经过时间考验并行之有效的管理技术和成熟的软件开发方法结合起来,以指导计算机软件的开发和维护。,软件开发过程:需求分析、软件设计、编码实现、测试、运行与维护。,(1)第一代软件工程
2、初步形成了软件工程的基本原理、技术和框架。也称为传统的软件工程。,软件工程的发展:,(2)第二代软件工程 面向对象方法成为软件开发主流。也称为对象工程。,软件工程的发展:,(4)第四代软件工程 基于构件的开发方法。也称为构件工程。,(3)第三代软件工程 软件过程管理。也称为软件过程工程。,11.2 软件开发 模型,软件开发模型:软件开发过程的各个阶段和任务的总体框架,明确规定了要完成的主要活动和任务。,11.2.1 瀑布模型,软件生命周期:从用户需求开始,经过开发、交付使用,在使用过程中不断增补修订,直至软件报废的全过程。即软件从提出开发开始到最终灭亡所经历的时期,将软件开发过程模仿成阶梯瀑布
3、。 软件生存周期由立项、需求分析、策划、概要设计、详细设计、编程、测试、发布、维护、退役等阶段所组成,把每个阶段当作瀑布中的一个台阶。 开发人员按照阶段开发,管理人员按照阶段管理。,11.2.1 瀑布模型,问题定义,编 码,需求分析,设 计,可行性研究,运行与维护,测 试,开发 时期,运行 时期,计划时期,(目标与范围说明书),(可行性论证论告),(维护报告),(测试报告),(程序),(设计文档),(需求说明书),瀑布模型,问题定义,可行性研究,需求分析,设计,编码,测试,运行与维护,带反馈的瀑布模型,以某个软件原型为参照模型的开发方法,叫原型法。 在初步需求分析之后,马上向客户展示一个软件产
4、品原型,让客户试用,在试用中收集客户意见,修改原型,再让客户试用,反复循环,直到客户确认为止。 特点:原型驱动。因此,开发者必须先有一个原型,至少要有一个原型的核心。,11.2.2 原型模型,原型模型的形式: (1)废弃型。原型的用途是获取用户的真正需求。当用户对原型认可以后,原型即被废弃,后续的工作仍然按照瀑布模型开发。 (2)渐进型。原型作为最终产品的一部分,能够满足用户的部分需求。用户使用后,提出对系统的进一步精化要求。开发者根据反馈,进行迭代开发,将系统需要具备的功能逐步添加上去。如此反复,直到用户需求全部满足为止。此时的原型就是最终的软件产品。,11.2.2 原型模型,增量模型将软件
5、产品看作一组增量构件,每次设计、实现、集成、测试和交付一块构件,直到所有构件全部实现为止。 要开发一个大的软件系统,先开发其中的一个核心模块,后再开发其他模块,这样一个个模块地增加上去,直至整个系统开发完毕为止。 优点 : (1)将软件划分成多个小模块,可以降低开发风险,以及开发难度; (2)可以分阶段提交产品。,11.2.3 增量模型,增量模型,瀑布模型和增量模型结合,并增加风险分析 螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动: 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件 风险分析:评价所选的方案,识别风险,消除风险 工程实施:实施软件开发,验证工作产品 客户
6、评估:评价开发工作,提出修正建议,11.2.4 螺旋模型,11.3 软件开发 过程,需求分析、设计、实现、测试、运行及维护,11.3.1 需求分析,需求分析的主要任务是确定待开发系统的功能、性能需求和运行环境约束,编写软件需求规格说明书,即需求分析是要明确系统是“做什么”的。,软件功能需求:对软件系统应提供的服务、功能,以及系统在特定条件下的行为的描述。 软件的性能需求:对软件系统的可用性、可靠性、可移植性、效率和存储等方面的需求。,结构化分析方法采用自顶向下逐层分解、由粗到细、由复杂到简单的求解方法。,1.结构化分析方法,分解:将大问题分解成若干小问题,然后分别解决 抽象:抓住问题的主要方面
7、而忽略问题的次要方面,集中精力解决问题的主要方面。,分层数据流图由顶层、中间层和底层组成。 顶层抽象地描述了整个系统,底层具体给出系统的细节部分,中间层完成从抽象到具体的逐步过渡。 通过分解,将一个复杂的系统分解成许多简单的基本加工,当数据流过系统时,被系统进行加工变换。,结构化分析方法以分层数据流图,加上数据字典和加工说明来构建分析模型。,(数据流):表示数据的流动方向。,(加工):表示对数据流进行操作或处理,(数据存储):暂存的数据。,(外部实体):数据流的起点和终点,系统外的实体。,当客户发出订单时,系统根据图书目录对订单进行验证。验证通过的订单,被保存在订单文件中。系统每天要对订单进行
8、分类汇总,并保存订单存根,然后将汇总订单发往出版社。请为系统画出顶层数据流图。,【例11.1】 图书预定系统的数据流图,面向对象分析对问题域和系统责任进行分析和理解,找出描述它们的类和对象,以及类之间的关系,最终获得一个符合用户需求,并能够反映问题域和系统责任的面向对象分析模型。,2.面向对象的分析方法,面向对象分析的基本步骤: (1)获取用户需求。采用用例图获取用户需求。 (2)标识类和对象。 (3)定义类的结构和层次。 (4)建立对象之间的关系。,自动售货机为顾客提供24小时服务,顾客通过自动售货机可以买到灌装饮料。每隔一段时间供货人员补充一部分货物,收银员也会定期将售货款取走。请画出自动
9、售货机的用例图,【例11.2】自动售货机的用例图,主要任务:将需求需求转换为计算机中可实现的系统,完成系统的体系结构设计,以及系统内部结构设计,最终产生软件设计说明书。即解决怎么做的问题,11.3.2 设计,概要设计主要完成软件系统的总体结构设计、确定各模块间的关系、全局数据库或数据结构设计、定义各个功能模块的接口,最终产生概要设计说明书,详细设计主要完成各子系统的公用模块设计、专用模块设计,以及模块内部结构设计,最终产生详细设计说明书。,结构化设计的基本思想是将软件系统设计成由若干个相对独立、功能单一的模块组成的系统。,1.结构化设计,概要设计的任务是确定软件系统的结构,进行子系统划分,确定
10、子系统的模块结构,以及每个模块的功能。,详细设计对概要设计产生的功能模块进行细化,确定每个模块的内部细节,包括局部数据组织、控制流、每一步的具体加工要求等。,面向对象方法的分析与设计之间并没有明显的界限,它们之间所采用的概念、原理和方法是一致的。,2.面向对象设计,分析与设计的侧重点有所不同,面向对象分析侧重于问题域和系统责任,不考虑实现;面向对象设计侧重于与实现有关的因素,对分析模型进行细化,并添加与实现有关的部分。,面向对象设计模型主要包括问题域子系统、人机交互子系统、任务管理子系统和数据管理子系统。,【例11.3】图书预定系统的类图,使用人工和自动手段来运行或测试某个系统的过程,其目的在
11、于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。,11.3.3 测试,软件测试步骤:,完成每个单元的测试任务,检查每个模块是否完成指定的功能,发现模块是否存在编码或算法错误。,1.单元测试,2.集成测试,集成测试是在单元测试的基础上,将所有模块按照设计要求组装在一起,形成一个完整的系统,针对该系统所进行的测试。主要检查软件体系结构问题。,确认测试用于检查软件的功能与性能是否符合需求规格说明书的要求。,3.确认测试,4.系统测试,系统测试是指把已确定的软件与系统其它部分(如硬件、其它支持软件、数据等)集成在一起所进行的测试。,白盒测试主要检查程序(模块)内部逻辑结构,对逻辑路径、内
12、部控制结构和数据结构进行测试。,5.白盒测试,白盒测试方法主要有语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖和条件组合覆盖。,(1)语句覆盖,使程序中的每个语句至少执行一次。,if(a1) 请使用语句覆盖法进行白盒测试。,【例11.4】已知程序段,测试用例: a=2,b=0,x=5。,使被测程序每个判定至少取一次“真”值和一次“假”值。,(2)判定覆盖,【例11.5】对例11.4的程序段执行判定覆盖,测试用例1:a=2,b=0,x=5; 测试用例2:a=1,b=0,x=1。,使被测程序每个判定中的每个条件都至少取值一次。,(3)条件覆盖,【例11.6】对例11.4的程序段执行条件覆盖,测试用例
13、1:a=2,b=0,x=5; 测试用例2:a=1,b=1,x=1。,使被测程序的判定中每个条件的所有可能至少出现一次,且每个判定本身的判定结果也至少出现一次。,(4)判定/条件覆盖,【例11.7】对例11.4中的程序段执行判定/条件覆盖,测试用例1:a=2,b=0,x=5; 测试用例2:a=1,b=1,x=1。,使被测程序每个判定中的条件的各种可能组合都至少出现一次。,(5)条件组合覆盖,【例11.8】对例11.4中的程序段执行条件组合覆盖,测试用例1:a=2,b=0,x=5; 测试用例2:a=2,b=1,x=1。 测试用例3:a=1,b=1,x=1; 测试用例4:a=1,b=0,x=5。,黑
14、盒测试不考虑程序内部的逻辑结构和处理过程,依据需求规格说明书,测试程序是否满足功能要求。,6.黑盒测试,黑盒测试方法主要有等价分类法、边界值分析法、错误推测法和因果图法。,软件维护是指软件系统交付使用后,为了纠正软件运行中的错误或者满足用户对软件提出的新要求而修改软件的过程。,11.3.4 维护,软件维护分为:纠错性维护、完善性维护、适应性维护、预防性维护,11.4 UML简介,UML(Unified Modeling Language)统一建模语言。是一种国际标准,是一种通用建模语言,具有创建系统的静态结构和动态行为等多种结构模型的能力,11.4.1 UML的构成,UML建模语言的描述方式以
15、标准的图形表示为主,由视图、图、模型元素和通用机制构成的层次关系,用例图从用户角度描述系统功能,并指出各功能的操作者。,11.4.2 用例图,【例11.11】在项目管理系统中,删除项目用例与查找项目用例之间的关系,【例11.12】改变购书数量与检查信用间的关系,用户在网上订购图书时,系统需要对用户的信用进行检查,检查输入的信用卡号是否正确,信用卡是否有足够的资金支付本次订购。当用户需要改变购书数量时,系统要检查是否真正改变了购书数量,如果确实改变了购书数量,则需要对用户的信用进行检查;如果购书数量不变,则不需要检查信用。请根据需求画出用例图。,11.4.3 类图,(1)关联关系,2.类之间的关系,关联关系表示类之间具有某种语义联系。,聚集关系表示类之间的整体与部分关系。,(2)聚集和组合关系,组合关系是聚合关系中的一种特殊情况,是更强形式的聚合,其部分对象与整体对象共存亡。,泛化关系是类之间的一般与特殊关系,(3)泛化关系,顺序图描述了对象之间动态的交互关系,着重体现对象之间传送消息的时间顺序。,11.4.4 顺序图,状态图主要用于描述一个对象在其生存期间的动态行为,表现一个对象所经历的状态序列,引起状态转移的事件,以及因状态转移而伴随的动作。,11.4.5 状态图,活动图用于系统动态行为建模,它可以描述系统的工作流程或者完成一个任务所需要的活动。,11.4.6 活动图,