作者:刘小飘168585 | 来源:互联网 | 2017-05-14 02:18
STRONG专访趋势科技研发协理龚化中SPANlangEN-USstylemso-fareast-language:ZH-CN?xml:namespaceprefixonsurn:schemas-microsoft-com:office:officeo:po:pSPANSTRONGPclassMsoNormalstyleMARGIN:0cm0cm0ptSPANlangEN-USstylemso-
软件开发
专访趋势科技研发协理龚化中
引言:提到软件开发,所有人知道这并不是一项简单任务,的确,软件产业是个竞争激烈、变动快速的产业,经常得因市场变动而修正模块,因此,软件厂商延迟产品上市的消息时有所闻,但这并不代表延迟上市是正常的,它仍需透过各种努力及规范,真正做到「 Ship quality product on time 」。
软件公司因为业务性质不同,开发产品所需工程也不尽相同,以趋势科技来说,它是生产软件产品的公司,产品开发出来上市后,由顾客决定是否要购买,因此软件开发的风险很大。一些小型的软件公司则是接客户的「软件项目」,只需将项目完成即可,风险自然小。
由此可见,以生产软件产品为主要业务的软件公司来说,规模愈大,开发风险自然相对提高,如何制作出符合市场需求又完美的软件产品是所有软件厂商的心愿,但这其中牵涉到许多大小环节,包括公司政策、作业流程、工程师素质等。
Perfect is empty , Simple is beauty !
在这里不妨先就开发原则做简单的探讨。好比说,假若产品不达百分之百完美,是否就一直更改下去呢?当然不!就拿生宝宝为例,如果人们可以随心所欲地在怀胎时加入特定基因以生产出一个完美宝宝的话,那么肯定这个产期将遥遥无期。
在控制软件开发风险上,有几项观念及做法。
一.“小”- 假如产品的 size 小,复杂度便会降低很多,因此一个好的做法便是将大的项目切成一个个小部份,再交由不同工程师负责。例如,第一代的 ICQ 及浏览器 ( Browser ) 都是一个或两个人设计撰写,很快就做出来了。
二.“ Simple is beauty ” -愈大的公司生产力就愈低,因为需增加一些额外成本,包括进度的掌控、工程师的品质等,解决之道就是从制度面( policy )着手,按部就班地做,将风险到最低,趋势科技做法是将比较关键( critical )的部份先做,如此比较能掌握风险,这部份便涉及“作业管理“的范畴。
公司的规模扩大以后,便不只需要写 code (程序)的工程师,还需要有设计规格、检查程序、测试程序等人力投入,跟最初情况相比,额外成本是以等比级数增加。总体而言,更需要制度管理,但,另一方面,制度也可能会形成官僚、扼杀创造力,而更多的文件未必会让品质变得比较好,解决之道要从使用者的角度来做。
软件产品的品质其实决定于使用者的需求。
如何才能开发出符合客户需求的产品?这又是一门相当大的学问。
通常软件开发前需进行市调,做好使用者需求分析,撰写 MRD ( Marketing Requirement Document ) 并让使用者持续参与。 Market sense 很重要,但通常它也是造成产品不断变动更改的最大来源,因此做好 change control( 控制变项 ) 是相当重要的。软件和硬件不同的地方在于,软件研发只要多花些时间,几乎没有什么功能是做不出来的,但它的困难在于“如何取舍”。
创意自由度-软件公司存活的关键
不过,市调虽然重要,但从市调能得到有用的资料也是有限的,新力公司的盛田昭夫就曾说过,你到超级市场,可以看到有各种颜色的牙膏,但随身听却不曾出现于市场中,它又如何被发明出来?在它出现之前,民众不敢想拥有这种东西,或是想拥有也担心价格将昂贵地买不起。
由此可知,高科技的创新需要靠对科技有概念的工程师发想,进一步 地结合 innovation (发明)及 market need (市场需求)才可成。
在这里不妨来谈谈,高科技产品的「 idea 」具备何种特色。可从两方面来看:
.独特的竞争力(技术面) -别人做不到的技术而你做得到,这就是个好点子。
.了解客户背后的需求,换个方式以符合其需求(市场面) -例如客户因为某些因素而不敢要求需求,则可试试换个方式呈现,好比顾客蛮喜欢电浆电视,但电浆电视的价格实在太贵了而不敢有需求,研发人员可试着将把电视的品质研究到跟电浆电视一样地好。
既然高科技产品的客户需求不易得知,开发产品的灵感如何获得?很多工程师就从“自己的问题开始着手”。
在趋势科技,除了大架构的创意发想由 CIO (技术长)或高阶研发主管提出,底下的大小 idea 都是由工程师来想,好的工程师会自己想 solution (解决方案),而不好的工程师就成了 coding machine (写程序机器)。
有了产品研发创意之后,如同先前提到的,需要有一个人担任桥梁,将研发人员的发明( innovation )与市场需求( marketing need )结合起来,因此软件公司的技术长及最高行销主管扮演着相当重要的角色。
没有软件研发经验的人一定很难想象,软件产品通常需花费 80% 的沈默成本,亦即产品还未卖出就已花掉 80% 的成本。举个例来说好了,可能因为考虑市场变动因素,使得一开始是想做冰箱,最后的成品却成了烤箱,当然这是夸张的比喻,可见软件市场的变动如何重大地影响软件研发。
这回先跟读者分享一些简单的观念,下回我们将以实际的项目为例子,让读者体会软件开发过程的惊涛骇浪!
推荐阅读
在处理PDF转换和OCR识别时,您是否遇到过格式混乱、识别率低或图表无法正常识别的问题?ABBYY FineReader以其强大的功能和高精度的识别技术,完美解决这些问题,帮助您轻松找到最终版文档。 ...
[详细]
蜡笔小新 2024-12-21 23:24:02
本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ...
[详细]
蜡笔小新 2024-12-21 18:50:52
先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ...
[详细]
蜡笔小新 2024-12-20 18:17:25
本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ...
[详细]
蜡笔小新 2024-12-20 18:02:19
ArcXML是一种专为ArcIMS平台设计的数据交换协议,基于XML标准,用于在不同组件之间传输和描述地理空间数据。本文将详细介绍ArcXML的背景、用途及其与XML的关系。 ...
[详细]
蜡笔小新 2024-12-20 17:46:32
本文详细介绍如何使用 Python 集成微信支付的三种主要方式:Native 支付、APP 支付和 JSAPI 支付。每种方式适用于不同的应用场景,如 PC 网站、移动端应用和公众号内支付等。 ...
[详细]
蜡笔小新 2024-12-20 17:39:09
本文详细介绍了如何在Ubuntu 16.04系统上配置Jenkins、Ant和TestNG的集成开发环境,涵盖从安装到配置的具体步骤,并提供了创建Windows Slave节点及项目构建的指南。 ...
[详细]
蜡笔小新 2024-12-20 16:50:58
本文详细描述了在启动Jenkins后遇到的长时间加载问题,并提供了一种通过修改更新中心配置文件来显著提升启动速度的有效解决方案。 ...
[详细]
蜡笔小新 2024-12-20 16:22:56
远程过程调用(RPC)是一种允许客户端通过网络请求服务器执行特定功能的技术。它简化了分布式系统的交互,使开发者可以像调用本地函数一样调用远程服务,并获得返回结果。本文将深入探讨RPC的工作原理、发展历程及其在现代技术中的应用。 ...
[详细]
蜡笔小新 2024-12-20 15:12:33
本文详细介绍了 Android 开发中 layout_gravity 属性的使用方法及其在不同布局下的效果,旨在帮助开发者更好地理解和利用这一属性来精确控制视图的布局。 ...
[详细]
蜡笔小新 2024-12-20 14:38:17
本文探讨了如何在Java中使用JAXB解组两个具有相同名称但不同结构的对象。我们将介绍一个抽象类Bar及其具体实现,并展示如何正确地解析XML文档以获取正确的对象实例。 ...
[详细]
蜡笔小新 2024-12-20 12:22:08
XPath 是一种用于在 XML 文档中查找信息的路径语言,同样适用于 HTML 文件的搜索。本文将详细介绍如何利用 Python 的 lxml 模块通过 XPath 技术高效地解析和抓取网页数据。 ...
[详细]
蜡笔小新 2024-12-20 11:23:22
springMVC JRS303验证 ...
[详细]
蜡笔小新 2024-12-20 09:07:39
本文详细介绍了如何正确配置Java环境变量PATH,以确保JDK安装完成后能够正常运行。文章不仅涵盖了基本的环境变量设置步骤,还提供了针对不同操作系统下的具体操作指南。 ...
[详细]
蜡笔小新 2024-12-19 20:15:05
本文将详细介绍通过CAS(Central Authentication Service)实现单点登录的原理和步骤。CAS由耶鲁大学开发,旨在为多应用系统提供统一的身份认证服务。文中不仅涵盖了CAS的基本架构,还提供了具体的配置实例,帮助读者更好地理解和应用这一技术。 ...
[详细]
蜡笔小新 2024-12-19 19:31:46