软件工程概论(二) 过程和生命周期建模

I. The meaning of process!!

What is a process, a life cycle, and a software life cycle?

A process: a series of steps involving activities, constrains, and sources that produce an intended output of some kinds

包括一些活动、约束、资源的一系列步骤,产生我们想要的一些输出。
活动,一个过程包含了若干个行为,这些行为就是活动。
约束,有些活动能做有些活动不能做。
资源,完成事情所必需的东西。
过程就是将这些东西组合起来,将软件产品开发出来。

A process involves a set of tools and techniques

Understanding the concept of a process, prescription and description

1、规定所有的主要过程活动。
2、软件开发需要资源,资源对开发有一些限制。
3、软件开发过程中要有一些中间产出以及最终产出,一方面给用户信心,我们能够完成该产品,另一方面给开发者反馈,保证开发者开发与需求相吻合。
4、过程组织为层次结构,以便每个子过程有自己的过程模型。对每一个过程活动限制开始时间以及结束时间。
5、要知道什么时候开始活动,在其前置活动完成后开始做该活动,帮助控制整个产品开发过程。
6、限制要应用在所有的活动、资源或产品中。

软件生命周期/软件过程模型/软件开发过程
涉及产品构建的过程称为生命周期,软件生命周期就描述了软件产品从概念到实现、交付、使用和维护的整个过程。不是面面俱到的,只是告诉你是按什么方向走,具体落地实现可以修改。

意义:方便改进、传播、分享软件开发过程。

软件开发过程
需求分析与定义:确定系统必须完成的工作、提出完整、准确、清晰、具体的要求
系统设计:确定系统的具体实现方案
程序设计 :确定系统中每一部分程序的具体实现
编写程序:编程
单元测试:对系统的每一部分进行分别测试
集成测试:测试模块之间的集成和调用关系
系统测试:测试整个系统,包括功能、安全性等
系统交付:系统交付给用户
维护:系统运行,维护。

每个阶段本身就可以描述为一组活动的过程,每个活动包括约束、输出和资源 。例如需求分析,以用户表述的功能和特征作为输入,输出为需求,约束就是产生需求说明文档的预算和进度,需求的种类和表示方法。每个过程都可以用不同的方式加以描述,例如文本、图表等。

II. Software process models!!

软件开发过程是脑海里的一种思想,在物理层面的落地就是软件过程模型。
模型反映了开发的目标。
早期就可以进行评估并明确约束。
都是将需求作为输入,将产品作为输出。

Serval typical software process models - description, advantages and disadvantages and examples

1.waterfall model
描述:
从一个阶段瀑布般的转换到另一个阶段。
一个开发阶段必须在另一个阶段开始前完成。
是比较悠久的模型。
每个过程活动都有与其相关的里程碑(中间产出)和可交付产品,以便判断距离最后完成还有多远。(借助该思想设计的瀑布模型)
可以说是软件开发过程中的第一个基础模型。

优点:
以项目的阶段评审和文档控制为手段有效地对整个开发过程进行指导,从而保证了软件产品及时交付,并达到预期的质量要求。
适用于需求非常明确的产品。
缺点:
成品时间长
缺乏灵活性,不能反映实际的软件开发过程(在开发过程中可能遇到无法解决的bug,只能改方案,或者用户变更需求),任何变更都有可能后退到前几步。

示例:

2.V model
描述:
明确的标注了测试过程中存在不同测试类型,明确的表示了开发阶段与测试各阶段的对应关系。
单元测试是否满足详细设计的要求。
集成测试验证之前已测试过的部分是否可以很好的结合在一起 。
系统测试检测系统功能,安全性等。
验收测试是由客户进行的,确定软件的实现是否满足用户需求。

优点: 使得隐藏在瀑布模型中的迭代和重做活动更加明确 缺点: 仅把测试作为编码的最后一个阶段,未在需求阶段就进行测试

示例:

3.Prototyping model
描述:
确定系统的基本要求和功能 。
构造初始原型 运行、评价、修改原型 。
确定原型后处理 。

优点:
减少开发中的风险和不确定性 。
避免太晚开始迭代 。

缺点:
快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。

示例:

专业领域使用较多

Operational specification(可操作规格模型)
描述:
是需求与实现结合
通过演示系统行为的方式来评估或执行系统需求。也就是说,一旦指定了需求,就可以用软件包进行演示,这样在设计开始之前就可以评价他们的隐含含义。
多应用于特定领域的软件,如航天系统等

Transformational model(可转换模型)
描述:
通过去除某些主要的开发步骤来设法减少出错的机会,利用自动化手段的支持,转换过程使用一系列转换把需求规格说明变为一个可交付使用的系统。
优点:步骤小,出错少
缺点: 需要一个精确表述的形式化规格说明,这样才能基于它进行操作。

4.Phased development: increments and iterations(阶段化开发:增量和迭代)
描述:
增量开发:在较短时间内向用户提交可完成一些基本功能的产品,后期逐步增加产品功能。
迭代开发:先给一个完整的系统,再不断优化其功能。

优点:
从需求到系统交付的时间短 快速抢占市场 早些获得反馈,可以对产品进行修改。
缺点:
不断进行新老版本时,会有一些不稳定性。

示例:

5.Spiral model(螺旋模型)
描述:
以需求和初始化开发计划(预算、约束、人员安排方案、设计和开发环境)为起点。
在产生操作概念(要做哪些事情,有什么资源等)文档之前,插入评估风险以及可选原型的步骤,以评估需求是否完整和一致。
第一轮迭代产生操作概念,第二轮是需求,后面依次是设计和测试。
每轮都进行风险分析,评估不同选择,通过原型验证可行性,并决定如何消除或降低风险。
一圈代表一次迭代 。

优点:
灵活性,可以在项目的各个阶段进行变更。
减少了过多测试或测试不足所带来的风险。
缺点:
对风险评估经验和专门知识的要求较高,在风险较大的项目开发中,如果未能够及时标注风险,势必造成重大损失 会增加开发成本,延迟提交时间。

示例:

III. Agile(敏捷) methods

agile manifesto(敏捷开发的四条原则)
1、强调个体和交互价值,提供资源,相信自己,当面沟通 软件正确就行,不要将时间费在写文档上。
2、客户成为开发过程的关键方面,客户要参与在开发过程中,反馈目前开发是否顺应需求 。
3、专注变化,而不是遵循计划。
4、尽可能早地、持续地交付有价值的软件,使客户满意。

XP(极限编程
极限编程是敏捷过程的一种具体形式,提供敏捷方法最一般原则的指导方针。
强调敏捷方法的4个特性:交流、简单性、勇气以及反馈
1、交流指的是客户与开发人员之间持续地交换看法 。
2、简单性指的是鼓励开发人员选择最简单的设计来处理客户需要 。
3、勇气为尽早和经常交付功能的承诺。
4、在软件开发过程的各种活动中,都包含反馈循环。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值