《快速软件开发》学习笔记之一李嘉(Justin)

任何软件项目,都有四个重要的维:people、process、product和technology。为使项目能顺利进行,软件经理必须充分发挥这四维的作用。下表是对这四维的总结。

表1-1软件开发中的四维

维度

如何优化

People

l为团队挑选胜任称职的成员

l选择合适的团队结构

l使用恰当的人员激励措施

Process

l采用标准的软件工程实践,避免开发过程失控

l做好风险管理

l为项目选择合适的生命期模型

l形成良好的质量保证机制

l选择客户导向的开发方法,使开发的产品真正满足客户需求

Product

l较准确地估算productsize(产品规模)和effort(工作量),以便制定出现实的进度安排

l采取恰当措施防止软件开发过程中productsize或productscope失控

l为产品设定合理的productcharacteristic(如内存占用、稳定性、可靠性等)。

Technology

l选择恰当的、能确实提升生产率的工具(包括新的编程语言、新的开发实践、新的代码库等)

一个软件进行的软件项目应该遵循如下的4点策略:

1.Avoidclassicmistakes.(避免典型错误)

2.Applydevelopmentfundamentals.(采用软件开发的基础性实践)

3.Manageriskstoavoidcatastrophicsetbacks.(管理风险,以避免灾难性的结果)

4.Applyschedule-orientedpractices.(采用面向进度的实践)

这4点策略可以用下图来形象地表示。

这4点策略就像是4根支柱,共同支撑起一个成功的软件项目。尤其是前面3点策略,是每个软件项目高效进行的关键。

迈克尔·杰克逊曾唱过:“孩子,一个坏不要坏了整筐苹果”。但在软件开发领域,一个坏苹果是可以毁掉一筐苹果的!软件经理必须记住:一个软件项目只要犯了一个典型错误,就会滑向慢速开发的深渊;要实现快速开发,就“必须”避免所有的典型错误。

软件经理怎样做到避开这所有的典型错误呢?使用“典型错误列表”。

最佳实践:典型错误列表

1.以表2-1作为初始的典型错误列表。

2.从投入到某个项目的第一天起,每天在下班之前检查一遍典型错误列表,反省自己或团队有没有犯典型错误。如果有,思考一下怎么改变。

3.在每个项目结束之后,分析总结在项目中所犯的典型错误。如果是典型错误列表中不存在的,把它加入到典型错误列表中,供下个项目使用。

表2-1典型错误列表

典型错误

解决办法

1.Underminedmotivation.(挫伤积极性)

激励开发人员,详见第10章。

2.Weakpersonnel.(人员不能胜任)

招聘可胜任的人员,详见第11章。

3.Uncontrolledproblememployees.(对问题员工失去控制)

尽快处理问题员工,详见第11章。

4.Heroics.(英雄主义)

团队领导或成员对自身能力过于自信。

客观认识自身能力,避免盲目自信。

5.Addingpeopletoalateproject.(向已落后进度的项目增加人员)

不向落后进度的项目增加人员。如果实在要增加,可增加行政人员,帮助技术人员处理杂务。

6.Noisy,crowdedoffices.(办公环境拥挤嘈杂)

营造安静、整洁的办公环境,详见第10.3.1节。

7.Frictionbetweendevelopersandcustomers.(开发人员与客户之间产生摩擦)

维持良好的客户关系,详见第9章。

8.Unrealisticexpectations.(不现实的预期)

进行准确的软件估算,制定合理的进度计划,详见第7章和第8章。

9.Lackofeffectiveprojectsponsorship.(缺乏高层对项目的有效支持)

请求高层对于项目的支持。

10.Lackofstakeholderbuy-in.(干系人没有全身心投入项目)

请求干系人的全身心投入。

11.Lackofuserinput.(缺乏用户介入)

在软件项目的全过程都重视用户反馈,详见第9章。

12.Politicsplacedoversubstance.(玩弄政治)

