自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 收藏
  • 关注

原创 软件外包的形式与质量控制

大体上,我将软件外包的形式分成三种。第一种形式是外资企业在华等低成本国家成立新的研发中心。研发中心虽然名誉上是总部的分枝机构,但所从事的研发工作通常不会是高精尖的内容。很显然,由于所设置的分支机构在公司制度和企业文化上完全采用总部的,因而这种外包形式在软件的质量控制上能与总公司的完全匹配。可以想象,这种外包形式的成本相当的高昂。第二种软件外包形式是人员外包。即外包公司出人参与到合同公司

2012-08-07 22:00:57 8636 2

原创 缓解可查错性问题的手段——单元测试

从本月初开始,我加入了某基站开发团队。尽管我在通讯行业工作快10年了,但这是头一次工作于机站项目,所需学习的东西自然很多,还是那句话 — 有挑战才会有进步。在此我想与读者分享过去三周我就软件的可查错性的一点新体会。现从事的项目是真正的嵌入式系统,机站上的MAC和PHY程序是运行在DSP之上的。加入团队伊始,同事告诉我,团队在碰到Crash这样的问题时,显得很是被动。经过我俩几番的交谈,

2012-08-05 21:16:42 5255 2

原创 一种面向业务流的内存管理算法

在象通讯系统中的基站这样的复杂嵌入式系统中,对于内存管理模块的效率具有很高的要求,因此内存管理模块的算法很有讲究。讲究在于,不仅要考虑算法的效率,还要兼顾算法是否会带来大量的内存碎片以及如何进行内存碎片合并。正因如此,这类嵌入式系统软件大多会对内存管理模块根据业务特点进行适当的优化。优化的方式无外乎引入内存池,或对堆管理模块引入新的算法加以优化,然而这些方法除了引入了一定的算法复杂度外

2012-07-31 22:39:19 5508

原创 在C++中通过模板去除强制转换

推荐阅读:《在C++中通过模板规避潜在错误》 C++与C语言相比是一个强类型语言,即对数据类型的匹配程度较C更为严格,这有助于避免程序员在编程过程中由于粗心所犯之错。由于历史原因,C++中仍保留了reinterpret_ cast、static_cast等用于强制类型转换的关键字,但从语言向强类型发展的趋势来看,我们在编程工作中应尽量少使用强制类型转换,模板有助于我们实现这一目的。减少使用

2012-06-09 15:45:31 4993

原创 在C++中通过模板规避潜在错误

注:本文节选自我正在创作的第二本书《C++跨平台与框架开发》,其中一些措词并未就博文进行调整,阅读时请注意。 模板(template)为C++带来了泛型编程的能力,但也带来了使用难度。大体上,使用模板的三大动机分别是提高复用性、去除强制转换和规避潜在错误。在此让我们看一看规避错误的一个例子。假设我们有图 1所示的被简化了的定时器管理模块程序。从构造函数来看,它的三个参数分别指明了定

2012-05-16 13:25:31 4998 2

原创 软件工程师在外企学什么?

我在Motorola工作了近6年(注:在这期间我经历了Motorola拆分成Motorola Solutions和Motorola Mobility,以及Motorola Solutions将网络部门卖给NSN,期间我所在团队的企业文化和工作环境一直沿用的是原Motorola的),经历了从开发工程师到架构师的成长历程,在此分享一下软件工程师在Motorola这样的外企应学些什么。首先,

2012-05-14 10:53:35 21606 36

原创 软件开发:个人与团队是永远的核心

注:本文节选自我正在创作的第二本书《C++跨平台与框架开发》,其中一些措词并未就博文进行调整。读者阅读时请注意这一点。 Brooks在他的《人月神话》中指出软件行业没有“银弹”,如果将平台与框架开发当作是软件行业的“银弹”可就大错特错了,充其量它只是“龙骑士 ”。软件行业没有“银弹”的原因是,软件开发工作与人——个体和由个体组成的团队,息息相关。再好的方法论都需要由个体去实施,

2012-05-13 10:02:21 10193

原创 【编程好习惯】 引入中间变量使程序更易读

