软件开发项目做需求分析的一点心得

1、需求分析前的准备

  在软件开发过程中,需求分析可以说是核心任务之一,就像一支将要远航的船队,要在指定时间内到达目录地,他们需要一条正确的航线,才能到达目的地,如果航线有误,他们将会误时到达,或是不回到原位将永远到达不了,这么重要的东西,但在国内很多团队中缺少,虽然我也做了一些,但在项目完成的时候,回头看看,其实我们做了很多不必要的事,浪费了很多时间、人力和物力,为保证在今后的开发中减少这些错误的发生,现将一些问题记录下来。

为了了解系统需求,先可以从概要式的需求着手,再细化需求,需求分析必须拟定文档,在写文档之前我们必须做好寻求分析的范围,总结为以下几点:

1.1要做一个什么样的系统

  这个不说,我想做软件开发的人都知道,拟定这个后,一切才可以扩展开,比如我们要做一个B2C的商城,要卖母婴用品,知道了这些,我们就可以找现在网站有的B2C网站做参考,分析系统构架,系统功能等。

1.2系统将要在什么样的环境下进行

  我上次经历的一个系统,就是要用asp.net重新发一个B2C商城,但有一些前提条件,以前公司有网站,是用java+MYSQL开发的,但我们开发的新系统必须兼容以前的数据,如客户信息,商品信息,还有一些资源信息,并且还要兼容Google,baidu收录的地址路径,还有与原ERP的通讯等条件,这样让我们的开发很受限制,这些需求就是这样,你无法改变,所以在设计新系统的同时你必须考虑,要花时间去了解以前系统的功能,接口等,如果不了解,等你把新系统开发完了才发现系统脱离了公司原有的业务流程,让公司无法运作,那就代表你开发的系统根本没有价值,我想这不是我们想要的结果。

1.3要解决哪些问题

  开发出来软件系统就是为了解决客户需求的,一个B2C网站就是卖商品,主要由客户、商品、购物车、定单组成,将这些核心的功能定义好,我想其它的意外都不会太影响到整个系统的进程。

1.4将来可能会有哪些变化

  面对将来的发展,我们也许不能完全考虑到,但与公司的战略发展,可以提前考虑些,能想到多少就想多少,多多益善,我们开发一个系统不是只满足当前的需求,如果眼光只放在眼前,那么你这个系统很快就会被淘汰,功能也许不需要现在实现,但接口总得留下吧,不然想改进都是很困难的事,如果一个稍微的小需求都要动系统构架,我想这个系统会越来越不稳定,作为系统分析师,这块也是至关重要的。

1.5系统可以维持任务的周期是多少

  系统周期与公司战略发展是紧扣的,一个系统的功能不可能随着社会的变化,能一直满足市场需要的,在设计系统的时候,可以了解一下公司的战略发展,比如公司三年之内要做成什么样,客户多少,网站浏量,可以做下评估,这样就考虑系统构架的问题,你开始就准备构架一个大胖子,但现在需求简单,在实际的运行中,速度缓慢,其实你构架越复杂,系统运行就越缓慢,虽说现在很多大系统运行的都很好,但要想想,人家服务器,网络构架是什么样的,你不可能让你的系统一线就有这么好的环境,就算有,那成本也太大了,一般的公司也吃不消。

