我读经典(9):读《完美软件开发:方法与逻辑》有感

开发出一款受用户欢迎的、十全十美的软件是每个软件开发工程师的梦想,但在现实条件下,受市场环境、公司氛围及自身水平等的影响,要开发出一款完美的软件几乎是不太可能的。最近,我阅读了李志勇老师的《完美软件开发:方法与逻辑》一书,颇有收获。

正如李老师所说,本书是为“培养帅才”而写的。全书共9章内容,以思维逻辑为出发点和归宿,表达了作者对完美软件开发的一些理解和认识。本书涉及到的内容包括:项目管理、流程、开发模型、估算方法、需求开发、设计和编码等。在最后一章中,作者以薪水支付与性能优化作为案例来让自己的逻辑与理论“落地”。

我认为,在实际的软件开发中,让一个软件“不完美”的因素有三:第一,政治因素;第二,市场因素;第三,技术因素。

首先来说政治因素。大家在公司工作,是身处一个大的环境之中,靠个人的力量几乎不能做成任何事情。公司的企业文化、所在部门的领导做事风格、项目负责人的素质、团队的氛围等都会对我们手头上正在做的事情产生影响。在李开复老师的《世界因你不同》这本书中,讲述了微软.NET项目流产的事情,这在很大程度上就是政治因素导致的。

其次是市场因素。除了乔帮主等少数精英能够“牵着用户的鼻子走”之外,大部分公司开发的软件都需要满足用户的需求。遇到不靠谱的用户,他们提出的需求朝令夕改,那么我们就需要不停地修改程序,这时候说完美软件就是“痴人说梦”了。此外,随着市场竞争的加剧,每个软件的开发周期越来越短,要想在短时间内将软件交付使用,就只能将实现功能放在首位,这种情况下开发出来的软件是完美的吗?

再次是技术因素。技术因素主要涉及到开发人员的个人素质和开发团队的素养等。个人素质包括对某项技术的熟悉程度、工作的负责任程度、沟通交流和知识分享的意愿等。当某一软件由新手开发且评审不严时,开发出的软件就会漏洞百出,“完美”二字根本无从谈起。开发团队的素养包括流程的规范性、对质量的重视程度及对技术的推崇程度等。

《完美软件开发:方法与逻辑》,一本值得广大软件开发人员细细品味的好书,推荐给大家阅读。

