做企业软件开发,会经常遇到要接手一个新项目,更有可能面临一些困难,比如:我现在的项目还没做完、接手的项目是别人已经开始做了一部分的、接手的项目已经完成并且头一波或几波开发人员已经不在公司而我要做一些新功能,应用一些我从没接触过的新技术,等等。项目都有工期在压着,如何快速熟悉项目并真正投入实际开发是我现在要解决的问题。
1.了解环境背景
首先要了解这个企业是做什么的, 经营方向,目前面临的问题是什么,为什么要做这个项目,这个项目完工后可以为企业带来哪些好处。从大的方面去了解,而不要一上手就去接触需求,容易陷入死胡同。
2.了解需求、分析需求、确定需求
如果需求还没有确定下来,并且需要我来跟客户或中间人确定客户需求的话。大多数客户对自己的实际需求都很模糊,不确定到底想要的是什么,这时我就需要进行迭代式确认需求。
首先,列出功能清单,并沟通确定清单中每个功能的细节点。这里是以客户为主。
其次,根据这个功能清单做出软件原型,这个一般来说不必拿指定的技术来做,只用用最熟悉的技术或者原型工具做出界面,切换,表单等。尽量用最快的时间完成原型设计。
最后,用做好的原型跟客户逐一对照功能点,对功能清单的细节处做记录,不断修改原型,直到最终确定。这里主次划分一般是我占7分,客户占3分,由我来根据经验引导客户需求。
当然,需求分析需要的还有更多的事情要做,哪些能做,不能做,工期确认,技术确认,开发经费等就不属于本文范畴了。至此,一个需求单也就确定下来了,并且也有了原型。
对于那些从客户方直接拿过来确定好需求的项目来说,我所做的第一步就是了解需求。这里的重点就是快速了解,灌输式,大致概括,都有什么功能,重点在哪,难点在哪,不要做细节与设计上的考虑。先自己设想重点难点,再做确认。这一步最好是以开会并作会议记录的方式,传达更快速准确。
分析需求分两步,阅读需求文档并对细节处做分析,批注出所有不清楚,有疑问的地方(根据经验,这里需要考虑到设计上逻辑的问题,要很快联想到如果我来做,这里该咋样处理)。然后是开会逐个过功能点,将问题都暴露出来,能确认解决的会议上就确认,不能解决的再提交给客户做确认。
至此就可以确认需求了,客户、程序员对现在的需求无异议了,就不会再动了,签好合同后所有的改变或增加可以放在后期做。
3.选择技术、搭建环境、培训学习上手新技术
技术选择第一是根据客户实际要求,例如必须要用什么样的数据库,用Web还是Silverlight,用Java还是VB等,有的是可以协商,有的是根据自己的技术掌握程度可以做调整。
第二是尽量选择自己熟悉的技术去做。
第三是根据项目需求,确定使用哪种技术做最合适。如WCF、WebService。
如果遇到新技术该如何快速上手?一般来说,公司是不会让一个人什么技术都必须掌握并转来转去的,比如让我现在去做C++或者PHP的项目我肯定是拿不下来的,毕竟这是对公司来说也是有风险的,但是在同方向的新技术是可以接受的,例如用Asp.net MVC,jQuery用jqGrid,数据上用nHibernate等。学习上手一般不用太久,大致3天就可以开始从简单的做起了。当然公司有培训机制是最好的,如果没有的话,自己要找官方的适合上手的学习资料为主,直接编写一些简单的代码去熟悉这门技术,并了解一些重点与内部机制。
而后就是环境的搭建了。比如数据库设计工具PD,数据库Oracle,IDE,ORM工具,IDE需要的插件如Silverlight4或Asp.netMVC3,代码生成工具如动网或codesmith,数据库查询分析器,js或jQuery控件,一些必需的插件或控件,调试工具如Firebug或Fiddler,一些公司内部或开源等框架如权限管理系统,log4net等。这个随后我会在另一篇文章《项目开发中所必须的工具与常用架构》再详细写。
4.数据库设计
这里一般是分为两种情况,一是客户已经有数据库了并且有大量数据,这个项目主要是数据采集或者是重写软件,但数据库是不会变的,不管这个库是多偏多老多烂,还是要一直用下去的,不可能改动它的数据结构,如果有数据说明文档还好,我们只要把所需要的各个表列出来看一下就OK,但是如果什么文档都没有还要去做数据采集分析的话,而且表名字段名都起的非常怪异无法猜测,还有两个办法可以解决,1是跟踪,原有软件点击指定步骤,然后跟踪器查看跟踪出来的SQL语句做判断;2是原有软件有源代码的话,从源代码里做分析。如果这两样都没办法的话,我看难了。当然二是自己能够从头设计数据库,从原始就开始自己把握,根据公司的数据库设计规范,做库的设计。
5 框架选型搭建
一般做企业软件开发的公司都会有几套自己的成熟框架,跟着公司的走就好了。没有的话当然自己也要有搭建框架的能力。具体就不在这里详述。
至此项目已经上手,可以开始进入编码阶段了。做技术的一般思维还是偏技术一些,所以这5项我认为重点还是要首先放在前两项的业务理解上,这样后面的路才会更走的快又稳。
然后说一下文章开头那几个特殊情况。
同时做几个项目:有时在公司缺人手时,或者需要救火时会出现这种情况,所以这就考验了我的协调能力。接手新项目当然要全身心去做,但是另外一个项目也需要做阶段性总结,不然等新项目做完再拐回去看以前的项目结果都忘差不多了,从哪开始都不清楚了。
半路出家:这种情况经常发生,补充人手或者干脆前一波人走得精光又去接了个烂摊子。这个最先要做的就是了解客户状况和这个项目是要做什么的,接着就是项目目前进行的大致状况和项目目前面临的难点,然后是了解我现在需要做的内容是什么需求如何,第四才是去看项目的整体框架和说明文档。
做了项目也不少了,我感觉最重要的两个字就是“主动”!主动沟通,主动思考,遇到问题主动去面对解决,项目还是要做下去的,而且要做好,困难肯定会有而且还不少,消极和被动只会让我止步不前。
转自:http://www.cnblogs.com/kumaws/archive/2011/04/11/2012036.html
相关推荐
这些项目旨在展示SSM框架在实际应用中的魅力,同时也为开发者提供了一个快速学习和实践的机会。通过下载和使用这些项目,您将能够深入了解SSM框架的核心概念、设计模式和最佳实践。 二、项目特点 实战性强:这些...
骨干骨架 这是为了快速测试或开始一个新项目的克隆。
入门遵循我们的快速开始一个新项目。 我们很想听到您的声音! 如果您有任何反馈或在使用我们的框架时遇到问题,请在此存储库中提交。贡献多谢您的贡献! 阅读我们的准则,然后使用需要标签浏览我们的问题。
入门遵循我们的快速开始一个新项目。 我们很想听到您的声音! 如果您有任何反馈或在使用我们的框架时遇到问题,请在此存储库中提交。贡献感谢您对我们的贡献! 阅读我们的准则,然后使用标签关注我们的问题。 请注意...
SpringMVC项目模版,用于快速开始一个SpringMVC的项目 使用 Eclipse需要安装maven插件,现在最新的eclipse都预装了maven的插件了 把项目import进来, 然后项目会下载各种依赖的jar包 右击pom.xml -> Run As -> Maven...
角度支架 我的 angularjs scafhold 文件夹包含我几乎总是在 angularjs 项目中使用的东西。 它帮助我快速开始一个新项目。
一个让人们快速开始工作的空项目 设置步骤 运行npm install -g expressworks 克隆这个git clone git@github.com:mmilleruva/nova-node-expressworks-empty-project.git 导航到新创建的项目文件夹cd nova-node-...
解决方案生成器一个简单的应用程序,它将创建项目结构,解决方案和项目文件以及其他工件,只需单击一个按钮即可开始在新项目上工作。 有很多项目可以使构建和发布代码变得更加容易,但是没有很多项目可以使创建新...
Kotlin 版 MVP 基础框架项目 已经使用该框架Java 版 MVP 基础框架:Kotlin 版 MVP 基础框架:简介快速搭建 Kotlin+MVP+RxJava+Retrofit+EventBus 的框架,方便快速开发新项目、减少开发成本,让所写的代码更加简洁,...
为什么每次您需要一个新项目的按钮时都重现类似的代码? 从basic-buttons.less开始,然后根据您的需求进行自定义。 已经包含了200多个图标,并且该文件的结构使自定义变得快速而容易。颜色尺码图示
Laravel Startup是一个自以为是的Laravel启动器样板,可以引导您的下一个应用程序。 赠品包括: 验证 由Vue和Vuetify支持的SPA前端和后端 几分钟后即可轻松构建管理控制台。 样板发生器 贡献 感谢您考虑为Laravel...
用于无服务器的GraphQL框架,可帮助您以最少的配置快速开始开发GraphQL无服务器API。 入门 @graphless/cli安装。 npm -g @graphless/cli CLI可用于引导新项目,生成新的GraphQL函数,运行开发服务器等 开始一个新...
完成以下步骤以开始一个新项目(NEW-PROJECT-NAME): 将此存储git clone BOILERPLATE-URL NEW-PROJECTS-NAME到本地计算机上git clone BOILERPLATE-URL NEW-PROJECTS-NAME cd进入克隆的存储库 使用rm -rf .git && ...
composer installcp .env.example .env 生成一个应用程序密钥。 php artisan key:generate编译前端资产安装所有必需的依赖项。 yarn 编译资产。 yarn dev服务应用Laravel提供了一种方便的方法来在PHP开发服务器上为...
有时我一次处理 5-6 个项目,我希望能够快速打开一个新项目。 我也喜欢,所以开始做这个。 配置选项 通过编写proj set设置您的 IDE 和工作目录,顶部选项将下拉: 目前,我知道唯一可以使用的两个 IDE 是 Sublime ...
SAP PPM(Portfolio and Project Management 投资组合项目管理) 是SAP PLM商务套间的一个重要组成部分,他以项目为主线管理新产品投资所需的资源、财务、和人力需求,从早期的项目决策开始,到立项后的项目执行以及...
要创建一个新项目,只需键入tinpig 。 这将显示可用模板的列表,供您选择。 选择模板后,tinpig会询问您新项目的路径。 输入目录名称以在当前目录中创建具有该名称的项目,或者输入到其他位置的绝对或相对路径。 ...
信息化项目实施与应用的一个质量标准体系 274 信息化项目“手术”如何做 成本管理是关键 277 信息化项目与实施效益评估体系初探 279 信息技术应用项目的战略风险分析 280 信息化与企业战略管理 284 信息化与企业经营...
项目关于txProject 是一组实用程序,用于快速创建基于 Twisted Python 的简单项目,并且所有方便的样板都已经就位。 通过提供带有测试、插件文件和基本配置的工作框架,txProject 使扭曲的新手更容易看到事情是如何...
按照我们的快速入门指南开始一个新项目。我们很想听到您的声音!如果您有任何反馈或在使用我们的框架时遇到问题,请在此存储库上提出问题。 迁移指南 已经有 Ionic 应用程序?这些指南将帮助您迁移到最新版本。 从...