1.6系统分几个阶段实施

  在开发初期,我们不可能将系统所有的功能都能完成的很好,为了加快开进度,为了系统能尽早上线,我们得像建楼一样,分阶段进行,分段实施,如果我们现在只是要在网上卖商品,那我们就得把客户管理、商品管理、购物车、定单管理这几大块实现,把一个系统根基打好,谁都想让自己的系统变成最强大的系统,但这个想法几乎是不可能完成的,如果我们把根基打好了,再在上面加以改进,添砖添瓦,根据客户或市场的需要来完善,我想这个系统就会慢慢变成一个成功的系统,对于B2C网站来说,能完成商业的需要,能让公司的流程走顺,那就是个好系统,没有最好的系统,只有最适合的系统。

  分阶段实施,可以有节约成本,也可以加快实施速度,不管是作为公司的管理人员还是开发人员,能尽快看到成果,会提高信心,可以举个例子,在设计一个B2C商城的时候,我们除了客户管理、商品管理、购物车、定单管理外,还要加入广告管理、促销管理、CPS、统计管理、用户积分、虚拟币、礼品、物流、接口等一些功能,如果开发周期只给两个月,四个人,从系统设计到系统上线,怎么做?怎样如期完成呢?如果你的团队都没接触过B2C这样的系统,开发起来是很难度的,在这样的情况下,我们必须分段实施,抓主干,把核心的东西完成了,系统可以上线,虽然没有理想的那么强大,但最少它能赚钱,再一个两个月可以把客户管理、商品管理、购物车、定单管理这几块主要的功能完善,公司业务可以进行,后面的功能虽然很有必要,但也可以分个先后,系统上线了,能给大家看到东西,能用用,建议也会多些,对于系统的优化改进,这个是无止尽的,如果没有这些基本的东西,天天都会有人在你耳边叫,你们什么时候上线呀,做了这么久,做的怎么样了,让你的团队心里承受着很大的压力,就算你在两个月内把开发任务完成了,那你的测试通的过吗,功能越多,问题越多,在后期维护问题越多,最后烦了,没办法,重构,那样不是亏大了。

1.7确认第一阶段解决那些问题项目管理者联盟

  在一个新的环境中,一个新的团队,你说要在某一时间段里完成什么样的系统,你怎样做到让领导相信你,让公司相信你,一个大一点的软件系统,少则几个月,再多一点就一年半载,他们能等吗,再说了他们不懂代码,不会天天跟你的屁股后面问你,系统怎么样了,做了哪些,就算这样,我想你也进了疯人院了,所以我们做系统要打好第一枪,这样才会得到更多人的支持和理解,如果你不能理解,可以去看看商殃变法中的《徒木立信》的典故。

  至于软件第一开发第一阶段要做哪些事,这个要根据一个系统的核心功能去了解,只有建立好了框架,不要太急于求成,没什么好处,把根基打好了,再想怎么包装,都不是件难事。

1.8系统开发团队由哪些人组成

  一个好的团队,必定是发挥了团队中每个人的优势,在开发团队中,不是你技术能力强,你就是最有价值的人,我相信在开发团队里没有一个从头到尾都能支持的能人,不是不没,是我是觉得不可能存在,也许我么说有些人不服,其实我这么说也有我的理由,一个人也许有机会经历团队中的每个环节,并且都能深入,但绝对不是一个机会,如果有,那就是一个人的开发,一个人的开发我想也不能叫团队,有时候,一个人什么都能做,多了一个人,什么都做不好,但面对大的项目,不得不进行团队合作。

  我所在的公司,我进去的时候,接到项目任务,我开始还有些心虚,因为有些工作我也没接触过,但又不得不去做,但我很意外的时候,我们的团队中有一位项目助理,她的出现让我们的团队协调管理得到了很好的实施,计划任务,可以做到很好的按排,但跟踪管理,我能收集分配,但指定到人后,我很难看到进展的情况,因为自身还有很多的工作,开始我部署了项目管理系统的,收集需求和BUG,也指定到人,但反馈往往不及时,因为我有时候隔一天才上去看,后来我将这项目工作交给了项目助理,让她去管理这些,我发现她做的很好,她每天和我只花几分钟的时间做核对,出现意外情况我就出现解决,她的出现把我和团队中的每个开发人员的工作连接起来,让项目管理得以顺利的实施。

开发团队具体由哪些人组成,这是要根据公司实力,项目进度和项目大小来定的,现在说几个工作职则,可来灵活分配一下:

  项目经理:对项目的决策性问题进行定位,一个功能做与不做,领导说的算

  构架师:控制技术问题,解决技术难题,对分配下来的任务进行分析、评估,反馈给项目经理,再进行确定

  项目助理:记录团队会议内容,协调工作中的日常事务

  开发组长:调配开发组员,辅助组内开发人员并对成员工作进行监管,一般由主程担任

  开发人员:负责编写代码,按需求完成任务

  测试人员:对功能进行测试

  如果这里的每项目工作按排到个人,我想开发团队的协调管理最好。