实施有效措施保证项目和团队成功高于个人成功,详见第11章。

13.Wishfulthinking.(充满想象)

根据主观愿望而非客观事实对项目状况进行判断。

破除一厢情愿的想象,把项目执行落到实地。

14.Overlyoptimisticschedules.(过于乐观的进度计划)

15.Insufficientriskmanagement.(风险管理不到位)

进行充分的风险管理,详见第4章。

16.Contractorfailure.(外包承包方违约)

有效管理外包项目的风险,详见第16章。

17.Insufficientplanning.(项目规划不到位)

完成有效的项目规划,详见第3.1.1节。

18.Abandonmentofplanningunderpressure.(在压力下放弃项目规划)

在压力下更要坚持规划,但需要根据项目进展状况及时调整和重新规划。

20.Shortchangedupstreamactivities.(走样的上游任务)

草草完成需求分析、概要设计和详细设计。

认真进行需求分析、概要设计和详细设计,并进行technicalreview。

21.Inadequatedesign.(低劣的软件设计)

进行高质量的软件设计。

22.Shortchangedqualityassurance.(走样的质量保证)

取消designreview、codereview和testplanning。

任何时候都不放松对软件质量的要求,详见第3.6节。

23.Insufficientmanagementcontrols.(管理控制不到位)

加强对项目majormilestone和miniaturemilestone的管理和监控,详见第3.1.2.1节。

24.Prematureoroverlyfrequentconvergence.(过早或过于频繁地开展项目收尾工作)

不要过早或过于频繁地开展项目收尾工作。

25.Omittingnecessarytasksfromestimates.(项目估算中遗漏必要的任务)

把项目估算中易遗漏的任务列于显著位置,防止遗漏,详见第7.2节。

26.Planningtocatchuplater.(试图赶上进度)

进度落后之后,不要试图赶上进度,而应该根据项目新的状况重新制定进度计划,详见第7.3节。

27.Code-like-hellprogramming.(地狱式编程)

项目采用急就章式的、自由散漫的、“代码写到哪儿算哪儿”式的编程模式。

绝对避免急就章式的编程,任何代码必须经过严格的质量保证措施,详见第3.6节。

28.Requirementsgold-plating.(需求镀金)

项目的需求规格书中具有用户不需要的、复杂的需求。

不要在需求规格书中加入用户不需要的需求。

29.Featurecreep.(功能蔓延)

项目进行过程中频繁出现需要变更(requirementchange)。

采取措施防止功能蔓延,详见第13.2节。

30.Developergold-plating.(开发人员镀金)

开发人员为了学习新技术而给产品加入用户不需要的功能。

不要为了让开发人员学习新技术而加入不需要的功能。

31.Push-me,pull-menegotiation.

软件经理一面批准了进度拖延,一面又向拖延的项目中加入新的需求。

在项目已经拖延的情况下,必须稳定需求,不再加入新的需求,详见第15.1.3节。

32.Research-orienteddevelopment.(研究导向的开发)

把软件研究(如新算法)当成工程项目来做。

不在软件工程项目中搞软件研究。

33.Sliver-bulletsyndrome.(银弹综合症)

项目把解决进度问题的希望寄托在单独某一种新实践、新技术或新开发方法论上。

破除银弹综合症,详见第14.2节。

34.Overestimatedsavingsfromnewtoolsormethods.(过高估计了新技术或新方法带来的收益)

对新技术或新方法带来的收益有较理性的认识,详见第14章。

35.SwitchingtoolsInthemiddleofaproject.(在项目进行期间更换开发工具)

持续使用久经考验的旧工具,详见第14章。

36.Lackofautomatedsource-codecontrol.(缺少自动化源代码控制)

必须使用自动化源代码控制系统。

最佳实践:SourceCodeControlSystem

给整个项目乃至整个公司选择一个sourcecodecontrolsystem。这个sourcecodecontrolsystem可以是商业软件系统(如ClearCase,Perforce等),也可以是免费软件。只有在sourcecodecontrolsystem就绪之后,才开始启动你的项目。

