产品开发经验总结.doc_第1页
产品开发经验总结.doc_第2页
产品开发经验总结.doc_第3页
产品开发经验总结.doc_第4页
产品开发经验总结.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

产品开发经验总结 软件产品背后的冰山一角2010-08-18 01:31 by 道法自然, 2042 visits, 收藏, 编辑 做一个正规的软件产品从来都不是一件简单的事情,除了产品本身涉及的技术因素之外,还有更多的非技术因素。本文仅描述一个小公司的团队在一个软件产品从想法到实现过程中涉及的工具和这些工具提供的功能与作用。由于我们经验有限,描述内容会有纰漏,请多多指正。不过,我们倒是体会到开发一个可用的产品有多困难了。反正呢,说或者说别人都要比自己亲自实践和实现来得容易的多得多了。因此,我也越来越觉得应该学会如何去尊重别人看似傻瓜的东西。就像有人在批评这个产品、那个产品,如果这个产品是你自己做的,你就不一定会那么说了。当然,也希望能够分享你们的任何想法和建议了。首先,我们来看一下,用户在使用我们产品涉及的大概的交互内容(AD的图片可以快速浏览过去)。A 安装包界面 安装包功能选择:支持VS2005/2008/2010& 安装成功B 安装后界面安装后文件夹C 使用 开发时可以使用模板快速建立一个宿主或者插件&Manifest编辑器远程控制工具,开发、调试和部署用D 帮助和用户向导 API说明书&使用向导在对上面一个产品有了一个大概的印象之后,我们便来看一下这个产品在设计和实现过程中涉及的一些东西。1 想法一个有意义的产品绝对是为了解决某些问题而诞生的,否则就没有任何价值。而价值的衡量是相对于其要解决的问题来评判的。如果一个软件产品并不是用来解决问题,基本就没有存在的意义。因此,有价值的想法,一般出自于你碰到的各种问题,如果你的一个想法能够解决很多人的问题,那么这个产品具有很高的价值了。当然,要提出一个好的想法并不那么容易。并不是有了高价值的想法就可以去实践。事实上,有价值的想法仅仅是初步而已,因为这个想法还必须具有可行性。每一个有价值的想法也或多或少有其它的问题伴随而来。当综合考虑各个问题之后,我们或许才能够下一个比较理智的决定。不过,这个决定并不是那么容易的,我至今一直都在摸索中。2 概念设计当有了一个软件产品的想法后,我们便开始琢磨该如何来实现这个产品。一开始,我们对产品并没有太清晰的认识,比如产品要提供什么功能来解决用户的问题、这个功能如何来使用等等。这个时候意识比较模糊。在概念设计阶段,我一般使用“白板 + 白板笔 + 带有相机功能的Touch HD”工具组合进行。使用白板笔在白板上做一些头脑风暴的快速设计,然后通过Touch HD照相,并且保存下来。保存下来以后可以打印然后贴在白板上做一些细化,直到头脑已经有了软件产品模拟运行的初步印象为止。概念设计图例3 功能规范概念设计仅是一些初步的图片,思维跨度会大一些。因此,需要有一个比较规范且易于理解的功能描述,即功能规范文档。这个文档是对概念设计的进一步细化。我们可以根据实际情况来设计。一般而言,功能文档会描述出系统的重要用例。不得不提到一点,设计一个复杂系统的时候,最好的方法是从High Level的方式来俯视整个应用系统,然后根据设计的机器、组件、人物、运行环境等比较大的因素来划分成不同的小系统,从而获取更多的细节。功能规范图例4 用户使用场景说明书此外,如果是SDK之类的产品,最好还需要设计一下每一个公开的API涉及的用户使用场景。用户使用场景是对产品发布后用户使用的模拟,从而可以优化API的设计。API设计的目标是确保50%70%的功能能够让用户非常简单的应用,让剩下的功能可以是高级功能。用户使用场景说明图例5 进度安排该概要设计和功能规范设计的同时,我也会着手开始安排整个项目的进度。目前是直接采用Project。进度安排也是由上到下的方式开始,从大的开始,再细分任务,并根据每一个的能力初步估计一下大概时间。然后由不同的人进行审计,由他们再次更新进度。需要知道的是,进度不可能是准确的,一般而言,我们需要在整体估计的时间上上浮二十个点,甚至更高。进度安排图例6 设计规范设计是产品实现过程的一个重要环节,从Agile角度考虑,为了节省人力和时间,我们只是对一些重要的算法、重要的功能、重要的类进行比较详细的设计。当然了,我也相信简单的功能我们团队的这些人一定能够胜任。留下设计规范文档的好处是维护、测试,以及培训会来的容易的多。在我们产品开发中,我一般会把系统设计的接口类定义好、把重要的算法描述好,然后交由其它人开发实现。因此,我强烈推荐VS自带的类图工具。设计规范图例7 实现到这一步,我想实现应该比较简单了。只是要让团队形成一个统一的开发规范。我们使用了Framework Design Guideline中的设计与开发原则进行规范化的开发。FDS PPT,强烈推荐8 质量保证体系在产品构建之初,我们考虑了质量保证。在上班的时候,那会公司使用的是ClearCase、CruiseControl、Ant、Junit和一个Bug管理工具。我们肯定买不起也用不是ClearCase这样重量级的配置管理工具了。因此,我当时的选择是:Subversion(VisualSVN Server)/TotoiseSVN/AnkhSVN + CruiseControl.NET/NAnt/MSBuild + BugTracker.NET + xUnit + Wix。选择Subversion的原因,在于:(1)免费;(2)提供了Branch/Tag功能。第二个因素是最重要因素,一个产品肯定避免不了持续更新和不同版本的发布。因此我们通过Branch/Tag来支持这种产品线工程。我们产品线管理的方式是,有一个trunk,它具备最全的功能,持续不断的进行更新,除非是Merge阶段。一旦trunk到达快稳定状态且已经达到产品发布的目标,我们会为其创建若干个Branch和Tag,trunk还可以继续BugFixing和New feature更新,但是Branch的代码就必须非常小心对待了,我们不可以添加新功能、不可以不经过代码审计、代码更新需要发送通知,这都是确保发布的产品达到最稳定的必要保证。当然,关于产品线的管理有很多方法,我这个方法不一定是合理的,只是我现在还觉得这样做可行。CruiseControl.NET/NAnt/MSBuild一方面用于在代码更新后自动Build,一方面也可以进行DailyBuild出一个安装包。安装包采用Wix来开发,通过与Nant集成,每一次安装包构建都会自动从代码库获取代码、编译、混淆,最后生成。CC.NET功能很强大,代码更新后,如果Build失败,会发送邮件通知,同样的它还可以自动执行xUnit单元测试,如果测试失败,也会邮件通知。这样可以尽可能避免一些代码错误和避免Regression。Regression回退,这是一种非常严重的Bug,一般而言,我们会把它定义为最高级别。由于UIOSP是一个中间件产品,对其代码修改可能会对其它产品、或者自身产生影响,因此,自动测试也是必须的。 QAS涉及的一些批处理文件:启动/停止/构建安装包等&VisualSVNServer代码管理 集成了NAnt/MSBuild/xUnit的CC.NET&Subversion集成了的BugTracker.NETBugTracker.NET的扩展:代码审计9 第三方组件一般而言,在开发软件产品,如果有一些功能别人已经实现了,我们都会选择重用。这就涉及第三方库。在使用第三方组件的时候,一般会被忽略的就是它的License声明。目前有几种常见License,比如Apach、GPL、MS-PL等。在中国,或许这些东西你可以忽略并随便使用,但是我建议开发软件产品的人还是稍微留意一下,尽量避免一些问题。10 帮助文档如果一个软件产品能够不依赖于帮助文档而使用户可以直接使用,那这个产品的用户体验一般都非常的友好,或者已经有很多用户认可产品的交互模式。大多数情况,我们都需要提供帮助文档,特别是SDK。开发人员一般都懒,能不看文档最好,所以,文档编写需要别出心裁。当然,想要别致是需要代价的,只能看情况一步一步改善了。我们在产品的文档上给用户提供了一个用户指南和API文档。用户指南编写上,首先会用一个简单示例,3分钟的Quick Start,然后在逐步细化和深入。API文档会把重要的类的使用说明描述尽可能清楚,同时每一个重要的类或者API都会附上一个Example。我们在编写API使用说明时使用了Sandcastle和SandcastleBuilder这两个工具。 Help工程&API注释11 结束语一个产品所涉及的细节实在是太多太多了,足够写出一大堆的书籍了。这里仅仅是描述了其中的冰山一角。产品体现价值的方式更重要的是如何获得市场的认可。而这就涉及更多的非技术性的问题了。有高层战略,也有底层策略。公认的,与人打交道是最困难的。一旦你需要负责市场扩展时,需要商业眼光、商业技巧、交际技巧、读人技巧,实在是太多了!没有一个分工细致的团队很难能够做到成功!本文所描述的也一定有不少错误,希望多多指教和得到意见,也请分享你们的想法,当然,拍砖的同志稍微轻点。PS:顺便提一下,目前我们在招人,地点是西安,有兴趣的可以查看“.NET软件开发工程师”招聘信息,或者直接发简历到。 我们知道做程序不容易,因此,会尽量让每一个人开心点,体谅每一个人,尽可能保障每个人的权益。公司技术开发部年本部门主要承担*实业有限公司新产品开发、产品升级改造、产品技术支持和技术跟踪、公司网络工程优化管理和相关知识产权申报工作,下设影音组、监控组、开发组和辅助组。现就本部门一年来的工作情况汇报如下: (一)、主要工作情况 一、记录仪项目: 1.本部门主要承担*实业有限公司新产品开发、产品升级改造、产品技术支持和技术跟踪、公司网络工程优化管理和相关知识产权申报工作,下设影音组、监控组、开发组和辅助组。现就本部门一年来的工作情况汇报如下:(一)、主要工作情况一、记录仪项目:1.开发了新一代单DIN记录仪BVR300型,本型号产品外形为标准DIN,适合不同车厂安装及后加装市场。在功能方面,该记录仪在具备国标基本功能上增加了GPS全球定位、GIS地理信息定位以及CAN总线功能。该型号产品12月份已送公安部第三研究所检测,在产品推出市场前将的到国家相关部门的认可。BVR300型记录仪12月20日将首先推出50台样机用于销售市场的前期开发,到2006年1月份将开始准备批量生产,全力推向市场。BVR300型记录仪将是2006年份公司的主推产品。2.改进了公司第一代汽车行驶记录仪BVR-02PD。完善及改进稳定性能方面外还作出了以下几个大的改进:第一、改进了原主结构产品方案,成本上与原来主结构对比降低了80余元,在稳定性能上也得到了提高,另一方面也间接的减少了本产品的售后服务成本;第二、改进了原从结构产品,同样的在原基础上降低了成本30余元。3.行车记录仪解析软件升级,应保定五公司的要求,在原解析软件2.01版的基础上增加了开关量的处理,成为2.10版。并依据行车记录仪国际行业标准重新开发了中英文记录仪解析软件3.0版,满足了出口车辆对行车记录仪的要求,为公司产品更好的进入国外市场奠定基础。4. 字符叠加处理系统的开发,增加了记录仪产品又一功能特色,本项目已可以完全配套行车记录仪使用,同时即可配合其它显示产品实用。例如可在播放VCD或DVD的画面上显示一些警示用语和宣传内容;在监控系统中,将行车记录仪所采集的实时车速和时间叠加在监控信号上,便于客运公司的管理,增强了公司产品的实用性和兼容性。5.在后加装市场上,我们根据记录仪现有的条件,针对使用机械式传感器的车辆,通过加装传感器,同样能能够安装配套我司记录仪产品。记录仪加装传感器的实现,为记录仪产品的后加装市场得到了有力的推广。6.记录仪项目相关技术支持等,生产工艺完善、生产培训以提高生产效率及质量,外协加工厂家培训,车厂安装事务联系及安装调试安排,售后故障情况分析及故障排除(个别为出差到车厂解决)。二、倒车监视项目:1.新开发设计四分割型倒监产品,功能上增加了二分割和四分割画面显示功能。新开发的样机已提供给宇通技术部门确认、试装。定型产品将在2006.1月份试产。2.6.4寸倒监产品设计,同时考虑车厂安装及符合用户要求。3.吊装倒监产品外壳模具升级改进,使其符合用户要求,重新将本型号产品推向市场。4.倒车监视项目技术支持,车厂技术人员联系及安装调试沟通,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论