操作系统  办公  实用知识  设计  开发  WEB开发  移动开发  数据库  软件工程  网管  安全  管理  信息化  答疑  渠道 

行业应用软件专业的课程设

2007-9-4 网友评论 0 条 点击进入论坛

               行业应用软件专业的课程设计
               中科软科技股份有限公司 左 春
  前一段时间,某大学的软件学院向我征询实战性强的软件专业学科的建议,我当然就提出了“行业应用软件”专业。这不仅是由于我目前正在从事这门课的教学实践,更重要的是软件企业需要这种专业的毕业生,而且在中国软件企业或大单位的信息中心工作的软件工程师们,绝大多数是在从事行业应用软件的开发、应用和维护,可见它的市场需求是巨大的。近几年来,像中科软这样的软件企业每年都有几百名新人进入,他们当中有很多人都会面临“学以致用”的困扰。我们选择的新人其专业面好像很广:计算机及通信、软件工程、数理化、电子工程、管理信息、金融、……每当我看到他们的课程表和成绩单时,总有一种感觉:从软件企业人才发展的角度出发,应当对这些课程做出某种补充。市场是敏感的,这种补充已经顺势而生了。

  目前各大培训机构已经纷纷推出了一系列实战课程,它们主要包括:J2EE核心技术——企业级应用软件设计与开发(对应的还有.net),Oracle数据库实用技术,IT项目管理等(我们中科软也是这类培训课程的主力军)。这些课程确实起到了缩小理论知识与实际应用软件开发的差距,它很有市场,也解决了可以“动手”的问题。有人说动手能力是最重要的,但我还是半信半疑,因为动手能力只是一些简单的技艺,它确实很重要但不是根本性的,很多高中生经过培训也反映出了很好的动手能力。那么到底什么知识背景是我们做行业应用软件开发的软件企业最看重的呢?在部分解决了“动手”能力之后,我们还要解决什么样的问题呢?
既然是实战课,我们首先应看看几个目前比较热门的行业应用软件的构成: (参考IDC和CCID报告)

保 险

核心业务,再保,

展业,绩效

财务管理,审计

CRM/CC

电子商务

渠道管理

数据仓库,

BI报表

银 行

核心业务,卡业务,

中间业务,支付与清算

总帐,审计, 稽核,资源管理

CRM/呼叫中心

电子银行

渠道管理

决策支持,

风险管理

电 信

综合计费,采集

帐务,ERP

CRM/CC

门 户

合作管理

数据仓库,

经营分析

  简单的说,行业应用软件就是与该行业领域知识密切相关的应用软件。我们知道领域知识五花八门,所以行业应用软件也十分丰富,本文先侧重于目前热门的服务性行业。从表中我们看出,行业应用软件在不同的行业内叫法不同,内容有差异,但是又非常相似。从分类形成方面看,一般从基础管理出发(它是一个综合应用,有时也叫核心应用),随着管理的专项化,进行通用性提炼,产生扩展部分,并强调整体的一体化。后端分析也是在基础和扩展的前提下,进行的管理层的各项辅助决策支持。

  从表中我们可以看出,各子系统在以上几个行业都很相似。在核心业务部分,是以一种“合同”内容为基础的管理系统,它反映了企业与其客户的“权利义务”关系。合同中的重要数字“钱”等资产被专门的管理在总帐(财务)管理系统中,这就是所谓的业——财一体化。“扩展”部分是从核心分立出来的,它强调不同方面的侧重,典型的有客户关系、渠道管理、经营方式等,在开发上它们有很相似的内容。

  为什么很多工程师认为上述应用是简单的呢? 因为经常看到的现象是,进入一个软件开发项目组,他们主要的开发工作为:

1. 与用户讨论一些业务单证或文字性“需求”,做出软件开发计划(2—4周);

2. 建立一个与用户使用单证类似的数据库结构和对应单证的界面(2—3周);

3. 编一段程序输入/输出用户的要求,并与用户讨论做局部性修改(2—4周)。

这确实是软件工程师的一般日程工作,为了展开知识点的讨论,我们把上述工作做一般性归纳,有如下阶段成果:

行业应用软件阶段目标说明:

  从图上我们分了三个可循环的阶段和四个课程(知识点)目标,下面我们会针对这四个课程目标进行展开,特别是关联上目前已有的教学课程,并对这些已有课程做简单的归纳,强调与我们目标的关系,讨论实战应关注的补充内容。任何课程不可能与实战完全一样,我们的目标是缩小传统课程与实战的差距,并尽量做到“与时俱进”。
  去年我在“第四届中国软件技术大会”上做了题目为“行业应用软件——社会科学和自然科学的结合”的演讲,难道行业应用软件作为一个应用型专业来讲,真的不单是涵盖传统理工科所开设的课程,而要大量选择文科专业所学的课程吗?在如下的课程体系清单中会使你不难发现问题的答案:
课程体系清单:
  写作基础、语言学、管理学、行业学(保险学)、会计学、领域术语标准化及翻译学、管理文件写作、领域概念数据模型、数据库技术、对象及过程技术、界面综合技术、开发工具和环境、软件体系结构、软件工程、励志文选、沟通表达技术及心理学、操作系统、数据和算法的运用分析、经济学原理和行业市场分析、行业应用软件(综合)。
  课程与目标的关系图如下:

那么这个课程体系与阶段目标到底有什么关系呢?下面我们进一步说明所选课程的内容与阶段目标及行业应用软件的关联。关于参考书,本文给出的大部分是基础和通用的教材,为了大家可以多选几本参考书,我们只列书名加“《 》”号,如《写作》、《语言学》、……及延伸的课程,因为同样名字的书有时挺多的,新书和文章也在不断涌现。
  ※ 课程目标Ⅰ:
  课程目标Ⅰ主要针对行业应用软件基础性内容,并侧重应用开发中“需求”的部分,它的归纳性课程是“管理文件写作”。

  具体课程说明如下:
  写作基础:
写作本身也是一门复杂的综合性课程,它的好坏差别很大,我始终对写作好的人充满崇敬。写作几乎是我们从事各项活动的基础,是我们写各种文章和文件的指导,也是目前软件工程师的普遍弱项(我们看到的大量应用软件文档几乎都是没头没尾或在叙事上不得要领)。
已有的写作课在大的分类上有:行政公文、事务文书、经济文书、法律文书、科技文书、新闻写作、学术论文写作、文学创作等。
  涉及这些内容的参考书很多:《写作》,《科技论文写作》,《公文写作》,…
  对写作基础我们归纳三个要点,在今后的课程中要反复运用。首先,写作基础培养我们对叙述要素的理解,如:人物、时间、地点、原因、结果(对象)、事件(行为)(Who, When ,Where ,Why ,What, How,简称5WH);其次,写作课强调叙述方法(结构)的学习,如:顺叙、倒叙、插叙、分叙、补叙等;最后,写作课还包括与内容有关的写作要点:即主题,结构,语言,文面等。
  写作的本质是我们对一件事情(主题)进行介绍、描述的方法,古代先贤很多依靠写文章和写奏折来表达自己的想法,这是我们写作课的最好范例。
  行业应用软件包括应用软件开发和工程应用,大量的沟通和文档要通过具体文件的写作来实现,近年来公务员考试炒热了《公文写作》,但是工程化文档的写作越来越引起人们的重视,所以写作课是我们的一门基础性课程。
  针对各阶段目标,进一步补充的内容(在已有写作课的基础上):