THE END
1.Access快速开发平台Access快速开发平台2.0.2《盟威软件快速开发平台》是上海盟威软件有限公司根据十多年企业应用开发的实践经验积累,基于微软Access数据库精心打造的一款快速开发平台,主要用于高效率地进行企业中各种实用型管理软件的开发。以追求实用为目标,最大限度地降低开发的技术门槛和难度、提高开发效率、节省开发时间,让开发者只需要专注于业务逻辑的实现。即使https://xiazai.zol.com.cn/detail/58/573920.shtml
2.WebBuilder欢迎访问 www.putdb.com,我们提供卓越的企业级软件快速开发平台。WebBuilder 是一款强大的快速 Web 应用开发和运行平台,使用 WebBuilder 您可以快速开发出无与伦比的应用系统。https://www.putdb.com/
3.fast软件开发方法(快速软件开发:敏捷高效的开发方法)本文旨在介绍fast软件开发方法,并提供背景信息以引发读者的兴趣。快速软件开发方法是一种以迭代和增量的方式进行软件开发的方法,旨在提高开发速度和客户满意度。本文将从四个方面对fast软件开发方法进行详细阐述。 正文: 一、敏捷开发 敏捷开发是fast软件开发方法的核心概念之一。敏捷开发强调团队合作、快速迭代和灵活性。https://www.bjsoftkf.cn/newsdetail.php?id=3526
4.快速软件开发(豆瓣)快速软件开发的书评 ···(全部 10 条) 热门只看本版本的评论 Lonely Highway2007-03-08 12:35:45电子工业出版社2002版 软件开发的管理者必看的书 本人经验并不丰富,只是不小心做了一段时间的管理者:软件开发真的是到处是陷阱.现在看了此书,里面很多的失败的实例就和自己在管理过程中遇到的一样. 书上提到https://book.douban.com/subject/3151486/
5.快速软件开发软件开发资源资源浏览查阅116次。在信息技术日新月异的今天,软件产业作为新兴的知识型产业,在国家综合国力的体现和未来国际竞争地位的决定中扮演了越来越重要的角色。中国软件企业正面临着高速发展和规范化管理的双重挑战,需要在项目管理上取得突破,以适应不断增长的客户需求和不断https://download.csdn.net/detail/huang001/166035
6.全端Web开发:快速开发实践全端软件编程我将Boyd的发现称为Boyd迭代定律:在应对复杂分析时,快速迭代几乎总是优于深入分析。 ——Roger Sessions, “A Better Path to Enterprise Architectures” 我们中的大多数人都无缘发明什么重大创新,给软件开发流程带来革命性的改变。但是跳出自己的编程文化至少可以开开眼界,有很多现成的改进可供使用,深入研究那些成熟https://www.open-open.com/news/view/a90711
7.SDP软件快速开发平台SDP,软件,开发平台,开发工具,报表设计,页面设计,流程设计,权限设计等,通过Winform,设计器,开发生成,B/S HTML,软件项目http://www.sdpsoft.com/
8.一步通软件一步通快速开发平台,全Web可视化开发和运行架构,敏捷、高效、稳定的信息化快速开发和落地工具,集开发、组织、流程、表单、报表、门户、移动等全方位功能于一体。http://www.ybtsoft.com/
9.ET快速软件开发平台工具电脑版下载官方2025最新版软件语言:简体中文 版本:2007.500 编程工具口碑排行榜 pycharm社区版 IntelliJ IDEA 2020 Navicat12 WebStorm 下载服务协议见页面底部 软件介绍相关专题常见问题下载地址 基本简介 Extraction(ET)应用构建平台是一个前沿的集成化的Web应用软件开发平台和运行支撑平台,ET平台涵盖软件的设计,开发,测试,运行,维护,更新和发布https://m.onlinedown.net/soft/60952.html
10.火山软件开发平台介绍火山软件开发平台是完全拥有自主知识产权、一种目的硬件设备无关、目的软件环境无关、易学易用实用、完全本地化的中文软件快速开发平台。 火山平台采用独创的“语言之上的语言”(LOL)技术,成功屏蔽了火山程序对特定目标环境的依赖。用户只需要学习掌握火山程序语言,就可以针对各种目的环境进行软件开发。同时由于火山程序编译https://doc.voldp.com/vol/summary.html
11.桌面程序开发快速开发一门应用(www.yimenapp.com)提供桌面软件exe安装包底层开发框架,桌面程序开发快速开发,一键将PC网站打包成桌面应用exe,一键将html在线生成exe软件,200+exe原生接口,功能按需组装,开发exe从一门开始!https://exe.yimenapp.com/tool-2312.html
12.CSFramework.WebApi后端开发框架APP微信小程序服务端框架v2.0CSFramework.WebApi是服务端快速开发框架(后端框架),基于ASP.NET提供的WebAPI底层架构强大的编程能力,封装成为可复用、可扩展、可定制开发的服务端软件开发框架,助力您快速轻松搭建基于HTTP/HTTPS等协议以及支持多种客户端(如:APP、B/S、C/S、微信公众号、微信小程序等)各种跨平台移动终端的服务端应用程序。 服务端http://www.csframework.com/cs-framework-webapi.htm
13.(青菜任务)自助悬赏任务平台系统整站源码行业软件快速上线定制开发游戏制作软件开发h5游戏开发定制开发+售后一条龙开发 在数字经济快速发展的今天,游戏产业的蓬勃兴起带动了多种相关技术和软件的需求。河南2025-01-21 小游戏开发搭建h5游戏开发快速搭建+售后一条龙开发 在当今的数字经济中,小游戏作为一项新兴的娱乐方式,迅速获得了广泛的关注。尤其是在2025-01-21https://zhengzhou.11467.com/info/16125831.htm
14.武汉低代码快速开发平台武汉低代码应用开发平台最受武汉客户喜爱的低代码快速开发平台应用 最受客户喜爱的物联网/大数据/低代码数字化解决方案应用 智慧校友会系统(校友大数据平台) 武汉智慧校友会系统(校友大数据平台)|智慧校友会系统简介智慧校友会系统是一款基于大数据技术打造的校友管理平台,致力于帮助学校、校友会等组织实现校友资源的有效整合与高效利用。通过https://www.perfcloud.cn/gindex/area/30-204
15.引迈JNPF快速开发平台低代码开发平台零代码开发平台引迈信息,提供快速开发平台、快速开发框架、低代码开发平台、低代码开发框架、0代码开发平台、0代码开发框架、零代码开发平台、零代码开发框架、无代码开发平台、无代码开发框架、.net开发平台、.net开发框架、java开发平台、java开发框架、代码生成器、工作流引擎、开源开https://www.jnpfsoft.com/
16.快速开发平台java快速开发平台特性大猩猩的技术博客快速开发平台是软件开发领域的新锐,得益于其编码少效率高的特点,近年来在行业中愈来愈流行,可谓后来者居上,大有颠覆行业现状的潜力。那,使用快速开发平台与进行传统模式开发相比,它的优势到底在哪里? 首先,开发者在此类平台上直接配置业务参数,即可生成完整业务系统。而且在BS(WEB)、CS(WIN)、移动端应用上也可自动https://blog.51cto.com/u_87851/7716620
17.Access快速开发平台摘要:Access快速开发平台--通用日期选择器设置选择日期、选择时间、选择时分、时间选取器的设置方法。 正文: Access快速开发平台一个一直被忽略的功能,即通用日期选择器可以对日期进行选择设置日期,可以选择时间、选择时分功能,之前一直有人问日期控件能不能选择时间、选择分钟?现在把这个时间选取器的设置方法分享给大家学http://www.accessoft.com/article-show.asp?id=20323