微信号:IdeaofSE

介绍:软件工程之思,一个探讨软件工程的优秀实践的芳草之地,这里有前辈的成熟经验,也有晚辈的奇思妙想,无论哪种,都希望能给你带来一点启迪.软件工程之思,愿成为推进软件工程浪潮中的一朵浪花,营造软件工程燎原之...

若把软件系统比作人体

2017-10-12 07:00 软件工程之思

如果把软件系统比为人体,那么体系结构、用户界面、数据库、模块、数据结构与算法都能在人身上找到有趣的对应。

  1. 体系结构

体系结构如同人的骨架。如果某个家伙的骨架是猴子,那么无论怎样喂养和美容,这家伙始终都是猴子,不会成为人。

人的身材大小取决于骨架大小,天生小个子的人基本上不可能成为威猛的大汉,后天再努力(例如锻炼和吃喝)也白搭。

由此可见,体系结构乃是系统设计的重中之重。

  1. 用户界面

用户界面如同人的外表,最容易让人一见钟情或一见恶心。像人类追求心灵美和外表美那样,软件系统也追求(内在的)功能强大和(外表的)界面友好。现代社会的生活节奏越来越快,人们己少有兴趣去品味深藏不露的内在美。如果把UNIX系统比做是健壮的汉子和妇人,那么Windows系统就像妩媚的小白脸和狐狸精。想不到Windows系统竞然能兴风作浪,占去操作系统的大半市场。

有鉴于此,我们在设计软件时不要沉迷于技术,而要多多思考什么样的界面才能让用户更加喜欢。

  1. 数据库

顾名思义,数据库是存储和处理数据用的。人体的数据库是大脑,知识相当于数据,全存在大脑里。如果脑子里存储的知识很多,那么这个人就显得博学。如果脑子处理知识的速度很高,那么这个人就显得聪明。

很多人误以为数据库设计就是设计一些表格,觉得那是轻而易举的事情。唉,傻瓜的脑袋并不比正常人的小,他们之所以傻是因为脑子里面存储的东西太少了,并且放进去、取出来的速度太慢了。

数据库设计的主要挑战是“高速处理大容量的数据”。

  1. 模块

模块如同人的器官。每个器官都具有特定的功能,器官们依附在骨架上。模块是软件系统的部件,它们安插在体系结构上(否则运行起来就掉光了)。

人体中设计得最出色的模块是手,手只有几个基本动作(高度抽象),却能做无限多的事情。而最糟糕的设计莫过于嘴巴,嘴巴将很有价值但毫无相干的几种功能如吃饭、说话、亲吻混为一体,使之无法并行处理,真乃人类之不幸。所以我们在设计模块时要重视功能独立性,模块的接口应当充分体现该模块的行为特征(即抽象)。

人的嘴巴和耳朵虽然是相对独立的器官,但是如果一个人从小耳朵就聋了,他的嘴巴就只能发出“啊”“呜”的声音,等于丧失了说话的功能。更奇怪的是,瞎子的听力却比正常人的更好,那些看似独立的器官功能常有纠缠不清的时候,真是十分神奇并又十分可笑。所以我们在设计模块时还要追求“高内聚、低耦合”。

  1. 数据结构与算法

数据结构与算法如同人的神经和肌肉,它分布在全身,让器官具有生命并能发挥功能。人之所以能够全身运动,那是无数的神经和肌肉在起作用。如果局部的神经和肌肉失效了,那么会导致对内的器官残废。如果全局的神经和肌肉失效了,那么人就瘫痪了。同理,数据结构与算法也有全局和局部之分,都要慎重设计。

传说女娲造的人分两种,女娲亲手捏山来的泥人成为了社会精英人物,而女娲用面条沾着泥浆甩出来的东东则成了社会下层人物。我们应该把软件当成自己的宝贝看待,用心地捏好,而不要随心所欲地乱甩。

节选自:《软件工程与项目管理解析》

微信号:IdeaofSE


 
软件工程之思 更多文章 欢度国庆 喜迎中秋 关于敏捷测试中AC和TC的那些事儿(一) 关于敏捷测试中AC和TC的那些事儿(二) 完成任务书评审不等于做好需求确认 程序世界里的不信任原则
猜您喜欢 测试随想,装饰者模式! 部署系统(下) Linux延时实现 20+ 为前端程序员准备的文档、指南 【干货】Kubernetes、Swarm、Mesos最新版本功能比较(上)