阅读更多

23顶
7踩

非技术

原创新闻 微软,你的软件是驴子Eeyore在设计吗?

2008-03-31 09:34 by 见习记者 yuesc 评论(12) 有5927人浏览

     在微软工程师Eric Lippert的一篇经典的帖子中具体描述了,在增加一个简单的ChangeLightBulbWindowHandleEx 函数到某一块微软的代码时,这个工作中会面临的痛苦的折磨人的细节问题:
• 需要一个5分钟的开发过程实现ChangeLightBulbWindowHandleEx函数。
• 需要一个项目经理撰写规范。
• 需要一个本地化专家审查规范中的本地化问题。
• 需要一个可用性方面的专家审查规范中的关于可访问和可使用方面的问题。
• 需要一个有开发人员,测试人员和项目经理参加的会议商讨安全漏洞方面的问题。
• 需要一个项目经理在文档中要添加安全模型。
• 需要一个测试员写测试计划。
• 需要一个测试更据它的结果更新测试计划。
• 需要一个测试员每天写测试用例并添加到计划中。
• 需要三到四个测试员参加到查找bug的工作中。
• 需要一个人撰写文档。
• 需要一个技术审查人员审查文档。
• 需要一个复制编辑审查文档。
• 需要一个文档管理人员整合新的文档到整个文档体系中,并更新内容和目录等。
• 需要二十五个翻译人员把文档以及其中的勘误信息翻译成所有微软支持的语言。负责这些工作的经理可能住在爱尔兰(负责欧洲地区的语言)和日本(负责亚洲地区的语言),由于严重的时差,他们之间的交流又是一个烦人的问题。
• 最后还需要一个高级经理团队负责协调所有的人,安排支出,核算成本,并且上报给它们的副总裁。

      我觉得有时候在大公司程序员会弄不清设计软件时会有多少工作要做。有时候在外边看来只是添加五行代码的工作,一旦按所有必须的开发流程算起来却是五个人周的工作量。我们在这里谈的是微软,但是这决不是仅限于微软,这里只是众多商业软件中一个简单的例子。
       由此,一个明显的问题就是:对于非商用的开源软件,谁来完成这些工作?大家都知道答案是,“没人”。谁为开源软件开发测试计划?谁来更新屏幕上的用户指南和在线帮助?又是谁负责将文档翻译成波兰语和土耳其语?谁又来负责验证那些特性没有违反美国残疾人法或者德国的隐私法?回想我使用linux时,答案是“没人,并没有测试计划,没有印刷的用户指南,所有的小文档只使用英语,没有人会在意是否遵守反倾销协定或德国的隐私法” 也许现在事情已有改变。
      在这我提一个很现实的问题:是不是开源软件的开发需要按流程实施每个步骤才能使用?可不可以认为,实际上,开源软件大幅削减开发流程不是一个弱点,而是一个有很大好处的改进呢?在一般开发流程中开源软件丢弃的,在普及性和社区化方面获得了十倍多的提升。换句话说,如果Elbonians非常需要本地化的功能,他们可以自己实现这些。同时,开发人员有了更多的时间来实现那些有更大广度和深度的用户需求的功能,而不是为了简单的五行代码去实施一遍整个开发流程。
      不是就有大的商业软件公司曾被自己的开发流程所拖累吗? 但是有时如果你公开的支持和鼓励人们削减流程,宁愿留下事后无法修补的风险和测试费用及本地化的影响;对设计上的需求变更的审问非常苛刻,这样又会使人觉得,要尽量少做一些流程,少做一些功能更改。
      我不禁想起我参加的那么多的专题会议,而其中又是多么小的比例的功能实际的用上了。虽然不是每个功能都是好主意,但是有时某些功能确实能帮助减少开发中的问题。所以Eeyore总是说:“不要丢弃,我们需要支持这些功能,估计任何时刻都有可能需要这些功能来修补程序…”
      要说的太多了,微软的软件设计感觉确实是驴子Eeyore在做的。

 

