今天与十年前类似的功能软件相比,我们今天开发的软件很大,运行任何现代软件所需的内存和资源都非常高,增强的用户体验和功能只是增加的大小的一部分,原因还有更多。
所有现代设计模式、代码架构等都是教会我们如何应对这种复杂性,而不可能从根本上消灭它。
两条法则非常准确地反映了现在软件开发的状态:
1.?内存越来愈大,软件扩展了才能填充可用内存。
2.?硬件却变得越来越快,但是软件变得慢更多。
简化软件的方法在于用训练有素的方法将其返回本质。
“FAT软件”的原因
导致复杂性的一个主要原因是软件拥有的功能太多,这些不一定都是使用时所必需的功能,我们不断添加新功能和扩展,并且与原始系统的任何不兼容性将被忽略或传递无法识别。
当系统的强大到通过功能数量来衡量时,?数量变得比质量更重要?,每个新版本都必须添加功能,即使它真的不需要添加任何功能。
1.所有功能,所有时间
软件的单体设计是使软件复杂化的主要原因之一,每个可以想象得到的功能都是系统设计的一部分,随着时间的推移,大多数功能都变得无关紧要,但会继续对系统产生影响。
2.对某些人来说,复杂性就是力量。
去除一些不必要的灵活性并使事情标准化以降低复杂性和提高可维护性时,PM当时的反应至今记忆犹新。
不可理解性应引起人们的怀疑,而不是钦佩。
3.没有足够的时间
时间压力是笨重软件的首要原因。我们没有足够的时间从代码中删除已弃用的功能并改进我们认为可接受的解决方案。
六种办法帮助保持软件“精益”
1.?强类型语言
使用强类型语言有助于以更简单的方式设计复杂系统,它允许编译器精确定位错误和接口,并且可以更自信地使用和更改抽象。
2.找到适当的分解
系统应该被分解成模块,模块应该被分解成组件,组件应该有单一的责任,整个系统应该在层次结构中进行分解,同时最小化复杂性并且去除重复代码。
3.可扩展性
可扩展性是保持系统从一开始就简化的先决条件。它还允许定制系统以适应新的更改和删除已弃用的扩展。
4.永远不应该构建复杂的软件
认为复杂系统需要设计师和程序员的纪律是不正确的,完全无法理解的系统,至少在单个个体的重要程度上,应该永远不会建立起来。
5.沟通是关键
随着时间的增长,沟通问题变得占主导地位,复杂的团队结构促成复杂的软件。
6.降低复杂性应该是目标
降低软件的复杂性和规模应该是每个开发步骤的目标,在系统规范中,对于详细的编程设计?-?每个步骤都必须有意地消除系统中任何不必要的复杂性。(138-2882-1502微电同号)
汇新云—全球专业的软件采购、定制产业链服务平台。
致力打造专业的IT协同产业链平台,采用共享经济的理念和智能匹配的模式,利用全球IT资源,建立软件服务生态圈,实现软件在线研发、软件在线交易、软件供应链服务,解决商业模式创新、软件工程化设计、软件研发、测试、产业投资等需求,打造全球专业的软件采购、软件定制、软件开发产业链服务平台。
网友评论