你优化系统的目标是什么?

标签: 综合新闻 | 发表时间:2013-05-23 07:47 | 作者:
出处:http://www.oschina.net/?from=rss

让我来给你们讲一个故事:当我在大学的时候,我选了一门“高级”面向对象编程课程。以前从来没有接触过这种知识,这个课程使用 SmallTalk这种语言教学,而且教学方式非常特别;第一天,教授给我们布置了一个将会贯穿整个4周课程的作业。

我们非常兴奋,因为这是要编写一个游戏。一个老式的文字输入式的冒险游戏,类似于 Zork风格。我们分成3人一组,来到教授拥挤的小屋里。在那里,教授给了我们一页纸,上面写着一些说明。从那里返回时我们几乎是一路小跑。

而就在我们刚要出门时,教授把我们叫了回去(我相信他是特意选了这个最佳时机):

“哦,我差点忘了。两个星期后,我会对这个游戏内容做一些大的修改。你们要继续按修改后说明开发。”

我跟很多的软件开发团队(包括一些软件产品创始人)说过这个故事,他们的反应几乎都一样:

  • 你能在屋里听到笑声。至少是咯咯的笑。经常你还能一些“不会吧”等话
  • “哦,老兄,这也太没谱了吧!”
  • “这教授这么难为人吗——怎么可能有这样的任务”

问题就在于,教授并没有告诉他将会做什么样的修改。只是说会修改 一些东西——两周后。

你认为我们该如何去完成这个任务?

我们开发时处处设防。

  • “哦,不行——如果教授打算改动这个怎么办?”
  • “也许应该把这里做成接口——万一教授要求用不同的方式实现它呢?”
  • “不行——我们应该把这部分提取出来,这样,当我们修改这部分时就不需要改动模块X了”

这就是我们的做法。我最想说的是,这是一个非常好的作业任务,它让我在面向对象编程和Smalltalk方面学到了很多。感谢你,我们的 Davidson教授!

最终,我们做成了一个非常模块化的系统,这使对它们的修改变得很容易。当那一天终于到来,当游戏设计被修改后,我们通过努力在一天内就按照要求修改了程序,使我们能顺利的接着开发界面和怪兽等很酷的部分。

我们为以后的改变而优化系统。因为Davidson教授告诉我们变化很快就会来到。

第二个故事

让我来给你们讲一个故事:这是关于大概25年前开发的一个系统的故事。它是一个瑞典大公司的重要业务系统。我说这是一个重要业务系统,是因为它处理的业务是公司80%的收入来源。

自打一开始,他们就思考的面面俱到,保留的极详细的文档。他们还制定了一套严格的需求变更规范。他们要求尽量避免这样的系统里的变更,因为风险很大,一旦出错会造成巨大的影响。

公司如此为这种事情担心,以至于他们编写了一系列的措施来预防系统出现问题;所有的代码要经非代码原作者的第二人用伪代码注释一遍。而且测试工作不能由代码的作者来执行。

同样,也制定了各种风险管理措施,来管控软件规格说明书的制定。写规格书的人被分成了几个等级,以此确保在递交给相关IT业务部门前经过层层检查。

很 快25年过去,如今这些编写文档和管控风险的部门仍然在忙碌。这套措施很少出问题,但却效率很低。一个修改从列入计划到提交到产品中大概要30周的时间。 一个想法到正式被写入规格说明书要经过20多个不同级别人的审批。拿着这种说明书的程序员都称自己为“施工人员”,因为他们实际的工作是把伪代码翻译成 COBOL语言。

所有围绕这个系统做的事情都是为了掌控风险和需求变更,把稳定放在第一位。他们认为只要修改就会产生意外。但不幸的是,对于一个业务来说,唯一可能发生的事情就是:改变。而且改变的频率会越来越高。

他们为稳定而优化系统。

我想强调一点,第二个故事里的这种想法的人在生活中不占少数。他们是很优秀的人,但他们却被安排去开发以稳定为第一位的系统。这才是真正的风险。

结论

这两个故事让我思考很多:

  • 如今我在写代码时是以何目的而优化?
  • 变化随时都会到来。我从开始就知道。“在这个系统运行的25年里我将会不断的修改它的规格说明书”。我该如何去应对这种事情?
  • 我是如何看待变化,把它当成风险?还是当成一种驱动?能够快速的应对改变是一种商业优势,是一种管控风险的良方。我如何让我的代码更容易改变?
  • 在一个将要进行大量修改的系统里,什么样的文档才能满足我?

你优化系统的目标是什么?

相关 [优化 系统 目标] 推荐:

你优化系统的目标是什么?

- - 开源中国社区最新新闻
让我来给你们讲一个故事:当我在大学的时候,我选了一门“高级”面向对象编程课程. 以前从来没有接触过这种知识,这个课程使用 SmallTalk这种语言教学,而且教学方式非常特别;第一天,教授给我们布置了一个将会贯穿整个4周课程的作业. 我们非常兴奋,因为这是要编写一个游戏. 一个老式的文字输入式的冒险游戏,类似于 Zork风格.