1. 运用写作的基本概念,结合行业应用软件开发的主要文档系列,形成工程化的文档写作方法和范文集。
2. 针对行业应用软件开发的需要,运用5WH分析方法和叙事结构体系,解决可操作型“管理文件”的写作问题(具体参见“可操作型管理文件写作”一文),为行业应用软件的需求形成打下坚实的基础。
3. 结合“语言学”课程寻求技术文档的表述方式,以便加强精炼、准确、全面、一致、优美、生动的文档风格。
  语言学:
  语言学是我们沟通和思维的工具,它包括语音、语义、词汇、语法、文字和发展复合分支(如:功能语言学,模糊语言学,认知语言学,语言类型学,社会语言学,心理语言学,文化语言学,应用语言学,计算语言学……)。
  语言学涉及本课程的参考书很多:《语言学》,《计算语言学》,《信息检索技术》,又如《中文信息处理》,《自然语言理解和处理》等。
  行业应用软件最重要的工作之一是信息化建模,或者说建立面向领域的语义和概念网络,语言学则是所有这些工作的基础。
  行业应用软件同时又是一个应用工程,它需要大量的沟通和文档,语言则是表达它们的主要工具。
针对各阶段目标,进一步补充的内容(在已有语言学课的基础上):
1. 结合具体领域,给出更有针对性的行业术语定义和词汇分类,形成行业应用的语义概念框架,具体进展参考“领域术语标准化及翻译学”课程。为了弥补管理模型和技术实现之间的语义差异,我们的工作就是不断地建立介于类自然语言和形式化的机器语言之间的“中间语言”和概念体系,语言学的知识几乎贯穿于我们每一抽象层面的表述。
2. 结合语言学中语义概念的定义,开展一种动态/可变的本体论研究(过去人们对本体的本质的、静态性的研究较多,但是行业应用软件中涉及的领域概念既有稳定、静态性的内容,也有变化、动态性的内容)。在软件应用模型中,充分反映这种变化的可控能力,可进一步参考《本体论》和行业学(如:保险学)中的“产品设计”等内容。
3. 加强汉语的研究,及汉语与英语的翻译。因为在行业应用中,我们交互用汉语(语义,词汇和语法),而对应的程序操作符则大量采用英语(语义,词汇,对应符号),进一步参考“领域术语标准化及翻译学”课程。
?  管理学:
  管理学是门综合性很强的基础概念课,它给出了管理和管理者的定义,并就管理中的战略和计划、组织与协同、行为与责任、个人与团队、控制与绩效等问题展开深入的讨论。具体的管理方法也很多,如:平衡计分卡,关键绩效指标,360度反馈评价,目标管理导向……
  涉及的主要参考书《管理学》,《绩效管理》,《平衡计分卡》,……
  其实,管理涉及的内容是五花八门的,管理学是对各种管理思想方法的总结,行业应用软件从很大成份上讲就是一个管理软件(管理合同,管理客户资料,管理合作伙伴资料,……)。虽然我们在一定的层面才会介绍计算机实现管理应用的相关技术,但是应该认识到:管理的思想需要细化,管理中使用的大量实例和数据要依靠工具来协助处理。总之,管理学知识是这类软件开发的概念基础。不要以为管理者一定是什么大领导,其实我们每一个人都是管理者。
  针对各阶段目标,进一步补充的内容(在已有管理学的基础上):
1. 对于行业应用软件的开发来讲,我们不能只停留在管理的基本原理和思想方法上,而需要进一步加强管理规则的分析和细化,要强调管理上的“可操作性”,具体可参考“管理文件写作”课程。
2. 管理强调计划、完成和效率,在行业应用软件开发过程中,要形成自己的特点,我们必须结合“软件工程”课程中的CMM相关的内容,对管理学中涉及过程管理的内容做进一步的细化。
3. 管理学强调实践内容,而行业应用软件是一个实际的工程项目,项目的组织与协调是重要的实践。我们可以结合“软件工程”课程中的项目管理的内容,进一步深入探索项目管理的具体方法。
4. 管理学另一个重要方面是管理者的素质问题,它也涉及管理者的情商,进一步讨论可以结合“励志文选”课程加以完善。
  行业学(保险学):
  行业学(以保险学为例)是一门面向具体领域的管理和介绍性课程(每一个行业都有这样的课程,或者说系列课程)。保险学主要介绍保险(行业)的定义和特征,发展的历史和分类,作为行业特性也介绍其中的基本原则(如:最大诚信原则,补偿原则,保险利益原则,近因原则,……等),此外作为保险(行业)的经营也讨论市场与监管、产品分类与定价、合同内容与管理等。
  涉及的主要参考书有《保险学》,《风险管理》,《保险实务》。
  行业应用软件最大的特点是行业的基础背景,所以涉及什么行业背景必须了解这个行业的定义、特征、发展历史、基本原则和内容分类,这是基础中的基础,这也是为什么在很多行业中称其为“核心”应用。作为理工专业背景的工程师,开发行业应用软件,行业学是一门必修课程。由于很多软件工程师甚至项目经理对这门课的忽视,导致模型建立和系统设计存在大量问题,与客户沟通产生很大的障碍。
  针对各阶段目标,进一步补充的内容(在已有行业学(保险学)课的基础上):
1. 在学习了保险学的基本原理后,我们的目标是为细化和可操作管理(应用软件的开发)做进一步的准备性工作,这要求我们更具体的分类保险业务和产品,并针对分类做出更具体的操作实务。同时也可参考“领域概念数据模型”课程,形成比保险学内容更细的领域概念模型,完善现行的保险实务。
2. 虽然我们学习了保险学,但是在概念模型的建立上仍有基础的背景工作需要进行完善,而且还要有一个行业内的“约定俗成”。在结合“语言学”课程的基础上,我们将进一步讨论“领域术语标准化及翻译学”课程,统一国际化的保险业务标准。
3. 在深化保险学的经营管理内容时,我们还要深入讨论管理学中已提到的控制与绩效等内容,具体可参考“管理文件写作”课程。行业学是管理学的领域实例化,是我们构成该行业的“核心业务”系统的主要基础。
  会计学:
  管理的一个独立分支是会计学,会计学介绍了会计的产生和发展历史、会计的要素和会计科目、以及复式记帐原理、会计凭证和会计账簿,并对如下内容进行核算:流动资产、投资、固定及无形资产、负债、所有者权益、费用、成本、收入、利润等,同时介绍常用的财务报告或财务报表。
  会计学的参考书很多:《会计学》,《财务会计学》,延伸课程有《审计学》,《管理会计》,《XBRL》。会计学有时也称“商业语言”,它提醒我们正在从事与经济活动有关的管理。
  从行业应用软件构成表中我们知道,行业应用软件的基础软件包括核心业务系统和财务系统(总帐系统),其中的财务系统就是以会计学为基础的,财务管理是行业应用管理在通用商业模型、会计核算方面的体现。
  针对各阶段目标,进一步补充的内容(在已有会计学课的基础上):
