楼主: tang2049

歪说软件工程

[复制链接]
论坛徽章:
7
六级虎吧徽章
日期:2009-03-30 21:56:32
41#
 楼主| 发表于 2006-9-29 19:37 | 只看该作者
歪说软件工程37 - 帕斯卡

话说“软件开发的过程就是人们使用各种计算机语言将自身关心的现实世界映射到计算机世界的过程。

数字计算机的先驱——第一台加法机,是1642年由法国科学家、数学家兼哲学家莱斯.帕斯卡(Blaise Pascal)设计的。这个装置使用了一系列有10个齿的轮子,每个齿代表从0到9的一个数字。轮子互相连接,从而通过按照正确的齿数向前移动轮子,就可以将数字彼此相加。后来Pascal这个伟大的名字被用来为一种广泛使用的计算机语言命名,Pascal语言经过不断发展,注入了面向对象、可视化、RAD(Rapid Applicatioin Development)等最具活力的要素,就变成了现在我们所用的Delphi。”

上文摘自《Delphi面向对象编程思想》一书。

使用道具 举报

回复
论坛徽章:
7
六级虎吧徽章
日期:2009-03-30 21:56:32
42#
 楼主| 发表于 2006-9-29 19:38 | 只看该作者
歪说软件工程38 - 温室公民

话说老Y有一次打时光的士去了一趟未来,知道整个地球大气上给盖了一层膜,起着“中央空调”的作用,地球上的每个地方气候都在其控制下,人居住的地方都是四季如春,但该冷的北极、南极还是冷的。一般来说人根本没有可能接触酷热或者冰冷的自然空气,但据说曾经发生过“中央空调”局部故障的情况,结果有几个城市因为流感爆发人口减少了一半。

现在的程序员大多数也像“温室公民”一样,在前人堆累的温暖怀抱中工作,很少能接触到CPU指令编写、内存分配、硬件存取等底层工作,并且对这些东西缺乏了解,不需要管底层的工作大多数时候都是舒坦的,但也有写出代码在一些情况容易出错的时候,这是因为不需要免疫力而导致免疫力降低,所以有些代码只晓得能完成功能,没有考虑更周全。

使用道具 举报

回复
论坛徽章:
7
六级虎吧徽章
日期:2009-03-30 21:56:32
43#
 楼主| 发表于 2006-9-29 19:38 | 只看该作者
歪说软件工程39 - Delphi和苏格拉底的智慧

话说“Delphi是雅典西北方一座美丽而神圣的小城,传说古时众神之父宙斯测量大地,而Delphi正好是世界的中央。《柏拉图对话录》记载了苏格拉底的一位朋友前往Delphi向预言女神Pythian询问谁是最智慧的人,Pythian说没有人比苏格拉底更智慧。苏格拉底深感不解,因为他发现自己身边有很多政治家、诗人、哲学家和艺术家。难道这些‘专家’和‘权威’不是更有智慧吗?自己比起他们差多了。

苏格拉底一一拜访了这些‘专家’和‘权威’,却发现他们往往自以为是,自欺欺人,对自己不懂的东西也假装知晓。通过拜访,同时苏格拉底也发现自己在许多方面知之甚少。但苏格拉底并没有不懂装懂,他坦诚了自己的无知。这就是预言女神Pythian所说的真正的‘智慧’。

其实这种智慧不是古希腊人最早提出来的。早在苏格拉底之前,我国的老子就已经总结过了。《道德经》中就有‘知人者智,自知者明’,此之谓也。

现在,我们使用的Delphi已经是一个优秀的编程语言和软件开发工具了。然而,面对博大精深、不断发展的Delphi,我们在许多方面还知之甚少。可是在学习和使用Delphi时,我们是否也具备了苏格拉底那种自知自明的态度和知所不知的智慧呢?”

上文摘自《Delphi面向对象编程思想》一书。

使用道具 举报

回复
论坛徽章:
7
六级虎吧徽章
日期:2009-03-30 21:56:32
44#
 楼主| 发表于 2006-9-29 19:38 | 只看该作者
歪说软件工程40 - 鼻毛老子

话说日本冈山县立美术馆藏有一幅老子图,图中的老子,因鼻毛外露,被称为“鼻毛老子”。此幅中,老子招风耳、秃头、张巨口,鼻毛直挂唇边,增显仙风道骨。

但普通人鼻毛长了既难看也不卫生,没有工具不好处理,用手指拔鼻毛,虽然不雅,而且要流眼泪,可是拔掉长毛时的感觉,真的很爽。

拔鼻毛要既狠又快,但这是不利于身体健康的行为,不应被鼓励。而处理软件中不雅、不爽的代码,许多时候也无异于拔鼻毛,也要痛苦得流眼泪,但拔掉了也是很爽的,这是有利于软件健康的行为,值得鼓励。

