超越时间与人力的软件开发智慧:《人月神话》

在这里插入图片描述

目录

    • 1、写在前面
    • 2、沟通!沟通!沟通!
    • 3、“银弹论”
    • 4、“人月神话”不能成立的原因
    • 5、影响力
    • 6、图书推荐


1、写在前面

《人月神话》是由计算机科学家弗雷德里克·布鲁克斯所著的一本经典著作,首次出版于1975年。这本书以一个个小故事的方式描述了软件工程中存在的现象,探讨软件工程的管理问题 ,并且以其深入的见解和实践经验在软件开发领域产生了广泛的影响和重要性。
在这里插入图片描述

2、沟通!沟通!沟通!

《人月神话》以巴比伦塔建设失败的的神话故事引出了“沟通”重要性。当上帝消除了统一的语言,人们失去了交流的手段,即使其他条件都能满足,巴比伦塔也以失败告终。”沟通”是确保团队思想统一、目标一致的最重要手段。

即使再过分的强调沟通的重要性,但是由于主观或者客观的原因,在实际项目过程中还是会发现沟通不足导致的问题。《人月神话》中也提出了几种方式如何减少沟通也能达到有效协作的目标:

  • 每个人不是必须关注所有的内容,各个部分应该只暴露对外表现,而内部实现应该封装不对外暴露。这段内容体现到代码上就是:针对接口编程,不要依赖实现逻辑。
  • 小而精的团队搭配,保持一个首席程序员完成所有的设计和代码编写工作,其他人进行辅助配合,确保概念的完整性和一致性,减少沟通。
  • 团队协作就要形成组织结构,团队组织的目的是为了减少必要的交流和协作量,人力划分和职责范围必须明确并且清晰。团队中禁止双重领导,团队是树状结构,交流是网状结构,需要补充特殊组织机制来克服树状组织结构中缺乏交流的困难。

3、“银弹论”

“银弹论”是布鲁克斯提出的另一个重要观点。他指出,目前还没有一种“银弹”方法能够彻底解决软件开发中的所有问题。他认为,软件开发是一个极其复杂的过程,没有一种简单的解决方案可以解决所有的难题。

布鲁克斯提到,开发人员和管理者不应过于依赖一种“银弹”方法,而是应该根据具体情况采用不同的工具和技术,结合实践经验来解决问题。他强调了软件开发中的不确定性和复杂性,认为只有通过持续的实践和学习,才能逐渐积累解决问题的经验和方法。

“银弹论”提醒我们,软件开发并没有一种简单的解决方案,需要灵活运用不同的方法和工具,结合实践经验来解决具体的问题。

4、“人月神话”不能成立的原因

“人月神话”是指一种常见的误解,即增加开发人员数量可以缩短项目的时间。布鲁克斯在书中指出,由于引入新人员需要时间来培训和协调,人员增加并不能线性地减少项目的时间。他认为,过多的人员反而会导致沟通成本增加、团队协作受阻,从而延长项目的开发时间。

布鲁克斯通过一个著名的例子来解释这个概念:一个女人可以在九个月内生一个孩子,但如果增加九个女人并让她们一起工作,就不能在一个月内生出一个孩子。

“人月神话”提醒我们,在软件开发中,增加人员并不一定会加速项目进度,相反,过多的人员可能会导致沟通和协调困难,从而延长项目的时间。

原因

  • 当任务由于次序上的限制不能分解时,人手的添加对进度没有帮助。
  • 对于可以分解,但子任务之间需要相互沟通和交流的任务,必须在计划工作中考虑沟通的工作量。

5、影响力

1999年,本书作者布鲁克斯获得图灵奖,评选委员会主席的致辞中说:

“今天我们所看到的计算机体系结构、软件工程,以及三维计算机图形,均受惠于布鲁克斯的开创性工作,是他改变了这些领域的面貌。”

6、图书推荐

图灵奖得主、“IBM 360系统之父”作者Brooks颠覆了项目管理领域,长久不衰传奇经典!软件开发人员、软件项目经理、系统分析师等IT从业者必藏之软工!
畅销全球48年!新版再发行 !购书连接:《人月神话》