1. 行业应用软件的一个发展趋势就是使财务系统平滑的过渡(连接)到业务系统,“权责发生制”的引入就是想通过财务的方式对业务进行更前瞻的管控。从发展趋势看,它们越来越重视概念一体化的管理,但是由于分工侧重的不同,财务和业务毕竟是两个系统,所以两系统接口的部分是行业应用软件重要的讨论内容,其架构规则参考“软件体系结构”课程。
2. 会计学的延伸是管理会计,预/决算等内容,是业务管理的重要组成部分,预/决算的制定与业务系统的有机结合,是今后一个时期内行业应用软件开发的重点课题。
3. 会计学的另一个延伸是审计学,如何把业务中的风险管理子系统与审计系统做合理的连接是我们下一个热点问题(详见“目标Ⅲ的总结”内容)。
4. 技术的发展也影响着财务软件和企业财务状况的反映,近来国际上流行的XML技术与财务分析的有机结合——XBRL,也引起业内的高度关注,具体参考《XBRL语言》。
  领域术语标准化及翻译学:
  行业应用软件的开发与系统软件开发有一个很大的不同,即领域对象是不断变化的,是各自定义的,而且随着领域业务的发展还会带来新的含义和概念(而系统软件管理的对象变化不大,如:内存、CPU、进程、文件、……)。为了更好的把握变化,我们讨论的领域活动和领域操作对象尽量使用领域的术语(单词),并尽量保证符合国家或行业标准。又由于我们是非英语系的国家,在开发时我们只能使用中文做应用交互语言,而在软件程序中,我们又必须使用字母构成的符号语言,一般我们采用英文作为操作符(其中一个原因是中文的“拼音”只有表音作用,几乎没有表义作用),这就使得每一个行业应用软件编程人员应该是领域术语字典的专家:可以进行“造词”,并且具备良好的翻译素质。
  涉及的主要参考书有《行业术语》(如保险术语),《GB/T国标系列》,《ACORD》(保险),《HL7》(医疗),《翻译学》(如:对信、达、雅的讨论)……
  针对各阶段目标,进一步补充的内容(在本课程的基础上):
1. 领域术语表的进一步应用是加工生成“词根表”(也是应用中“造词”的基础),它反映了我们建模和编程中的命名方式,由于“词根表”是中英文对照的,所以词根及词组根命名和翻译中的“信、达、雅”是我们不断追求的目标。其中,“信”反映对中文词/词组含义的理解,“达”反映中文词/词组对应的一组英文词/词组的理解和选择,“雅”反映在这组英文词/词组中,选择一个最反映本行业概念(标准术语)和本内容的流畅表达的词/词组。在系统软件开发中我们对“对象”的命名可以是通用的,甚至有时用变量代替,但在行业应用软件开发中,“对象”的命名更需要使用“词根表”的内容,而很多的应用软件工程师还在忽视这个关键性问题,它直接的后果是使已形成的模型和应用软件与领域内已有的概念不相符。我们进一步的工作还涉及“领域概念数据模型”课程。
2. 由于领域术语表有时也各自为政,各种标准化文件也琳琅满目,如何使用和协同不同的体系也变成了一个重要的发展方向。我们进一步的工作是结合具体行业术语和行业标准,形成领域术语字典(中/英文)和运用行业标准的方法。进一步的内容可参考“管理文件写作”课程,本课程是它们的基础性课程。
?  管理文件写作:
  这是一门新课,也是前几门课的综合。我们提到行业应用软件主要是管理软件,但是管理学只介绍基本原理,而对各项管理“规定”还要做进一步说明。比如:企业财务管理规定、员工守则、资产的管理规定……,很多学生进入工作岗位,面对这样的写作总是十分着急,很多程序员面对这样的规定,一时不知如何组织应用程序结构。这门课的作用就是使我们如何更好的表达这类管理文件,并有效的把这类的规定变成模型框架,它是在业务层面形成的完整的可操作模型,为编写行业应用软件打下基础。通俗的讲,这是一门企业或单位在管理文件方面的“立法委员”所拥有的知识。
主要的参考文献是目标Ⅰ所列课程,这门课的更详细的内容,请参考文章“可操作型管理文件写作”。
——目标Ⅰ的总结:
  目前我们遇到的行业应用软件开发的主要困难之一是“需求”问题,而这个问题涉及太多的方面。目标Ⅰ的成果物从本质上讲就是一个文档和文件,特别强调的就是可操作型管理文件,这个文档或文件的写作方法是我们今后一段时间内讨论的重点。
  ※ 课程目标Ⅱ:
课程目标Ⅱ主要围绕行业应用软件组成和开发讨论的,它侧重行业软件的构成技术,归纳性的内容可参考“试述样本程序比赛的几个理由”一文。

  具体课程说明如下:
  领域概念数据模型:
  在我们行业内经历了引进国外庞大的应用软件经验和教训之后,大家似乎形成了一个共识,即优先学习和引进国外的领域数据模型。大家终于明白引进模型是引进技术,而引进应用软件系统是引进“服务”,“服务”在国外也是最贵的,它涉及对专业人才的大量使用。然而,学习模型也并不简单,真正核心的领域概念模型其实是很难得到的(它这么重要,又这么好学,岂不怪哉)。从我们加入国际化标准组织的经验看,加入组织就像加入写文章的“作家协会”,它统一基本的术语(字典)和原理,但真正想解决你自己写文章的问题,还要进行交流和自学,不是抄一下了事。然而越是这样,我们越要有创造性的学习领域概念模型的有关知识,前面列出的课程都是它的基础。一个具体的领域模型范本一般包括目标和目的,主题域分类介绍,领域对象的静态关系和动态关系,应用举例,术语和参考文献等。
  主要参考文献包括:保险领域《ACORD》中的CDM(概念数据模型),卫生领域的PHCDM(公共卫生概念数据模型),或者参考更一般的著作——《数据模型资源手册》。
需要进一步补充的内容很多,其中很大一部分我们在“管理文件写作”课程中进行了讨论,具体请参考文章“可操作型管理文件写作”。
  数据库技术:
  数据库技术是计算机专业的基础课程之一,它的发展历史和主要技术内容我们不做过多的介绍。作为内容衔接,数据库技术主要解决我们在“管理文件写作”课程中所说的“表单”的实现结构,其实在“领域概念数据模型”中我们已经引出了“概念数据模型”,数据库技术是实现这种模型的最主要工具。
数据库技术作为教材有很多版本,如:《数据库原理》,《数据仓库》。同时,数据库技术作为实战技术也有很多参考资料,它们主要是针对不同厂家的产品,典型的有Oracle、DB2 和SQL Server 等。
进一步补充的内容(在行业应用软件开发中重点加强的部分):
1. 进一步加强从概念数据模型向逻辑数据模型和物理数据模型的转化,这种转化涉及关系数据库的实现机制和原理,并由此延伸到数据仓库的多维模型。
2. 对行业应用开发中使用的SQL语句进行实战性扩展,了解各种封装SQL语句的方法,并结合“开发工具和环境”课程进行深入讨论。对数据库技术的索引、游标、触发器等技术做结合应用软件开发的讨论,并以此解决应用软件效率问题。
3. 进一步从实战角度完善数据库DBA技术,分析SQL语句的执行,通过调整数据库系统的参数,来改进数据库系统的运行效率,同时也促进应用软件的效率。
实战培训课程:“Oracle数据库实用技术”已经对已有的课程做了补充,但结合本文介绍的行业应用软件体系还可以进一步补充。
  对象及过程技术:
  对象及过程技术是应用软件开发的两大基础性技术,也称“面向对象”技术和“面向过程”技术,开发行业应用软件少不了组件和组装。可供参考的书有很多,特别是面向对象技术,很多书中也简称《OOP》,《OOD》和《OOA》,它是我们模型实现的主要概念工具。而面向过程技术反映一种组件的组装,介绍的资料更侧重具体的脚本技术和脚本语言,有关的内容也可参考“样本程序”(参考“试述样本程序比赛的几个理由”一文)。
  进一步补充的内容(在行业应用软件开发中特别涉及的):