今天查看自己为《专业嵌入式软件开发》一书所写的代码时发现,个别函数由于没有引入中间变量,使代码行既长又不易读。重构前后的代码如下所示。 重构前:if (TIMER_STARTED == _handle->state_) {     timer_handle_t next;          if (g_timer_next == _handle) {         g_timer_n

2012-05-10 14:29:55 5446

原创 面向对象设计的优点

一旦明白了软件设计的真谛(参见《软件设计的真谛》),我们就更能理解面向对象设计的优点。简单说来,它更便于我们在软件中构建更真实的虚拟世界。首先,对象的引入方便了在软件虚拟世界中模拟现实世界。现实世界是由很多独立的抽象或具体物体组成的,比如房子、汽车、空调、书等等。为了构建更真实的虚拟世界,在软件中需要存在用于表达类似现实物体的编程元素,这正是引入对象概念的意义所在。以对象为设计中心

2012-05-04 17:17:07 6622

原创 软件设计的真谛

假设我们身边的一切都是用制造材料加以描述的:“空调”不是“空调”,而是“由金属和塑料做成的物体”;“书”不是“书”,而是“由纤维和墨做成的物体”。沟通时我们也不用“空调”和“书”这样的词汇,而是“金属和塑料做成的物体”和“纤维和墨做成的物体”。可以想象大脑在面对这些信息时会让我们觉得多么的痛苦,显然这样的事情在现实中很少发生,因为我们的大脑具备很强的抽象能力 ,会通过抽象塑造“空调”和“书”这样的

2012-04-29 17:24:21 4086 3

原创 明晰单元测试

最近,身边的一位朋友因为需要在其单位与同事分享单元测试(Unit Test,UT)方面的知识,邀我对他所准备的PPT进行审阅。在审阅的过程中我发现,他在PPT中指出:“实际工作中,写好程序后对程序功能的调试就是一种单元测试”。由于我知道这位朋友并没有运用单元测试的经验,所以我问到:“你的这一认识是从哪里获得的?”,朋友答曰:“从网上搜来的”。无独有偶,这两天我在微博上看到了对单元测试相似的理解:“

2012-04-13 08:23:28 2594 2

原创 C程序员要学C++吗?

最近网友问到这一问题,但我更希望被问的是“C程序员需要学面向对象编程吗?”,那就让我先从回答这一问题开始,并做适当的扩展。就我的成长经历来看,C程序员必须学习面向对象编程!面向对象编程语言有其天然的一个优势 — 将软件世界的一切象现实世界那样视为对象。我在《专业嵌入式软件开发》一书的《设计,质量之本》一章中指出,软件设计的一个原则是“以人为本”,在软件世界中构建现实世界就能很好地贯彻这

2012-01-12 16:33:09 3485 1

原创 软件开发工程师技术能力层次模型

下图是根据我的经验所得到的软件开发工程师技术能力层次模型。在这个模型中,你属于哪一个层次?你的心中也有类似的模型吗?推荐阅读《高质高效软件开发组织能力模型》。本文出自 “李云” 博客,请务必保留此出处 http://blog.csdn.net/hzliyun/article/details/7190280。

2012-01-10 11:23:47 5028 1

原创 面向对象和基于对象

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7186781。面向对象大家都很熟悉,可是基于对象就不一定了。两个听起来好象是同一回事,而事实上它们却千差万别。基于对象是指:我们采用对象封装技术,将数据和操作捆绑在一起,但是并没有合理地使用多态、继承等面向

2012-01-09 11:27:13 2352 1

原创 C++中实现Singleton的正确方法

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7178930。如果某个类管理了系统中唯一的某种资源,那么我们只能创建该类的一个实例,此时用到singleton设计模式(后面为了简化将省略“设计模式”四个字)就比较合适了。然而,如果

2012-01-05 17:14:06 4194

原创 软件平台与框架的生命周期

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7170501。以静态的思维看待平台与框架开发,极有可能最终导致所获得的平台与框架是一个臃肿、易出错的软件包袱。出现这种状况的原因,是我们没有明白平台与框架是存在生命周期的。

2012-01-01 19:58:51 2525 1

原创 如何成为一个技术“牛人”

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7086930。今天给浙江大学过来的几个还没有毕业的研究生做面试,这些研究生是想来公司实习的。在面试的过程中,一个学生问我“我们有C/C++、JAVA等等多种语言,我如何才能成

2011-12-20 11:10:37 4310 3

原创 揭示C++中全局类变量的构造与析构顺序

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7081148。在完成《专业嵌入式软件开发 — 全面走向高质高效编程》一书后,我将下一本书的创作集点放在了基于C++的面象对象设计与开发上。从现在开始我将陆续推出关于C++和面高对

2011-12-18 09:19:31 3258

原创 警惕工作中的“假设综合症”

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7079494。工作中不少人(包括我自己)都犯过“假设综合症”(这词是我发明的啊!我Google了一下还没有找到有这一说!),其直观的表现就是你觉得他很“神”,有些东西并不清楚结果

2011-12-17 10:44:35 2119

原创 别把自己变成了“二等公民”

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7079481。上周参加一个代码审查会,在会上发现了设计上的一个很严重的错误。于是,我提了好几个问题,想知道为什么会出现这一错误。但是,我的同事告诉我这都是印度团队做的设计

2011-12-17 10:40:01 3204 2

原创 我对应聘者的面试原则

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7079471。最近参与了几次单位招聘面试工作,在面试工程师时,我是用我的分层准则指导与候选人的交流内容,以确定他的能力层次是否达到我所期望的。大体上软件工程师可以分为三大

2011-12-17 10:36:17 4428 11

原创 软件设计中的“自上而下”和“自下而上”

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7079464。在切入主题之前先要了解“上”与“下”的含意是什么,这需要从图1中找答案。图中,应用层在最上面,其下依次是框架、平台、库和操作系统层,因此“上”是指靠近应用层

2011-12-17 10:32:53 10721

原创 明晰软件架构与数据结构

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7079444。相信大多软件工程师在谈及软件架构(software architecture)时立刻会联想到数据结构(data structure),这是正常的反应。但是,有些工程师

2011-12-17 10:28:40 2700

原创 如何通过3/8译码器扩展处理器片选信号

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7079400。本文的内容本来是打算放在我刚出版的《专业嵌入式软件开发 — 全面走向高质高效编程》一书中的。但后来由于将该书定位为偏向软件,所以将本文所在的章全部删除了,打算将之放在我

2011-12-17 10:17:42 7505

原创 软件系统架构师成长之路(一)

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7078967。几个月前,公司因为战略调整,将位于美国的系统工程(system engineering)部门的工作转到了国内。也因为这次调整,我有幸以系统架构师(system arch

2011-12-16 22:39:25 3659 1

原创 软件架构师的能力与特质

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7078959。软件开发工程师的职业发展无非两大类:一是做“官”,从事管理工作;二则继续从事技术工作。对于后者,软件架构师(software architect)是很多软件开发工程师追

2011-12-16 22:37:34 4558 2

原创 致IT同仁 — IT人士常犯的17个职场错误

记得刚参加工作时(那是97年),中国的IT刚刚兴起,那时,作为一个IT人士是一件很光荣的事,而那时的我正在做电气和电子相关的工作。99年第一次跳槽,进入了IT行业做软件开发。至今,中国的IT已经走过了十多年。但昔日的“光荣一员”却成为了现在的“IT农民工”,这究竟是怎么了?是中国的IT发展已经很好了所造成的吗?不是!在我看来中国的IT还比较的原始,还有很大的提升空间。我认为造成这一切的都是我们自己

2011-12-16 22:35:56 4214 6

原创 出色技术团队的关键要素

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7078947。对于出色技术团队的关键要素可以从下图中找到。下面让我来对其进行解读。这幅图首先映入眼帘的是,它是一个三角形,而其顶点则是求精。求精离不开

2011-12-16 22:33:44 2245

原创 无能的很可能正是我们自己

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7078937。现实工作中,存在不少情形让我们觉得身处混乱使得工作应付不过来。最为常见的现象有:工作量太大、人力资源不足、沟通不畅等等。对于混乱状态的出现也存在不同的解释,比如:1

2011-12-16 22:31:11 2056

原创 技术管理的核心内容 — 提高团队技能

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7078920。最近与同事聊天,从软件质量保证的方法论谈论到了技术管理,那技术管理的内涵到底是什么?在此通过这篇文章做一个小小的总结和适当的外延。 技术管理给人的感觉更多是工作

2011-12-16 22:27:30 6813 1

原创 软件开发架构师的职责

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7078905。我在Motorola的网络部(注:今年4月份该部门被Nokia Siemens Networks收购,所以我现在是NSN的员工)担任架构师(Software Archi

2011-12-16 22:22:46 3905

原创 高质高效软件开发组织能力模型

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7078896。背景至今,我在Motorola网络部工作超过了5年,所在的产品线也是采用统一软件开发过程和敏捷思想(但不是SCRUM)来组织软件开发活动的,但这5年多的工作经历从未

2011-12-16 22:21:16 3783 3

原创 实施软件平台与框架开发的注意事项

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7078298。我在《专业嵌入式软件开发 — 全面走向高质高效编程》一书中用一章的内容指出,软件平台与框架开发是高质软件的打造之路。这里想进一步谈一谈实施这一高质软件打造方法所需注

2011-12-16 17:35:19 2323

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除