《实践者的研究方法》—— 第2章 软件工程 2.4 软件开发神话-阿里云开发者社区

开发者社区> 华章计算机> 正文

《实践者的研究方法》—— 第2章 软件工程 2.4 软件开发神话

简介:
+关注继续查看

本节书摘来自华章出版社《实践者的研究方法》一书中的第2章,第2.4节,作者罗杰 S. 普莱斯曼(Roger S. Pressman),更多章节内容可以访问云栖社区“华章计算机”公众号查看。


2.4 软件开发神话

软件开发神话,即关于软件及其开发过程的一些被人盲目相信的说法,这可以追溯到计算技术发展的初期。神话具有一些特点,让人觉得不可捉摸。例如,神话看起来是事实的合理描述(有时的确包含真实的成分),它们符合直觉,并且经常被那些知根知底的有经验的从业人员拿来宣传。

今天,大多数有见地的软件工程师已经意识到软件神话的本质——它实际上误导了管理者和从业人员对软件开发的态度,从而引发了严重的问题。然而,由于习惯和态度的根深蒂固,软件神话遗风犹在。

管理神话。像所有领域的经理一样,承担软件职责的项目经理肩负着维持预算、保证进度和提高质量的压力。就像溺水人抓住稻草一样,软件经理经常依赖软件神话中的信条,只要它能够减轻以上的压力(即使是暂时性的)。

神话:我们已经有了一本写满软件开发标准和规程的宝典,难道不能提供我们所需要了解的所有信息吗?

事实:这本宝典也许的确已经存在,但它是否在实际中采用了?从业人员是否知道这本书的存在呢?它是否反映了软件工程的现状?是否全面?是否可以适应不同的应用环境?是否在缩短交付时间的同时还关注产品质量的保证?在很多情况下,问题的答案是否定的。

神话:如果我们未能按时完成计划,我们可以通过增加程序员人数而赶上进度(即所谓的“蒙古游牧”概念)。

事实:软件开发并不是像机器制造那样的机械过程。Brooks曾说过[Bro95]:“在软件工程中,为赶进度而增加人手只能使进度更加延误。”初看,这种说法似乎与直觉不符。然而,当新人加入到一个软件项目后,原有的开发人员必须要牺牲本来的开发时间对后来者进行培训,因此减少了本应用于高效开发的时间。只有在有计划且有序进行的情况下,增加人员对项目进度才有意义。

神话:如果决定将软件外包给第三方公司,就可以放手不管,完全交给第三方公司开发。

事实:如果开发团队不了解如何在内部管理和控制软件项目,那么将无一例外地在外包项目中遇到困难。

客户神话。软件产品的客户可能是隔壁的某个人、楼下的一个技术团队、市场/销售部门或者签订软件合同的某个外部公司。多数情况下,客户之所以相信所谓的软件神话,是因为项目经理和从业人员没有及时纠正他们的错误信息。软件神话导致客户错误的期望,最终导致对开发者的不满。

神话:有了对项目目标的大概了解,便足以开始编写程序,可以在之后的项目开发过程中逐步充实细节。

事实:虽然通常很难得到综合全面且稳定不变的需求描述,但是对项目目标模糊不清的描述将为项目实施带来灾难。要得到清晰的需求描述(经常是逐步变得清晰的),只能通过客户和开发人员之间的持续有效的沟通。

神话:虽然软件需求不断变更,但是因为软件是弹性的,因此可以很容易地适应变更。

事实:软件需求的确在随时变更,但随变更引入的时机不同,变更所造成的影响也不同。如果需求变更提出得较早(比如在设计或者代码开发之前),则对费用的影响较小;但是,随着时间的推移,变更的代价也迅速增加——因为资源已经被分配,设计框架已经建立,而变更可能会引起的剧变,需要添加额外的资源或者修改主要设计。

从业者神话。在60多年的编程文化的滋养下,软件开发人员依然深信着各种神话。在软件业发展早期,编程被视为一种艺术。旧有的方式和态度根深蒂固。

神话:当我们完成程序并将其交付使用之后,我们的任务就完成了。

事实:曾经有人说过,对于编程来说,开始得越早,耗费的时间就越长。业界的一些数据显示,60%~80%的工作耗费在软件首次交付顾客使用之后。

神话:直到程序开始运行,才能评估其质量。

事实:最有效的软件质量保证机制之一——技术评审,可以从项目启动就开始实行。软件评审(第20章)作为“质量过滤器”,已经证明其可以比软件测试更为有效地发现多种类型的软件缺陷。

神话:对于一个成功的软件项目,可执行程序是唯一可交付的工作成果。

事实:软件配置包括很多内容,可执行程序只是其中之一。各种工作产品(如模型、文档、计划)是成功实施软件工程的基础,更重要的是,为软件技术支持提供了指导。

神话:软件工程将导致我们产生大量无用文档,并因此降低工作效率。

事实:软件工程并非以创建文档为目的,而是为了保证软件产品的开发质量。好的质量可以减少返工,从而加快交付时间。

目前,大多数软件专业人员已经认识到软件神话的谬误。对于软件开发真实情况的正确理解是系统阐述如何使用软件工程方法解决实际问题的第一步。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《软件工程(第4版?修订版)》—第1章1.12节本章对开发团队的意义
大部分开发工作都是由大型开发团队的成员来完成的。正如本章所述,开发包括需求分析、设计、实现、测试、配置管理、质量保证以及其他活动。开发团队中的有些成员可能会承担多个角色。
1015 0
《软件工艺师:专业、务实、自豪》一1.1 何谓资深开发者
本节书摘来华章计算机《软件工艺师:专业、务实、自豪》一书中的第1章 ,第1.1节,[英]桑德罗·曼卡索(Sandro Mancuso)著 爱飞翔 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
824 0
我不是一个工程师——我是一个软件开发者
导读:本文是从《I am not an engineer - I’m a software developer》这篇文章翻译而来。译文来自外刊IT评论《我不是一个工程师——我是一个软件开发者》。 内容如下: 在《Object-Oriented Software Development Using J...
826 0
【工业串口和网络软件通讯平台(SuperIO)教程】七.二次开发服务驱动
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1    服务接口的作用  围绕着设备驱动模块采集的数据,根据需求提供多种应用服务,例如:数据上传服务、数据请求服务、4-20mA服务、短信服务、LED服务以及OPC服务等。
699 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4612 0
x3d
Debian Stable分支对于开发者的意义[续软件系统。。。]
Debian是一个十分不错的发行版,拥有一个庞大的软件库,性能也十分卓越,而且也是最遵循自由软件守则的Linux发行版。 Debian有stable、testing、unstable和experimental四个分支。
740 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载