1. 行业应用软件开发中,有一类通用的应用程序,有时也称“通用横向组件(子系统)”,如:代码管理,权限管理,工作流引擎,规则引擎等。这部分内容相对独立,却没有独立的课程加以介绍,但又是行业应用软件开发必备的内容,因此应有专门的文档和课程加以介绍。
2. 行业应用软件的集成方法也是一个新的热点,“样本程序”技术是其中重要的组成,它需要进一步的实战归纳和总结,具体参考“试述样本程序比赛的几个理由”一文。
3. 对象及过程技术反映应用软件的“中间结果”,其中关于交互界面应进一步参考“界面综合技术”课程,而集成框架参考“软件体系结构”课程。
  界面综合技术:
  行业应用软件进入实际可操作状态离不开界面综合技术,已有的参考资料很多,它分别以《用户界面设计》,《人机交互》,《交互设计》等进行介绍,其主要内容包括交互界面的理论和原则,设计方法、模型、规则和实现支持,认知模型和评估技术等,可以看出它也是涉及多个学科的综合性技术,行业应用软件在管理上的“物理”可操作性是由这门课程主要支撑发展的。
进一步补充的内容(在行业应用软件开发中重点加强的部分):
1. 形成相对统一的行业应用软件的界面风格,包括环境布局,菜单组织,导航引导方式,内容填充方式,例外处理等。并最大限度的保证在三个主要阶段,即:需求分析阶段(界面)、系统设计和程序实现阶段(界面),使用手册阶段(界面)的高度一致,不断求精,结果复用和互动修改。
2. 行业应用软件在发展上,受界面设计环境影响非常大。如:我们从4GL的终端(界面)到J2EE 的微机界面,设计和编程几乎都要重新进行,造成大量浪费。而从发展上看,我们又要返回很多“移动电子设备”的“受约束的界面”,所以我们结合行业应用必须形成一种虚拟化的界面技术,以平衡各种界面的约束,保证内容的稳定和方式的友好。
3. 行业应用软件在管理逻辑方面主要依靠“表单”作为界面的替代物(参见“管理文件写作”课程),但从系统需求和设计开始就引入了“操作界面”,在引入之后,由于它的约束使控制过程和交互界面融合在了一起,并且可根据不同的操作者岗位职能的不同,进而选择不同的交互过程,使交互方式和界面的内容变得更加丰富,因此我们需要进行组织和模式上的总结。进一步来讲,有时候为了更准确的表达不同方式中的“界面”,应有一个独立的概念,这就丰富了我们的术语和概念的命名方式。又由于界面的空间限制,很多概念术语使用缩略语,这也要求我们提出更丰富的词根及缩略语字典表(具体可参考“领域术语标准化及翻译学”课程)。
4. 行业应用软件的使用手册一直以来是弱项,如何以界面技术为基础,书写使用手册是我们一段时间内的重点。
  开发工具和环境:
开发工具和环境对行业应用软件的开发是极其重要的,对软件工程师而言这是基础技能,也是看家本领。而且人和人之间也确实有差别,就像人都会跑步,但有的人却没法比赛,因为可能跑的太慢了。过去,我们所说的编程动手能力,也主要反映在对开发工具和环境的运用熟练度上。这部分的参考资料也太多了,从技术大类上主要分《J2EE》,《.net》,从工具环境厂家看,主要有IBM、微软、Borland、开源、……
  进一步补充的内容(在行业应用软件开发中特别注意的):
1. 在行业应用软件中,要选择几本好的参考书,很多新手会问:是学J2EE好还是学.net好?在我看来都差不多,关键是举一反三,并且要在一种内容上选一本好书,把它从头到尾看完(有时候我们的工程师都没有看完一本参考书就开始编程和设计),以这本书作为编程约定和样本程序的主要参考书,来进行编程规划和约定。
2. 目前由于开发行业应用软件涉及的工具和环境过于庞杂,所以要采用某种“集成”技术,“样本程序”就是其中的一种(可参见“试述样本程序比赛的几个理由”一文),有关的内容也是开发工具和环境的下一个重点。很多技能不只是学出来的,而是干出来的。
3. 在实际编程中,我们要对整个的工具和环境有一个面向应用的分类。如:编辑开发,调试,测试,版本管理,代码管理,环境管理,并给开发者以简捷明确的文档介绍(可能跨产品线),以使程序有相对稳定、清晰的开发和维护平台,并保证团队开发的协调能力。
实战培训课程:“J2EE核心技术——企业级应用软件设计与开发”(同样也有.net)解决了一部分这类问题,但结合本文内容还要做必要的补充。
?  软件体系结构:
  软件体系结构是对应用软件整体功能划分的讨论,体系架构本身有两层含义,一是企业架构,二是软件体系架构,二者有联系也有区别。企业的架构反映企业和单位的功能划分,有的甚至把政府机构也做这种功能划分,其发展方向是“外包”,由于架构规划使功能明确、边界清晰,从而便于各种资源的整合,其主要参考资料为《企业总体架构》。很显然企业的架构指导了我们应用开发的架构,涉及行业应用软件架构是“面向服务的架构”(SOA),SOA实际上包括企业软件架构的主要内容,软件体系结构和构建方法学是它的主要内容,具体参考《SOA》有关文献。
  进一步补充的内容(在行业应用软件开发中特别涉及的):
1. 服务是组件技术的进一步发展。结合“面向对象”技术的有关内容,应有效地组织行业应用软件的服务体系,具体也可参考《构件技术》的有关内容。
2. 流程管理是组装技术的进一步发展。结合“面向对象”技术的有关内容,规划灵活多变的流程控制技术,具体也可参考《业务流程管理BPM》 的有关内容。
3. 体系结构重要的部分反映为行业应用软件的“服务总线”和基础结构。更具体说就是中间件技术,要充分理解总线的概念与异构环境的关系,最终使行业应用可以在跨操作系统、跨开发工具、跨中间件产品的方式下,方便的开发和集成。
4. 进一步理解中间件产品的作用,包括其中的部署和效率问题,适配器的概念和部署,及中间件产品发展的方向。
——目标Ⅱ的总结:
课程Ⅱ的目标在课程关系示意图中已有列举,需求阶段我们强化界面,设计阶段我们强化数据库结构和功能体系,在体系结构上我们强化组件和组装技术。
 ※课程目标Ⅲ:
  课程目标Ⅲ主要针对在行业应用软件产生的全过程中,涉及以工程管理为主的有关内容,它的归纳性课程是“软件工程”。

  具体课程说明如下:
  软件工程:
  应用软件开发的工程师几乎都学过软件工程这门课程,它是一门以工程实战为主的课程,这也说明做了行业应用软件开发之后,需要进一步或重新复习这门课。这门课包括的内容很多,它也是一门综合性课程,它的一个主要内容是软件过程管理,其中《CMM》有关的内容就是一个基础,过程模型和方法学也是它的主要内容,涉及《原型开发》,《极限编程》,《特征驱动开发》,《敏捷建模》等。
  软件工程课作为软件开发周期的介绍,它系统的介绍软件是如何一步步产生的,从需求管理,系统分析,应用建模,设计工程,体系结构,组件及组装,用户界面设计,应用开发,测试管理,到版本及质量管理。这也是一门把已学基础串联起来的课程,在课程目标Ⅰ和Ⅱ中也已经部分的讨论了它的内容。
  软件工程这门课也强调软件的项目管理,这包括很多内容如:人员,团队,项目控制和质量(各种量化度量),进度管理,风险管理,变更管理,软件产品化和最终实践等战术问题。
  软件工程是一门很好的串讲课,与行业应用软件课的不同在于它更通用、更基础,而且串讲课大部分会介绍方法学的内容,也就是说不一定需要我们死记硬背,但是要知道它的主要思路,以及已有的成功先例和方法。