“站在巨人的肩膀上,我才能看的更远”。在软件工程领域,前任的经验值得我们学习,更何况这本书更是经验中的精粹,所以说无论你是在校大学生,还是在职工作的同志,我都推荐大家读一读,相信它会让大家受益良多~
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/122905.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSL证书系列--又拍云Let’s Encrypt免费DV SSL证书使用教程

原文网址:SSL证书系列--又拍云Let’s Encrypt免费DV SSL证书使用教程_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何使用又拍云部署Let’s Encrypt免费DV SSL证书。 一、了解Let’s Encrypt 了解和关注SSL证书的朋友,似乎没有理由不知道 Let’s Encr…

苹果与芯片巨头Arm达成20年新合作协议,将继续采用芯片技术

9月6日消息,据外媒报道,芯片设计巨头Arm宣布在当地时间周二提交给美国证券交易委员会(SEC)的最新IPO文件中,透露与苹果达成了一项长达20年的新合作协议,加深了双方之间的合作关系。 报道称,虽然…

进入低功耗和唤醒

休眠模式 进入休眠模式 如果使用 WFI 指令进入睡眠模式,则嵌套向量中断控制器 (NVIC) 确认的任意外设中断都会 将器件从睡眠模式唤醒。 如果使用 WFE 指令进入睡眠模式,MCU 将在有事件发生时立即退出睡眠模式。唤醒事件可 通过以下方式产生&#xff…

jvs-智能bi(自助式数据分析)9.1更新内容

​jvs-智能bi更新功能 1.报表增加权限功能(服务、模板、数据集、数据源可进行后台权限分配) 每个报表可以独立设置权限,通过自定义分配,给不同的人员分配不同的权限。 2.报表新增执行模式 可选择首次报表加载数据为最新数据和历…

搜索二维矩阵 II

题目链接 搜索二维矩阵 II 题目描述 注意点 矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 解答思路 最初想到使用深度优先遍历剪枝实现,但是运行后超出时间限制了可以直接遍历整个矩阵查找,虽然不超时…

升级iOS 17出现白苹果、不断重启等系统问题怎么办?

iOS 17发布后了,很多果粉都迫不及待的将iphone/ipad升级到最新iOS17系统,体验新系统功能。 但部分果粉因硬件、软件的各种情况,导致升级系统后出现故障,比如白苹果、不断重启、卡在系统升级界面等等问题。 如果遇到了这些系统问题…

python 创建 Telnet 客户端

目录 前言 1. Telnet 客户端框架 2. Telnet 代码分解 2.1 基于 TK 创建会话窗口 2.1.1 创建 Text 文本控件 2.1.2 创建 Frame 容器 2.1.2.1 基于 Frame 容器创建主机地址输入框 2.1.2.1.1 主机地址输入框绑定焦点事件 2.1.2.2 创建 Telnet 连接按钮控件 2.1.2.3 创建…

小程序如何上传微信聊天记录的文件

