会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 软件工程必看——10条你最容易忽视的经典法则!

软件工程必看——10条你最容易忽视的经典法则

时间:2025-11-04 23:12:25 来源:益强数据堂 作者:系统运维 阅读:460次

 

本文列出了10条经常被忽视的软件容易软件工程法则,包括康威定律、工程布鲁克斯定律、条最扎温斯基定律、忽视帕金森定律、经典法帕累托法则、软件容易斯特金的工程启示、彼得原理、条最Eagleson 定律、忽视Greenspun 的经典法第十条编程规则以及冰山谬论。

在进行软件开发和产品设计的软件容易时候,有一些经典又有重要参考价值的工程法则常常被忽视,而忽视这些法则又会让开发者走一些弯路。条最

因此,忽视小编在这里放上10条最容易被忽视的经典法10条软件工程法则,大家可以作为参考:

1. 康威定律(Conways Law)

任何设计系统的组织,其设计的结构都是该组织沟通结构的复制品。

你可能会认为,通过不同层级的会议以及股东的更新和决策,这个状况可以得到避免,但是实际是亿华云,冲突或分歧发生的优先级,将导致同样冲突和分歧的过程和结果,从而影响整个设计的结构。

2. 布鲁克定律(Brookss Law)

“给一个迟来的软件项目增加人力会使它更迟。”

当你意识到你没有取得预期的进展,并且管理层试图重新分配人力资源时,那么项目不仅会更加推迟,而且最后很可能会交付一个更加脆弱、更复杂的产品。

3. 扎温斯基定律(Zawinskis Law)

“每个程序都试图扩展,直到它包含了一个web服务器。那些不能扩展的项目会被能够扩展的项目所取代。”

4. 帕金森定律(Parkinsons Law)

工作完成的时间会影响工作的量"

在这里,主要的项目管理经验是,如果你不为概念性的里程碑设定大概的最后期限,那么项目将永远不会完成。这也说明了在固定的时间线上迭代最小可行产品的源码下载重要性。

当然,我们也可以根据数据、处理能力、RAM等等来调整这条法则:

在使用完所有可用的存储空间/带宽/周期/RAM之前,数据/CPU/内存的使用会一直扩展

实际上,32GB对任何人来说都足够了,对吧?

5. 帕累托谬论(Paretos Fallacy)

帕累托原则很容易被曲解,尤其是被管理层曲解。这通常会导致帕累托谬论:

“当你完成了80%时,你会认为你只剩下20%了。”

这里忽略的关键部分是,这20%,其实需要你投入80%的时间。

6. 斯特金启示(Sturgeons Revelation)

所有部分的90%都是无用的。

是的,你的产品也包含在内。

7. 彼得原则(The Peter Principle)

在等级制度中,每个员工都倾向于升到他们不能胜任的级别。因此,服务器租用随着时间的推移,每个岗位都有可能被不称职的员工占据。”

8. Eagleson定律(Eaglesons Law)

任何你自己的代码,如果你有6个月或更长的时间没有查看,就好像是别人写的一样。

实际上,6个月已经相当乐观了。

不过,有一点需要注意,那就是“Yo mom推论”:

只有原作者才可以批评代码;任何其他的负面反馈都会被驳回。

9. Greenspun编程的第10条规则(Greenspuns 10th Rule of Programming)

任何自定义开发的身份验证系统都包含一个特别的、非正式指定的、充满错误的、缓慢的Kerberos实现。

这可以概括为普遍的NIH规则:“任何定制开发的系统都包含一个临时的、非正式指定的、有bug的、缓慢的执行,而这些执行的对象有一半都是你拒绝使用的工业界标准。”

10. 冰山谬论(The Iceberg Fallacy)

新软件产品的开发成本仅占所有权管理的总成本和预算的25%。

对于运维来说,有一句格言是这么说的:

“如果软件维护占总拥有成本的75%,那么运营支持就是剩下的75%。

(责任编辑:IT科技)