进一步补充的内容(在已有软件工程课的基础上,进一步强化):
1. 行业应用软件在已有软件工程课的基础上更强调工程,这是因为传统的软件工程课程重点是怎样把软件开发出来,而行业应用软件要解决的不只是把软件开发出来,而且包括这个软件是如何被测试的,如何被使用的,如何被维护的,我们需要更多的工程化内容(看一份行业应用软件的开发合同就知道我们的任务是什么了),如:如何组织联合开发团队及分工,如何大规模迁移数据,如何开各种会议,如何进行试点和推广活动,如何进行大规模的培训和上线的保障(这叫“扶上马,走一程”),如何进行复杂系统的升级、维护、保驾,如何规划外接软件和系统。
2. 软件工程这门课是基础性串讲,这是很必要的,而行业应用软件是一种应用和工程型串讲,它重要的不同点是结合“行业”,行业的模型是软件的本质内容,只有结合它才能更有实战意义。
3. 项目管理是行业应用软件的重要内容,结合行业应用项目管理从分工,组织,到质量控制,计划完成要更实  实际上,项目经理的工作主要是“组织实施”,它以管人为主,但是对实施的内容太不了解,就会变成“管人不管事”,这就是所谓管理者和领导者的区别。身为领导者必须对所管理的事也非常了解,以此来指导和协助团队完成任务(这里所说的“事”就是本文列出的很多知识点在实际中的应用)。我们期望快速成长的项目经理尽快成为合格的领导者。
  实战培训课程:“IT项目管理”对这一内容做了较完整的补充,结合本文介绍的内容,特别是应用工程问题还可以进一步完善。
  励志文选:
  行业应用软件开发在多数时间内都是一项单调和繁琐的工作,若想保证成功需要有一定思想方面的培养,也就是说能够指出这项工作“情商”的重要性。20世纪90年代的心理学家丹尼尔?戈尔曼出版了《情商》一书,它的主要定义是“能认识自己和他人的感受,自我激励,很好地控制自己,以及在人际交往中的能力”。后来发展的类似定义很多,回想起来中国古代先贤的很多教诲(包括儒、释、道的一部分),也是情商教育的早期版本。
  行业应用软件到底是“产品”还是“服务”?现在还是仁者见仁,智者见智。但是无论怎样,它非常不同于系统软件(产品),这就是它的工程性,也是它的“服务”性,更是我们强调“工作态度”的重要原因。所以单纯的技术观点很容易出问题,很多时候我们用几乎同样的软件,类似的方法学,但是团队不同,结果却不同,用户的满意度也不同。我们不得不认为,情商从中起到了很大的作用。
  近期,这类的文章很多,如:全美最值得人们崇敬的篮球教练之一,约翰?伍顿所写的《全力以赴:让每一个人激情飞飏》,就列出了成功的金字塔,塔由15个要素组成:勤奋,友谊,忠诚,合作,热情,自制力,机敏,主动性,专注,状态,技能,团队精神,镇定,自信和最大竞争力(信念与耐心)。李开复先生的《与未来同行》是一篇有代表性的著作,李先生给出的情商定义是认识自我,控制情绪,激励自己,以及处理人际关系等方面的能力。对于他特别提出了四种关键性因素,即自觉、同理心、自律和人际关系,是很值得我们学习的。
  结合行业应用软件开发中的问题,我们也会补充几个方面(因为这类问题说一个标题就像喊几句口号,所以我们多举一点例子):
  责任感
  在企业管理或行业应用软件工程化过程中,我们非常重视有责任感的人。有责任感的人最大特点是勇于承担责任,特别是一位领导。我们有这样的潜规则:如果你是领导,分配你手下员工去工作,那些没有分出去或不可预见的工作都是你自己的。在这样的规则下,出现了问题,过多的指责部下,同事和领导都是有问题的。因为责任感要求我们在接受领导任命的时候不只是一个官职和荣誉,也包括一份沉甸甸的责任。
  责任感要求我们有一种被托付的使命感。当前,我们面临的是一个竞争的社会,每一项职务都反映组织和员工对我们的信任,因为他们在有很多其它选择的条件下,选择了我们,所以我们应该有一种责任感。有时在工作中,我们也能遇到有不错能力的人才,但是他们有太多的“舍我其谁”的思想,在工作中容易“患得患失”,在艰苦和关键的时刻往往彷徨,经常会想甚至会说“大不了我就不干了!”。其实在遇到困难的时候,很多人都会感到迷茫,通过情商课程的学习,可以使自己认识到我们与他人的差距。在价值观上,我们提倡:当大家都依靠你的时候,你默默工作,不拿一把。只有这样的人,才是值得别人信任和托付的人。一个值得被托付的人,几乎没有任何浮躁的言行。
  责任感使我们对别人的信任看得很重,有一种“知遇之恩”的感觉,它使我们忘掉了“委屈”这个词的含义,因为别人的托付(在竞争的环境下,也是我们争取来的),办好了是应该的,没办好,反而是我们亏欠别人。
  尊重的力量
  相互尊重是个人和团队战斗力的基础,养成尊重别人的习惯是情商高的重要标志。因为你只有尊重别人(特别是新员工),别人才尊重你,你带的团队才有战斗力。那种见到大领导过于谦卑,见到职务低于自己的人过于粗暴的现象是要力戒的。
  在尊重别人的同时,也要自重。越是有一定权力,越要约束自己,使自己在努力学习方面有所进步,由于你的专业和敬业别人才会更尊重你。
  从更广的范围讲,我们也要尊重我们的竞争对手。因为竞争只是手段,目标是更好的为客户提供产品和服务,只有相互尊重才能形成更好的服务质量。
  主动性
  主动性是一个人能力(情商)的综合表现,主动性强的人经常“心中有事”,总有一个“未做完事情的清单”或强烈的竞争意识:了解市场,了解环境,持续学习和总结,防患未然。
  主动性强的项目负责人,只要有与项目有关的事,他都会认真思考,主动地与涉及该项目的主要人员(技术经理,业务经理,自己的主管,合作伙伴……)保持沟通,主动的提出建设性意见。主动性也反映在处理问题的质量上,对问题一追到底,不只满足于处理了,而要努力做到各方都认可为止。
