小规模软件公司项目开发见解

来源 :数字化用户 | 被引量 : 0次 | 上传用户:rinimalebi
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】许多软件公司的开发人员仅10人左右,开发人员从软件的需求、软件开发、测试、实施、培训、后期维护,一整个流程,都是由开发人员承担,甚至很多项目就一个开发人员负责,在开发过程中,软件的可靠性没有保障、维护费用不断地上升等因素使软件作坊的危机不断地呈现出来。以面向对象技术为手断,以工业化生产方式和管理支撑体系为核心的软件新变革,推进软件开发的构架平台化、组件化、编码自动化、管理工厂化,为小规模软件公司提供了解决方案。以现代软件企业的开发、管理为目标,结合软件工程的出发点,寻找一个适合小规模软件公司开发的软件工程流程是开发人员不断探索、学习的指导方向。
  【关键词】小规模软件公司 现代软件工程 软件作坊
  一、概述
  传统软件工程采用的“生命周期法”,是从时间角度对软件开发和维护的问题进行分解,把开发过程划分成若干个阶段,每个阶段有各自的解决方案,进行逐步实施、管理。立项、需求开发、概要设计、详细设计、编码、单体测试、集成测试、系统测试、最后交付使用。公司应该完全按照如此步骤流程,而我们需要有多少的工作量呢?三四人10个人/月的的项目就是写这样的文档,从项目开始到最后至少需要6个有人/月的时间进行撰写,完全按照CMMI的标准,对于小规模软件公司来说成本花费比较大,我们一直都在寻找一个平衡点,平衡公司的质量与成本。
  如何成立一个核心开发小组,小组的如何构成是小规模软件公司急需解决的课题。针对这样的问题提出由业务架构、技术架构、测试兼技术支持、文案兼培训组成核心开发团队,在开发过程当中,每个小组都承担了不可或缺任务,这四个小组协调工作,对提高软件项目的鲁棒性、稳定性、适用性都起到相当大的作用。
  二、业务架构
  业务架构,就是搞客户需求。开发经理在开发过程中就是业务架构师,对于客户为什么要提这样的需求,客户要根本解决什么问题,这些问题谁来想,谁来想解决的办法?我们不能靠咨询公司来做这些工作,所以工作需要我们用更多的时间去思考这些问题,只有从客户哪里解决需求的问题,后期的开发才有质量的保证,减少需求更改迭代的次数,降低软件的开发成本。
  (一)首先找到客户企业的部门组织结构图,把全体部门都纳入需求思考范围内,了解这个项目和各个部门的关系。最后按项目关系紧密程度把客户各个部门排了一张表,每个部门的负责人的名字,联系电话都要到,找到熟悉公司并且健谈的员工问问他们经理是怎么看这个项目的,想要达到什么样的目标。
  (二)收集报表:通过客户工作填报的表格,大致了解他们的工作岗位的工作内容。哪些表格是最常用的,挑出影响他们考核的报表,他们最关注哪几个指标,然后我拿着这些报表、指标向客户咨询,这些指标是什么样的数据、是怎么得来的,最好能让他们解释怎么输入的。然后对着每一个单据询问这些表格的使用频率,是每天、每周、每月、每季还是每半年、每年。是每天(周、月、季、半年、年)的期初做、期末做、还是平时做?哪个频率高?高到什么程度?这样,我们就明白了每个人主要真正做哪些事,怎么做,最后怎么考核,哪些事最重要,哪些事每天做,哪些事频率最高。
  (三)优化流程:画好组织结构、人员岗位角色说明、业务流程图,通过调研,用红圈标好了业务处理漏洞和矛盾的地方,并且对这些地方都提出了改进建议。把目标使用客户认为最想解决的问题都考虑进流程和业务单据报表中,建议增加什么流程、建议增加什么单据、建议增加什么报表,谁来做,怎么做,谁来监督,怎么考核。
  (四)组织部门座谈会。给他们整个部门都讲解了我们梳理过的流程现状,给他们说明漏洞和矛盾、说明我们提出的方案。这样一份优化好的流程就展现出来了。
  需求在软件项目开发中的地位越来越重要的时候,如何理清客户的实际需求,理解客户的工作流程,项目已经成功一半了。
  三、技术架构
  如何保证稳定性?很多人第一反应就是招测试人员,当然小规模公司的领导是不希望养几个专业的测试人员得。就是招到了测试人员软件的稳定性就得到了提高?即使能提高稳定性也不多。如何从代码的质量下足功夫才是保证软件稳定性最佳的方法。
  我们在这里提出共通代码开发员,为什么在开发过程中引入共通代码开发员?共通代码开发员的作用是什么呢?我在下面作一个分析。
  每个人的技术水平都是参次不齐的,每个人对自己代码的负责认真性也都是不一样的,所以要想提高稳定性,必须专门从队伍中找一个人,作为公共代码开发员。每个产品或项目的开发、需求的修改,必须首先经过他的思考,哪些模块可以做成公共代码、封装成函数,就他来做,其他的程序员只管调用函数,实现客户UI操作和辅助功能。作为公共代码开发员必须具备以下能力:
  (一)参与过几个主要项目的开发、实施、支持。这样,他对客户需求有综合、理性的把握。如果队伍中没有这样的人,那么接到客户需求,分析客户需求,作成公共代码,就由开发经理自己或者安排其他开发人员分别来做。
  (二)公共代码开发员具有负责认真的工作态度,代码细心严谨考虑周详异常保护做的到位,内存创建释放有头有尾,代码优美,代码可阅读性强,代码重构,代码性能和稳定都高。
  (三)公共代码开发人员的技术能力高,知道封装成什么样的函数接口,在灵活性,以后的修改变化性上都做得非常好。
  做这样的工作需要找一个技术能力好的,工作认真负责的人专门做这件事,不让他参与各种杂事,他是应该能干好这件事的,而且会越做越好,这就是术有专攻。共通代码开发员掌握着整个开发技术要点,而共通代码开发员在整个开发过程中就是技术架构师。
  四、测试兼技术支持
  测试人员,一般也兼任服务部门技术支持人员。如果有服务部门解决不了的技术问题,可以转给他。而且测试人员还兼任配置人员,在产品打包、产品安装测试、产品发布、版本分支管理、源代码备份、历史版本归档方面都由他来管理。兼职是有好多好处的。如果他不兼任技术支持,他就不了解客户是怎么使用的,他测试也是瞎测试。如果他不管理产品打包发布,程序员就会自己私自发布版本。可能版本还有问题,为了修补问题,就赶快修改完再打包一个,但版本号却不改变,引起了一个版本号代码不同错误不同,让服务支持起来很莫名其妙。由测试人员控制产品版本发布,能不能发布,就是测试员说了算。测试员感觉质量没有达到,就有权不发布。很多软件作坊,程序员权力很大,一个开发人员从头到尾负责整个项目,项目质量如何,全看这位开发人员自己的素质和责任心了。为了不让项目质量和特定人密切相关,使公司研发保持连贯性水准,必须做到分工专业,互相配合互相牵制。   一般,开发部门也就配1-2名测试人员,根据同时并行的项目和产品开发和开发的强度来定。我们并不生产向国际上的产品那样的质量。我们做行业企业管理软件开发,是在客户质量要求、客户签单额、竞争对手质量水准这三者平衡上做到一个质量的认可。我们无法做到微软那样一比一的开发测试人员比例。开发部门所有的产品和项目,都由这1-2名测试人员负责所有的测试工作,包括编写测试案例,编写测试结果,参与项目的需求测试、设计测试。
  对于开发部门的文档方面,如文档的正规化,都由文案来负责。项目经理经常要提交给客户一些文档,而项目经理往往是技术出身,文档工作不是很高,于是文档的正规化、美化、文字校对、空格段落措辞标点符号,都由文案制作。帮助文档,也由文案负责。帮助方面,有版本更新说明帮助、安全配置帮助、系统维护管理帮助、基础数据配置与维护帮助、业务功能操作帮助、软件操作演示视频、产品简介PPT、产品演示版,都由文案来做。为了防止文案不懂产品而写产品帮助,在需求说明书、设计说明书这些文档性的工作上,如果有什么文档体力活之类的工作,也由文案人员来做。文案人员还兼任产品辅助测试,主要是作为一个普通的操作者来测试,在制作演示版的过程中模拟客户流程客户数据来进行操作录入,测试出普通使用中的BUG。一般,一个专业的测试,经常呆在软件的环境中,思维就有一种定势,但实际的用户并不那样操作,但测试人员自身感不到。而文案人员就能充当普通用户来测试。我们招聘文案人员也没有强调会什么软件,文案写的好就OK。他们确实是最普通的用户,他们的困惑和操作手法代表了大量的普通用户。而一个开发部门,文案人员也往往是1-2名,随并行的项目数量和规模来定。
  五、文案兼培训
  对于培训来说,软件本身的使用简单最为关键。帮助文档写的再详细,相信看的人都不多(只有开发人员才会去钻研那些详细API帮助)。软件易用,培训的工作就轻。
  公司开发的很多软件,没有演示版,没有操作视频录像,没有最新版本帮助文件,没有新版本更新说明。就凭培训人员结合着投影仪对着电脑屏幕讲。作了更新,培训人员还仍不清楚哪些功能发生了改变,还照着过去功能讲。客户亲手一操作,发现讲的和看到的不一样就有了疑问。培训人员都脸红,自己都不知道怎么使用,也解释不了。所以培训文档对于培训人员来说也很重要。
  好的软件产品,需要有好的文档和培训资料,否则开发部就是开发的再好,也是没人能用的产品。有一个文案人员,写帮助说明,制作操作视频,制作学习版数据库,参与辅助测试。有了这些文案的基础,最熟悉产品的非开发人员就有了两个岗位:测试兼技术支持,那么文案就兼起培训工作(由于是培训人员用自己写的文案做培训,在培训中会有各种提问,会更加增进对文案和产品的理解,能写出更好的文案。而且他不是开发人员,他能站在使用者的角度上来写来讲,而且他属于开发部门,他会给产品开发带来更多更好的产品易用性建议)。
  文案的任务就是:每当新版本发布,对照新版本的更新书写变动说明、操作说明书、操作视频、演示版、搞个集中培训。并且可以结合考试的模式,给受训人员考试、打分。但给他们做培训的时候,必须有正规的签到表,正规的培训教材,正规的培训PPT,掌握好一节课的时间,掌握好一节课的重点,掌握好一节课的快慢与难易程度的节奏。下了课还必须让他们填写本课的培训反馈。优秀培训人员完全可以成为优秀的咨询顾问或者培训老师,如果有可能,也会成为优秀的市场人员或销售人员。这是对文案这个岗位的职业发展期许。
  六、思考
  软件开发人员从各个开发语言的优缺点,设计模式、框架、重构、单元测试,到软件开发过程管理。都想改善软件生产状况。软件开发人员想把产品开发好,把开发过程管理的井井有条,但是都心有余而力不足。由业务架构、技术架构、测试兼技术支持、文案兼培训四个部分组成一个开发项目团队,循序渐进进行开发工作,就能比过去产出更好的软件,软件的质量,软件的进度,软件的竞争力就都上来了,再加上各种管理软件:如项目管理软件、版本管理软件、BUG管理软件、自动测试软件,就水到渠成了。
  所以一个项目开发,一名开发部门经理,1-2名开发人员,一名项目经理,一名公共代码开发人员,一名测试,一名文案,也就是5-6人完全符合一个软件作坊的人员数量。有时候团队小了,开发部门经理就是项目经理,公共代码开发人员就是主程,这样,一个开发团队也就是3-4人。但方法照样能用起来。因为我所讲的方法也就是适应于这四套马车的组织架构的。每个人都身兼数职,而且都对自身的提高非常有好处,而不是给他身上堆砌毫不关联的工作内容。每一项职责都是能互相互补的,整体提高他的岗位专业性。
  参考文献:
  [1]《现代软件工程》,张家浩,中国,机械工业出版社, 2009.1
  [2]《走出软件作坊》,阿朱,2008-07-24,http://blog.csdn.net/david_lv/