使用道具 举报

回复
论坛徽章:
7
六级虎吧徽章
日期:2009-03-30 21:56:32
45#
 楼主| 发表于 2006-9-29 19:38 | 只看该作者
歪说软件工程41 - 项羽

话说西楚霸王项羽力拔山兮气盖世。有一天,他为了要让手下的大将们佩服自已,决定和大家比力气。他把大将们找来,让他们各自坐在一把椅子上,然后说,谁能手搬椅子把自己举起来,谁就力气大。结果都失败了。项羽想,你们的力气本来就不如我,这回看我的了。项羽虽然力大无比,椅子却一动也不动,他也失败了。

这个故事说的是我们熟知的作用与反作用定律。规律的存在是不依人的意志为转移的,软件工程中也有个著名的Miller法则[Miller, 1956]。“这个法则指出,一个人任何时候只能将注意力集中在7±2知识块上(信息量子上)。

问题是在开发软件时,人们的大脑需要在一段时间内集中的知识块数远远多于7。例如,一个模块通常不止7个变量,一个客户也往往不止有7个方面的需求。所以只能靠逐步求精。

逐步求精是一种求解问题的技术,是许多软件工程技术的基础。可以将逐步求精定义为‘为了能集中力量求解重要问题而尽量推迟对细节问题的决定’。逐步求精能让软件工程师集中于当前开发阶段最相关的7个知识块上。”

“Miller规则是人类智力的基本限制,因为我们不可能战胜我们的自然本性,所以我们必须与之共存,接受自身的局限,并在这个前提下尽我们的最大努力。”

引文摘自《软件工程Java语言实现》一书。

使用道具 举报

回复
论坛徽章:
7
六级虎吧徽章
日期:2009-03-30 21:56:32
46#
 楼主| 发表于 2006-9-29 19:39 | 只看该作者
歪说软件工程42 - 雨伞盒

话说有一款车里设计了专门放置雨伞的盒子,盒子里设置有漏水槽,会把用后的雨伞的滴水导到车外,而不是积在车内,这样就不用麻烦车主自己去处理。不管什么档次的车,如果同样配置并且价格相当的情况下,一个有雨伞盒,一个没有,估计用户会更愿意选择前者,只要用户所在地不是根本没有机会用雨伞。

有一本书叫《细节决定成败》,这本书的畅销似乎说明现在雪中送炭的事情都已经被做完,绝大多数人在做的都是锦上添花的事情。当市场被不断细分,不做细节又做什么呢,当轮子被发明,想重新发明轮子是很困难的事情。

有一个商家把通用进销存软件卖给了一个餐饮企业,软件被用于点菜,结果用户提了一个需求,希望点一下打印,吧台的打印机和厨房的打印机能同时打印出菜单出来。虽然这个需求不是很难实现,但进销存软件实现这样的需求确实好像没多大必要。但是用户说,有软件有这种功能。

市场细分导致细节成为一种竞争力,少数经过多年发展能不断体贴用户的软件的成功似乎正是这句话的最好注解。

使用道具 举报

回复
论坛徽章:
7
六级虎吧徽章
日期:2009-03-30 21:56:32
47#
 楼主| 发表于 2006-9-29 19:39 | 只看该作者
歪说软件工程43 - 芝麻开门

话说古往今来人总是比机器贵,所以人们总是希望把重复性的工作交给机器来做。阿里巴巴念“芝麻开门”打开四十大盗的宝库,这个故事中涉及的是一种声控自动门的机器,其实门背后站一个活人也可以实现相同的功能。诸葛亮凭借其发明的“木牛流马”破得曹兵一溃千里,这个故事涉及的是一种自动运输机械,现在人们都无法复制出来。

软件中我们靠组件重用来解决人的重复劳动问题,同时可能提升软件产品的最终质量。“软件重用是一项诱人的技术。毕竟,如果可以重用一个现有的构件,就不必再设计、实现、测试这个构件了。关键在于,对任意软件产品来说,平均只有15%是完全服务于原始的目的,产品的另外85%在理论上可以进行标准化,并在将来的产品中重用。

85%的这个数据基本上是理论上的重用率上限。在实践中,40%的重用率是可以达到的。这会产生一个明显的问题。如果这样的重用率实际上是可以达到的,而且重用也决不是一个新想法,那么为什么利用重用来缩短开发周期的组织这么少呢?

重用有许多障碍,第一个障碍就是自负。太多的软件专业人员宁愿从头重写一个程序而不愿重用一个由其他人编写的程序。他们认为,不是他们亲自编写的程序不可能是好程序。这是一个管理问题,如果管理人员意识到这一问题,这个问题就可以得到解决。

