找回密码
 FreeOZ用户注册
查看: 2596|回复: 3
打印 上一主题 下一主题

[新技术交流] SDLC 学习笔记

[复制链接]
跳转到指定楼层
1#
发表于 27-5-2009 21:46:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除, 无法发言

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?FreeOZ用户注册

x
Software Development Life Cycle (SDLC)

面试中介总是问是否了解SDLC,如果不熟悉这个缩略词,一下此答不上来,就被中介看扁了,其实SDLC就是软件开发的项目周期啊。以后别说不知道了!

有时候中介并不了解实际的技术,只不过他们的客户给了他们一些要求,他们就按着要求念出来问你,你既然申请这个工作,你的水平和知识肯定比中介强,所以你肯定知道!还要有勇气,不要被中介吓倒!

Capability Maturity Model (CMM) 这个是一个组织的软件的过程管理方法,应用很广,很流行,CMM一共分为5级。每个级别的划分都是根据一定的 Key Process Areas (KPA)关键过程区域来确定的。

  • 第五级:Optimizing (优化级,最高级别,很少有企业能够达到这一级别)
  • 第四级:Managed (可管理级,5%的企业可以达到这一级别)
  • 第三级:Defined (可定义级,10%)
  • 第二级:Repeatable (可重复级别,15%)
  • 第一级:Initial (70%)


SDLC: A framework that describes the activities performed at each stage of a software development project.

SDLC 定义了在软件开项目的每一个阶段,所需要遵循的活动的描述。

SDLC 分为以下几种:

Waterfall Model 瀑布法 (Requirements, Design, Implementation, Test, Installation, Maintenance)

瀑布法的特点是:容易理解,容易使用的结构,很明确的里程碑的定义,容易实现管理跟踪,如果注重质量(超过成本和进度)的话可以考虑使用。
瀑布发的缺点:所有的需求分析必须最开始就确定,不灵活,进度信息不准确,不能够反映解决问题的过程,很难最终集成,缺乏客户的参与。
瀑布发适用的场合:需求明确而且固定,对技术的良好的掌握和控制,已经存在的版本的重写。


另外的一种是 V-Shaped SDLC Model,是在瀑布法的基础上,增加了各个阶段相对应的检验过程。

项目规划(项目改进和完善)
需求分析(系统可行性测试)
框架设计(集成和测试)
细节设计(单元测试,编码)

V型的优点:重点考虑在项目早期就引入验证和确认,每一个步骤都是可测试的,可以用里程碑来跟踪项目,容易使用。
V型的缺点:并行事件的关联不好控制,没有包括重复和阶段,不包含需求变更,没有针对风险控制的跟踪。
V型法的适用场合:对于设计高可靠性的系统很适合(医院),所有的需求都需要在项目初期完成,对技术的良好掌握。


下面一种方法就是 Structured Evolutionary Prototyping Model,这个就是模型法

在需求调研的同时开发一个演示模型
请用户参与测试这个演示模型
用户反馈信息
开发人员改进模型
直到用户满意
写代码

SEP的步骤:
写一个大体的项目计划
提供部分大体框架模型,此模型用于用户进一步系统详细需求
然后基于用户的去求和反馈,建立一个演示模型:数据库,用户界面,主要功能
用户测试模型,反馈意见,改进模型知道用户满意为止。

SEP的优点:用户可以看到需求的真实样子,开发人员可以向用户学习,产品更加精确,没有预想到的需求也可以被暴露出来,允许灵活的设计和开发,稳固可视的开发过程,交互式的模拟可以很好的支持临时增加的需求。
SEP的缺点:一些代码必然会被抛弃,如果需要很快的实现一些任务,而且项目要求不高,那么这一方法也不适合。大量的维护工作,项目可能无限期的拖延。
SEP适用的场合:需求不明确,可以作为瀑布法的需求分析阶段的子过程,开发用户界面,短期演示,开发新项目,试验新思路。


再有,就是 Rapid Application Model (RAD)快速开发法

可以用于项目计划阶段,用户叙述阶段,框架设计阶段,安装和可用性测试阶段。

RAD的优点:降低成本,缩短周期,总体工期可控,客户在整个过程中的参与性,WYSIWYG(所见即所得)。
RAD的缺点:需要对用户的快速响应,难于用于使用老技术的项目,开发团队和用户都必须承诺快速响应。
RAD的适用范围:需求明确,用户全程参与,设定工期,对项目的性能要求不高,系统可以模型化,技术风险低的项目。


