热门标签 | 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)


推荐阅读
  • java datarow_DataSet  DataTable DataRow 深入浅出
    本篇文章适合有一定的基础的人去查看,最好学习过一定net编程基础在来查看此文章。1.概念DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据 ... [详细]
  • 汇编语言标识符和表达式(四)(表达式与符号定义语句)
    7、表达式表达式是程序设计课程里的一个重要的基本概念,它可由运算符、操作符、括号、常量和一些符号连在一起的式子。在汇编语言中,表达式分为:数值表达式和地址表达式。(1)进制伪指令R ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 个人博客:打开链接依赖倒置原则定义依赖倒置原则(DependenceInversionPrinciple,DIP)定义如下:Highlevelmo ... [详细]
  • Java高级工程师学习路径及面试准备指南
    本文基于一位朋友的PDF面试经验整理,涵盖了Java高级工程师所需掌握的核心知识点,包括数据结构与算法、计算机网络、数据库、操作系统等多个方面,并提供了详细的参考资料和学习建议。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 如何使用Maven将依赖插件一并打包进JAR文件
    本文详细介绍了在使用Maven构建项目时,如何将所需的依赖插件一同打包进最终的JAR文件中,以避免手动部署依赖库的麻烦。 ... [详细]
  • iOS如何实现手势
    这篇文章主要为大家展示了“iOS如何实现手势”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“iOS ... [详细]
  • 将XML数据迁移至Oracle Autonomous Data Warehouse (ADW)
    随着Oracle ADW的推出,数据迁移至ADW成为业界关注的焦点。特别是XML和JSON这类结构化数据的迁移需求日益增长。本文将通过一个实际案例,探讨如何高效地将XML数据迁移至ADW。 ... [详细]
  • Android 开发技巧:使用 AsyncTask 实现后台任务与 UI 交互
    本文详细介绍了如何在 Android 应用中利用 AsyncTask 来执行后台任务,并及时将任务进展反馈给用户界面,提高用户体验。 ... [详细]
  • Adversarial Personalized Ranking for Recommendation
    目录概主要内容基础对抗扰动对抗训练细节代码HeX.,HeZ.,DuX.andChuaT.Adversarialpersonalizedrankingforrecommendatio ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 本文介绍了使用Python和C语言编写程序来计算一个给定数值的平方根的方法。通过迭代算法,我们能够精确地得到所需的结果。 ... [详细]
  • 本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ... [详细]
  • MVC模式下的电子取证技术初探
    本文探讨了在MVC(模型-视图-控制器)架构下进行电子取证的技术方法,通过实际案例分析,提供了详细的取证步骤和技术要点。 ... [详细]
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社区 版权所有