软件设计
Beyond_cn
这个作者很懒,什么都没留下…
展开
-
强内聚与松耦合
IT界有一句很著名的口号:强内聚、松耦合。 即使是最初级的程序员,在常常的被教导中,他也了解了这句口号的含义:我们的程序要模块化,模块要完成明确的一组关联的服务功能,要求它的各部分是相关的、有机组合起来是完整体(外部程序来看黑盒子),模块的内部各成分之间相关联程度要尽可能高(强内聚);而模块与模块之间又要求是可分拆的、少依赖的(松耦合)。 人们易于实现强内聚的模块,例如:一个函数实现一转载 2013-11-20 16:16:53 · 1271 阅读 · 0 评论 -
软件设计中的“自上而下”和“自下而上”
在切入主题之前先要了解“上”与“下”的含意是什么,这需要从图1中找答案。图中,应用层在最上面,其下依次是框架、平台、库和操作系统层,因此“上”是指靠近应用层,而“下”则是指靠近操作系统层。图1 对于一个被设计的软件模块,存在两个视角。一个是从上向下看,这一看,看到的是模块向上层提供的是什么样的接口,或者说“长什么样”;另一个则是从下向上看,即模块的具体实现是什么,转载 2017-06-28 08:53:43 · 6049 阅读 · 0 评论 -
软件系统架构师成长之路(一)
几个月前,公司因为战略调整,将位于美国的系统工程(system engineering)部门的工作转到了国内。也因为这次调整,我有幸以系统架构师(system architect)的身份主导产品一新功能(feature)的开发。在此我分享自己的一些体会。 从开发架构师变成系统架构师所面临的第一个挑战,是所面临的技术范畴和问题复杂度变广和变大了很多。做开发架构师(development ar转载 2017-06-13 08:50:55 · 1512 阅读 · 0 评论 -
软件架构师的能力与特质
软件开发工程师的职业发展无非两大类:一是做“官”,从事管理工作;二则继续从事技术工作。对于后者,软件架构师(software architect)是很多软件开发工程师追求的理想岗位。在这我想谈一谈软件架构师所需的几大能力和一些特质,以便读者能更好地规划自己的职业发展。 1)需要很好的逻辑思维能力。对于软件开发工程师来说,由于大多从事编程工作,所以很容易以为自己的逻辑思维没有问题,足以满足软转载 2017-06-08 09:05:08 · 476 阅读 · 0 评论 -
明晰软件架构与数据结构
相信大多软件工程师在谈及软件架构(software architecture)时立刻会联想到数据结构(data structure),这是正常的反应。但是,有些工程师却误以为软件架构就完全是关于数据结构,这就不对了。之所以将软件架构与数据结构在本文中并提讨论,是为了让我们对之有更清晰的认识。读者后面会明白,这种清晰的认识对于我们的工作是有益的。数据结构在Wikipedia上的定义是转载 2017-06-23 09:00:34 · 769 阅读 · 0 评论 -
明晰单元测试
最近,身边的一位朋友因为需要在其单位与同事分享单元测试(Unit Test,UT)方面的知识,邀我对他所准备的PPT进行审阅。在审阅的过程中我发现,他在PPT中指出:“实际工作中,写好程序后对程序功能的调试就是一种单元测试”。由于我知道这位朋友并没有运用单元测试的经验,所以我问到:“你的这一认识是从哪里获得的?”,朋友答曰:“从网上搜来的”。无独有偶,这两天我在微博上看到了对单元测试相似的理解:“转载 2017-06-30 08:47:25 · 683 阅读 · 0 评论 -
软件开发架构师的职责
我在Motorola的网络部(注:今年4月份该部门被Nokia Siemens Networks收购,所以我现在是NSN的员工)担任架构师(Software Architect)一职至今近两年了,最近因为微博上的博友询问起软件架构师的职责一事,所以想到写一篇文章来分享现有公司的要求。至于软件架构师所需掌握的技能,我打算后面写另一篇博文来分享。 这里的话题主要牵涉公司的系统工程(Sy转载 2017-06-07 08:50:24 · 786 阅读 · 0 评论 -
实施软件平台与框架开发的注意事项
我在《专业嵌入式软件开发 — 全面走向高质高效编程》一书中用一章的内容指出,软件平台与框架开发是高质软件的打造之路。这里想进一步谈一谈实施这一高质软件打造方法所需注意的事项。 首先,明确(软件)平台与框架开发的主要目的不是对操作系统的功能进行封装,而是为所需开发的上层应用提供服务。虽然平台与框架的开发需要通过对操作系统的功能进行封装来实现为上层应用提供服务,但两者的主、次不能颠倒。转载 2017-06-01 09:01:09 · 475 阅读 · 0 评论 -
高质高效软件开发组织能力模型
背景至今,我在Motorola网络部工作超过了5年,所在的产品线也是采用统一软件开发过程和敏捷思想(但不是SCRUM)来组织软件开发活动的,但这5年多的工作经历从未引起我象微博上对于SCRUM话题的激烈讨论这样的思考。原因之一可能是,公司的流程已经很成熟了且形成了一种文化,不论怎样的新人进入公司,都只需按照流程按步就班的工作就行了。另外,公司的开发流程并不包含象SCRUM所要求的形式化内容,使转载 2017-06-02 08:44:50 · 712 阅读 · 0 评论 -
再谈程序员思维
http://blog.sina.com.cn/s/blog_493a845501017nqr.html关于这个话题前面已经谈到过不少,再做一些必要的总结,思维和技能一直是每个人最重要的两个方面的内容。有时候是知识和技能的积累,推动了思维意识的转变;有时候又是转变了思维意识后加速了知识技能的积累。这个关系很类似渐修和顿悟的关系,渐修到一定程度后顿悟,而顿悟后还得不断实践和落地。将思转载 2017-04-27 08:46:02 · 463 阅读 · 0 评论 -
设计模式——简单工厂模式
[cpp] view plaincopyprint?/* 简单工厂模式:跟工厂模式很类似,不过在函数里面加上了逻辑判断 Created by Phoenix_FuliMa */ #include using namespace std; class Product { public:转载 2015-01-30 11:02:08 · 763 阅读 · 0 评论 -
软件设计之模块划分
在一些小型的项目当中,由于项目的关系简单,规模较小,所以有时候负责完成项目的往往是一个人或者几个人。这个时候对于模块的概念和应用显得很少,因为项目规模较小的原因,模块划分的重要性难以体现。但是,在一些大型项目中,就必须充分考虑到模块划分,因为参与项目的人数往往有很多人,同时人员变动很大。如果不充分进行模块划分的话,那么就会造成很严重的问题。这就相当于在乡下盖房子,可以自己几个人承包下来,也不需要设转载 2013-11-20 16:21:31 · 7753 阅读 · 0 评论 -
软件平台与框架的生命周期
以静态的思维看待平台与框架开发,极有可能最终导致所获得的平台与框架是一个臃肿、易出错的软件包袱。出现这种状况的原因,是我们没有明白平台与框架是存在生命周期的。平台与框架也象人一样,存在形成、成长、成熟和衰退四大时期,图1示例说明了这几个时期。图中纵座标的适应能力,是指平台与框架对应用软件新需求的支持程度。其中的直线也只代表一种趋势,现实中更多地表现为存在波动的曲线。转载 2017-06-28 09:00:29 · 861 阅读 · 0 评论