软件开发项目常以人月来衡量工作量,这种度量暗示着人手和时间是可以互换的。这种人多力量大的想法是一种一厢情愿的虚妄神话,布鲁克斯法则:向滞后的软件项目追加人手会使得进度更迟缓

概念完整性。一个整洁、优雅的编程产品必须向它的每个用户提供一个条理分明的概念模型,这个模型描述了应用、实现应用的方法以及用来指明操作和各种参数的用户界面使用策略。用户所感受到的产品概念完整性是易用性中最重要的因素。

结构师。结构师负责产品所有方面的概念完整性,开发用于向用户解释使用的产品概念模型,概念模型包括所有功能的详细说明以及调用和控制的方法。结构师是这些模型的所有者,同时也是用户的代理。在不可避免地对功能、性能、规模、成本和进度进行平衡时,卓有成效地体现用户的利益。

将体系结构和设计实现、物理实现相分离。为了使结构师的关键任务更加可行,有必要将用户所感知的产品定义——体系结构,与它的实现相分离。体系结构和实现的划分在各个设计任务中形成了清晰的边界,边界两边都有大量的工作。

体系结构的递归。对于大型系统,即使所有实现方面的内容都被分离出去,一个人也无法完成所有的体系结构工作。所以,有必要由一位主结构师把系统分解成子系统,系统边界应该划分在使子系统间接口最小化和最容易严格定义的地方。每个部分拥有自己的结构师,他必须就体系结构向主结构师汇报。显然,这个过程可以根据需要重复递归地进行。

史前时代的焦油坑吞噬了成千上万个力大无穷的巨兽,今天的大型软件项目则令无数庞大的开发团队陷入无从逃脱的窘境。软件程序按其规模和目标的不同,对开放过程的要求也有极大的不同,这给软件开放这一职业带来无穷乐趣,同时也是这一行业苦恼的根源。虽然优秀的程序员的工作效率往往数倍于平庸的程序员,但若是缺乏合理的配置,优秀的成员未必能构成优秀的团队。大型软件开发项目的团队需要和外科手术组一样妥善分工,各司其职协调配合。人们在第一个系统成功完成后,往往会在开发后续的第二个系统时犯冒进的错误。第二个系统经常成为过度设计或画蛇添足的牺牲品。要避免这种错误,必须在第二个系统开发时审慎地考查技术环境的变化,广泛进行交流和沟通,聆听各方面的建议,确立严谨的估算和规划。 架构设计通常由核心设计小组完成,将设计概念传达到整个开发团队是贯彻概念完整性的必然要求。以System 360的开发经验为例,要贯彻概念完整性,需要在团队中保持良好顺畅的沟通和交流,采用形式化定义等技术来确保概念被精确地定义和传达。独立的测试小组是系统质量的良好保证。如果缺乏良好有效的沟通和协作,成员间难以有效的配合,团队项目的目标就无法实现。清晰的工作文档,明确的组织结构,合理的职责分配,都是大型软件项目最终成功的保证。 最大化资源利用率,减少不必要的资源占用,合理规划,使软件系统在资源有限的情况下依然保证了良好的性能,从而实现良好的可伸缩性和健壮性,这能体现软件开发人员精湛的设计技巧。巧妙的数据结构往往能大幅度地俭省资源耗费,提高系统运行的性能。变化是永恒的,用户的需求和期望在变化,开发者对用户需求的理解在变化,适用的技术也在变化,故而最佳的解决策略也可随之变化。软件开发团队应灵活地配置人力和资源,适应开发过程中的种种问题。程序的复杂性、用户需求的不确定性、软硬件技术环境的发展等因素导致了软件维护工作并非总是能够百分之百地获得回报。

转载于:https://www.cnblogs.com/yuntianblog/p/4307487.html