PostgreSQL系统配置优化

- - 数据库 - ITeye博客
原文: http://blog.csdn.net/xto/article/details/5403782. PG的配置文件是数据库目录下的postgresql.conf文件,8.0以后的版本可支持K,M,G这样的参数,只要修改相应参数后重新启动PG服务就OK了. shared_buffers:这是最重要的参数,postgresql通过shared_buffers和内核和磁盘打交道,因此应该尽量大,让更多的数据缓存在shared_buffers中.

Android 4.0.3来了 优化系统

- - 移动App
最近发现谷歌对Android态度有个趋势,越来越关注Android的系统优化这快 包括硬件加速 ,内存优化等,这不今天更新了Android 4.0.3最大的提升是硬件优化方面. 新版 Android 包括了面向平板和手机平台的系统优化和漏洞修复,以及面向开发者的少量新 API. 新 API 包括联系人程序支持服务社交流 API,日历程序支持服务改进,新的相机性能(应用可检查和管理视频稳定性,必要时可利用 QVGA 分辨率文档),已经提供了易用性(文本转语音引擎采用新的状态和错误报告).

MacOptimizer-Mac系统优化清理应用

- - 无名小卒
         Windows系统共可以使用360清理垃圾,是系统保持在一个最优状态. 同样Mac系统也需要一款优化软件. MacOptimizer 就是款 Mac 专用的最优化系统清理工具. 如果你感觉系统速度不如以前顺畅、程序常常运行缓慢,建议你用MacOptimizer来进行修复和优化.           MacOptimizer 提供包括清理缓存(Cache)、优化、维护、系统设定等主要功能,最大的目标就是帮助使用者实现 Mac 系统的良好体验.

linux 系统优化tcp连接

- - 操作系统 - ITeye博客
最近几天 系统不太稳定, tcp/ip 连接超级多,估计应用服务器到极限了. 网上看到了一片好文,随抄在这里了,感谢原作者. 原文连接: http://blog.renhao.org/2010/07/setup-linux-kernel-tcp-settings/#more-162. 提高服务器的负载能力,是一个永恒的话题.

系统性能优化系列

- - IT瘾-tuicool
之前组内一位大佬分享了一些关于系统性能优化方面的干货,这里我将它整理成文并且加入自己平时常用的一些工具和技巧. 由于关于系统性能优化涉及的内容非常多,我会分几篇文章来分享. 这次分享下 定位系统层面问题的常用方法. Throughout 吞吐量 (系统每秒钟可以处理的请求数). Latency 延迟 (系统处理一个请求的延迟).

系统架构性能优化思路

- - DockOne.io
今天谈下业务系统性能问题分析诊断和性能优化方面的内容. 这篇文章重点还是谈已经上线的业务系统后续出现性能问题后的问题诊断和优化重点. 我们首先来分析下如果一个业务系统上线前没有性能问题,而在上线后出现了比较严重的性能问题,那么实际上潜在的场景主要来自于以下几个方面. 业务出现大并发的访问,导致出现性能瓶颈.

Windows 7 系统优化误区多多!你执行这些优化了吗?

- 晨之晖 - 爱玩电脑
  谁都希望让自己的电脑运行更快,因此每当新系统装好后,很多人都习惯于到网上去找所谓的“优化秘籍”. 大多数“优化秘籍”其实并不可靠,有些不适用于Win7系统,而有些则明显是以讹传讹,参照其设置后非但不能提速,反而会产生一些负作用,因此对于这类操作一定要慎之又慎. 下面笔者就简单列举几项,看一看你有没有“中过招”.

国际搜索离线系统优化之一 —— 全局排序优化

- - 搜索技术博客-淘宝
总觉得阶段性的总结是个好习惯,很多自己做的事情,如果不及时总结一下,过一段时间就忘记了,当要用到时,又需要花费较多的时间去重新熟悉. 于是决定抽点时间总结一下以前对国际搜索离线系统做的一些优化(这里说的国际搜索,主要指AE、SC和SC店铺,AE即AliExpress,SC即Sourcing,这些优化对这几个应用都是通用的),不仅起到一个备忘的作用,如果能给读者带来一些启发,想必也是极好的.

性能优化的方法和技巧:系统

- tiod - 弯曲评论
从系统层次去优化系统往往有比较明显的效果. 但是,在优化之前,我们先要问一问,能否通过扩展系统来达到提高性能的目的,比如:. Scale up: 用更强的硬件替代当前的硬件. Scale out: 用更多的部件来增强系统的性能. 使用更强的硬件当然和优化没有半点关系,但是如果这是一个可以接受的方案,为什么不用这个简单易行的方案哪.