开发技术可以把技术分成三大类:
>开发技术
>领域技术
>管理技术
在这里先罗列一下这三大类的分法。
开发技术指的是完成一个大规模的软件开发工程所必备的技术,比如系统需求分析、系统设计、软件需求分析、软件模式设计、软件详细设计、代码编写与测试、代码集成(Integration)、软件检验(Validation)、系统集成、系统检验等各个环节所需要的工具、模式、流程和知识。
管理技术指的是项目管理和流程管理所必备的技术,比如分工管理、时间管理、成本管理、质量管理、沟通管理、采购管理、风险管理、人员与组织管理等等属于项目管理技术;而变更管理、配置管理、开发环境管理、开发流程选定、知识产权管理等等则属于流程管理的范畴。
领域技术指的是平台技术、界面技术、通信技术、多媒体技术、存储技术、传感与控制技术、信息处理技术、应用技术等等。
从这样的分法我们得到的启发是,不管自己将来要成为专家还是高管,开发技术和管理技术大部分都是必须掌握的。“我”的“不可替代性”一定是在领域技术中去找的。如果某一项领域技术在公司里能够做到数一数二,咱们在那个公司才是不可替代,因为把握替代掉要花更大的代价。如果咱某项技术能够在行业中能够做到数一数二,那么你就具备了成为“Ray Ozzie”的基本条件。
能够做到数一数二的,做到不可替代,一个公司里就那么多。如果退而求其次,就是做个“牛人”。上面罗列了不同角色,咱们可以成为这些角色的“牛人”。成为各种“牛人”分别需要在哪些方面牛呢?以后有机会再说吧。今天先把领域技术分解一下:
一、平台技术包括
1. 特定的处理器,比如对ARM处理器、TI的DSP或者NVidia的GPU等等的全面掌握
2. 特定的操作系统,比如对Nucleus,Rex OS, Linux等等内核的掌控。
3. 特定的软件框架,比如Java VM等VM,特定的应用框架比如GNOME、KDE的掌控(太大了 :-( )
二、界面技术
1.输入处理:通过人类的动作产生的输入处理比如按键、触屏、气味、声波、G-Sensor、 GPS信号等等信息输入的处理技术。
2.输出处理:显示、声音、振动、气味、光亮。由于GUI通常涉及到输入输出,我们把GUI技术划在界面技术当中,比如透彻掌控X-Windows,GTK+, Match box, mini-GUI等等。严格讲的,界面技术指的是针对一个特定的功能,用软件去设计、实现一整套操作、反馈流程,使用户既容易学、又容易记。从这种意义上看,GUI应该属于平台技术,因为GUI是实现用户操作流程的平台。
三、通信技术
1. ISO 1~7 层通信模型某几个层面的设计、实现和维护。由于无线通信涉及物理层到网络层的变化,通常分有线、无线通信技术。GSM协议栈、TCP/IP协议栈、TD-SCDMA协议栈都是通信技术范畴。
2. 无线广播技术:DVB-T/H, T-DMB, CMMB等等都是无线广播技术
3. 互联网技术:这里指的是TCP层以上通信协议,比如HTTP, IMAP, POP3, SMTP,FTP等等技术。
四、多媒体技术
1. 声音压缩与解压缩技术:MP3, AAC, AMR等等
2. 图片压缩与解压缩技术: PNG, GIF, JPEG等等
3. 影视压缩与解压缩技术:H.263, H.264, MPEG4等等
五、存储技术
1.文件系统:FAT32, EXT3,JFFS等等
2.媒体技术:内存、闪存、磁盘等等物理媒体特性的掌控
3.存储接口技术:热插拔、冷插拔设备的接口技术
六、传感与控制技术
1.物理化学量输入技术:电位、电流、振动、光、压力等物理化学量的计量技术
2.物理化学量输出与控制技术:电磁、光、热、速度、振动、坐标等物理化学量输出技术
七、信息处理技术
1. 信息输入技术:数据输入、声音输入等等信息输入技术
2. 信息安全技术:加密、解密技术
3. 数据处理技术:数据压缩与解压缩技术、嵌入式数据库技术
4. 信息输出技术:Postscript语言,XML语言,SVG等等通用信息格式输出技术
八、应用技术,特定目的的应用软件的实现,它们往往是如上七类技术的综合应用,比如
1. 浏览器
2. 消息类应用:e-mail, IMPS, MMS, SMS等等
3. VoIP应用
4. 视频通话
5. 媒体播放器
以上八大方面,每一个方面都够咱们干一辈子的。罗列了这么多,希望能够给各位有志于加入嵌入式软件开发的朋友,大学毕业后刚刚走上社会的朋友,毕业后做了许多年软件觉得不知道自己该怎么发展的朋友,或者自以为嵌入式就那么回事的朋友,提供一个思考的线索。参考这个分类,理出自己发展的路子。