1.9系统运行环境是什么样的

  在系统构架时,根据需要定义好,系统构架、程序环境、网络环境,如考虑分布式存储,日均访问量、系统安全、成本预算等。

  asp.net的开发成本是要比java的开成本低的。

  Sql server的运营成本是要oracle低的,但oracle在大型数据处理上要优于SQL Server,如果是SNS站我觉得上Oracle会好些。

  选择什么样的环境,在没有特定要求的情况下,根据团队的现状去考虑我觉得就差不多了。

  我们有了目的地将要远航,那么就得需要航海图、船、船长、舵手、水手、水和食物,虽然这样我们能保证100%完成任务,因为大海中的意外谁也不会知晓,但我们理想的是我们能安全到达,如果条件不允许,就算我们知道目的地在哪,出了海,我们将面对是一场艰辛冒险旅程。

2、收集需求

  需求的收集是个很繁琐的过程,收集的不够,开发过程中变化会很多,特别是你上了一个演示版本后,开始别人一点意见都没,一看你的演示,你就意见一大堆,这样的问题我想在很多项目中都出现过,所以先在收集需求的时候要和客户或相关部门一一确认,我们考虑需求要从种两种角度去考虑,一种是用户角度,另一种是开发者角度,所以在谈需求时,必须边聊边记,把所谈的话记录整理,如果怕遗漏,可以录音,然后将采用文档的方式表达出来,将提出的需求加以分析,做下技术评估,如果有特别的难题可以提前让开发人员做技术预研,在做评估后,需要分段实施的,就做好规划,然后和提需求的人员确认,需求文档的功能可以多写点,根据企业的发展,能考虑的都考虑,这样可以在系统构架时,定位系统的生命周期时,给以更多的参考,在需求定出阶段后,我们得把要马上实施的功能放在当前,加以强化、细化,反复的进行,条件允许的时候应该做些Demo来确认。

时间: 2024-08-05 17:42:33

软件开发项目做需求分析的一点心得的相关文章

软件开发项目云端All

如今在软件开发圈里混,Agile,DevOps,Cloud是大家经常挂在嘴边的词,其实大家各自都有在应用层上的经验,但是如何把三者很好的结合起来,这是所有项目管理者困惑和需要的问题. Agile让我们的项目更加拥抱变更. 持续集成和持续交付让我们更快的进行自动化交付. 自动化持续部署也让开发团队,运维团队受益颇多. Infrastructure也逐步向Cloud迁移. 作为一个软件开发的项目经理,我的团队一步步推进,演变,一切都那么地和谐.虽然我们在最大化地自动化,工具化,无论是管理层还是项目团

怎么用snapman一个人在三天内开发出一个复杂的软件开发项目管理系统

snapman是一个简单而强大的团队协作软件,在上面的信息可以是数据.可以是规则.也可以是自动化代码:最重要的它是一个可以开发的协作平台,所有信息都可以作用到所有人或机器上,大大减少了工作的复杂度.软件开发项目是人类工程中对人力.脑力的配合度要求最高的项目.所以高智商的人才开发出各种项目定义实施流程:PMBOK.CMMI.IPD.SCRUM.XP等,这些流程的实施离不开各种强大的信息系统.但是这些系统只适合于大公司大流程,到单个的项目组级别很难为项目具体的特点做适配,随心所欲的更改.比如做10个

如何做好网站开发项目的需求分析

一个网站项目的确立是建立在各种各样的需求上面的,这种需求往往来自于客户的实际需求或者是出于公司自身发展的需 要,其中客户的实际需求也就是说这种交易性质的需求占了绝大部分.面对对网站开发拥有不同知识层面的客户,项目的负责人对用户需求的理解程度,在很大程度 上决定了此类网站开发项目的成败.因此如何更好地的了解.分析.明确用户需求,并且能够准确.清晰以文档的形式表达给参与项目开发的每个成员,保证开发过 程按照满足用户需求为目的正确项目开发方向进行,是每个网站开发项目管理者需要面对的问题. 一.那些人应

