1.存在的问题 最近十多年来,软件产业和互联网产业的迅猛发展,给人们提供了用武之地,同时也对软件工程教育提出了巨大的挑战。从教育现状看,通过灌输知识可以让人具有很强的考试能力,却往往经不起用人单位的检验笔试和机试。虽然大家都知道,教育的本质在于培养人的创造力、好奇心、独特的思考能力和解决问题的能力,但实际上我们的教学实践背离了教育理念。代码的优劣不仅直接决定了软件的质量,还将直接影响软件成本。软件成本是由开发成本和维护成本组成的,但维护成本却远高于开发成本,蛮力开发的现象比比皆是,大量来之不易的资金就这样被无声无息地吞没了,造成了社会资源的严浪费。
2.核心域和非核心域
一个软件系统封装了若干领域的知识,其中一个领域的知识代表了系统的核心竞争力,这个领域就称为核心域,其他领域称为非核心域。虽然更通俗的说法是业务和技术,但使用核心域和非核心域更严谨。非核心域就是别人的领域,如底层驱动、操作系统和组件,即便自己有一些优势,那也是暂时的,竞争对手也能通过其他渠道获得。非核心域的改进是必要的,但不充分,还是要在核心域上深入挖掘,让竞争对手无法轻易从第三方获得。只有在核心域中深入挖掘,达到基于核心域的复用,才能获得和保持竞争力。要达到基于核心域的复用,有必要将核心域和非核心域分开考虑。因为过早地将各个领域的知识混杂,会增加不必要的负担,从而导致开发人员腾不出脑力思考核心域中更深刻的问题,待解决问题的规模一旦变大,而人脑的容量和运算能力又是有限的,就会造成顾此失彼,因此必须分而治之。核心域与非核心域的知识都是独的,比如,一个计算器要做到没有漏洞,其中的问题也很复杂。如果不使用状态图对程序设计与数据结构?领域逻辑显式地建模,再根据模型映射到实现,而是直接下手编程,领域逻辑的知识靠临时去想,最终得到的代码肯定破绽百出。其实有利润的系统,其内部都是很复杂的,千万不要幼稚地认为我的系统不复杂。
3.利润从哪里来
早期创业时,只要抓住一个机会,多参加展会,多做广告,成功的概率就很大了。在互联网时代,突然发现入口多了,聚焦用户的难度也越来越大了。当产品面临竞争时,你会发现没有最低只有更低。而且现在已经没有互联网公司了,携程变成了旅行社,新浪变成了新媒体机会驱动、粗放经营的时代已经过去了。Apple之所以能成为全球最赚钱的手机公司,关键在于产品的性能超越了用户的预期,且因为大量 可 重 用 的 核 心 领 域 知 识,综 合 成 本 做 到 了 极 致。Yourdon 和Constantine在《结构化设计》一书中,将经济学作为软件设计的底层驱动力,软件设计应该致力于降低整体成本。人们发现软件的维护成本远远高于它的初始成本,因为理解现有代码需要花费时间,而且容易出错。同时改动之后,还要进行测试和部署。更多的时候,程序员不是在编码,而是在阅读程序。由于阅读程序需要从细节和概念上理解,因此修改程序的投入会远远大于最初编程的投入。基于这样的共识,让我们操心的一系列事情,需要不断地思考和总结使之可以重用,这就是方法论的缘起。通过财务数据分析可知,由于决策失误,我们开发了一些周期长、技术难度大且回报率极低的产品。由于缺乏科学的软件工程方法,不仅软件难以重用,而且扩展和维护难度很大,从而导致开发成本居高不下。显而易见,从软件开发来看,软件工程与计算机科学是完全不同的两个领域的知识。其主要区别在于人,因为软件开发是以人为中心的过程。如果考虑人的因素,软件工程更接近经济学,而非计算机科学。如果不改变思维方式,则很难开发出既好卖成本又低的产品。
4.优秀人才在哪里
学徒模式是过去造就大师、传承技艺的方法,而现在指导和辅导却成为了一项被忽略的活动,团队成员得不到所需的支持。技术领导人不仅要引导整个项目,而且还要为员工提供必需的协助。除此之外,指导和辅导提供了一种增强员工技能的方式,可帮助他们完善自己的职业生涯。这种协助有时是技术性的,有时是软技能的。可惜的是,在我们的行业里,许多优秀的开发者在转向管理岗位之后,就放弃了对技术的追求,甚至再也不写代码了,因而团队中失去了最有价值的技术领导和导师,导致今天的开发者还会继续重蹈覆辙。很多优秀的导师都消失了,让开发者到哪里去获得经验呢? 未来的优秀人才从哪里来?
5.告知读者
这本书如同培训讲师的教案,是我和同事们的读书笔记及程序设计实践的心得,并不是一本从零开始编写的专著或图书。其中的很多内容并非我们原创,而是重用了一些公开出版物的内容,详见本书的参考文献。
6.丛书简介
这套丛书命名为《嵌入式软件工程方法与实践丛书》,目前已经完成《程序设计与数据结构》、《面向 AMetal框架和接口的 C编程》和《面向 AWorks框架和接口的 C编程上》,后续还将推出《面向 AWorks框架和接口的 C编程下》、《面向 AMetal框架和 接 口 的 LoRa 编 程》、《面 向 AWorks 框 架 和 接 口 的 C编 程》、《面 向AWorks框架和接口的 GUI编程》、《面向 AWorks框架和接口的 CAN 编程》、《面向AWorks框架和接口的网络编程》、《面向 AWorks框架和接口的 EtherCAT 编程》和《嵌入式系统应用设计》等系列图书,最新动态详见 www.zlg.cn致远电子官网和www.zlgmcu.com周立功单片机官网
周立功
2018年9月2
|