最近又开了两门课,对卢超老师的大数据课很期待呀!!!
软考复习
软件过程模型
对于较大型软件系统的需求往往难以在前期确定,所以瀑布类型最不适合(主要是因为这种模型难以适应变化的需求)——-常见的开发模型有:原型模型,增量模型,喷泉模型。
关于增量模型的特点:
1.不必等到整个系统开发完成后就可以使用
2.可以使用较早的增量构件作为原型,从而获得稍后的增量构件需求
3.优先级最高的服务先交付,这样最重要的业务接收最多的测试
4.在利用增量模型进行开发时,如何进行模块的划分往往是难点所在,而不是这种模型的优点
用户需求不清晰且经常发生变化,但系统规模并不大时采用原型化方法最合适
数据处理领域的不太复杂的软件,适用于结构化方法进行开发。
软件开发过程模型的基础知识
瀑布模型将开发阶段描述为从一个阶段瀑布般转换到另一个阶段的过程,这种方法是一种理想的开发模式,缺乏灵活性,特别是无法解决软件需求不明晰或不准确的问题
V模型是瀑布模型的变种,它说明测试活动是如何与分析和设计相联系的
原型模型(快速原型化模型)中,开发人员快速地构建整个系统或则系统的一部分以理解或澄清问题,从初始的原型逐步演化为最终软件产品,特别适用于对软件需求缺乏准确认识的情况。适于商业产品的开发
螺旋模型将开发活动和风险控制管理结合起来,以减小风险(风险评估是螺旋模型的重要特点)
喷泉模型开发过程模型以用户需求为动力,以对象为驱动,适用于面向对象的开发方法,该模型克服了瀑布模型不支持软件重用和多项开发活动集成的局限性;“喷泉”一词本身体现了迭代和无间隙特性,迭代意味着常常需要重复多次,不断的完善软件系统;无间隙是指在开发活动之间不存在明显的边界
增量模型是一种阶段化的软件开发过程模型,在该过程模型中,客户提出系统需求,并指出哪些需求是最重要的,优先级最高的服务首先交付,然后依次将其他构件集成起来,这意味着最重要的服务将接收最多的测试。
在这几种开发过程模型中,原型模型不适宜大规模软件的开发
CMM(Capability Maturity Model)是指软件过程能力成熟度模型,该模型按照软件过程的不同成熟度划分了5个等级,1级被认为成熟度最低,5级则被认为成熟度最高
级别1为初始级,特点是混乱而不可预测;
级别2为重复级,特点是项目得到管理监控和跟踪,有稳定的策划和产品基线
级别3为确定级级别,通过软件过程的定义和制度化确保对产品质量的控制
级别4为管理级,特点是产品质量得到策划,软件过程基于度量的跟踪
级别5为优化级,特点是持续的过程能力改造
一般来说,采用更成熟的软件过程模型,往往可以得到更高质量的软件产品
1997年美国卡内基梅隆大学软件工程研究所SEI将已有的几个CMM模型结合在一起,构造成“集成模型”即CMMI
UP(统一过程)模型是一种以用例和风险为驱动,以架构为中心,迭代并且增量的开发过程,有UML方法和工具支持
UP过程定义了五个阶段:起始阶段,精化阶段,构建阶段,移交阶段和产生阶段。开发过程中有多次的迭代,每次迭代都包含计划,分析,设计,构造,集成和测试,以及内部和外部发布
每个迭代有五个核心工作流,捕获系统应该做什么的需求工作流,精化和结构化需求的分析工作流,在系统结构内实现需求的设计工作流,构造软件的实现工作流和验证是否如期望工作的测试工作流。
极限编程(XP)12个最佳实践
- 现场客户 ( On-site Customer )
- 代码规范 ( Code Standards )
- 每周40小时工作制 ( 40-hour Week )
-
计划博弈 ( Planning Game ):
要求结合项目进展和技术情况,确定下一阶段要开发与发布的系统范围。 -
系统隐喻 ( System Metaphor ):
通过隐喻来描述系统如何运作、新的功能以何种方式加入到系统。它通常包含了一些可以参照和比较的类和设计模式。 - 简单设计 ( Simple Design )
- 测试驱动 ( Test-driven )
- 代码重构 ( Refactoring )
代码重构是指在不改变系统行为的前提下,重新调整、优化系统的内部结构以减少复杂性、消除冗余、增加灵活性和提高性能。 - 成对编程 ( Pair Programming )
- XP
认为开发小组的每个成员都有更改代码的权利,所有的人对于全部代码负责。 - 持续集成 ( Continuous Integration )
提倡在一天中集成系统多次,而且随着需求的改变,要不断的进行回归测试。 - 小型发布 ( Small Release )
强调在非常短的周期内以递增的方式发布新版本,从而可以很容易地估计每个迭代周期的进度,便于控制工作量和风险;同时,也可以及时处理用户的反馈。
软件开发方法介绍1
敏捷过程的开发方法:
极限编程XP
水晶法
并列争球法
自适应软件开发
敏捷开发的总体目标是通过“尽可能早的,持续的对有价值的软件的交付”使客户满意。敏捷开发的每一种方法各自基于一套原则,这些原则实现了敏捷方法所宣称的理念,即敏捷宣言
其中:
极限编程XP是一种轻量级的软件开发方式,由价值观,原则,实践,和行为4个部分组成,彼此相互依赖,关联,并通过行为贯穿于整个生存周期。
水晶法Crystal认为每一个不同的项目都需要一套不同的策略,约定和方法论。
并列争球法Scrum使用迭代的方法,并按照需求的优先级来实现产品
自适应软件开发ASD有6个基本原则
逆向工程从详细的源代码实现中抽取抽象规格证明,一般来说是在原软件交付用户使用之后进行的,即在原软件的维护阶段进行
软件开发方法介绍2
结构化方法:
组成:结构化分析、结构化设计、结构化程序设计。
定义:面向数据流的开发方法。他以
结构化分析:根据分解与抽象原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模型,从而完成需求分析工作。
结构化设计:根据模块独立性准则、软件结构化准则将数据流图转换为软件的体系结构,用软件结构图来建立系统的物理模型,实现系统的概要设计。
结构化程序设计:任何程序都可以由顺序、选择和重复3总基本控制结构构造
指导思想:自顶向下、逐层分解。基本原则:功能的分解与抽象。
Jackson方法
一种面向数据结构的开发方法。形成了最初的JSP方法
JSP方法:数据结构为驱动,适合小规模的项目。当输入数据结构和输出数据结构之间没有对应关系,难以使用此方法。
原型方法:
比较使用与用户需求不请、需求经常变化的情况。当系统规模不是很大也不太复杂,采用此方法较好。
面向对象方法:
基本出发点:尽可能地按照人类认识世界的方法和思维方式来分析和解决问题。是以对象作为最基本的元素,它也是分析问题、解决问题的核心。
包括:面向对象分析、面向对象设计和面向对象实现。
敏捷方法:
总体目标:尽可能早地、持续地对有价值的软件的交付,是客户满意。
1、极限编程:
4大价值观:沟通、简单性、反馈和勇气
5个原则:快速反馈、简单性假设、逐步修改、提倡更改和优质工作
12个最佳实践:
计划游戏、小型开发、隐喻、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周工作40小时、现场客户、编码标准。
2、水晶法
认为每一个不同的项目都需要一套不同的策略、约定和方法论
3、并列争求法
使用迭代的方法。每30天一个迭代称为一个“冲刺”,并按照需求的优先级别来实现产品。
4、自适应软件开发(ASD)
6个基本原则:
一个使命作为指导;特征视为客户价值的关键点;过程中的等待很重要的;变化不被正式为改正,而是被视为对软件开发实际情况的调整 ;确定交付时间;风险包括其中。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!