《人月神话》读后总结相关推荐

  1. 《一线架构师实践指南》—— 读后总结

    之前总觉得架构是一件很高大上的工作,跟普通的编码设计不太一样.前一段实践,自己也尝试做过架构的工作,可惜经验不足导致架构非常混乱.这里读完这本书,大体上对架构的工作有所了解,也稍微摸清了些门道. 我理 ...

  2. 读了本号称“App架构师实践指南”的书

    大家好我是张拭心,最近读了本书,书名比较厉害<App架构师实践指南>,读完还是有一定收获的,记录分享给大家. 什么是 app 架构师 这本书主要内容 读完感受 什么是 App 架构师 成为 ...

  3. 《App架构师实践指南》:移动开发的进阶指南

    文章主要内容: 什么是 app 架构师 这本书主要内容 读完感受 什么是 App 架构师 成为"架构师"是许多程序员的梦想,当然也包括我,在工作的几年里,我见过很多架构师,他们在设 ...

  4. App架构师实践指南四之性能优化一

    1.性能维度 常见用来衡量App性能的维度如图9-1所示.其中,性能指标包括电池(电量/温度).流量(上行流量/下行流量等).CPU(平均/最大/最小).内存(平均/最大/最小).帧率(平均/最高/最 ...

  5. Android屏幕适配很难嘛其实也就那么回事,app架构师实践指南pdf

    程序员的劫 最近,又被程序员年龄的事情刷屏了.37岁被公司优化,找工作几个月都没有很好的归属,所谓的小公司还看不上.等等类似的话题变成了程序员的吐槽固定标题,无论是程序员,还是其他行业人员,都可以就这 ...

  6. 高级架构师都在读的10本Java实战书籍,Java开发进阶必备书单

    关乎于程序员,除了做项目来提高自身的技术,还有一种提升自己的专业技能就是:多!看!书! 毕竟,书是学习的海洋呢!So,Java程序员你们准备好了吗?双手奉上Java程序员必读之热门书单. 在下面这 1 ...

  7. 大厂资深架构师都在读的10本Java实战书籍,Java开发进阶必备书单

    入门 <SSM企业级框架实战> 作者: 肖睿/丁慧洁/张宁彬 **简介:**框架(Framework)的本质为某种应用的半成品,即把不同应用程序中的共性内容抽取出来而形成的半成品程序.SS ...

  8. 架构师实践日 · 6.30 杭州站 | 视觉 AI 技术如何助力行业提升?来西子湖畔与业内大咖面对面交流!

    伴随内容形式的变迁(文字 → 图片 → 视频),目前视觉 AI 技术不仅被应用到传统领域的升级革新中,还作为最重要的基础人工智能技术渗透到前沿技术的创新研究中. 七牛架构师实践日第二十九期将以视觉 A ...

  9. 如何构建 FinTech 科学反欺诈体系|架构师实践日

    微众圈 > 微信资讯 > 科技 > 文章 如何构建 FinTech 科学反欺诈体系|架构师实践日 摘自公众号:七牛云发布时间:2017-4-11 21:28:33 FinTech,即 ...

  10. 【架构师实践课】微服务如何拆分?大型微服务项目从何下手?

    继上期[架构师实践课]单体和微服务怎么选?单体到微服务怎么转?之后,万老师为我们带来了微服务系统设计专题的第二个议题:微服务设计痛点. 以下内容根据实践课整理. 微服务如何拆分 首先想和大家分享的,就 ...

最新文章

  1. node.js和npm版本升级及升级过程中遇到的问题和解决方案
  2. Vue 组件通信之 Bus
  3. 让你费解的函数原型:Linux下的signa函数
  4. Boost:boost::bimaps::unordered_multiset_of的测试程序
  5. jenkins之从0到1利用Git和Ant插件打war包并自动部署到tomcat(第二话):安装插件,配置JDK、Git、Ant...
  6. 前端学习(3084):vue+element今日头条管理-表单数据绑定2
  7. BootStrap笔记-popover的使用(popover中放验证码,点击更新)
  8. HDU 1222 Wolf and Rabbit
  9. php 怎么输出alert,php简单提示框alert封装函数
  10. 数据库基础:什么是行?什么是主键?
  11. android百度地图导航功能开发,Android百度地图应用开发基础知识
  12. Java验证导入excel格式
  13. 怎么对文件夹名称进行编号排序
  14. 两张MD5值一样但实际不一样的图片
  15. js中utf8和中文互转的方法
  16. ubuntu(17):ubuntu下wps缺失字体百度网盘永久链接与安装方法
  17. 1 个月将公众号阅读量提高了 2 倍,怎么做到的?
  18. linux安装mysql教程
  19. 欺骗的艺术——第二部分(11)
  20. mysql 编码错误_【分享】MySQl操作系统提示错误编码

热门文章

  1. 50行代码,带你理解梯度下降法(Gradient Descent Method)
  2. 吴恩达深度学习 —— 4.6 前向传播和反向传播
  3. 多线程新浪新闻搜索网络爬虫-基于关键字
  4. Ubuntu su: authentication failure切换用户失败
  5. 11054 - Wine trading in Gergovia
  6. 依图芯片服务器,AI 芯片行业再添硬核新玩家:依图推出云端 AI 芯片 questcore™...
  7. uart ttl通讯测试可以短接吗_精讲!UART、RS232、RS422、RS485,绝了
  8. sqlite 复合唯一索引_sqlite 批量插入, 重复插入(更新)
  9. nginx 访问图片404_Nginx系列:安全下载模块
  10. android权限适配 简书,Android动态权限适配