`
hideto
  • 浏览: 2655469 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

《快速软件开发》笔记三,最佳实践

阅读更多
变更委员会
变更委员会是控制软件产品变更的一种措施
通过提高性能变更的可视性、减少项目中难以控制的变更数目等方法,可以对项目产生快速开发的效果
主要风险:批准的变更太少或太多

日创建和冒烟测试
使用日创建和冒烟测试的关键:
1,每天进行创建
2,每天进行冒烟测试
3,冒烟测试随着产品的增长而增长
4,应把一个良好的创建放在最重要的地位
5,制定的工作步骤应确保失败的创建只是个例外,而不是惯例
6,在压力下不要放弃这个过程
主要风险:有过于频繁发布程序中间版本的压力

变更设计
基于变更设计方法成功的关键:
1,识别最有可能发生的变更
2,使用信息隐藏将系统与可能发生变更所产生的影响分离开来
3,定义程序族而非一次只考虑一个程序
5,不要信赖只要使用面向对象的编程语言就能自动完成设计工作
主要风险:过度依赖编程语言来解决设计的问题,而不是采用面向变更设计的方法

渐进交付
成功运用渐进交付法的关键:
1,确信产品框架能够支持你所想象的各种未来的系统发展方向
2,仔细地定义系统核心
3,根据你对客户需求改变的适应程度,来确定是向渐进原型还是向阶段交付倾斜
4,假定随着版本的增加,修改会越来越多,那么在最初的版本中你应当按照从“最确定”到“最不确定”的顺序来安排各项系统功能
5,处理好用户期望与项目进度、预算以及结果之间的关系
6,考虑一下纯粹的阶段交付法或纯粹渐进原型法是否更适合于你的项目
主要风险:
1,目标偏移(feature creep)
2,减弱了对项目的控制
3,不切实际的项目进度和资金预算
4,在开发过程中开发者对开发时间的低效率使用

渐进原型
成功使用渐进原型法的关键:
1,在一开始就决定要开发的原型是要保留下来的还是要被丢弃的
2,明确控制客户及最终用户的期望与项目进度、财政预算以及产品性能之间的关系
3,限制最终用户与原型间的交流以便控制项目不受影响
4,使用有经验的开发人员,避免使用入门级的开发者
5,在每个阶段都使用设计检查列表以确保原型系统的质量
6,在每个阶段都使用代码质量检查列表以确保原型代码的可维护性
7,及早考虑产品性能
8,小心的控制原型开发本身
9,考虑渐进原型是否能为项目带来最大的益处?渐进交付或阶段交付是否会更好一些?
主要风险:
1,不切实际的进度与财政预算
2,建立原型的时间(prototyping time)没有被充分利用
3,不切实际的质量期望
4,设计不佳
5,缺乏可维护性

目标设定
目标设定有利于提高士气,开发者们通常会为了达到“最近的目标”而格外努力地工作
不愿意把项目划分为一系列小而清晰的目标,是项目成功的一个主要障碍
主要风险:如果目标产生变化,将会大大影响士气

检查
检查时一种正式的技术性回顾
这种正式的检查,比运行测试更有助于发现错误
它们带来快速开发的好处是因为能够在开发过程中及早发现错误,这样避免了昂贵的重建工作

联合应用开发(Joint Application Development, JAD)
JAD意味着开发者、最终用户以及其他有关人员集中在一起对产品进行设计
成功使用JAD的关键:
1,在JAD讨论中使用有经验的JAD主席
2,确保执行赞助商参与JAD过程
3,确保关键人员全职地参与到JAD讨论中
4,在非办公场合进行讨论,确保没有电话和外界打扰
5,精心对参与人员做好准备工作,确保他们理解JAD以及JAD讨论所要达到的目标
6,在JAD设计结束后,帮助最终用户建立现实的期望
7,在JAD设计完成后,使用一种增量生命周期模型来开发系统
主要风险:
1,由JAD会议产生的不切实际的效率期望
2,由JAD会议产生的对剩余工作的过早的、不精确的估计

生命期模型的选择
产品开发风格随不同类型的项目变化很大,不同的风格要求完成不同的任务而且对任务的先后顺序也作不同的安排
主要风险:选择一个生命期模型本身不含任何风险,但对某个具体的生命期模型可能会包含附带的风险

测量
测量不仅有激励员工的短期效益,也有在成本、质量和进度方面的长期效益
应用测量成功的关键因素:
1,建立一个测量小组,这个小组负责确定有用的测量指标和帮助对各项指标进行测试
2,在一个合适的数据粒度(Granularity)下跟踪计算时间的数据
3,开始时采用少量的测量,根据目标、问题和测量标准来选择你想测量什么
4,不要仅仅收集数据,要分析数据且把他们反馈给测量数据相关的人员
主要风险:
1,对某个测量指标过度优化
2,在对员工评估中误用测量方法
3,从LOC(代码行)测量中获得误导信息

小型里程碑
小型里程碑式一种进行项目跟踪和控制的好方法,它能很好地提供项目状态的可视性
它实际上是通过消除不可控制的风险和不能发觉的进度滞后来获得快速开发的效果
成功应用小型里程碑的关键:
1,在合适的时候启动使用小型里程碑,可在项目的早期或者要对危机做出反应的时候
2,里程碑要小,一般间距控制在一到两天内
3,确保里程碑是详细的
4,准备地报告里程碑的进展情况
4,定期地评价进度并且在它们脱离里程碑进度时进行调整或者重新计划

外包
外包就是把软件开发承包给第三方厂商而不是在公司内部开发
成功应用外包的关键:
1,仔细选择外包承包商
2,与外包承包商仔细签订合同
3,至少要像自行开发项目那样来管理好外包软件项目
4,把与承包商交流放到优先位置(电子方式及面谈方式)
5,至少要像自行开发项目那样明确需求(除非需求说明是承包商的强项)
6,确保外包快速开发项目是公司的长期兴趣
主要风险:
1,把专业知识扩到其公司去
2,失去对进一步开发的控制
3,泄露机密信息
4,丢失进度可视性和对进度的控制

原则性谈判
原则性谈判时一种基于改善沟通和创造双赢的策略,而不是单方获利的谈判技巧
它可应用于需求分析、进度计划制定、性能修改讨论以及项目的其他阶段
要使原则谈判获得效果必须注意:讨论是对事不对人,讨论集中在项目获益而不在乎个人所处位置,要争创互利及坚持客观标准

高效开发环境
软件开发是一种高强度智力活动,它需要长时间地不间断地集中思想
高效开发环境为开发人员提供了一个远离噪音和干扰的环境以便他们能有效地工作
主要风险:
1,以装饰为目标的办公环境会导致生产率下降
2,搬迁造成停工
3,由于软件开发人员的优越待遇会产生各种反应

快速开发语言(RDLs)
快速开发语言是指那些比传统第三代语言能更快实施的语言
快速开发语言是通过减少开发工作量来获得时间的节省
成功应用快速开发语言的关键:
1,除语言本身外,要做的其他工作都是相同的
2,应用选择标准来选择快速开发语言
3,应用指导原则来应用快速开发语言
4,保守地估计快速开发语言能给开发工作带来时间的节省
5,在开发大型项目时要谨慎应用快速开发语言
6,在应用快速开发语言时,应该在设计和制定编码标准时多花时间
7,当采用快速开发语言时,可以考虑采用新的生命期模型,这样可以缩短对客户的反应时间
主要风险:
1,带来银弹错误和过高估计时间的节省
2,不能扩大到大型项目
3,鼓励鲁莽的编程

需求修正
需求修正就是对产品说明进行仔细检查,如发现不必要或者过分复杂的需求就去掉
主要风险:删除一些必要的需求

重用
重用是一个公司建立常用部件库的长远策略,它使新的程序可以很快地用这些已有的部件来集成
随机重用的成功因素:
1,充分利用新旧项目间开发人员的延续性
2,对资源和时间的节约不要过高估计
计划性重用的成功因素:
1,对重用项目确保是长期的且有高水准的管理层的支持
2,确保重用是开发过程中的一个组成部分
3,建立独立的重用小组,他们的任务是确定候选的可重用部件,创建支持重用的标准以及将与重用部件相关的信息介绍给潜在的客户
4,重点关注小型的、精巧的、针对于专门领域的部件
5,将设计的重点集中于信息隐藏和封装
6,通过良好的文档支持和尽可能少的错误,将可重用部件的质量保持在产品层的水平上
主要风险:如果为重用所准备的部件不仔细挑选,将有可能造成资源的浪费

签约雇佣
签约是一种能产生额外激励的方法,它使得签约的小组成员对未来的远景有清晰的认识,加上对项目有力地监控,可以确保签约小组所开发的产品能被接受
签约成功应用的关键:
1,一定要描绘出项目的远景,以便使得小组成员感觉值得签约
2,以自愿为原则实施签约
3,给小组足够的授权,以便小组成功地战胜对小组起到激励作用的挑战
4,对由于苦干而不是巧干所造成的效率降低要有充分的思想准备
主要风险:
1,增加无效性
2,降低对状况的可见性与控制能力
3,个人潜能发挥的可能性较少
4,撕毁约定(Burnout)

螺旋型生命期模型
螺旋型生命期模型关注的重点在于发现和降低项目的风险
用增加对计划的要求和实施的追踪,换来进展可视性的改善和大幅度降低风险

阶段性交付
阶段性交付并不能减少软件产品研制所需要的时间,但是它能充分地降低软件研制中的风险
阶段性交付成功应用的关键:
1,确保产品的结构对你所能想象到的、软件的未来可能的发展方向有足够的支持
2,确定第一个交付阶段,以便你能够尽早地将其交付
3,用主题来定义交付阶段,同时确保开发者能够参与定义主题和确定主题具体内容的活动
4,按照重要程度的顺序交付各个主题版本
5,考虑纯粹的阶段交付是否能够提供最大的好处,还是渐进交付或者渐进原型能提供更多的好处。认真考虑如何控制用户需求的变更。
主要风险:目标偏移

W理论管理
W理论管理成功应用的关键:
1,了解人们希望如何获胜
2,为全体干系者建立合理的期望
3,将大家的任务与他们的获胜条件相匹配
4,营造一个支持项目目标实现的环境
5,做一个现实的计划
6,用计划来控制项目的进展
7,监督并管理一方获胜一方失败或者双方失败的风险
8,让大家都参与进来
9,将产品与最终用户的获胜条件与维护者的获胜条件相匹配

舍弃型原型法
所谓舍弃型原型法,是指代码是为探究系统成功的关键性的因素而开发的,然后这些代码就被舍弃了
舍弃型原型法成功的关键:
1,选择开发原型的语言或环境时,主要看它生成舍弃代码的速度多快
2,一定要管理人员和技术人员都同意将舍弃型原型丢弃
3,将原型的工作重点放在那些不熟悉的领域
4,把原型法当作是科学实验来进行,而且要认真地对其进行监控
主要风险:
1,保留一个舍弃型的原型
2,没有有效利用建立原型的时间
3,不现实的进度和预算

限时开发
限时开发是确定时间的活动,它能够帮助开发团队提高紧迫感,也有助于把项目的重点放在产品的性能上
1,只对可以规定期限内完成的项目使用限时开发
2,确保最终用户和管理层对系统的核心功能已达成一致,而开发小组相信能够在规定时间内完成
3,确保限时开发小组的成员为项目进行签约
4,在限时开发的全过程中保证质量
5,如果需要的话,宁可减少功能也要保证进度,绝不延长工期
主要风险:
1,将限时开发应用于不适宜的工作产品中
2,为了保持特性的数量而不顾质量

工具组
工具组方法是指专门在公司内建立一个小组专门负责收集、评估、协调使用及传播介绍各种新开发工具

十大风险清单
十大风险清单是一种能够帮助我们监控软件项目风险的简单的工具
该清单中包括十个划分为等级1~10的最严重的风险并对各个风险所制定的预防计划
每周对清单进行更新和回顾,能够提高大家的风险意识,同时能提醒大家尽快找到解决方法

构建用户界面原型
构建用户界面原型就是快速开发一个用户界面来探究用户界面设计和系统的需求
成功应用用户界面原型的关键:
1,在项目开始时决定是渐进原型还是舍弃型原型
2,不管你采用舍弃型原型还是渐进原型,尽量为原型建立一个漂亮的外观
3,让用户参与,积极征求他们的反馈意见并且限制他们与原型的交互活动,避免引发不现实的期望
主要风险:
1,不断装饰原型
2,继续发展原型或者舍弃原型的风险取决于用户界面原型是继续开发还是被舍弃

自愿加班
自愿加班为开发人员提供了有意义的工作实践,也为管理人员提供了激励内部工作人员的机会,因而工作人员愿意超时工作
适当的自愿加班实际上可适用于任何环境,但是由于自愿加班和过度的强迫加班被广泛采用,实际上使得它的效果受到了一定限制
成功应用自愿加班的关键:
1,采用开发人员自愿加班方法而不要用领导者强迫的方法
2,激励开发人员的积极性,如成就感、成长的机会、工作本身的意义、个人生活受到尊重和技术领导的机会等,使得喜欢工作的开发人员会自愿增加工作时间
3,根据他们实际可能确定加班小时数
4,不论什么理由,不让开发人员过多地加班
主要风险:
1,由于过分的进度压力和过度的加班,反而影响进度
2,降低了响应需要紧急加班的应变能力
分享到:
评论
2 楼 夜鸣猪 2009-03-19  
不愧大佬级的
敬仰一下
1 楼 ym227316 2009-02-12  

相关推荐

    Java框架部分SSM笔记

    技术爱好者:对Java框架和现代软件开发实践有兴趣的自学者。 使用场景及目标 学习提升:帮助开发者系统学习Java框架,提升技术水平。 项目开发:为开发企业级Java应用提供框架选择和使用的参考。 面试准备:为求职...

    Spring Boot核心技术-笔记整理

    该资源是关于Spring Boot核心技术的笔记整理,涵盖了Spring Boot框架的基本概念、核心特性、常用功能以及最佳实践等内容。通过系统化的整理和归纳,全面解释了Spring Boot在快速构建、配置和部署Spring应用程序方面...

    UML学习笔记 建模语言

    统一建模语言(UML是 Unified Modeling Language的缩写)是用来对软件密集系统进行可视化建模的...UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。

    设计模式笔记(包含所有设计模式)个人总结提炼笔记

    设计模式是一种解决软件设计问题的经验总结,是在软件开发过程中经过反复验证的最佳实践。设计模式提供了一套通用的解决方案,可以帮助开发人员更好地组织和设计代码,提高代码的可读性、可维护性和可扩展性。 设计...

    reading-notes:代码研究员软件开发认证计划说明

    我的读书笔记简介 你好!... 与软件开发最佳实践有关的许多其他主题将受到关注。 目录 一般话题 代码102-软件开发简介 代码201-软件开发基础 代码301-中间软件开发 代码401-高级软件开发(Python)

    devnotes:Web开发笔记集

    适用于软件开发人员的“活动文档” 网络使成为一名软件开发人员比以往任何时候都更加容易。 它使我们能够与所有最新和最先进的技术保持最新联系,并学习最佳实践,获得有用的提示以及向社区中的其他成员学习新技术。...

    python核心笔记

    ·学习专业的Python风格、最佳实践和好的编程习惯; ·加强对Python对象、内存模型和Python面向对象特性的深入理解; ·构建更有效的Web、CGI、互联网、网络和其他客户端/服务器架构应用程序及软件; ·学习如何...

    Recommenders:推荐系统的最佳实践-开源

    Recommenders 存储库提供构建推荐系统的示例和最佳实践,以 Jupyter 笔记本的形式提供。 模块 reco_utils 包含简化开发和评估推荐系统时使用的常见任务的功能。 reco_utils 中提供了几个实用程序来支持常见任务,...

    2021最新java面试合集pdf.rar

    MySQL性能优化的21个最佳实践.pdf mysql面试专题.docx MySQL面试题(含答案).pdf Netty面试专题.docx Nginx实战.pdf ORACLE数据库SQL语句编写优化总结.pdf Redis面试题(含答案).docx Redis面试题(含答案).pdf ...

    游戏开发-学习资料+多个项目源码

    通过项目源码,深入理解游戏开发的流程和最佳实践 阅读建议: 在学习游戏开发理论和引擎使用技巧时,注重理论与实践的结合,多动手实践。 在阅读项目源码时,建议先了解项目的整体设计和架构,再逐

    拼多多笔试题java-get-designpatterns:Java设计模式示例(24全)详尽笔记与代码示例

    pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误...

    基于ASP的笔记本销售网站的设计与实现(源代码+thesis).zip

    项目是基于ASP.NET的Web应用程序开发,旨在构建一个高性能、可扩展和可靠的在线平台。我们将使用ASP.NET MVC框架和C#编程...我们将遵循最佳的软件开发实践,进行系统测试和性能测试,以确保应用程序的质量和稳定性。

    asp.net知识库

    翻译MSDN文章 —— 泛型FAQ:最佳实践 Visual C# 3.0 新特性概览 C# 2.0会给我们带来什么 泛型技巧系列:如何提供类型参数之间的转换 C#2.0 - Object Pool 简单实现 Attributes in C# 手痒痒,也来个c# 2.0 object ...

    程序员面试刷题的书哪个好-Design-Pattern:设计模式(DesignPattern)代表了最佳的实践,在面向对象的编程中被很多老鸟们

    程序员面试刷题的书哪个好C++ 设计模式 ...该书首次提到了软件开发中设计模式的概念,将设计模式提升到理论高度,并将之规范化。书中提及了23 种基本设计模式,时至今日,在可复用面向对象软件的发展过程

    高性能html5 高清版本(含英文原版、中文部分以及读书笔记)

    《高性能HTML5》中总结了许多实践经验、关键技巧,并提供了丰富的示例,作者有意无意地将软件工程以及前端开发技术之道隐藏于朴实的描述中。 通过学习《高性能HTML5》,读者能够掌握如何创建自己的高性能网站。《高...

    springboot信息化在线教学平台的设计与实现.zip

    该资源包适合软件开发人员、IT专业学生或教育技术爱好者,他们可以使用这个项目来学习Spring Boot的应用,了解在线教学平台的运作机制,或者作为自己项目的起点。通过研究这个项目,可以获得实战经验,加深对Web开发...

    biotas:BIO遥测分析软件(BIOTAS),用于从无线电遥测项目中消除误报和重叠检测

    自述文件中提供的示例脚本代表了当前的最佳实践。 最终用户只需将适当的行复制,粘贴并编辑到他们喜欢的Python IDE中即可。 就这么简单。 未来的研究和开发将看到Python笔记本的创建,该笔记本旨在指导最终用户完成...

    C#程序员书籍推荐,C#程序员书籍推荐,C#程序员书籍推荐

    应用极限编程-积极求胜 ------极限编程现在很火,也是你无法全部接受它,或者你周围的环境不能实施它,但是其中的一些思想、最佳实践可以用在你的工作中,无论是编码还是设计,对你的思路都回有很大好处的!...

    谷歌师兄的leetcode刷题笔记-Android-Coding-Challenge:HomeAwayAndroid团队的编码挑战

    谷歌师兄的leetcode刷题笔记HomeAway Android 编程挑战 HomeAway 在选择工程团队成员时非常谨慎。...主屏幕应显示搜索输入,并应使用行业最佳实践针对 Foursquare API 执行预输入搜索。 当搜索返回结果时,这些

Global site tag (gtag.js) - Google Analytics