邪恶八进制信息安全团队技术讨论组's Archiver

EvilOctal 2006-6-18 03:44

[转载]需求的问题 是一个简单的问题

信息来源:UML软件工程组织<br /><br /><p class="MsoNormal"><span style="FONT-FAMILY: 宋体">需求决定了软件做什么,要提供什么功能。<span lang="EN-US"><p></p></span></span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体">软件工程初期的一般过程是,软件开发的计划,确定要实现的目标和进度等,然后就是需求规格说明书,该说明书要得到用户的认可。用户往往提供了一份要求的说明,开发人员在这个基础上进行了加工和整理。此后的开发过程,都是围绕着需求规格说明书进行进一步地细化,直至开发出产品。当然,测试计划中也要针对需求进行验证,看看是否满足了用户的要求。<span lang="EN-US"><p></p></span></span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体">一般来说,用例视图可以很好地表现需求。用例图中,若干角色<span lang="EN-US">actor与系统提供的用例(功能)之间的连接关系。<p></p></span></span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以下是参考《</span><span lang="EN-US">IEEE</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">推荐的软件需求规格说明的方法(</span><span lang="EN-US">IEEE 830-1998</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">)》的一个系统规格说明书</span><span lang="EN-US">SRS</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模板:</span><span lang="EN-US"><p /> </span></p><table class="content" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt" cellspacing="0" cellpadding="0" align="center" border="1"><tbody><tr style="HEIGHT: 38.4pt"><td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 426.1pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; HEIGHT: 38.4pt" valign="top" width="568"><br />一、引言<br /><br />(一) 目的<br />(二) 文档约定<br />(三) 预期的读者和阅读建议<br />(四) 产品的范围<br />(五) 参考文献<br /><br />二、综合描述<br /><br />(一) 产品的前景<br />(二) 产品的功能<br />(三) 用户类型和特征<br />(四) 运行环境<br />(五) 设计和实现上的限制<br />(六) 假设和依赖<br /><br />三、外部接口需求<br /><br />(一) 用户界面<br />(二) 硬件接口<br />(三) 软件接口<br />(四) 通信接口<br /><br />四、系统特性<br /><br />(一) 说明和优先级<br />(二) 激励/响应序列<br />(三) 功能需求<br /><br />五、其它非功能需求<br /><br />(一) 性能需求<br />(二) 安全设施需求<br />(三) 安全性需求<br />(四) 软件质量属性<br />(五) 业务规则<br />(六) 用户文档<br /><br />六、其它需求<br /><br />附录A:词汇表<br />附录B:分析模型<br />附录C:待确定问题的列表<br /></td></tr></tbody></table><p class="MsoNormal"><span lang="EN-US"><p /></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">另外,《</span><span lang="EN-US">GB9385-88 </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">计算机软件需求说明编制指南》也为软件需求实践提供了规范化的方法。</span></p><h4><span style="FONT-FAMILY: 宋体">需求的问题,是一个复杂的问题<span lang="EN-US"><p></p></span></span></h4><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有些时候,需求的问题会变得很复杂的。尤其是在</span><span style="FONT-FAMILY: 宋体">做行业软件或者<span lang="EN-US">ERP的时候,你遇到不同的客户,每个客户都有他的想法或要求,而且有些客户没有明确的思路,有些则有他们很固执的思路,一时间仿佛需求是没完没了的。或许你的软件已经是一个产品,那么究竟对什么功能进行取舍,对什么功能要增加进软件的核心,对什么功能采用二次开发,都是需要仔细判断的事情。<p></p></span></span><span lang="EN-US"><p /></span></p><p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: 宋体">1 需求的重复和变更<p></p></span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体">对于比较大的系统,客户不可能一次性地把需求完全提清楚。这是必须容忍的。只要你不断沟通和了解,</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户需求就会不断增加。</span><span style="FONT-FAMILY: 宋体">有些公司采用的方法是在需求规格说明书上让客户签字,然后严格按照该说明书来实现。如果以后客户有新的要求,则要另外考虑。但在另一方面,客户永远是上帝,一个软件的成功,应该是用户用得非常流畅和满意。<span lang="EN-US"><p></p></span></span><span lang="EN-US" style="FONT-FAMILY: 宋体"><p /></span></p><p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: 宋体">2 有些需求无法实现<p></p></span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体">和客户的沟通也很重要。什么是必须满足的需求,而另外一些需求可能暂时不能提供实现,这也需要解释清楚。<span lang="EN-US"><p></p></span></span><span lang="EN-US" style="FONT-FAMILY: 宋体"><p /></span></p><p class="MsoNormal"><span lang="EN-US" style="FONT-FAMILY: 宋体">3 实现的功能和客户原来提出的需求会有所差别。<p></p></span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体">很多软件的问题最后总结下来是因为需求没有明确。开发人员没有认准客户究竟需要什么。这时候只能修改软件。<span lang="EN-US"><p></p></span></span></p><h4><span style="FONT-FAMILY: 宋体">需求的问题,是一个技术的问题<span lang="EN-US"><p></p></span></span></h4><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">每个需求的特性可体现在很多方面:如优先级、有效性,效率,灵活性,完整性,互操作性,可靠性,健壮性,可用性;可维护性,可移植性,可重用性,可测试性等。</span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">确定需求优先级:可以粗略地分为三级:</span></p><table class="content" width="98%" border="1"><tbody><tr><td width="7%" height="37">高</td><td width="93%">一个关键任务的需求,必须在此版本实现;只有在这些需求上达成一致意见,软件才会被接受;必须完美地实现</td></tr><tr><td width="7%">中</td><td width="93%">支持必要的系统操作,最终所要求的,但如果有必要,可以延迟到下一版本;实现这些需求将增强产品的性能,但如果忽略这些需求,产品也是可以被接受的;需要付出努力,但不必做得太完美</td></tr><tr><td width="7%">低</td><td width="93%">功能或质量上的增强,如果资源允许的话,实现这些需求会使产品更完美;实现或不实现均可;可以包含缺陷</td></tr></tbody></table><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">更精确的优先级设定如下表:</span></p><table class="content" height="32" width="100%" border="1"><tbody><tr><td width="10%" height="1">权值</td><td width="10%" height="1">1</td><td width="10%" height="1">1</td><td width="10%" height="1"></td><td width="10%" height="1"></td><td width="10%" height="1">1</td><td width="10%" height="1"></td><td width="10%" height="1">1</td><td width="10%" height="1"></td><td width="10%" height="1"></td></tr><tr><td width="10%" height="12"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">需求</span></td><td width="10%" height="12">收益</td><td width="10%" height="12">代价</td><td width="10%" height="12">价值</td><td width="10%" height="12">价值%</td><td width="10%" height="12">成本</td><td width="10%" height="12">成本%</td><td width="10%" height="12">风险</td><td width="10%" height="12">风险%</td><td width="10%" height="12">优先级</td></tr><tr><td width="10%" height="12"><span lang="EN-US"><</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">需求</span><span lang="EN-US">></span></td><td width="10%" height="12"><1-9></td><td width="10%" height="12"><1-9></td><td width="10%" height="12"><></td><td width="10%" height="12"><></td><td width="10%" height="12"><1-9></td><td width="10%" height="12"><></td><td width="10%" height="12"><1-9></td><td width="10%" height="12"><></td><td width="10%" height="12"><></td></tr></tbody></table><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">其中各权值按实际情况而定,不能确定按</span><span lang="EN-US">1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">取值。</span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">收益:实现此需求对用户的益处;</span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">代价:未实现此需求对用户的损害;</span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">价值</span><span lang="EN-US">=</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">收益</span><span lang="EN-US">*</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">收益权值</span><span lang="EN-US">+</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">代价</span><span lang="EN-US">*</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">代价权值</span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">价值</span><span lang="EN-US">%=</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">价值</span><span lang="EN-US">/</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">(总价值)</span><span lang="EN-US">*100%</span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">成本:实现此需求所需的各种成本;</span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">成本</span><span lang="EN-US">%=</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">成本</span><span lang="EN-US">/</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">(总成本)</span><span lang="EN-US">*100%</span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">风险:实现此需求所承担的风险,特别是技术上的;</span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">风险</span><span lang="EN-US">%=</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">风险</span><span lang="EN-US">/</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">(总风险)</span><span lang="EN-US">*100%</span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">优先级</span><span lang="EN-US">=</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">价值</span><span lang="EN-US">%/</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">(成本</span><span lang="EN-US">%*</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">成本权值</span><span lang="EN-US">+</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">风险</span><span lang="EN-US">%*</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">风险权值)</span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最后按需求优先级排序,优先实现高优先级的需求。</span><span lang="EN-US"><p /> </span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">风险的控制和避免:</span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对需求将可能面临的风险要有充分的估计并尽量避免风险的发生及其所造成的损失。建立风险跟踪,保持对危害最大的几项风险的控制,并在开发过程中周期性地更新风险跟踪项目。</span></p><h4><span style="FONT-FAMILY: 宋体">需求的问题,是一个管理的问题<span lang="EN-US"><p></p></span></span></h4><p class="MsoNormal"><b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">需求取得:</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">市场销售部门、技术支持或客户服务所得到的需求,或者开发人员内部通过对业务的分析归纳得出的一些要改进的功能。</span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对</span><span style="FONT-FAMILY: 宋体">需求进行管理的环节应该尽可能精简。最好直接由系统分析来做。经过很多环节的筛选,需求可能已经走样了。纸面上只有一两句话的需求,背后有你看不到的真正想法存在。<span lang="EN-US"><p> 所以</p></span>应该主动走出去寻找需求,应该选择最典型的客户进行访问。领会他们的管理思路和改革方向。<span lang="EN-US"><p></p></span></span><b><span lang="EN-US"><p /></span></b></p><p class="MsoNormal"><b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">需求决策</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">:对于相互矛盾的需求,在同类用户中由产品代表决策;对于不同类用户要根据重要性作适当折衷;对于用户的特别喜好要根据用户的重要性决定;用户中领导的需求要服从最终实际使用的用户需求;当开发者想象中的产品通常要服从用户的需求,但并不表示用户总是对的。</span><span lang="EN-US"><p /> </span></p><p class="MsoNormal"><b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">需求分析:</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">分析需求的各个特性,制作出需求分析规格说明书。</span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><b>需求评审:</b>由相关人员共同对需求进行评审。</span></p><p class="MsoNormal"><b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">需求变更:</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果遇到需求的变更,需要及时作出调整,即使与开发部门联系,提出变更的建议,并分析可能产生的影响,如对产品稳定性的影响。变更的需求需要严格的测试。</span><span lang="EN-US"><p /> </span></p><p class="MsoNormal"><b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">版本控制:</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">确定需求文档版本,确定单个需求文档的版本;</span><span lang="EN-US"><p /> </span></p><p class="MsoNormal"><b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">需求跟踪:</span></b><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">需求的跟踪记录需求的状态,包括未定义、放弃、需完善、已定义、实现中、待测试、测试中、完成、放弃实现等</span><span lang="EN-US"><p /> </span></p><p class="MsoNormal"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><b>需求管理工具</b>:曾经看到过的工具有</span><span lang="EN-US">Rational Requsite Pro 4.5</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">版。需要用</span><span lang="EN-US">Word 97</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">支持。但对中文的支持不够好。</span></p>

页: [1]
© 1999-2008 EvilOctal Security Team