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

简介:

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


2.4 软件开发神话

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关文章
|
22天前
|
设计模式 算法 测试技术
【软件设计师备考 专题 】标准化知识:意识和发展(一)
【软件设计师备考 专题 】标准化知识:意识和发展
44 0
|
22天前
|
网络协议 算法 安全
【软件设计师备考 专题 】标准化知识:意识和发展(二)
【软件设计师备考 专题 】标准化知识:意识和发展
25 0
|
10月前
|
传感器 机器学习/深度学习 安全
汽车电子行业开发者的内功心法:汽车软件开发V模型
汽车软件开发过程中的V模型对行业内开发者早已是司空见惯的模型,是由瀑布模型演变而来的,也是目前汽车行业运用最广的软件开发模型。由于该模型的构图形似字母V,所以俗称V模型。V模型核心思想是通过A-SPICE流程(汽车产业的软件流程改进和能力测定标准)来支持和管理整个开发流程,从需求到源代码的每个过程都有相应的测试。
|
搜索推荐 开发者
软件工程高效学 | 软件的内涵与危机
软件工程是计算机领域的一门专业基础课,它对于培养大家的软件素质、提高大家的软件开发能力与软件项目管理能力具有重要意义。本篇介绍软件工程的基本概念,包括软件的内涵、软件危机的产生、软件危机的表现及原因等相关内容。
115 0
软件工程高效学 | 软件的内涵与危机
|
开发者
《软件工艺师:专业、务实、自豪》一3.6 软件开发是手艺、生意、工程、科学,还是艺术
本节书摘来华章计算机《软件工艺师:专业、务实、自豪》一书中的第3章 ,第3.6节,[英]桑德罗·曼卡索(Sandro Mancuso)著 爱飞翔 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1732 0
|
测试技术
《软件工艺师:专业、务实、自豪》一2.2 面向技术的敏捷软件开发原则
本节书摘来华章计算机《软件工艺师:专业、务实、自豪》一书中的第2章 ,第2.2节,[英]桑德罗·曼卡索(Sandro Mancuso)著 爱飞翔 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1190 0
《软件工艺师:专业、务实、自豪》一2.4 《敏捷软件开发宣言》
本节书摘来华章计算机《软件工艺师:专业、务实、自豪》一书中的第2章 ,第2.4节,[英]桑德罗·曼卡索(Sandro Mancuso)著 爱飞翔 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1010 0
|
开发者
《软件工艺师:专业、务实、自豪》一3.5 不要拘泥于定义
本节书摘来华章计算机《软件工艺师:专业、务实、自豪》一书中的第3章 ,第3.5节,[英]桑德罗·曼卡索(Sandro Mancuso)著 爱飞翔 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1114 0