推荐内容
  • 纽麦平板电脑拆机教程(一步步教你拆解纽麦平板电脑,让你轻松掌握拆机技巧)
  • windows 7系统如何去除PNG图标的边缘阴影效果
  • ubuntu打开的正确方式(笑)在这个快节奏的时代。能够使用最快速度最低代价完成任务具有非常重要的意义,对于现代开发者来说,Linux是生活中必不可少且不可替代的工具,假如我们在开发少或学习中少一些遇到环境的坑,会节省很多时间,潜伏在各种Linux群中数年,发现大家都有手贱(操作失误,笑),因此在本文中给出终极解决方案: 直接使用Ubuntu Live CD 来完成系统的启动。那么最快的Linux安装办法又是什么呢?其实经过严谨的思考之后我个人觉得是不安装。我们可以准备从grub启动ubuntu操作系统把系统放到内存中,再预制出各种情况的环境包,也就是环境模块化,因为系统是在整个内存中所以速度非常非常快,需要模块化的内容并不多,比如说ssh vim tmux 为一组工具,开机后一个命令就可以激活工具包,不到几秒钟的时间即可完成,其他的如Chrome浏览器一类的都可以快速完成在内存上的安装。通过这种方式让环境更加灵活更加快速准备好开发环境。这是一个思路上的变化,从我需要什么就安装什么一起都准备好给你用->变成了只启动基础的系统然后我需要什么我就后加载什么。最后的准备在于容器,Docker 以及RKT与RunC的准备,在团队内可以秒级推送运行的环境。本文依然有它的缺点: 主要体现在两个方面假如默认驱动不好使会造成很多麻烦。对于内存小的开发机器还是做快照比较好。最少4G内存,我们推荐内存在8G以上最好是16G或者32G内存的机器上采用此方案。因为本方案整个操作系统都是加载到内存中的,硬盘速度即为内存的速度,我这里实测可以达到4.5Gb/s,所以你准备好屌丝逆袭(买不起SSD)秒杀高富帅了吗?ubuntu对于它的简单介绍可以参考这里。当然对于我本人而言选择Ubuntu主要原因仅仅是对他比较熟悉。并不限制使用什么发行版本。假如您要是选本方案搭建环境,并且选择其他发行版本请选择LiveCD尽量小一点的,假如能自己裁剪LiveCD就更好了,另外尽量选择64位架构。当然自己越熟悉越好。虽然Ubuntu有一点不自由,但是我个人觉得包的质量管理还是非常好的,的确适合开发者使用。Docker官方:https://www.docker.com/它对于我来说,几乎就像是水,假如没有他就没有今天的丰富多彩的运行方式,它可以让程序连同环境一起打包运行,使得部署备份等等非常方便,对于本次环境构建而言我们可以在个人的registry上备份自己的环境,只需要一小段时间就可以克隆回来。再加上现在各种永久免费的国内加速服务这种环境部署就是程序员天堂。更多细节请关注这里。在本文中我们使用单文件版本的Docker文件,方便可控。无任何累赘。本人不喜脚本安装。RunC && RKT这两种产品是libcontainer的代表。相对于Docker来说,它是一个容器只需要一个进程,对于Docker来说,他需要一个守护进程。在本文中(本博主)不评价任何产品的好坏,只说什么时候适合用什么。当然在我们这里利用了它启动方便,挂载方便的特性让我们的工作更方便更方便更方便!由于现在RunC还没有发布1.0版本文档几乎没有,因此我这里会给出我的详细研究结果。至于RKT还是大家自己摸索,文档已经很全了。CoreOS作为专门运行容器的操作系统,稳定性可不属性都是前所未有,当然我们的容器可以跑在这个上面本文中会提及两个系统的兼容性方案。Ubuntu适合程序开发的情况。启动速度可能在1分钟左右(有点慢)。但是有图形界面,有定制基础环境的方案。CoreOS适合跑程序,启动速度在10秒以下适合释放更多内存来跑临时业务,做测试的时候实用此方案。从Grub开始什么是Grub它可以装在硬盘上帮助你启动操作系统,几乎所有操作系统都可以,当然也包含本次的方案内容。安装方式有很多种。而且必须得根据自己的情况来安装。因为每个人电脑上的操作系统情况都不一样,有的已经有系统了。有的不想给自己装引导。可能先放到u盘上引导都有可能。因此这里不做安装方法上的更多描述可以自己根据情况到搜索引擎上搜索。Grub 的安装我之前是安装了windows,所以我直接安装了EasyBCD然后安装NeoGRUB来实现的。具体操作步骤如下:下载安装EasyBCD如图所示安装重启电脑之后选择Grub启动项可以进入一个类似输入命令的界面即可确定完成安装。Ubuntu 启动配置启动准备假如想要准备启动Ubuntu那么有三个关键要素,ubuntu-14.04.2-desktop-amd64.isoimage中casper/vmlinuz.efiimage中casper/initrd.lz这三个文件作为启动的必要文件请放到分区中容易找到的地方。推荐做法:给自己的硬盘上开个EXT4 分区,然后把三个文件丢到里面去。启动参数调试工作中我们讲求流程,当然我们也需要一定的路程,我们不可能一次调整就成功把ISO启动起来。因此我们先加一个调试流程。root (hd0,1)kernel (hd0,1)/casper/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu-14.04.2-desktop-amd64.iso ro quiet splash locate=en_US.UTF-8initrd (hd0,1)/casper/initrd.lz你需要看清楚把文件放到了第几块硬盘上,第几块分区上。组成参数为(hd0,1)(我的是0号硬盘第二个分区)。假如你实在分不清可以参考这里。root (hd0,1) 设置GRUB的root设备kernel 命令套格式,变化参数 vmlinuz.efi 和 ubuntu-14.04.2-desktop-amd64.iso 要与你放到硬盘上的位置对应,可以使用Tab自动补全非常实用。initrd 依然是套格式找到对应硬盘傻姑娘的initrd.lz的位置。假如出现错误了按↑会出现刚才的命令,多加修改直到成功启动。启动参数放到硬盘中假如是NeoGrub配置文件路径C:/NST/menu.lst,其他的请参考说明文档,一般都会有的。配置文件写法:timeout 3default 0title Ubunturoot (hd0,1)kernel (hd0,1)/casper/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu-14.04.2-desktop-amd64.iso ro quiet splash locate=en_US.UTF-8initrd (hd0,1)/casper/initrd.lz3秒等待自动选择第一项,名称ubuntu 别的剩下的就是刚才调试内容的命令了。完成刚需配置刚醒需求配置是指在容器之外的刚醒需求配置,比如说编辑器,SSH等等工具箱。配置方法: APT。修改安装源:sed -i ‘s/archive.ubuntu.com/mirrors.aliyun.com/g’ /etc/apt/sources.list && apt-get update安装你需要的软件包:apt-get install -y vim screen tmux ssh-server等等调试你的环境看看是否好使,然后复制文件夹/var/cache/apt/archives中所有deb文件即为您刚才所有的安装包。复制到一个可以持久化的文件夹中等待使用。回调环境: 每当您重新启动之后这些安装包即消失,想恢复,进入到上一步中复制到的文件夹中执行如下命令dpkg -i *即可安装预先准备好的软件灵活使用,此步骤为发挥组合拳威力的一步。当您反复定制凝练您的安装包之后,会根据个人情况选择不同的目录来初始化您的环境,其结果是,又小又轻,非常可靠。再也不怕手贱导致环境崩坏,再加上外部的git服务保证工作内容的安全性基本上可以肯定的说:我们的环境与硬件与工作耦合度降低不少.对于APT无法安装的内容,比如说JDK 与定制版本的Eclipse您可以通过下载完之后持久化保存到硬盘中,写一个脚本解压后放到硬盘中至于环境直接写入到profile中即可。使用此方法之后假如您使用IDE真的会有一个非常非常大的速度提升,我打开Eclipse C/C++ 5秒钟即可。容器安装配置一般情况下我们安装Docker都是通过网上下载脚本安装,但是这种情况下我们推荐使用直接下载单文件版本的来完成安装安装脚本如下:curl -sSL -O https://get.daocloud.io/docker/builds/Linux/x86_64/docker-latestchmod +x docker-latestmv docker-latest /usr/bin/dockerdocker -d &在第三行中复制docker程序到任何Path下的文件夹内备用。在配置上,还是要吧/var/lib/docker放到可持久化的软连接下面。比如说按照下面的操作:rm -rf /var/lib/dockerln -s /isodevice/docker /var/lib/docekr按照这种方法操作可以让docker image 持久化保存在硬盘中。重启也能找回来。这里注意,假如您之前就实践了CoreOS 171.3 版本上的Docker它使用的是1.6版本他的存储文件格式与1.7的不同因此不通用。我就踩到这个坑了。接下来的操作就与Docker一样了。注意:这个安装包: cgroup-lite_1.9_all.deb 一定要装,默认的光盘中就差这一个依赖,在下面的安装包中有要不就apt安装保存下来都可以。材料准备我在百度云盘中准备了三个文件,第一个是docker 1.7.1 第二个准别了vim screen ssh-server tmux CGroup的安装包。最后一个把我常用的Docker images 打包放出来了。其实在准备这个方案花最多时间就是在于精简依赖,最后发现只需要一个CGroup安装包。总结在本段文档中,我们给出了一个全新的使用Linux操作系统的思路不安装。并且做了一定的前期准备工作。启动了Linux操作系统做到本步骤假如您是新手就可以开始Linux的学习旅程了,假如您是需要此方案工作已经可以展开一般性质的工作了。最后我真的拆掉我的三爽垃圾ssd(越用越慢)直接上内存。方案合理要素:root权限过大。有时导致无法挽回的误操作。现在的电脑内存不是很贵。大部分Linux电脑内存都在闲置。Linux操作系统假如每次执行的任务假如比较单一(一台物理机只给一个人用)真的不会很大。给重新启动计算机赋予了新的意义。真正超过SSD的速度,成本更低。(实测启动Eclipse C/C++ 仅需要5s)
  • windows 7怎么安装语言包?windows 7安装英文语言包教程图解
  • 华为ALE-CL00手机评测(一款实用性强、性价比高的智能手机)
  • 怎样恢复Windows7鼠标右键新建中记事本功能