﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-自由-自我-文章分类-软件工程</title><link>http://www.blogjava.net/jiangmin/category/21849.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 22 Apr 2007 09:34:57 GMT</lastBuildDate><pubDate>Sun, 22 Apr 2007 09:34:57 GMT</pubDate><ttl>60</ttl><item><title>需求分析方法</title><link>http://www.blogjava.net/jiangmin/articles/112528.html</link><dc:creator>JiangMin</dc:creator><author>JiangMin</author><pubDate>Sat, 21 Apr 2007 16:59:00 GMT</pubDate><guid>http://www.blogjava.net/jiangmin/articles/112528.html</guid><wfw:comment>http://www.blogjava.net/jiangmin/comments/112528.html</wfw:comment><comments>http://www.blogjava.net/jiangmin/articles/112528.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jiangmin/comments/commentRss/112528.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jiangmin/services/trackbacks/112528.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p><font size=2>项目需求分析是一个项目的开端，也是项目建设的基石。在以往建设失败的项目中，80％是由于需求分析的不明确而造成的。因此一个项目成功的关键因素之一，就是对需求分析的把握程度。 </font></p>
<p><font size=2>在原则上，需求阶段监理应尊重承建方的项目管理和项目分析能力；在具体的任务开展上，以不深入、不干扰承建方的自主权为主，除非在项目合作过程中发现承建方的项目管理以及项目分析能力存在很大的差距和不足。</font></p>
<p><font size=2>为了保证项目的成功，监理方必须加强项目管理和项目分析工作，在具体的操作上可以坚持吸收、同化、贯彻的方法和手段。</font></p>
<p><font size=2>其中，需求分析是一个项目的开端，也是项目建设的基石。在以往建设失败的项目中，80％是由于需求分析的不明确而造成的。因此一个项目成功的关键因素之一，就是对需求分析的把握程度。而项目的整体风险往往表现在需求分析不明确、业务流程不合理，用户不习惯或不愿意去用承建方的软件。作为第三方的监理公司，必须提醒承建方、客户方重视需求分析的重要性，采用必要的手段和方法来进行需求调研，同时监理方也应深入具体的需求调研中去。只有这样才能切切实实地把握用户的需求和方向，才能在将来的功能界定、开发范围上有发言权。<br><strong>&nbsp;<br>如何进行需求分析</strong><br>&nbsp;<br>需求分析不象侦探推理那样需从蛛丝马迹着手，而是应该先了解宏观的问题，再了解细节的问题。</font></p>
<p><font size=2>一个应用软件系统（记为S）的涉及面可能很广，可以按不同的问题域（记为D）分类，每个问题域对应于一个软件子系统。<br>S={D1，D2，D3，&#8230;Dn}<br>问题域Di由若干个问题（记为P）组成，每个问题对应于子系统中的一个软构件。<br>Di={P1，P2，P3，&#8230;Pm}<br>问题Pj有若干个行为（或功能，记为F），每个行为对应于软构件中的实现接口。<br>Pj={F1，F2，F3，&#8230;Fk}</font></p>
<p><font size=2>需求说明书应该对于那些只想了解宏观需求的领导，和需要了解细节的技术员都合适。在写需求说明书时应该注意两个问题：</font></p>
<p><font size=2>1.最好为每个需求注释&#8220;为什么&#8221;，这样可让程序员了解需求的本质，以便选用最合适的技术来实现此需求。<br>2.需求说明不可有二义性，更不能前后相矛盾。如果有二义性或前后相矛盾，则要重新分析此需求。</font></p>
<p><font size=2><strong>重点监控需求分析</strong></font></p>
<p><font size=2>由于项目的特殊性和行业覆盖的广阔性，以及需求分析的高风险性，软件需求分析的重要性是不言而喻的，同时需求分析又的的确确难做。其原因基本是由于以下情况造成的。<br>&nbsp;<br><strong>客户说不清楚需求</strong></font></p>
<p><font size=2>有些客户对需求只有朦胧的感觉，当然说不清楚具体的需求。例如全国各地的很多部门、机构、单位在进行应用系统以及网络建设时，客户方的办公人员大多不清楚计算机网络有什么用，更缺乏IT系统建设方面的专家和知识。此时，用户就会要求软件系统分析人员替他们设想需求。工程的需求存在一定的主观性，为项目未来建设埋下了潜在的风险。<br>&nbsp;<br><strong>需求自身经常变动</strong></font></p>
<p><font size=2>根据以往的历史经验，随着客户方对信息化建设的认识和自己业务水平的提高，他们会在不同的阶段和时期对项目的需求提出新的要求和需求变更。事实上，历史上没有一个软件的需求改动少于三次的！所以必须接受&#8220;需求会变动&#8221;这个事实，在进行需求分析时要懂得防患于未然，尽可能地分析清楚哪些是稳定的需求，哪些是易变的需求，以便在进行系统设计时，将软件的核心建筑在稳定的需求上，同时留出变更空间。咨询监理方在需求分析的功能界定上担任一个中间、公平、公正的角色，所以也必须积极参与到需求分析的准备中来，以便协助客户方和承建方来界定&#8220;做什么&#8221;、&#8220;不做什么&#8221;的系统功能界限。<br><strong>&nbsp;<br>分析人员或客户理解有误</strong></font></p>
<p><font size=2>软件系统分析人员不可能都是全才，更不可能是行业方面的专家。客户表达的需求，不同的分析人员可能有不同的理解。如果分析人员理解错了，可能会导致以后的开发工作劳而无功。记得一则笑话，有个外星人间谍潜伏到地球刺探情报，它给上司写了一份报告：&#8220;主宰地球的是汽车。它们喝汽油，靠四个轮子滚动前进，嗓门极大，双眼在夜里能射出强光&#8230;&#8230;有趣的是，车里住着一种叫作&#8216;人&#8217;的寄生虫，这些寄生虫完全控制了车。&#8221;所以分析人员知识的专一性也会造成需求分析的误解和失败。这时，咨询监理公司就必须根据实际的项目需求调研计划，提醒承建方加强业务了解程度和注重沟通技巧。<br>&nbsp;<br><strong>需求分析方法论</strong> </font></p>
<p><font size=2>根据以往的工程经验，需求分析工作方法，应该定位在&#8220;三个阶段&#8221;（也称&#8220;三步法&#8221;）。</font></p>
<p><font size=2>第一阶段：&#8220;访谈式&#8221;（Visitation）<br>这一阶段是和具体用户方的领导层、业务层人员的访谈式沟通，主要目的是从宏观上把握用户的具体需求方向和趋势，了解现有的组织架构、业务流程、硬件环境、软件环境、现有的运行系统等等具体情况、客观的信息。建立起良好的沟通渠道和方式。针对具体的职能部门以及各委办局，最好能指定本次项目的接口人。<br>实现手段：访谈、调查表格<br>输出成果：调查报告、业务流程报告<br>&nbsp;<br>第二阶段：&#8220;诱导式&#8221;（Inducement）<br>这一阶段是在承建方已经了解了具体用户方的组织架构、业务流程、硬件环境、软件环境、现有的运行系统等等具体实际、客观的信息基础上，结合现有的硬件、软件实现方案，做出简单的用户流程页面，同时结合以往的项目经验对用户采用诱导式、启发式的调研方法和手段，和用户一起探讨业务流程设计的合理性、准确性、便易性、习惯性。用户可以操作简单演示的DEMO，来感受一下整个业务流程的设计合理性、准确性等等问题，及时地提出改进意见和方法。<br>实现手段：拜访（诱导）、原型演示<br>输出成果：调研分析报告、原型反馈报告、业务流程报告<br>&nbsp;<br>第三阶段：&#8220;确认式&#8221;（Afirm）<br>这一阶段是在上述两个阶段成果的基础上，进行具体的流程细化、数据项的确认阶段，这个阶段承建方必须提供原型系统和明确的业务流程报告、数据项表，并能清晰地向用户描述系统的业务流设计目标。用户方可以通过审查业务流程报告、数据项表以及操作承建方提供的DEMO系统，来提出反馈意见，并对已经可接受的报告、文档签字确认。<br>实现手段：拜访（回顾、确认），提交业务流程报告、数据项表；原型演示系统<br>输出成果：需求分析报告、数据项、业务流程报告、原型系统反馈意见（后三者可以统一归入需求分析报告中，提交用户方、监理方进行确认和存档）<br>&nbsp;<br>整体来讲，需求分析的三个阶段是需求调研中不可忽视一个重要的部分，三个阶段或者说三步法的实施和采用，对用户和承建方都同样提供了项目成功的保证。当然在系统建设的过程中，特别在采用迭代法的开发模式时，需求分析的工作需一直进行下去，而在后期的需求改进中，工作则基本集中在后两个阶段中。</font></p>
<img src ="http://www.blogjava.net/jiangmin/aggbug/112528.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jiangmin/" target="_blank">JiangMin</a> 2007-04-22 00:59 <a href="http://www.blogjava.net/jiangmin/articles/112528.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>