Incremental SDLC Model
先建立一个系统
然后逐步增加需求
逐个发布完成一定功能的系统,指导所有需求都满足位置。

Incremental的优点:先开发高风险的主要功能,每一个发布版本都提供一个可操作产品,客户可以针对每一个版本进行响应,分版本测试,较低的初期交付成本,重要功能早期实现,减少需求变更的风险。
INcremental的缺点:需要好的设计和计划,需要在项目初期就完成主要功能设计,一些部分很早就需要有明确的界面,整体成本并不低。
Incremental适用于:大部分需求已知,只有少量需求未知,需要提供主要功能产品到市场,有较长的项目周期,使用新技术。


Spiral SDLC Model
增加风险分析和4gl RAD模型法到瀑布发
Objectives 功能性,性能,硬件/软件界面,必要成功因素
Alternatives 版本,重用,购买,外包
Constraints 费用,计划,界面
Study alternatives
Indentyfy risks
Resolve risks

开发下一阶段产品的典型活动:建立设计,讨论设计,开发代码,检查代码,测试产品
计划下一个阶段的计划的主要活动:开发项目计划,开发配置管理计划,开发测试计划,开发安装计划

Spiral Model 的优点:对于潜在的风险可以早期发现避免较大损失,用户可以在早期阶段就看到模型,严格的风险控制的早期引入,设计不需要一开始就完美,用户紧密的跟踪项目,及早给予反馈,即使调整费用。
Spiral Model 的缺点:花费在风险控制上的时间太长,不适用于小的低风险的项目,在计划和完善模型以及风险分析上花费的时间太长,模型复杂,需要富有经验的风险控制专家,开发人员在非开发阶段空闲,难于进行跟踪和控制。
什么时候使用这一模型:。。。。

终于轮到大名鼎鼎的 Agile SDLC

适用是工期紧迫的项目,非正式的开发模式,加速各个开发过程,适用于高质量的开发团队。

一些Agile 方法包括:
  • Adaptive Software Development (ASD)
  • Feature Driven Development (FDD)
  • Crystal Clear
  • Dynamic Software Development Method (DSDM)
  • Rapid Application Development (RAD)
  • Scrum
  • Extreme Programming (XP)
  • Rational Unify Process (RUP)



Extreme Programming - XP
适用于小开发团队,快速开发周期,可迅速变更的需求,编码是主要的活动,与团队成员之间的交流和编码一起完成,测试也是在编码过程中完成的。
  • Planning game
  • Small releases
  • Metaphor
  • Simple design
  • Testing
  • Refactoring
  • Pair-programming (所有代码由两个程序员在一台机器上完成)
  • Collective ownership (任何人可以在任何地方任何时间改变任何代码)
  • Continuous integration (每完成一个功能,就发布一个版本)
  • 40-hour week (没后工作不超过40小时)
  • On-site customer (留有一个用户在守随时回答问题)
  • Coding standards


如果检查代码是必要的,那就一直检查代码(pair programming)
如果测试是有必要的,那就所有人都一直测试
如果简单是好的,那就总是选择最简单的设计来完成功能
如果设计是好的,那么每个人每天都进行设计(refactoring)
如果结构很重要的,那么每个人随时都可以进行结构改进和调整(metaphor)
如果集成测试是好的,那么就随时进行测试(continuous integration)
如果快速集成是好的,那么就把每次集成和编译时间的间隔缩短(hours rather than weeks, 每天都有几个新版本)


Feature Driven Design (FDD)
Develop an overall model
Build a features list
Plan by feature
Design by feature
Build by feature


Dynamic Systems Development Method (DSDM)

  • Quality Assurance Plan
  • Defect tracing
  • Unit testing
  • Source code tracing
  • Technical reviews
  • Integration testing
  • System testing



原文看这里:
http://www.scribd.com/doc/5195326/PPT-on-SDLC-Models
回复  

使用道具 举报

2#
 楼主| 发表于 27-5-2009 22:59:28 | 只看该作者
提示: 作者被禁止或删除, 无法发言
http://www.scribd.com/

是一个很好的资料库,好好利用啊!
回复  

使用道具 举报

3#
发表于 28-5-2009 21:58:59 | 只看该作者
你是做什么工作的?到底
回复  

使用道具 举报

4#
 楼主| 发表于 28-5-2009 22:20:17 | 只看该作者
提示: 作者被禁止或删除, 无法发言
  BA
回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+10, 6-4-2025 18:27 , Processed in 0.013714 second(s), 20 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表