23
7
评论 共 12 条 请登录后发表评论
12 楼 fade-out 2008-04-02 19:39
Sorry,我觉得有些人误解了-这里描述的其实是对已有功能的修改过程,是要单独立项的。如果每一个函数都这么开发那公司就倒闭了。但是一个小补丁能做成这样,日常的开发控制应该可想而知
11 楼 fade-out 2008-04-02 19:32
这样的开发流程在国外公司很普遍-公司越大控制越严格。
我们公司(澳大利亚的)上个月要把网页上的一个单词report改成reports,总共动用了25个人。我知道的文档就有12份-其中还有相关的法律文件。这是巨无霸公司能存活的保障-任何风险都在可控的范围内,任何人都是可替代的。

反过来看,这也是为什么中国的软件公司大都做不大的原因。中国人比较喜欢在流程上节约。小作坊倒是活得挺好。

顺便回Allen,这不是极端的表现,这是日常工作-因为他是微软。
10 楼 ironsabre 2008-04-01 16:30
实际效果是winxp很好用,很稳定。而且你肯定在用winxp.
9 楼 Allen 2008-04-01 15:10
质量控制的一个极端情况的表现,至于实际效果嘛……
8 楼 cm4ever 2008-04-01 11:49
谁说开源软件做这些工作是"没人"???
开源软件的开发没遵循一定的工序和原则吗?真的省略了很多步骤?
本文作者真的熟悉开源软件那一套吗?
7 楼 sunnychat 2008-04-01 08:24
是的,支持开源,开源是全世界的人民一起做软件,呵呵
6 楼 soci 2008-03-31 23:29
  看上去挺吓人 但过程不可能一个函数一个函数过吧