(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

时间: 2024-10-26 21:38:02

我读经典(9):读《完美软件开发:方法与逻辑》有感的相关文章

今天学习的结构方法,也就是面向功能的软件开发方法

结构化方法 结构化开发方法是由E.Yourdon和L.L.Constantine提出的,即所谓SASD方法,也是可称为面向功能的软件开发方法或面向数据流的软件开发方法.SASD方法是20世纪80年代使用最广泛的软件开发方法.它首先用结构化分析(SA)对软件进行需求分析,然后用结构设计(SD)方法进行总体设计,最后是结构化编程(SP).它给出了两类典型的软件结构(变换型和事务型),使软件开发的成功率大大提高.

系统分析师笔记-案例分析-软件开发方法

案例分析-软件开发方法 原型开发方法的问题: 1,客户时候已经看到了软件的工作版本,却无法理解,原因在于为了使原型能够很快使用,开发者没有考虑软件的总体质量和长期可维护性. 2,开发者常常需要实施上的折中使原型能尽快工作. XP(极限编程)缺点 1,"非要用文档时才编写",实际执行中非常容易不忽视文档. 2,简单设计.测试先行.重构.集体代码所有制.持续集成某种意义上维背了程序员的传统习惯. 3,小型发布.结对编程.每周工作40小时,经常让管理者不可理解. 4,现场客户实践经常无法得到

软件开发方法

在上个世纪60年代中期爆发了众所周知的软件危机.为了克服这一危机,在1968.1969年连续召开的两次著名的NATO会议上提出了软件工程这一术语,并在以后不断发展.完善.与此同时,软件研究人员也在不断探索新的软件开发方法.至今已形成了八类软件开发方法.中文名   软件开发方法 提出时间   1972年 原则    意外故障采取措施 1 Parnas方法 2 SASD方法 3 面向数据结构的软件开发方法 4 Jackson方法 5 Warnier方法 6 问题分析法 7 面向对象的软件开发方法 8

软件工程与软件开发模型、软件开发方法

什么是软件工程? 软件工程一直以来都缺乏一个统一的定义. IEEE给出的定义是:软件工程是:1.将系统化的.严格约束的.可质量化的方法应用于软件的开发.运行和维护,即将工程化应用于软件:2.在1中所述方法的研究. 比较认可的一种定义是:软件工程是研究和应用如何以系统性的.规范化的.可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来. 什么是软件开发方法(或软件开发过程)? 软件开发方法找不到统一的定义,但是我们说极限编程(Extr

[ZZ]39条更好的软件开发方法

1.重构是程序员的主力技能. 2.工作日志能提升脑容量. 3.先用profiler调查,才有脸谈优化. 4.注释贵精不贵多.杜绝大姨妈般的“例注”.漫山遍野的碎碎念注释,实际就是背景噪音. 5.普通程序员+google=超级程序员. 6.单元测试总是合算的. 7.不要先写框架再写实现.最好反过来,从原型中提炼框架. 8.代码结构清晰,其它问题都不算事儿. 9.好的项目作风硬派,一键测试,一键发布,一键部署; 烂的项目生性猥琐,口口相传,不立文字,神神秘秘. 10.编码不要畏惧变化,要拥抱变化.

Atitit.研发管理--提升效率--软件开发方法DSM总结o99

1. 什么是DSM? 1 2. DSM使用的语言DSL 2 3. 模型的优点 2 4. DSM 跟与MDA区别 2 5. MDA的实现 3 6. 参考 4 1. 什么是DSM? 只有提高抽象层次,将软件直接面向建模专家或系统分析师,然后运用自动化代码生成技术,这样才能高质量大幅度快速开发出软件系统,在OOPSLA(领先的软件工程会议),大家认为DSM可能是一种解决方案.Bill Gates 和 Grady Booch也发表过同样观点. DSM意味Domain-Specific Modeling领

敏捷软件开发宣言--常读常新

敏捷软件开发宣言 http://www.agilemanifesto.org/iso/zhchs/ 我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人.由此我们建立了如下价值观: 个体和互动 高于 流程和工具 工作的软件 高于 详尽的文档  客户合作 高于 合同谈判  响应变化 高于 遵循计划 也就是说,尽管右项有其价值,我们更重视左项的价值. Kent BeckMike BeedleArie van BennekumAlistair CockburnWard Cunningham

定论——软件开发的方法论探讨

http://www.jianshu.com/p/9593bd7b28d9 一.消除隐喻 1.隐喻 软件开发这件事情,出现得很晚.距今只有几十年的时间,关于它的定义,我们可以简单地说:"就是把软件做出来." 这基本上等于什么都没有说.而软件开发究竟是怎么回事,大家也没有搞明白,于是隐喻就派上用场了.当你要向一个完全没有概念的朋友,解释什么是软件开发的时候,你无法向解释建筑工程那样把他带到现场去看--案件开发的现场,你的朋友会以为软件开发就是一群人坐在电脑前面打键盘--你只能打比方:它就

《敏捷软件开发读书笔记之一》

要想成为一名优秀的软件开发者,需要熟练应用编程语言和开发工具,更重要的是能够领悟代美代码背后的原则和前人总结的经验——这正是本书的主题.本书凝聚了世界级软件开发大师RobertCMartin数十年软件开发和培训经验,不仅是一部深入浅出.生动易懂的面向对象原则与模式著作,而且还是一部通俗的敏捷方法导引书和快速实用UML教程.分为敏捷开发,敏捷设计,薪水支付案例研究,打包薪水支付系统,气象站案例研究和ETS案例研究六个部分,包含30个章节.以下是我对前两个部分的认识及见解: 以下六章是对第一部分敏捷