文档介绍:20 三月 2018
第1页
模块三软件系统开发方法
软件开发生命周期
软件开发模型
传统软件开发方法
面向对象软件开发方法
RUP统一软件开发过程
敏捷软件开发技术
20 三月 2018
第2页
在软件开发的早期,人们常用的软件开发方法是边写边改法。这种开发方法在应用开发中最为快捷,但由于其开发的随意性,因而也最为低效。同时,使用该方法的项目常常因为管理失控而终结。基于这种情况,业界人士借鉴其它工程领域的方法,提出了许多有规则可言的软件系统开发方法。最著名的当数“瀑布式”方法了,即把软件开发过程分解成这样一些阶段:制定开发计划、需求分析和定义、系统设计、编码实现、测试验证。然而,在软件开发实践中完全遵循这种过程取得成功的案例并不多。其原因主要在于这种方法有一个前提条件,那就是系统需求必须明确、不变。但在现实应用中,这几乎是不可能的。需求通常模糊不清,并且在系统开发期间随时都有可能发生变化。因此软件开发要求采用的方法过程也必须能适应这种变化,这就出现了其它一些软件开发方法,如原型法、敏捷方法等。
20 三月 2018
第3页
软件开发生命周期
正如任何事物一样,软件也有其孕育、诞生、成长、成熟以及衰亡的生命过程,一般称其为“软件生命周期”。
20 三月 2018
第4页
软件开发生命周期
根据这一思想,可以得到软件生命周期的六个阶段:
制定计划
需求分析和定义
设计
编码
测试
运行及维护。
20 三月 2018
第5页
软件开发生命周期
(1) 制定计划(Planning)
团队人员:分析人员、领域专家及用户等。
这个阶段的任务是确定待开发软件系统的总体目标,给出软件系统的功能、性能及接口等方面的要求。由团队人员协作,共同研究完成该项软件开发任务的技术、经济、社会可行性,探讨解决问题的各种可能方案,并对现有可利用资源、成本、可取得的效益、开发进度等做出估计,制定出完成该项开发任务的实施计划,并编写可行性研究报告。
20 三月 2018
第6页
软件开发生命周期
(2) 需求分析和定义(Requirement Analysis and Definition)
团队人员:分析人员、测试人员、领域专家及用户等。
该阶段对于待开发软件项目获取的用户需求进行分析,并给出详细定义。这个阶段团队人员必须协同工作,让软件开发人员充分理解用户的各项需求,并确定哪些需求是可以满足的,哪些需求在现有技术下是不能满足的,对能满足的需求加以确切的描述。然后,编写出软件需求规格说明书(SRS)或系统功能说明书,以及初步的系统用户手册、测试用例等。为了团队人员之间能很好地沟通,从这个阶段开始通常会采用一些标准的建模语言(如:统一建模语言,Unified Modeling Language,简称UML)对系统建模。
20 三月 2018
第7页
软件开发生命周期
(3) 软件设计(Software Design)
团队人员:架构设计人员、软件设计人员、数据库设计员、用户界面设计员、封装体设计员和集成人员、测试人员等。
这个阶段通常分为两部分:概要设计和详细设计。
在软件设计阶段,软件开发人员把已经经过用户和领域专家确认的各项需求转换成相应的软件体系结构。结构中的每一成份都是意义明确的子系统、模块或用例,每个部分都和某些需求相对应,进行所谓的概要设计。然后对每个模块或用例要完成的工作采用合适的技术进行具体的描述,如画出模块的程序流程图或描述类的属性、操作等,为源程序的编写工作打下基础,即所谓的详细设计。
20 三月 2018
第8页
软件开发生命周期
(4) 编码(Coding)
团队人员:编程人员、测试人员等。
将详细设计阶段所描述的模块程序流程图或类的设计转换为计算机能处理的程序代码,即使用特定的程序设计语言表示的源程序。目前,通常使用高级程序设计语言编写程序,如C语言、Java语言等。
20 三月 2018
第9页
软件开发生命周期
(5) 软件测试(Software Testing)
团队人员:测试人员、开发人员、用户等。
测试是保证软件质量的重要手段,其主要目的是通过软件测试暴露出软件中隐藏的错误和缺陷。软件测试的主要方式是在设计测试用例的基础上检验软件的各个组成部分。软件测试一般包括单元测试、集成测试、系统测试、验收测试等几个阶段。首先进行单元测试,查找各模块或类在功能和结构上存在的问题并加以修改,这个过程会反复进行;其次进行集成测试,验证各软件单元集成后形成的模块能否达到概要设计规格说明中各模块的设计目标;然后进行系统测试,目的是对最终软件系统进行全面的测试,确保最终软件系统