我和计算机技术与软件专业技术资格(水平)考试愉快第11天--软件设计师

我和计算机技术与软件专业技术资格(水平)考试愉快第11天--软件设计师

软件过程模型

【基础知识点】

软件过程模型习惯上也称为软件开发模型,它是软件开发全部过程、活动和任务的结构框架。

典型的软件过程有瀑布模型、增量模型、演化模型(原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式化方法模型等。

1、瀑布模型

瀑布模型将软件生命周期中的各个活动规定为依据线性顺序链接的若干阶段的模型,包括需求分析、设计、编码、测试、运行与维护。如同瀑布流水逐级下落。

我和计算机技术与软件专业技术资格(水平)考试愉快第11天--软件设计师

瀑布模型的一个变形是V模型

我和计算机技术与软件专业技术资格(水平)考试愉快第11天--软件设计师

瀑布模型的优点:容易理解、成本低、强调开发的阶段性早期计划及需求调查和产品测试。

瀑布模型缺点是:客户必须要准确的表达他们的需要:在开始两个或三个阶段中,很难评估真正的进度状态:项目快结束时,出现大量的集成与测试工作;项目结束之前,不能演示系统的能力。在瀑布模型中,需求或设计的错误往往只有到了项目后期才能被发现,对项目风险的控制能力较弱,导致项目通常是延期,开发费用超出预算。

2、增量模型

其融合了瀑布模型的基本成分和原型实现的迭代特征。

我和计算机技术与软件专业技术资格(水平)考试愉快第11天--软件设计师

增量模型的优点:可交付的第二版本所需要的成本和时间很少,开发由增量表示的小系统所承担的风险不大,由于很快发布了第一个版本,因此可减少用户需求的变更。同时其具有瀑布模型所有的优点。增量模型的缺点:若没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定,若需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发或重新发布。管理发生的成本、进度和配置的复杂性可能会超出组织的能力。

3、演化模型

典型的演化模型有原型模型和螺旋模型

1)原型模式

原型模型开始于沟通,目的是定义软件的总体目标,标识需求,然后快速制定原型开发计划,确定原型的目标和范围,快速构建原型并交付用户使用,收集客户反馈意见,并在下一轮中对原型进行改进。在前一个原型需要改进(或扩展其范围)的时候,进入下一轮原型的迭代开发。

我和计算机技术与软件专业技术资格(水平)考试愉快第11天--软件设计师

原型模型又根据使用目的不同分为:探索性原型、实验型原型和演化型原型。

2)螺旋模型

对于一个复杂的大项目,开发一个原型往往达不到要求。螺旋模型将瀑布模型和演化模型结合起来,加入两种模型均忽略的风险分析,弥补了这两种模型的不足。

我和计算机技术与软件专业技术资格(水平)考试愉快第11天--软件设计师

螺旋模型中每个螺旋周期分一下4个步骤:

(1)制订计划:确定软件目标,选定实施方案,明确项目开发限制条件;

(2)风险分析:对所选方案分析,识别风险,消除风险;

(3)实施工程:实施软件开发,验证阶段性产品;

(4)用户评估:评价开发工作,提出修正建议,建立下一个周期的开发计划。‘【

螺旋模型强调风险分析,使用户、开发人员对演化层出现的风险有所了解,从而做出反映。因此螺旋模型适合用于庞大、复杂、高风险的系统。

4、喷泉模型

以用户需求为动力、以对象为驱动的模型。适用于面向对象的开发方法,他克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。

我和计算机技术与软件专业技术资格(水平)考试愉快第11天--软件设计师

5、基于构件的开发模型

指利用预先包装的构件来构造应用系统,构件可以是组织内部开发的构件,也可以是商品化成品(COTS)软件构件。一种基于构件的开发模型包括领域工程和应用系统工程组成。

(1)领域工程目的是构建领域模型、领域基准体系结构和可复用构件库。

(2)应用系统工程目的是使用可复用构件组装应用系统。

 

我和计算机技术与软件专业技术资格(水平)考试愉快第11天--软件设计师

6、形式化方法模型

 

形式化方法是建立在严格数学基础上的一种软件开发方法,主要活动是生成计算机软件形式化的数学规格说明。

7、统一过程(UP)模型

是一种“用例和风险驱动,以架构为中心,迭代并增量”的开发过程,由UML方法和工具支持。统一过程定义了4个技术阶段及其制品;

起始阶段:专注项目的初创活动,主要工作产品有构想文档、初始用例模型、初始项目术语表、   初始业务用例、初始风险评估、项目计划、业务模型以及多个原型(需要时);

精化阶段:在于理解最初的领域范围之后进行需求分析和架构演进,主要工作产品有用例模型、   补充需求、分析模型、整体体系结构描述、可执行的软件体系结构原型、初步设计模型、修订的风险列表、项目计划以及初始用户手册;

构建阶段:关注系统的构建,产生实现模型,主要工作产品有设计模型、软件构件、集成软件   增量、测试计划及步骤、测试用例以及支持文档(用户手册、安装手册等);

移交阶段:关注软件提交方面工作,产生软件增量,主要工作产品有提交的软件增量、β测试   报告和综合用户反馈。

统一过程的典型代表是 RUP,RUP 是 UP 的商业扩展,完全兼容 UP,比 UP 更完整、更详细。敏捷方法

其总体目标是通过“尽可能早的、持续的对有价值的软件的交付”使客户满意。敏捷过程的典型方法有很多,每一种方法基于一套原则,这些原则实现了敏捷方法所宣称的理念,及敏捷宣言。

常用的方法:极限编程(XP)、水晶法(Crystal)、并列争求法(Scrum)、自适应软件开发

(ASD)、敏捷统一过程(AUP)。

软件项目需求分析

【基础知识点】

需求分析也称为软件需求分析、系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。

1、软件需求

需求包括以下内容:

功能需求:考虑系统要做什么,什么时候做、如何修改或升级;

性能需求:考虑软件开发的技术性指标。如存储容量限制、执行速度、响应时间、吞吐量等;用户或人的因素:考虑用户的类型;

环境需求:考虑软件应用的环境;

界面需求:考虑来自其他系统的输入,到其他系统的输出等; 文档需求:考虑需要哪些文档,文档针对哪些读者;

数据需求:考虑输入、输出格式,接收、发送数据的频率,数据的精准度、数据流量、数据保持时间;

资源使用需求:考虑软件运行时所需要的资源;

安全保密需求:考虑是否需要对访问系统或系统信息加以控制;

可靠性要求:考虑系统的可靠性要求,系统是否必须检测和隔离错误,出错后重启系统所允许的时间等;

软件成本消耗或开发进度需求:考虑开发是否有规定的时间表;

其他非功能性要求:如采用某种开发模式,确定质量控制标准、里程碑和评审、验收标准等。

2、需求分析原则

需求分析过程有不同的分析方法,它们要遵循的操作原则有: 必须能表示和理解问题的信息域;

必须能定义软件将完成的任务; 必须能表示软件的行为;

必须划分描述数据、功能和行为的模型; 分析过程应该从要素信息移向细节信息。

3、需求工程

需求工程是一个不断反复的需求定义、文档记录、需求演进的过程,并最终在验证的基础上冻结需求。

需求工程可以细分为 6个阶段:

(1)需求获取;

(2)需求分析与协商;

(3)系统建模;

(4)需求规约;

(5)需求验证;

(6)需求管理;