其他文献
【摘 要】随着科学技术的发展,信息技术已经应用在诸多方面,特别是在宣传方便有着非常重要的作用。本文研究的重点是通过分析信息技术在高职院校宣传中的应用情况,进而提出了一些完善的建议,希望能推动信息技术在高职院校宣传工作中能够发挥更加重要的作用,促进高职院校宣传工作更好地开展。  【关键词】信息技术 高职院校 宣传工作  一、引言  在21世纪的信息时代里,各地区交流也变得更为便捷,其中也存在很多国外
期刊
【摘 要】地理信息系统是以计算机为基础的新兴技术形式。围绕着地理信息技术的研究、开发和应用,城市环境保护工作迈入了新的发展阶段。本文结合地理信息技术的特点,重点介绍了地理信息技术在环境监测和管理方面的应用,阐述了地理信息系统在建立环境监测中的意义。  【关键词】地理信息系统 环境监测 污染 应用  一、地理信息系统简介  GIS系统(地理信息系统的简称),是Geographic Informati
期刊
【摘 要】本文通过对话框的应用程序以及对话框常用控件的高级编程,基于优化功能的思想设计一款微型的计算器,能够实现简单的四则运算功能。  【关键词】计算器 功能实现  一、计算程序设计的思想  微型计算器以优化资源为主要设计思想,占有空间资源较少,对电脑其他程序的应用影响较小。遵循软件工程的设计规则,系统具有友好交互的界面,操作快捷简单,即时准确地获得需要的计算的结果,充分降低数字计算的难度和节约时
期刊
【摘 要】随着电力系统的发展,输电线路电压等级和输送容量逐步提高,对高效的故障测距的要求也越来越高。近几年来的研究表明,遗传算法对于电力系统故障诊断方面存在着一定的优势。本文主要通过介绍电力系统故障诊断的目的和内容,以及目前电力系统故障诊断的主要方法,阐述遗传算法的基本原理和方法,以及在电力系统故障诊断中的应用。突出遗传算法对于通常的系统和故障类型,能够更加迅速准确的完成故障定位,对于电力系统故障
期刊
【摘 要】一个煤矿的工作由许多的部分组成,在这些工作中都需要一个共同的基础,那就是供电系统,因此矿井供电是整个煤矿工作的重中之重和基础。在供电的过程中重要的是供电的稳定性以及供电的安全性。  【关键词】煤矿供电 用电安全  一、简介  一个煤矿的工作由许多的部分组成,在这些工作中都需要一个共同的基础,那就是供电系统,因此矿井供电是整个煤矿工作的重中之重和基础。在供电的过程中重要的是供电的稳定性以及
期刊
【摘 要】本文通过对VB编程方面相关的研究,致力于VB编程环境下的高校学生成绩管理系统设计研究,希望通过学生成绩管理系统的应用来减少学生信息管理方面的工作量。  【关键词】VB 编程环境 高校 学生 成绩管理 系统设计  在我国教育改革工作的深入,在以往的成绩管理模式,管理体系和管理方式上逐渐显露出它的缺陷。VB编程是以计算机技术为依托,学生的成绩管理的需要为要求,采用程序设计知识和人工智能设计来
期刊
【摘 要】在现代化技术更新迅速的今天,电子信息工程的发展也是日新月异,自从我国加入世界贸易组织后,国外的技术不断冲击着我国内部市场,影响我国内部市场的稳定性,因此我国的电子信息工程产业正在遭遇严峻的挑战,而目前,我们生活和工作的各个领域都离不开电子工程技术了,网络技术快速的发展,电子信息工程技术的作用也受到各个国家广泛重视,人们对电子信息工程这个行业也越来越关注。因此,在电子信息工程技术现代化这一
期刊
【摘 要】由于电视播出是一个复杂的系统工程,在采用录像机播的电视播出方式中,时常会有绞带、卡带的意外情况发生。使用电脑自动播控,也可能出现死机、程序失控等意外情况。随着社会经济的不断发展,全世界已经进入了一个数字化的信息时代,计算机的发展尤为快速。在各行各业中,都不乏计算机技术的身影。在现代化的电视播出领域中,我们也开始逐渐使用计算机技术,用这种科学高性能的技术代替传统的播放技术进行播放,这种方便
期刊
【摘 要】维修电工需要有极强的专业性、理论性以及技术性的课程,随着我国电力事业的发展,随之产生了现代PLC技术,在维修电工实习中运用现代PLC技术,有利于学生将现代PLC与继电接触器技术有机结合起来,将电工的理论知识与实际操作能力相结合,通过实习教学的方式,培养出社会需要的人才。本文就现代PLC技术的具体运用进行分析,探讨在维修电工实习教学中引入现代PLC技术的必要性,在现代PLC技术与维修电工结
期刊
【摘 要】计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。在我国各大高校,计算机网络课程一直沿用传统的教学方式,这对学生造成了巨大的影响,不利于学生的发展,本文就高校计算机网络课程教学模式的改革与实践展开论述。  【关键词】计算机 网络课程 教学模式  随着中国经济
期刊