模块化首先需要分级别,这样易于管理,比如,操作系统级的模块是UI类库的基础,UI类库上层需要UI的应用的基础,这样可以比较合理的把模块分为3个级别。在管理上,每个级别的release都要把关,不然,会给依赖它的上层级别模块带来不必要的麻烦。
模块间的通讯也是一个问题,尤其是应用级别的模块间通讯。Windows Mobile可以使用com和.net方便的实现IPC,Linux操作系统本身缺乏标准化的IPC机制,基于Linux的QtE和GTK提供了IPC机制,但是感觉还是很有限,QtE的QCopChannel只能异步通讯,不能同步,GTK支持CORBA,但是还没听说在嵌入式设备上采用CORBA的,而且GTK2.x之后性能决定其不大适用于嵌入式。Symbian的工作机制不大了解,不知道有没有成熟方便的IPC。
我个人不同意用shared libray的方式解决IPC,这样dependent关系太直接。作为平台,应该建立一种应用见通讯(包括同步和异步)机制,不然,项目变大之后,这样的互相依赖变成网状,很难控制。
复杂一点的回答:非但不需要,CMM可能会成为平台开发的绊脚石。
说这话可能会得罪一些CMM的支持者,本人曾供职过一个某软件强国的CMM5/PCMM-4的企业,现服务于一家移动开发世界数二数三的公司,自认为对CMM和移动开发都有心得,不是睁眼说瞎话。
首先声明,我并没有贬损CMM规范的意思,CMM对某些应用软件的开发还是很有作用的,我只是说它不适用于手机软件平台的开发。
Why?
微软某高层说过:“如果某天一个CMM5企业要进入浏览器市场,我会半夜笑醒。“手机软件平台和浏览器一样,有研究的性质,需要的是灵活和创新,而CMM帮忙只会帮倒忙。
CMM规范的实施基于这样一个假设---“需求是明确的而且易于获得的”,但是手机软件平台不是这样的,平台是用来给开发应用的,很多需求都是摸索着获得的,不是象超级市场货架上的商品一样拿就行了。CMM这一点也导致它在很多别的应用开发中很尴尬。
软件平台开发更多的需要是作为王牌程序员的聪明才智,我就认识某个牛人一人完成一个嵌入式application framework(UI除外),而CMM实施带来的overhead是有目共睹,程序员往往就在繁冗的表单填写中丧失了激情。
CMM名为“能力成熟度模型”,但自身也有很多不成熟的地方,没法保证产生优秀的软件产品。CMM保证一个bug能够被track,但是bug如何被fix,就完全靠程序员的专业能力;CMM保证所有的文档都被review,但是没法保证review过得文档就是高质量的。我相信,很多成功实施CMM的企业,也不是完全依赖CMM,需要其他更重要的东西,比如好的人才招聘培养和挽留机制:)
这样做个实验,软件业这一二十年获得巨大的发展,列出十个觉得最伟大的软件,看看有几个是在CMM的监督之下成果的。我写的是
Windows
DOOM/Quake
C++
Java Platform
Linux
Warcraft 3
Office
.Net Framework
Eclipse
Starcraft
呵呵,排名不分先后。
伟大的软件总是会有很多的创新和突破,这是CMM无法做到的。
公司花钱开发手机软件平台,是用来赚钱的,不是为了花钱而花钱的,如果开发出来的东西不能赚钱,那就有被cut掉的危险。别忘了,有很多现成的成熟的手机软件平台,公司是买手机的,不是买平台的,最终用户夸也只夸手机号不夸平台好,骂也只骂手机烂不骂平台烂,所以一个平台不行,就换一个。
平台面对的是时间问题,现在手机产品层出不穷,隔一段时间就有新产品,如果平台不能跟上节奏,就会被淘汰,不管你使用了什么技术,公司是等不及了。
还是那句话:实用的技术就是好技术。
开发手机软件平台应确立开放目标。如遵循OSGi协议的平台,团队有统一愿景,设计更合理;反之,未考虑开放的平台易出现hard - code,代码质量下降。软件平台开发需模块化,组件开发者应考虑第三方使用,合理定义API。
2219

被折叠的 条评论
为什么被折叠?