Linux已成为世界最大软件开发项目

Linux([?la?n?ks或?l?n?ks])内核开发者Greg Kroah-Hartmant在柏林发表演讲时称,Linux已经成为世界最大的软件开发项目.目前最新的Linux 4.5内核包含了超过2100万行代码,然而并不是所有的设备都运行这2100万行代码, Kroah-Hartman举例说,他的电脑运行大概160万行代码,手机则运行了250万行.核心代码约占代码总数的5%,这其中有35%是网络相关的代码,超过40%的代码是驱动. 不过,真正让Linux成为世界第一大开发项目的可不仅仅是

软件项目接单_互联网软件开发项目接单平台

软件开发项目范围.质量因素对进度的影响: 软件开发项目比其他任何建设项目都会有更经常的变更,大概是因为软件程序是一种"看不见"又"很容易修改"的东东吧,用户是想改就改,造成需求的蔓延,项目经理有时还不知如何拒绝,加上要说"我能"的心理因素,一般都会答应修改.这样集少成多,逐渐影响了项目进度. 如果某项工作在进度上表面上达到目标了,但经检验其质量没有达到要求,则必然要通过返工等手段,增加人力资源的投入,增加时间的投入,实际上是拖延了进度.不管是从横

带领软件开发项目团队

在国内软件行业从业人员的成长流程(一般是这样的,1年可以做到总监的高技能人才也有): 1.程序员,刚毕业的学生,一般独立完成工作有些困难: 2.工程师,毕业2~3年,有一些项目经验,能够独立完成开发: 3.高级工程师,毕业4~5年,能独立开发.能参与设计.能编写文档.能在技术上指导他人: 4.初级项目经理,能带领10人一下的团队: 5.中级项目经理,能带领20人左右的团队: 6.高级项目经理,能带领40人以上的团队: 7.再往上就是职能经理,由人事部门任命,负责公司一个部门的运营. 其中最难的一

浅谈软件开发项目如何实现精益生产

精益生产(LeanProduction),简称"精益",是衍生自丰田生产方式的一种管理哲学.精益生产是通过系统结构.人员组织.运行方式和市场供求等方面的变革,使生产系统能很快适应用户需求不断变化,并能使生产过程中一切无用.多余的东西被精简,最终达到包括市场供销在内的生产的各方面最好结果的一种生产管理方式,它的核心是消除浪费,显然软件开发行业也需要这种理念. 不管开发什么产品,都需要首先考虑质量问题.一些软件企业为了降低成本而忽视质量,但质量低下的软件会造成返工的浪费,反而提高成本.相反

offer选择:是做软件开发还是做数据分析?

题目:最近有两个offer,A是某取款机公司的软件开发岗,主要是做.NET,B是在一个小公司做数据分析.背景:A公司是合资,在北京,不算大,因为取款机系统不必要经常更新,所以工作相对稳定,B公司在数据分析也属于初级阶段,项目经理具有8年的数据分析经验,数据分析是时下比较热门的职业,自己也比较感兴趣.纠结点:A的工作不是很感兴趣,而且一般都说做软开的都要转行管理,我对管理也不感兴趣,工资在北京来说不算高,1W吧,但是工作一年后会比较稳定,有熟人在. B公司的数据分析我比较感兴趣,但是因为这是新兴的

敏捷软件开发——项目版本迭代

开发人缘和客户决定迭代规模,一般需要两周.同样地,刻骨选择他们想要在首次迭代中实现的素材(功能).他们不能选择与当前开发速度不符的更多的素材. 迭代期间用户素材的实现顺序属于技术决策范畴,开发人员采用最具有技术意义的顺序来实现这些素材. 可以串行的实现,完成了一个再完成下一个,或者分摊这些素材,然后一起并行地开发. 一旦迭代开始,客户就不能再开遍该迭代期间需要实现的素材.除了开发人员正在实现的素材外,客户可以任意改变或重新安排项目中其他任何素材. 即使没有完成所有的用户素材,迭代也要在先前指定的