目录
一、软件开发方法
- 结构化方法
- 原型法
- 面对对象方法
- 面向服务的方法
- 逆向工程。例如:山寨。分类:
- 实现级: 程序的抽象语法树、符号表、过程的设计表示
- 结构级: 程序分量之间的相互依赖关系。例如调用图,结构图等。
- 功能级: 程序段功能和程序段之间关系。例如数据和数据流模型
- 领域级:程序与应用领域概念间对应关系。例如实体关系模型。
- 应用系统构建中可以采用多种不同的技术,逆向工程就是分析已有的程序,寻求比源代码更高级的抽象表现形式,在软件生命周期内将软件某种形式的描述转换成更为抽象形式的活动;重构是指在同一抽象级别上转换系统描述形式;设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计的信息;再工程是在逆向工程所获信息的基础上修改或重构已有的系统,产生系统的一个新版本。
- 净室软件工程。形式化理想方法。无尘,无外界干扰。用机器和模型设计,然后根据机器生成验证。
二、软件开发模型
- 瀑布模型。 一级一级的来进行,一次性完成。 适用于需求明确的项目。不适合需求不明确的项目。
- 原型模型。先构建出一个原型。适合需求不明确的项目。
- 螺旋模型。迭代思想,多轮版本迭代完成。其实是瀑布模型和原型相结合,选择题如果有选择快速模型。还加入了风险分析。四阶段:目标设定,风险分析,开发和有效性验证,评审。概念:螺旋模型是一种演化软件开发过程模型,它在快速模型的基础上扩展而成。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。
- 增量模型。按照模块,一块一块进行发布。
- V模型。强调测试贯穿始终的模型。测试(单元测试,集成,系统,验收测试)尽早接入。
- 喷泉模型。面向对象的模型,迭代无间隙。
- RAD,快速应用开发。瀑布模型和基于构建开发组成。
- 构件组装模型。建设速度快的核心,构件库的建立。快,省成本,可靠性高。但是初建构件库构建成本大。系统构件组装分为三个不同的层次:定制(Customization)、集成(Integration)、扩展(Extension)。这三个层次对应于构件组装过程中的不同任务。
- 统一过程RUP。基于构建开发发展而来。三个特点:用例驱动,以架构为中心,迭代和增量。 四个阶段:初始(确定项目和用例,有风险管控),细化(分析系统问题领域,完成构架设计),构建(构建组装),交付。
- 敏捷开发。减少不必要文档,适合小型项目开发。
- 思想: 沟通(文档信息传递变成面对面沟通),简单(减少不必要的过度设计),反馈(及时和客户沟通反馈问题),勇气(应对变更的勇气)。如果一直都是项目变更,不考虑实际,再加上没有合适的变更评审,导致一系列的问题,比如心态,工时等,相当于博弈可以引用到论文。
- 实践:结对(两个人一起,看和写)编程,测试先行,集成代码。
- 核心特点:
- XP 极限编程。费用控制严格的公司中使用。
- 水晶方法。用最少纪律约束获得产出。
- 开放式源码。程序员在地域上分布很广。
- SCRUM。明确定义可重复的方法过程。应用相对广泛。2-4周冲刺。
- Coad的功用驱动开发方法-FDD。开发人员分为首席程序员和类程序员组合。
- ASD。三个非线性、重叠的开发阶段:猜测,合作,学习。
三、补充说明
软件过程主要包括软件描述,软件开发,软件有效性验证,软件进化。
基于构件的开发模型利用模块化方法将整个系统模块化,并在一定构件模型的支持下复用构件库中的一个或多个软件构件,通过组合手段髙效率、髙质量地构造应用软件系统的过程。基于构件的开发模型融合了螺旋模型的许多特征,本质上是演化形的,开发过程是迭代的。基于构件的开发模型由软件的需求分析定义、体系结构设计、构件库建立、应用软件构建以及测试和发布5个阶段组成。
面向构件的编程(Component-Oriented Programming,COP)关注于如何支持建立面向构件的解决方案。基于一般OOP风格,面向构件的编程需要下列基本的支持:多态性(可替代性)、模块封装性(高层次信息的隐藏)、后期的绑定和装载(部署独立性)和安全性(类型和模块安全性)。面向构件的编程仍然缺乏完善的方法学支持。现有的方法学只关注于单个构件本身,并没有充分考虑由于构件的复杂交互而带来的诸多困难,其中的一些问题可以在编程语言和编程方法的层次上进行解决。
CORBA(公共对象请求代理结构)构件模型中,对象适配器的主要作用是在底层传输平台与接收调用并返回结果的对象实现之间进行协调,目前采用的对象适配器规范是POA(可移植对象适配器),它替代了传统的BOA(基本对象适配器);
Servant(伺服对象)是最终完成客户请求的服务对象实现;
伺服对象管理器(伺服对象激活器和伺服对象定位器)用来提供CORBA服务端的对象查找服务,
活动对象映射表用来保存已注册的CORBA对象标识和伺服对象之间的映射关系。
统一过程RUP软件开发生命周期是一个二维的软件开发模型,其中有9个核心工作流,分别为:业务建模、需求、分析与设计、实现、测试部署、配置与变更管理、项目管理以及环境。 RUP把软件开发生存周期划分为多个循环,每个循环生成产品的一个新的版本,每个循环依次由4个连续的阶段组成,每个阶段完成确定的任务。
这4个阶段分别为:
初始阶段:定义最终产品视图和业务模型,并确定系统范围。
细化阶段:设计及确定系统的体系结构,制定工作计划及资源要求。
构造阶段:构造产品并继续演进需求、体系结构、计划直至产品提交。
移交阶段:把产品提交给用户使用。 每个阶段都有一个或多个连续的迭代组成。迭代并不是重复地做相同的事,而是针对不同用例的细化和实现。
每一个迭代都是一个完整的开发过程,它需要项目经理根据当前迭代所处的阶段以及上次迭代的结果,适当地对工作流中的行为进行裁剪。在每个阶段结束前有一个里程碑评估该阶段的工作。如果未能通过该里程碑的评估,则决策者应该做出决定,是取消该项目还是继续该阶段的工作。 与其他软件开发过程相比,RUP具有自己的特点,即RUP是用例驱动的、以体系结构为中心的、迭代和增量的软件开发过程。