5 楼 泡泡 2008-03-31 19:03
这就是商业软件和web软件的区别。
4 楼 ironsabre 2008-03-31 17:40
如果存在更好的办法,微软肯定是前几个能找到的公司之一。
如果找不到,那么当前他们用的已经是业内最好的过程。
3 楼 DT1 2008-03-31 14:51
微软果然是非常地商业化,这么多工作无非就是为了保障软件产品的质量,我想这也是他们会占领这么大市场份额的原因之一.
2 楼 QQbyte 2008-03-31 14:50
微软的流程真是超复杂,难怪vista开发了那么多年。
1 楼 pig345 2008-03-31 10:09
大象团队,呵呵突然想到这个词。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • eeyore:可重用软件的元素

    ey 可重用软件的要素抽象工厂我对GoF抽象工厂的不满。 阅读我的博客文章 using namespace eeyore; // register base classes w/ constructor arguments ABSTRACT_FACTORY_BASE_CLASS(button, std::string); ABSTRACT...

  • 说明文档-Eeyore1

    声明语句到程序最后。• 所谓原生变量,是指 MiniC 中使用的变量转到 Eeyore 中对应的变量。相应地,临时变量是指 MiniC 中没有显式对应变量的变量

  • 威泰克斯VX-3208_VX-2508写频软件

    威泰克斯VX-3208_VX-2508写频软件,windows下使用,

  • PyPI 官网下载 | eeyore-0.0.1.tar.gz

    资源来自pypi官网。 资源全名:eeyore-0.0.1.tar.gz

  • Python库 | eeyore-0.0.17-py3-none-any.whl

    资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:eeyore-0.0.17-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

  • MySQL自带密码字典吗?很高大上的感觉哦!

    eeyore fishing football george happy iloveyou jennifer jonathan love marina master missy monday monkey natasha ncc1701 pamela pepper piglet poohbear pookie rabbit rachel rocket rose smile sparky ...

  • 【正则】1302- 快速上手常用正则表达式

     // 你,好 m 多行模式,每行都会一次匹配(^ 每行会匹配一次开头 $ 同理) let str = `1st place: Winnie 2nd place: Piglet 33rd place: Eeyore`; alert( str.match(/^\d+/gm) ); // 1, 2, 33 ...

  • C++语言学习:概述+基于过程的程序设计1

    12、泛型程序设计-------模板函数 所需头文件:template 在定义模板函数时,参数类型设置为elemType #include template void print(elemTpye *pbegin,elemType *pend)//模板函数 { while(pbegin != pend) { cout *...

  • 一文详解CPIM协议:IM服务网关互联互通的桥梁

    在 SIP 协议详解 中提到过一种Sip body消息体格式Message/CPIM,这一节来详细分析介绍一下CPIM消息格式。 CPIM (Common Presence and Instant Messaging) 是一种应用于不同IM即时通信协议中,规范与描述消息体内容的...

  • HBO Max最佳HBO原创作品(2020年5月)

    A Black Lady Sketch Show is giving us the content no one else can like the Basic Ball fashion show that celebrates depressed women (“Eeyore in Dior”) at their finest. Its sketches are full of ...

  • Randy Pausch_卡内基梅隆大学演讲--真正实现你的梦想

    Randy Pausch_卡内基梅隆大学演讲--真正实现你的梦想 2007.9.18 星期二 Randy Pausch’s Last Lecture: Really Achieving Your Childhood Dreams Given at Carnegie Mellon University Tuesday, September 18, ...

  • C++: Essential C++ 读书笔记(chapter3):泛型编程风格概要

    } 在说一下设计思想: 不管何种容器(vector或者list) 他们的 iterator迭代器,都会实现上述基本的运算,我们可以大胆猜测,这些基本的运算是通过 iterator 的 inline内联函数实现的,不同的是: vector : 递增...

  • [JavaME]手机申请移动分配的动态IP?(2)

    体验STL.NET[翻译] zengyi820 2004-10-07 为了更好的使STL适合.NET开发,Visual C++产品组,在2005版的Visual C++中重新设计了STL,并命名为STL.NET,从Beta1版本的产品中开始提供。在STL.NET的设计中,STL的实现使用...

  • [转]兰迪.波许的最后讲座:真正实现你童年的梦想(中英文对照)17

    她的杰出工作表明,尤其是对女中学生,如果你把编程作为一个讲故事的活动,他们非常愿意学习如何写计算机软件。所有有史以来最好的障眼法奖去授予凯特琳 . 凯乐荷的论文。 President Cohen, when I told him...

  • VScode的python环境配置以及相关插件的推荐

    你只需在颜色上悬停光标,就可以预览色块中色彩模型的(HEX、 RGB、HSL 和 CMYK)相关信息了。 CSS Peek Allow peeking to css ID and class strings as definitions from ...

  • 编译原理——SysY编译器实践报告

    实现将C语言自己SysY分别转换成两种中间表示Eeyore和Tigger,以及最终的Risc-V指令。 使用如下命令生成Eeyore中间表示: ./main -S -e test.sy -o test.S 使用如下命令生成Tigger中间表示: ./main -S -t tigger.sy...

  • 基于Qt开发的截图工具- 支持全屏截图, 支持自定义截图,支持捕获窗口截图,支持固定大小窗口截图,颜色拾取,图片编辑

    基于Qt开发的截图工具.zip 截图工具(QScreenShot) Qt编写的一款截图工具。 特点 - 支持全屏截图 - 支持自定义截图 - 支持捕获窗口截图 - 支持固定大小窗口截图 - 颜色拾取 - 图片编辑 - 图片上传到wordpress 环境 Qt6.2 QtCreate 8

  • 毕业设计&课设_ 校园活动管理系统,优化校园活动组织流程,涵盖多方面功能模块的便捷平台.zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

  • 毕业设计基于ASP.NET技术的班级展示网站构建(源代码+论文).zip

    基于ASP.NET技术的班级展示网站构建资源,是一套针对教育机构或学生团体,旨在通过ASP.NET框架开发班级风采展示平台的指导资料或教程。此资源详细介绍了如何利用ASP.NET的强大功能,快速搭建一个功能完善、界面友好的在线班级展示平台。 该资源涵盖了从需求分析、数据库设计、前端页面制作到后端逻辑实现的全过程。通过实例演示,指导用户如何设置班级信息、学生风采展示、活动公告、图片上传与浏览等核心功能模块。同时,结合ASP.NET的MVC架构,实现了前后端分离,提高了代码的可维护性和可扩展性。 此外,该资源还提供了丰富的代码示例和注释,帮助开发者深入理解ASP.NET框架的工作原理,掌握如何运用其强大的数据库操作、用户认证与授权等特性。对于初学者来说,这是一份难得的入门教程;而对于有一定经验的开发者,则是一份提升技能的参考资料。 总之,基于ASP.NET技术的班级展示网站构建资源,是教育机构和学生团体实现班级风采在线展示的理想选择,也是开发者学习ASP.NET框架应用的宝贵资源。

  • 基于springboot的流浪动物管理系统源码数据库文档.zip

    基于springboot的流浪动物管理系统源码数据库文档.zip

Global site tag (gtag.js) - Google Analytics