第二个障碍是经济利益方面。一些开发人员尽力避免编写那些太通用的例程,唯恐使自己失业。当然,从每个软件组织实际上有大量的积压任务的情况来看,这种担心是毫无根据的。这个问题也可以通过管理人员的介入来解决。

第三个障碍是检索问题。这就是说,一个大组织可能有几十万个潜在的可重用构件,为了提高检索效率,这些构件如何存储呢?例如,一个可重用构件数据库可能包括2000个项目,其中有125种排序例程。在组织这个数据库时,必须尽量方便一个新产品的设计者能迅速地判定这125种排序例程中有哪些适用于这个新产品。解决存储/检索问题是一个技术问题,人们提出了大量的解决方案。

第四个障碍是重用的代价昂贵。Traez提出,这个问题涉及了三方面的成本,即制作可重用构件的成本、重用的成本、定义和实现一个可重用过程的成本[Traez, 1994]。他估计,仅仅使一个构件可重用,就将至少增加60%的成本。一些组织报告说成本增加了200%甚至480%,而在一个Hewlett Packard重用工程中,制作一个重用构件的成本只增加11%[Lim, 1994]。”

引文摘自《软件工程Java语言实现》一书。

使用道具 举报

回复
论坛徽章:
7
六级虎吧徽章
日期:2009-03-30 21:56:32
48#
 楼主| 发表于 2006-9-29 19:39 | 只看该作者
歪说软件工程44 - 百合

话说一枝百合在低矮的灌木丛中静静地成长,她时常羡慕身边的灌木在阳光下的风景。夏天的日子,她已经长高并在骄阳中绽放,这时,她明白原来自己就是一道风景。

软件公司能暴露在公众视野中的不是很多,不同的公司会有不同的宣传战略,有的公司喜欢“傍大款”,比如有“傍金靠友”的。老Y作为一名技术人员,素来喜欢实实在在的那种,并相信这种公司自己本来就是一道独特的风景。

使用道具 举报

回复
论坛徽章:
7
六级虎吧徽章
日期:2009-03-30 21:56:32
49#
 楼主| 发表于 2006-9-29 19:40 | 只看该作者
歪说软件工程45 - 三种基本存在

话说“有三种基本的存在:(1)实体,非复合的实体,如火、水、土的原子,等等;复合的实体,如,石头、树、房子、以及像我们知道的提婆达多这样的个人。(2)性质,如颜色、大小、重量、形状,这些东西尽管出现在或标志着某些特殊的实体,但确实看似是些根本上有别的事物。(3)运动,如笔直向前运动和向上的运动,等等。尽管运动也像性质一样出现在实体上,但是,它们有因果性,可分可合,这是性质本身所不具备的。”

实体对应到类,性质对应到属性,运动对应到方法。类、属性、方法正是面向对象的基本概念。

“IBM在三个完全不同的工程中运用了面向对象技术后做了总结报告[Cappr, Calgate, Huntr, and Jamse 1994]。几乎在每一方面,面向对象范形的性能均大大超过结构化范形。尤其是大幅度减少了软件中发现的错误数,极大地减少了在开发和维护阶段修改需求(除了由一些不可预见的商业变化所引起的需求),软件的适应性和完善维护性都显著地得以提高。同时,尽管它不像前面的四个改变那么显著,且在性能上没什么较大的提高。但其可用性却得到改善。”

第一段引文来自古印度文献,上一段引文摘自《软件工程Java语言实现》一书。

使用道具 举报

回复
论坛徽章:
7
六级虎吧徽章
日期:2009-03-30 21:56:32
50#
 楼主| 发表于 2006-9-29 19:40 | 只看该作者
歪说软件工程46 - 厨房里的地板

话说厨房里的地板经过多年使用,虽然经常打扫但仍显得脏。仔细看,许多地板砖上都布有或多或少的细小黑点,尤其靠墙角的,这些污渍靠一般的打扫都没能去掉,而一直留着,越积累越多。于是只有手工一点一点地用铁刷刷掉,有些甚至要用刀刮。一块块地砖上一个个污渍都被清除干净后,整体看果然很干净。

老Y一次接手一个老产品,知道其存在一些问题以及许多不爽的地方,但每个程序单元经过多年发展其实都没什么明显问题,所以只有逐个方法、逐行代码进行优化,使代码结构清晰、所有代码编写惯例一致,各个细节逐渐完美后,结果就是总体质量得到了提升。刚接手时最郁闷的一个地方是程序不能在Delphi中Complie,一Compile就导致Delphi出现内部错,只能每次都Build,找不出什么原因,后来程序改着改着居然就没事了,可以Compile了。可能有些代码,比如交叉引用过多的,连Delphi都觉得受不了,当然这是Delphi的BUG。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表