主动性包括主动地建议,当然一定尽量与本职工作有关,而且保证“破”和“立”兼顾。“破”反映一种聪明,“立”反映一种能力。也就是说,尽量提出解决问题的方案,不要提什么方案都说不清,看别人的方案也经常不以为然,要主动工作,形成某项任务的标杆。
  主动地建议有时也会被忽视、拒绝、误解,要对接受建议的人有一个充分的理解,因为每一个人所处位置不同,看问题角度不同,即使没有接受或暂时没接受你的建议,也应该继续做好自己本职的工作。
  开放的心态
  有一定能力技术背景的干部强调效率,对于当前工作内容关系不大的事情和合作者没有耐心,接触时不太被合作者认可,影响长远的合作关系。情商中提倡的人际关系,反映一种长期的投入。
  很多技术背景的干部对技术交流有时抱消极的态度,这十分不利于技术的发展,有追求的人不能只满足于在小团队中的“大王”状态,应该加强骨干的培养和更广泛的交流。
  在我们的工作中,可能会受到领导,客户甚至同事的批评,要冷静客观的看待。严重不合事实的,可以诚恳地一对一交换意见,要学会心平气和的讨论不同观点。同时要能够及时发现别人的优点,吸收和交流别人的成果,而不要反复与别人的缺点比,因为越比反而会使对我们对自己的要求越低。开放的心态就是保证乐观积极的态度,因为悲观的情绪就像传染病,经常会“传染”免疫力低的同事。
  沟通表达技术及心理学:
  开发行业应用软件有一个激烈的竞争环境,它不只是一个简单的软件开发过程,它时刻存在着竞争和人与人之间的关系,我们甚至可以把它看成是一场软件企业生存的竞赛,在这场竞赛中,有很多的技巧需要我们学习。其中的典型是如何去投标,如何去突出自己的优点且指出对手的不足,如何做各种PPT和应答文件,如何与客户、领导、伙伴、甚至竞争对手去沟通,如何与合作者谈判以形成协议,如何理解合同中的权利义务关系,如何形成正确的逻辑思路来面对诉讼问题。总之,以软件工程师为基础的行业应用软件开发团队几乎都存在着大量的沟通问题,所以这是一门重要的课程,结合具体的工程实践,它几乎也是一门新课。
  可供参考的文章和书很多,主要包括《沟通与表达》,《有效沟通》,《管理心理学》等。
  沟通与表达主要反映沟通的重要性、常见的问题、主要的内容、各种沟通的技巧、个人/团队的沟通特点、及如何进行良好的沟通所进行的培训。而我们所说的心理学主要也是管理心理学,它主要内容包括管理心理学研究的对象、产生和发展的历程、个人/团队的心理特征和倾向等。
  结合行业应用软件开发中的问题,我们也会补充几方面的内容(我们介绍也是结合例子进行的):
  沟通的机制
  在管理中沟通的作用是传递和共享信息,以便进行决策和协调。沟通要求建立有效的机制,使它制度化、标准化。沟通最难把握的是内容和时效的确定,这取决于制度的完善和当事人之间的默契。
  沟通的基础方向与企业内分管和分工有关,一般是双向的。但是由于下级对细节更熟悉,所以向上级概括的沟通汇报显得很重要,好的沟通反映在下级的意见会被充分的尊重(只要不侵害整体的利益)。
  沟通另一个重要目的是释放各层领导的压力,好的领导应该经常倾听下级的不满和牢骚,而且应该约定这种不满和牢骚只对领导进行,不对同级和部下进行,以保证当事人领导团队的士气。但是如果整个沟通的内容全是不满和牢骚,应该重新补充沟通的内容,或进行更下一级的沟通。
?  围绕目标沟通
  沟通的一个主要目标是解决实际问题,而不是简单的相互告知。这就是所谓沟通要有一个结果,我们简单的分成:短期结果,长期结果和环境价值观三个层面。
  短期结果是工作中发现问题,通过沟通分析原因,根据企业的规则(而不是个人喜好)给出解决问题的方案,  如有争议,再建立后续的沟通机制。
  长期结果一般是短期结果争议较大时,为了预防同类事件的再次发生,通过沟通我们对规则进行修改,或对前次结果做交换式补偿。避免了只有短期结果而又很难公平的困境。
规则有时也不是很完善和面面俱到,这时依赖团队的价值观进行约束,特别是在沟通解决问题时有一些负面的言论,应该十分敏感和重视,正确地表达自己的立场,分清是非,防止一个很小的问题,变成一个危害公司价值观体系的大原则问题,要在思想上提前做好预防工作。
  沟通表达中的态度
  沟通表达中态度很重要,其要点主要是认真倾听和诚恳询问,切忌浮躁。沟通中不要过早做结论,或结论有误时及时地纠正。在回答别人询问时,不要灵机一动,即使对方不能验证也不要说不合事实的事情。
沟通的时候要注意技术水平的提高,不逃避问题,不对人或事设定预先的逆反心理。对没搞明白或超过自己权限的事情要直接说出自己的局限,保持谦逊的态度。
  在沟通中,答应别人的事,一定要在约定的时间内给出一个回答,即使你没办好、没办完,也要给一个回答,以说明情况。
  对自己不太了解的事,不要一听反应就情绪激动,要冷静的对待所发生的问题,要提醒沟通者,不要“报喜不报忧”,尽量看到问题客观的一面。认真沟通的态度除了当面沟通外,还要记在心中,对问题有一个持续的跟踪,真正帮助请求者解决具体的问题。
  沟通中的形式
  从职业化的角度看,沟通的形式也很重要,有的时候确实是细节决定成败,在我们应用的工程中,各种PPT、文档都要使用规范的格式,开会交流中的着装,用语都要认真和亲切,各种会议和演讲的发言都要训练有素。总之,介绍这部分内容的书很多,我们可以认真地学习。
在沟通中我们有时也追求效率,说问题比说成绩更多,这一般与沟通对象有关。我们的原则是:经常沟通的人可能说问题更多一些,而不经常沟通的人,要先提成绩再说问题,这样人家的接受度强一点。
——目标Ⅲ的总结:
  课程Ⅲ总的目标是强调过程管理中的很多问题,它实际上是传统软件工程课程的补充,作为本课程的总结,我们结合目前工程中有代表性的进度、质量和价值观的问题再补充几句:
  目前国内的行业应用软件系统,都有一个高速进度的要求,国外要超过六个月的上线,我们最多给两个月,赶进度到底好还是不好呢? 我们先看好的一面,很明显,早一天上线就早一天开展业务,就在与对手竞争中处于有利位置。这看起来是一种中国式的“敏捷”要求,如果成功必将成为全球竞争方式的标杆。当然,也必须认识到它带来很多不稳定的代码,在程序员界,我们都知道代码本身是要不断“重构”的,甚至像微软这样的公司也提出每十八个月修改三分之一的代码。而在行业应用软件方面,我们更注意要有一个好的“体系”保证应用软件的质量,它们包括:完备的表单 (“管理文件写作”)+清晰的界面(“界面综合技术”)+设计良好的数据库结构(“数据模型”)+统一的横向组件(“对象及过程技术”)+经过推敲的编程约定和样本程序(“对象及过程技术”)。有了这些保证,赶进度时,代码变成了一种“服务”,态度变得更为重要,即使代码不太稳定也容易进行改善。
  由于赶工程进度所造成的巨大压力,以及对价值观的挑战等问题现在也变得越来越突出,首先我们都知道“破”易“立”难,在极度赶进度的情况下,确实会带来很多问题。我们应该鼓励在一线加班,实现系统功能的人,我们应该给他们以“尊重”和“信任”。由于我们发展得很快,很多的年轻人面对如此多的知识面学习,工作的强度和压力,成长确实需要一个过程。近几年,我曾见过很多那些被大家(用户)表扬,尊重,信任的聚合团队时,那令人难忘场面,也曾见过被大家(用户)批评,怒骂的团队,其主要人员那种极度悲观和无奈的表情。人都是有自尊心的,我理解他们。而我们的价值观要求我们,越是在困难的时候,越反映一个人或一个团队的品格。当我们发现一部分项目经理在困难面前变得消极、油滑、自我保护和逃避的时候,我们应该共同的伸出援手去鼓励他们,共同的向那些与他们遇到同样困难,但仍坦诚的、主动的、职业化的做出不懈努力的团队和个人学习。因为应用软件开发本身就处于一种“高度期望”的状态,经验证明,无论遇到什么困难,只要我们用本文列出的知识点来系统的完善我们的应用,坚持下去,就一定会“否极泰来”。
  除了赶进度使系统代码变得粗糙外,我们应当认识到应用系统的开发本身就不是一次到位、一劳永逸的,就像学习管理一样,是逐步完善的。正如我们在课程关系示意图中表示的那样,它是一个迭代的过程。为什么我们不认同所谓的超级的研发经理而代之以不同方向的研发群体(行业术语专家,行业标准化专家,管理文件写作专家,界面交互专家,领域模型专家,通用组件和样本程序专家〈目前软件工程师最愿意做的!〉,系统体系结构专家,工程管理专家,有威信的领导者,……)?这说明如此广的知识面,光靠几个“高人”是不行的,要吸收各方面专家的知识。其实,在软件工程中,越来越强调方法学,这也从侧面说明,没有“灵丹妙药”,任何人(或者大企业)说他有一套技术或一个成功的模型,照此推广就一定成功,我们只能认为这是一种高级销售。实践证明,无论我们是在引进新的管理方式还是使用新的技术,都是在现行的管理和系统上做出的改进,革命性的方法都是要慎重的,从工程角度看,任何创新都要先去做试点,当达到预期效果后,再逐步推广,而且中国这么大,采用一种成功经验也是困难的。
  ※ 课程目标Ⅳ:
  课程目标Ⅳ是涉及行业应用软件的阶段性成果及各阶段改进,它的归纳性课程是总归纳,即行业应用软件课程本身。


  具体课程说明如下:
  操作系统:
  行业应用软件的主要运行环境是操作系统,理解操作系统的原理甚至命令方式对应用软件的效能有很大作用。操作系统的课程主要涉及计算机资源及外设的管理,与行业应用相比都是管理,只是对象不同,操作系统的内容除了总控和微内核外,它主要包括:进程,CPU,内存,通讯管理,文件系统和Shell语言等。由于操作系统是计算机专业最基础的课程,我们就不做过多的介绍,主要的参考书:《操作系统》及各厂家的操作系统资料,包括Unix, Linux,Windows NT等。
  进一步补充的内容(在行业应用软件开发中加强的部分):