wx.chooseMessageFile({count: 10,type: image,success (res) {// tempFilePath可以作为img标签的src属性显示图片const tempFilePaths res.tempFiles} })参数说明 回调函数说明

【区块链 | IPFS】浅谈 | IPFS数据存储原理

IPFS在数据存储方面采用的是分散式的文件存储,区别于HTTP协议的位置寻址,IPFS是基于内容寻址,当文件上传到IPFS节点存储时,节点会对文件进行Merkle DAG(默克尔有向无环图)的格式组织分块存储,在存储完毕后,文件将以Merkle DAG的根哈希数来表示该文件,用户可以从IPFS构…

TSUMU58CDT9-1显示器芯片方案

TSUMU58CDT9-1是用于LCD显示器的整体解决方案图形处理IC,面板分辨率高达WUXGA。它配置了高速集成三adc /PLL、集成DVI/HDMI接收器、高质量显示处理引擎、集成微控制器和支持LVDS面板接口格式的输出显示接口。TSUMU58CDT9-1支持一个灵活的可配置数字输入接口&#xf…

Ajax介绍、爬取案例实战 + MongoDB存储

Ajax介绍 Ajax(Asynchronous JavaScript and XML)是一种用于在Web应用程序中实现异步通信的技术。它允许在不刷新整个网页的情况下,通过在后台与服务器进行数据交换,实时更新网页的一部分。Ajax的主要特点包括: 异步通…

Python Flask Web开发三:数据表的字段增加和删除

前言 在实际的开发中,数据表中的字段的增加和删除是很正常的操作,在运营的不断提需求下,这个修改的频率是很高的,那么在flask中如何进行字段的增加和删除呢?下面我来给大家讲讲 一、创建迁移脚本 使用数据库迁移工具…

C++内存管理(2)new、delete详解

目录 new operator(new操作) new类对象时加不加括号的差别 new工作任务 delete工作任务 new和delete 堆区空间操作(对比malloc和free) new和delete操作基本类型的空间 new和delete操作基本类型的数组 new和delete操作类的…

Qt开发_调用OpenCV(3.4.7)设计完成人脸检测系统

一、前言 近年来,人脸识别技术得到了广泛的应用,它可以在各种场景中实现自动化的人脸检测和识别,例如安防监控、人脸解锁、人脸支付等。 该项目的目标是设计一个简单易用但功能强大的人脸检测系统,可以实时从摄像头采集视频,并对视频中的人脸进行准确的检测和框选。通过…

0012Java程序设计-springboot基于微信小程序的校园智慧帮系统的设计与实现

摘要目录相关技术2.1 MySQL数据库2.2 SpringBoot框架2.3 uniapp框架2.4 B/S架构 系统设计系统实现开发环境 摘要 随着移动互联网高速发展,手机、移动智能终端设备在生活中有着越来越重要的地位。在高校推崇以人为本的今天,也逐渐重视“移动互联网”技术…

​7.1 项目1 学生通讯录管理:文本文件增删改查(C++版本)(自顶向下设计+断点调试) (A)​

C自学精简教程 目录(必读) 作业目标: 这个作业中,你需要综合运用之前文章中的知识,来解决一个相对完整的应用程序。 作业描述: 1 在这个作业中你需要在文本文件中存储学生通讯录的信息,并在程序启动的时候加载这些…

【Mycat1.6】缓存不生效问题处理

背景 系统做读写分离,有大量读需求,基本没有实时获取数据业务需要,所以可以启用缓存来减缓数据库压力,传统使用mybatis的缓存需要大量侵入式声明,所以结合需求使用Mycat中间件来满足 数据库结构 mysql-master&#…

渗透测试漏洞原理之---【业务安全】

文章目录 1、业务安全概述1.1业务安全现状1.1.1、业务逻辑漏洞1.1.2、黑客攻击目标 2、业务安全测试2.1、业务安全测试流程2.1.1、测试准备2.1.2、业务调研2.1.3、业务建模2.1.4、业务流程梳理2.1.5、业务风险点识别2.1.6 开展测试2.1.7 撰写报告 3、业务安全经典场景3.1、业务…

多维时序 | MATLAB实现GWO-BiLSTM灰狼算法优化双向长短期记忆神经网络的多变量时间序列预测

多维时序 | MATLAB实现GWO-BiLSTM灰狼算法优化双向长短期记忆神经网络的多变量时间序列预测 目录 多维时序 | MATLAB实现GWO-BiLSTM灰狼算法优化双向长短期记忆神经网络的多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现CNN-BiGRU-A…

手写Spring:第11章-容器事件和事件监听器

文章目录 一、目标:容器事件和事件监听器二、设计:容器事件和事件监听器三、实现:容器事件和事件监听器3.1 工程结构3.2 容器事件和事件监听器类图3.3 定义和实现事件3.3.1 定义事件抽象类3.3.2 定义应用上下文事件实现类3.3.3 上下文刷新事件…