创新,作为当前各行各业一个非常时髦的话题。针对软件行业来讲,体现的尤为淋漓尽致。可以不夸张的说,推动软件行业发展的永恒动力就是创新。
所谓创新,通俗地讲就是,别人没想到的你想到了;别人没发现的你发现了;别人没做成的你做成了。创新,涉及到软件生产的各个环节和领域,从环节上包括售前创新、售中创新和售后创新;从领域上包括理论与方法论创新、管理与制度创新、过程和控制创新、技术与工具创新、文化创新、科技创新以及其它方面的创新。
针对软件开发来讲,核心问题就是如何提升软件开发的质量和生产效率!本文抛开软件开发中人为因素这一重要内容,单从技术层面上论证和阐述,在软件开发过程中可以采取的创新点和改进建议。
1、业务驱动原则:当前的软件开发过程过多的强调需求或者功能驱动,进而将一个个功能分离开来各自为战,而忽视了功能是为业务服务的核心原则。因此,需要将现有的开发驱动方式做重大改变,需要站在更高的视角,也就是业务视角来驱动整个开发过程。总体开发流程是,首先通过深入分析用户的业务流程和工作目标,通过场景技术先创建出用户的业务模型;然后在基于业务模型分析实现这一业务目标的各个用户需求间依赖关系,得出用户需求模型;最后在用户需求模型基础上分析各个功能间的依赖关系,创建软件功能模型。通过这一流程,所开发实现的各个功能已经不再是独立功能,而是一组组完成一个个业务目标的功能集。
举一个简单例子,用户提出一个报表功能,按照以往的开发方式,我们在了解完成报表的呈现样式、各个字段的计算方式后,就可以展开开发。这样的开发结果,不但会预留这一功能需求不断变更的风险,而且更重要的是用户会觉得我们不专业、不懂它们的业务,进而影响到我们的名声。换种方式,采用业务驱动,我们应该先调研清楚用户为什么需要这张报表?通过这一报表用户要得到什么信息?报表数据对他们的业务有什么帮助?报表中各字段之间有什么关系?各字段的数据大小对他们工作有什么影响?用户了解完这一报表数据后,一般还要深入了解哪些数据信息?这一报表数据与哪些报表数据之间有关联关系等等。通过这样一系列业务层面分析,我们所实现的报表功能就具有非常强大生命力和指导性意义,对我们开发人员来讲,不但从这一过程深入学习和了解了业务,而且尽最大可能降低了需求变更的频度。同时,也会无形提升我们所开发系统的核心竞争力。
2、开发模式匹配原则:现在,事业部几乎所有项目号称都是采用NUP开发模式进行开发的。但实际情况呢?可能徒有其表。原因不外乎,一方面有多少PM或PSM真正理解和掌握了这一开发模式。很多人把CMM等同于开发模式,认为项目只要按照CMM过程进行开发,就符合NUP开发模式。这完全是谬论!另一方面,是不是任何项目类型都适合应用NUP模式来开发,可能没有人认真思索和讨论过。如果真是这样,那么业界就不会诞生那么多开发模式,更不会有那么多专家学者在深入研究和创建开发模式。因此,针对我们需要改进的,一是重点学习和掌握NUP开发模式,形成指导手册,然后通过宣讲、培训、审核和总结等步骤不断循环改进,让这一开发模式真正起到应有的效能;二是通过事业部所承担的项目特点,分门别类进行归纳总结,依据项目类型特点确定应采用的开发模式,并给出指导性意见。比如,针对产品研发类的项目采用什么样的开发模式;针对中小型解决方案特点的项目采用什么样的开发模式;针对全新项目采用什么样的开发模式等等。总之,开发模式是软件开发的基石,开发模式是否与项目特点相匹配直接影响到软件开发的进程。
3、UI/UE先行原则:针对信息化应用系统来讲,用户体验已经成为越来越重要的内容,而且也越来越成为软件的核心竞争力之一。随着时代发展,当前用户已经不满足功能所实现的结果,更加关注系统的使用体验。比如展现的样式是否能个性化、展现的方式是否能多样化、展现的内容是否能定制化、操作方式是否便捷化等。这样,就要求我们在开发方式上做重大的调整和改进,在系统或产品开发前应针对行业用户特点,利用心理学、社会学等方面的知识,按照人体工学的设计原则先行进行UI/UE设计,在最短时间提供给用户一个能真实感受到的系统。通过这一方式,不但在开发前期能更深入调研到用户需求,而且能避免项目后期大量的需求变更。这种方式与原型开发方法的最大的不同在于,它是站在行业用户视角考虑呈现。那么,针对象现在事业部这样的规模,没有专门队伍研究和琢磨这一领域,是不可想象的。
4、样式家族化原则:一个成熟的软件产品应有其内在的特色,有区别于其它产品的标志性内容。就象汽车行业,比如宝马汽车,自从诞生以来,无论外形、颜色如何变换,即使你没有看到BMW的标志,但你能从车的很多特点上,比如宝马经典的“双肾型”栅格,一下子就能知道这是宝马车。同理,在软件行业也有大量的这样案例,比如微软风格的界面样式、MAC风格的界面样式等。那么,作为我们这样一直从事业务应用系统开发的公司来讲,是不是也应该有这样的考量呢?不论用户应用我们任何一款产品,都能清晰的感觉到东软风格,这对东软所开发系统的整体声誉提升有着重大的战略意义。样式家族化,主要指展现层面图标的样式统一、布局方式统一、操作方式统一、交互方式统一等。这样,对外,用户使用过我们的一个系统后,再使用其它系统时感觉非常熟悉和亲切,增强了系统的亲和力;对内,家族化统一后,不但增强了复用度,提升了开发效率,而且将各个项目由于人的不同而造成的系统呈现差异降低到最小。通过在事业部整合资源,建立样式库,使项目开发人员更加专注业务实现。
5、
6、核心竞争力培养原则:一个产品或系统是否具有强大的生命力,是否能在激烈的市场环境中始终取得领先的地位。在技术层面,一个重要的条件,就是是否具有核心竞争力。比如,Ipone手机核心竞争力是什么?一个是用户体验,另一个是开放的平台。从手机基本功能上,它并没有什么特别之处,但就因为抓住了以上两点,在市场上具有了蓬勃的生命力,进而为公司带来了可观的利润。再比如IBM公司,在软件领域,它在国内的核心竞争力是什么?是强大的业务咨询和系统规划能力,并不是它的软件产品。IBM通过网罗各行各业的业务专家,以群体而不是个人,向用户展示了他们强大的、高人一筹的业务咨询和系统策划能力,进而带动了他们产品或系统的销售。那么,对于我们这样一个从事解决方案类型的公司,在没有强大咨询能力带动系统销售的前提下,我们又该如何?是不是软件最低端的“蓝领“工作是我们唯一选择。我个人以为,我们可以在以下层面重点培育和培养我们系统的核心竞争力:
1)
2)
3)
4)
这样的核心竞争力还有很多,需要我们认真研究和探讨。总的原则就是找到差异性!创造出人无我有、人有我好、人好我优的局面。这就要求事业部在管理层面就要宣导和推动我们核心竞争力的研究。