热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

事实与谎言-软件工程

人(People)1)程序员的质量是软件工作中最重要的因素2)最好的程序员最多可能有28倍于最差的程序员3)延迟的项目后期加人手只能使项目

(People)

1)        程序员的质量是软件工作中最重要的因素

2)        最好的程序员最多可能有28倍于最差的程序员

3)        延迟的项目后期加人手只能使项目交付工期延迟的更多

4)        工作环境对生产力和质量有深刻的影响

工具和技术 (Tools and Techniques)

5)        工具的宣传和广告是软件公司的灾难

6)        使用新的工具和技术起初会损失一点生产力和质量

7)        软件开发人员对工具谈论的很多却实际使用的很少

项目估计 (Estimation)

8)        失败的项目的两个原因之一就是糟糕的项目估计

9)        项目估计常常在错误的时间发生

10)     项目估计常常由错误的人完成

11)     项目估计很少在项目进行中进行修正

12)     项目管理人员往往和开发人员脱节

13)     可行性研究的回答永远是‘Yes

重用 (Reuse)

14)     小规模的重用就是一个解决的问题

15)     中规模的重用主要是一个没有解决的问题

16)     大规模的重用在产品家族或相关系统中最能体现出来

17)     可重用的组件比一般组件开发难度大三倍

18)     对可重用代码的更改特别具有出错的倾向

19)     代码重用问题的解决方案是设计模式重用

需求 (Requirements)

20)     失败的项目的两个原因之一就是不确定的需求

21)     需求的理解错误是生产中修正代价最昂贵的

22)     需求错误的修正中最难修正的就是需求丢失

设计Design

23)     当模糊的需求增长的时候,相应解决方案产生的需求呈现爆炸性的增长

24)     很少有一个软件问题的最佳解决方案

25)     设计是复杂的螺旋的过程,初始的设计通常是错误的,至少肯定不是最佳的

编码Coding

26)     设计者的初衷很少和编码者的初衷相匹配

27)     COBOL是非常糟糕的语言,但其他语言更糟糕

28)     修正错误 (Error Removal)

29)     修正错误是软件生命周期中耗时最多的

测试 (Testing)

30)     软件测试通常只有55%-60%的覆盖率

31)     100%的覆盖率也远远不够

32)     测试工具是关键,但很少被使用

33)     自动化测试很少能做到,大部分测试活动不能被自动化

34)     程序员写的内嵌的调试代码是测试工具的重要补充

代码检查Reviews and Inspections

35)     严格的代码检查可以在进行测试之前去除最多90%的错误

36)     严格的代码检查不能代替测试

37)     项目交付后的Review,项目完工后的总结非常重要但很少发生

38)     检查不仅是技术上的,也有设计上的,流程上的,和项目管理上的。

维护Maintenance

39)     维护通常占到40%-80%的软件成本。这可能是软件生命周期中最重要的。

40)     功能增强(Enhancements)占到维护成本的60%

41)     维护性是整体解决方案的一部分,而不是一个后来才出现的问题

42)     对现有软件的理解是维护中最困难的部分

43)     更好的方法带来更好的维护性,而不是更麻烦

质量Quality

44)     质量是属性的集合

45)     质量不是用户满意,而是满足设计需求,符合项目计划和成本要求,以及可靠性。

可靠性Reliability

46)     很多错误是大部分程序员都会犯的

47)     很多错误很可能聚集在某处

48)     没有单个的最佳方案来解决所有问题

49)     错误永远存在。目标应该是最小化错误,或者消除严重的错误,不影响软件的正常使用。

性能Efficiency, performance

50)     高性能更多的来源于优秀的设计而不是编码

51)     高组织的高级语言代码最多能获得90%的汇编程序性能

52)     提高性能需要在时间和空间上做折中 (Tradeoffs)


推荐阅读
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • c# – UWP:BrightnessOverride StartOverride逻辑 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文将介绍由密歇根大学Charles Severance教授主讲的顶级Python入门系列课程,该课程广受好评,被誉为Python学习的最佳选择。通过生动有趣的教学方式,帮助初学者轻松掌握编程基础。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
author-avatar
mobiledu2502902687
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有