1. 行业应用软件运行在操作系统之上,操作系统有很强的运行监控能力,这是系统配置、部署的主要工具,很多此类功能的软件产品,只是包装了操作系统的已有功能。为了实现整个运行系统管理的自动化,行业应用软件的某个独立部分与操作系统的部分功能可以进行有机的结合,以形成更高效的管理集成方案。
2. 行业应用软件在开发时可以进行功能规划,在系统的可用性方面、稳定性方面,可以综合的利用操作系统的功能,以达到故障恢复、备份、安全、系统审计等功能的集成管理。
  数据和算法的运用分析:
  行业应用软件正在从业务操作转向业务计算,或者说是商业智能,无论数据分析还是算法分析都是这部分内容的基础。随着应用的深入,应用软件从集成向更高的管理层(相对于前台操作,它反映“后端”的管理)发展,相应的数据和算法分析技术有更好的用武之地。实际上,这部分内容的称谓也十分庞杂,主要的有《数据分析》,《数据仓库技术》,《数据挖掘》,《商业智能BI》,其中的数据挖掘更多的使用了复杂的计算,涉及大量的算法分析。
  行业应用软件有一个特点就是侧重具体的行业领域,而兼顾通用的技术,所以上述内容与具体行业领域的关联和应用就是行业应用软件在管理层关心的内容。
进一步补充的内容(在已有数据和算法的运用分析的基础上):
1. 涉及行业应用软件的具体管理端应用,在形成整体数据仓库规划的基础上,针对不同的领域业务侧面,形成相应的数据集市(主要是事实表),支持各业务专项的管理端应用。
2. 统一规划行业应用软件中的计算功能,随着业务分析能力的需求不断增加,把传统计算库方式的软件包,分解形成可方便调用的独立软件,在计算和结果展现上丰富管理端应用。
3. 我们在进入行业应用软件辅助决策支持系统时,主要的困境是“数据质量”问题,所以企业经常像搞运动似的“清理数据”,效果一直不佳。而实际上,我们应该扩充目前的核心系统,开发面向基层的“管理端应用”,如:业务主营,科长应用功能,从管理上合理的配置“基层管理功能”,使数据得到逐层的运用,并开发完备的数据校验和恢复工具,保证数据的逐层检查和清理。只有这样才能平滑有效的过渡到更高职级管理机构的分析应用,也同时解决了数据的质量问题。
  经济学原理和行业市场分析:
  行业应用软件发展到了高级阶段,往往涉及一定的经济学原理,我们要想从一个技术背景转向业务背景,经济学原理是一个基础。另一方面,行业应用软件的高级阶段一定包括很多主动的建议和咨询服务,归纳的说,经济学理论既可以用于客户管理的建议,又可以用于软件开发的项目管理。行业市场分析是制定行业应用软件开发战略的重要工具,是行业应用软件发展的指南性文件。行业分析报告是行业分析的主要成果物,它告诉我们本行业的市场容量,主要业务内容,主要竞争对手分析,重大事件和热点问题。行业分析报告是具体行业中,行业应用软件发展状况的最权威报告。
  主要参考文献,如:《经济学》,IDC报告,CCID行业报告。
  进一步补充的内容(在已有经济学原理和行业市场分析的基础上):
1. 行业分析报告是通用的,而我们具体企业要结合自身的背景,进行自己的战略规划。在业务内容方面,在理解行业状况的前提下,制定自己的产品和服务发展方向,区分目前市场中的“红海”和“兰海”;在分析竞争对手的背景、强项和弱项的基础上,提出学习和改进的方案,合理组织企业内部的各种资源;在“权利义务”合理划分的条件下,形成自身的发展规划,并以市场“标杆”为基准设定企业或部门的前进目标。
2. 在对本课程全面学习的基础上,结合经济学基本原理和市场分析结果,对客户提出全面、周到的咨询服务,它的特点是既有宏观分析(相对客户所处行业报告的分析),又有微观的措施和建议(相对行业应用软件的实现),争取与客户建立“战略合作伙伴关系”。这个关系的一个主要内容是:以本课程体系为基础,长期的、不间断的为客户培养高水平,懂实战的专业人才;另一个主要内容是与客户一道开展国际交流,对本课程中的行业术语、行业标准化、领域模型建立、管理文件写作、系统体系结构、工程管理经验等进行双向的交流。并在一段时间内,与我们客户共同努力,在国际上提出我们的标准和模型。我发现无论在管理上,还是在技术上,我们都具备一定的有利条件,因为目前中国的市场是一个充满活力和竞争的市场。
  行业应用软件(综合):
  作为以应用实战为中心的课程体系,应该保证基础课和应用课的相互均衡和平滑过渡,建立合理的纵横体系,并保证相互呼应。即有几门课做纵向描述,注意知识专项描述并保证它们的深度,另外一些课程,做横向描述,注意知识点的连贯性和各纵向课程的呼应及补充。其中行业应用软件这门课应该是总的知识横向描述,把各部分的知识点联系在一起,结合应用需要进行综合讨论。
  行业应用软件作为课程是一门集成性的课程,它的目的是以实战需求为背景,串讲已有课程和新补充的课程,上述课程中,我们列出的主要补充和扩展部分都是它的重点,具体内容归纳为:
  以本文的结构为主线,介绍行业应用软件的定义,它的主要内容,在国内外软件发展中的作用,并针对本文归纳的阶段分别介绍详细内容。首先以“管理文件写作”为中心,就其相关的基础课程,重点解决行业应用软件在需求确定阶段的主要内容;其次,以“软件体系结构”为核心,结合相关基础课程,重点解决行业应用软件设计,结构化,开发等主要内容;然后,以“软件工程”课程为中心,补充在过程管理中,行业应用软件应重点解决的问题;最后,以本课程的总结形式,补充行业应用软件的环境和发展内容的介绍。行业应用软件之所以被重视或将被重视也由于它从价值链上看,离最终用户更近,难怪有人说“应用为王”。
  从课目设置上我们已经经历了照搬国外学科教材的阶段,就像我们在前一段时间有一种认识,只要是国外的软件就一定好,从而引进了很多国外的行业应用软件,但实践证明这似乎不像引进国外系统软件那样有效。这使很多的用户和我们一样迷茫,为此我们冷静下来重回理性的思考,归纳出解决行业应用软件开发问题的知识点,并参考了国外的课程设置,随后我们发现“市场需求”才是真正的老师。应用的现状(国外行业应用软件也面临诸多问题)是我们最好的机会,“市场”告诉我们知识点的需求在那里,这就是原始的动力。加上这么多年自己开发和配合国外应用软件实施的实践,行业应用软件的知识体系在我们面前更加清晰了,为什么我们可以与世界先进技术同步?原因很多,最主要的是我国是一个行业应用的大市场,也是行业应用软件竞争最激烈的大战场,我们在运用最新式技术工具和最新型的管理理念,在实战中快速成长。
