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


推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 本文介绍了如何将CIM_DateTime解析为.Net DateTime,并分享了解析过程中可能遇到的问题和解决方法。通过使用DateTime.ParseExact方法和适当的格式字符串,可以成功解析CIM_DateTime字符串。同时还提供了关于WMI和字符串格式的相关信息。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了关于汉庭酒店价格的知识点,提供了一篇由congdi7904投稿的技术文章,希望能帮到读者解决相关技术问题。同时还提供了汉庭酒店的官方链接和转载信息。请注意,引用汉庭酒店需遵循CC 4.0 BY-SA版权协议。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
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社区 版权所有