——目标Ⅳ的总结:
  课程Ⅳ的总目标是形成行业应用软件及相应的工程文件,在这一过程中,我们综合的总结、运用了所学的各阶段课程。作为发展的要求,参考IDC和CCID报告,我们再归纳出目前行业应用软件面临的四大热点问题,以便理解课程近期努力的方向:
  完善和发展核心系统
  核心应用系统仍是行业应用软件发展的热点,产品的统一管理、流程的统一管理仍是一个重要的内容。新的业务和新的业务机构,强调其业务的特殊性和紧迫性会趋向形成独立的系统,挑战统一的产品管理(如:为一类产品单独开发软件)。服务方式的差异和体制约束也会挑战统一性的流程管理(如:为一种流程和约束单独开发软件),综合业务系统的设计仍是充满挑战的问题,也是“领域概念模型”最新探讨的问题。
  中国的大型企业在世界上也是有代表性的,一个大的企业管理结构相当于一个欧洲全业务跨国公司,工程化的管理,软件的试点,推广,升级急需形成自有的管理经验,并在运行方面提出自己的ITSM管理方式(有效的融合应用软件与操作系统)。
  进一步推进核心应用转向管理端应用或形成新的独立子系统,并在客户管理,管理会计,销售支持,产品化等方面延伸基础的管理端应用,使整体的系统平滑进入到商业智能BI管理。
  完善面向地域的服务体系
  无论我们银行,保险公司和电信公司都在做一种集中式的管理,充分体现了信息是跨地域的共享的,当我们的数据和功能集中了之后,我们面临市场的服务竞争,而服务是分区域,细致的,所以就产生了很多“前置”和“个性化”的服务,这是新一轮应用的热点,由此也产生了区域性的个性化,区域的责任制和代服务。

  完善的风险管理功能
  风险管理在核心业务的基础上沿伸出多个方面的扩展。其中主要方面有,企业和个人的征收管理,为客户和合作伙伴的信用体系模型提供一个可操作的管理。另一个方面是从财务的外部审计入手,逐渐过渡到非现场的内部审计功能。配合“巴塞尔协议”,形成的各种管理规定,一个基于内容规则文件的与核心业务系统和财务系统互动的软件系统,将在各种类型的监管和监控有效性方面起到决定性的作用。
  各种应用系统的整合
  行业应用系统随着发展出了核心业务,财务管理之外会根据发展独立出很多子系统,如:CRM系统,渠道管理系统,支付清算系统,风险管理系统,决策支持系统,综合接口平台系统……这些系统的整合是一个新的热点,它是“软件体系结构”和“中间件”技术的综合运用,既是业务系统的整合,也包括异构平台的整合(多操作系统,多数据库,多开发工具,多中间件产品等)。


  结束语:
  如果你想在一个软件企业做一个称职的软件开发部经理或项目经理你就应该持续学习上述的知识体系。最近,越来越多的研究生、企业新员工、技术骨干和项目经理向我询问:学点什么才能使自己有所发展?这就是我列出上述课程及补充的一个主要动力。我发现已有很多年轻的业务骨干,对上述知识点的把握已经取得了一定的成绩,并仍然保持不断的学习和实践,难怪他们在竞争中总是处于有利地位。
  以上的课程我们可以去在职攻读工程硕士,但更值得推荐的是结合你的实际工作,进行有计划的自学。有条件的话可以进行横向交流,形成不同方面的学习小组(因为内容确实也是比较多的)。从实战的角度看,学识比学位更重要,每一个人只要努力都有希望!有一部分学理工科的同学认为,学这么多的“文科”课程是不是吃亏了?其实不然,这些课程有些很抽象,有些则反映业务的高层模型,理解上是有一个过程,但这部分知识更容易积累,或者说更稳定,掌握了它们年纪越大越好用,这不起到“防老”的作用了吗?
  IT(信息技术)也可以这样解释:
  IT是由“信息”和“技术”组成,正像我们列出的系列课程,有一部分是侧重“信息”的,有一部分是侧重“技术”的。侧重“信息”的这部分目前正在高速的发展,或者用一句时髦的话:我们正在进入一个信息的社会。信息及信息化有一个重要的特点即“去物质化”(也意味着效率和资源的节省)。如:过去我们发工资都用纸币(钱),买东西也用它,现在信息化了,工资可以直接划入银行卡,这时的“钱”没有被物质化,只是卡里所显示的一个“数字”。再举一个例子:图书馆,过去我们查资料去图书馆(建筑),那里有很多书(物质)。现在我们有数字图书馆,上网就可以查资料,既不要物理的图书馆,也不要物质的书,只要“数字化”的内容。这也难怪所有大学的“图书馆系”一夜之间都改名叫“信息管理系”了。开始我还以为搞错了,这不是与“计算机科学系”和“计算机技术系”抢名字吗?后来发现并没有错,前者侧重“信息”,后者侧重“技术”。前者的课就是我们列出的以语言学和管理学为基础的课程,从基础的角度看它们好像更基础,因为  计算机专业的基础经常是缺少语义内容的“高级语言”和算法课程。

  实际上IT的含义概括了行业应用软件的本质,它是“信息I”和“技术T”的结合,这个结合由于历史原因有两个方向,即技术人员业务化和业务人员技术化,我们的课程体系反映了融合和演化的内容,我们的目标显然是:在分层分工的情况下,让业务人员更关心业务,让技术人员更关心技术。因为我们的未来的业务层面已往考虑了技术实现的内容,未来的技术层面也考虑了业务的概念及变化的情况,“管理文件写作”(可操作性)是目前业务层面和技术层面的汇合的主要内容。
  有了IT 的新解释和这套课程的定义,很多行业中的大企业的组织架构面临挑战,它可以设立:电脑部,科技部和信息技术部,特别是如果设立了信息技术部,它的组织建设应该考虑与本课程体系相对应,几乎所有管理规定和产品开发都是“信息”的主要内容,它的作用是巨大的,这也是为什么在国外,CIO(首席信息技术官)的作用是不言而喻的!
  是不是我们只有掌握了以上知识体系才能进行行业应用软件开发呢?答案当然是“不一定”。这就像吃饭和营养学的关系,我们不能等全面掌握了营养学再去吃饭,但是人生有限,我们要抓紧时间研究营养学,才能使我们科学的吸收、健康的成长。
  总之,我们仍然坚信,在行业应用软件方面,国人一定会走在世界的前列!

  
2007年 初春


已有 0 位对此文章感兴趣的网友发布了看法    
我来评两句 用户名: 密码:
  匿名发表
今日推荐
技术文库(共有 45955 篇文章)
操作系统
办公软件
实用知识
网络管理
软件开发
WEB开发
软件工程
数据库
设计在线
信息安全
行业信息化
管理信息化
移动开发
重点推荐
电子杂志订阅
点击电子杂志名称查看样刊
输入E-mail地址即可订阅
E-mail