??xml version="1.0" encoding="utf-8" standalone="yes"?>
我发现多数需求分析说明书~写得毫无h?多数公司的做法是写完该需求说明书之后,把它扔一?埋头苦干写程序了.一斚wq和公司寚w求分析的认识不够有关,另一斚w,也和需求分析编写方式不合?以至它的价值难以体现有?
软gE序,从最l的抽象意义而言,是计机pȝ对自然语a的翻?而需求分析充当了译d的急先?很难惌,如果没有一份好的需求说明书,针对客户含糊不清的自然语a描述,开发者能做出一个符合要求的优秀软g.然?什么是好的需求说明书?应具备什么样的特?我认为好的需求说明书应有由如下三个阶D?l多ơ@环反馈而逐渐形成:
1 调研阶段:
客户和需求分析师讨论pȝ该具有的功能.客户希望pȝ能做什?辑ֈ什么样的效?需求分析师的责L认真听取客户的原始言?通过讨论,语言的提炼和客户达成p,最l得到确切的需?-客户希望pȝ能做什?q一q程q用的是自然语言,需求分析师必须具备良好的沟通能?文字表达能力,q且必须具备客户领域内的相关业务知识,不用用户不懂的计算Z业词?
参与人员:需求分析师,客户,pȝ设计?
q用工具:自然语言.
阶段成果:调研记录?
2 定功能l构和设计系l原?
需求分析师和系l设计师讨论客户的需?需求分析师针对调研阶段的记?逐点提出客户需?q用uml的用例概?和系l设计师q行讨论.pȝ设计师根据这些需?q用他的技?知识和经?之分解ȝ为系l的功能l构.(此处仅针对应用系l而言,对于其他pȝ,可能q要ȝq程l构或部|结?得到功能l构之后,pȝ设计师还要构建系l原?该原型用于和客户q行更好的交?
在这一阶段之后,׃得到了功能分解表和系l原?需求分析师和系l设计师已明白系l的雏Ş,该成果将作ؓ开发者和客户l箋q行讨论的基.
参与人员:需求分析师,pȝ设计?或该设计师领导的相关团队).
q用工具:uml,构徏原型的相兛_h?
阶段成果:功能分解?pȝ原型.(大致的业务流E图)
3 ~写需求分析说明书
在参照功能分解表和系l原型的基础?需求分析师和系l设计师~写pȝ的需求分析说明书.该需求分析说明书作ؓ客户和系l开发者的桥梁,既表达了客户惌pȝ做什么的愿望,又反映了pȝ开发者针Ҏ需求得到的努力成果(功能分解表和pȝ原型).通过该说明书,对系l具有的功能和最l可能的形?客户和开发者达成共?
有可能经q多ơ的1,2阶段的反?最l才得到需求分析说明书.各阶D늚成果应妥善保?
参与人员:需求分析师,pȝ设计?客户.
q用工具:自然语言,功能分解?pȝ原型.
阶段成果:改进的功能分解表,pȝ原型,(业务程?,需求分析说明书.
W?阶段,是开发者得到自然语a需求的阶段.该阶D늚重要性不a而喻.
W?阶段,是需求分析编写的核心阶段.很多公司会有意无意忽略该阶段.实,该阶D耗费的h力和旉挺多,但这个阶D决不能马虎的进?甚至忽略.只有详尽的将自然语言译成功能需求表,qؓ此构建原?开发者对pȝI竟能做什么和未来该怎么做的认识才会逐渐加深.q且,对应的功能界?能够让客户大致认识到最l的pȝ会是什么样?他能够据此提q满意?修改或者增加需?
我主张在构徏功能分解表的时?界面的相关控g,字段,标签都一一列出,q且和原型的界面相对?q样在功能分解表/需求分析说明书定之后,开发者就有可能根据这些控?字段/标签立业务层的接口和数据库pȝ的表l构,减少了概要设计阶D|作的工作?
以下是一个分解功能的例子:
功能:修改我的资料
功能q?用户可以更新个h资料
界面控g:姓名文本?输入姓名),邮箱文本?输入邮箱),密码文本?输入文本),认密码文本?输入认密码),所属组别选择?nbsp;(输入所属组?,地址文本?输入地址),备注文本?输入备注).提交按钮.
界面标签(Label):Ҏ界面控g描述q行配对.如姓名文本框的标{是"姓名".不再赘述.
界面:见图(修改我的资料)
只有l过详尽完备?,2阶段?我们才可能进行第3阶段,?,2阶段的成果综合v?和客戯一步讨论需?客户可能会对功能分解不满?对原型有异议.q样我们必须q回?,2阶段,再次分解功能,修改原型.直到客户满意为止.
在这个基?我们才可能编写最l的需求说明分析书.我认?严格按照上述程q行~写的需求说明书,是好的.它的特点ȝ如下:
1)l历q反复功能分解和原型构徏.客户因原型而清楚认识到自己惌pȝ的Ş?开发者经多次反馈明确了系l所具备的功?
2)~写良好的功能分解表,能够帮助开发者进一步设计业务接?
3)构徏成型的原?有助于开发者设计数据库pȝ.
4)*明确的业务流E图,能够协助开发者构建系l的业务?
用户的需求永q在变化,没错.但如果我们按照上q步骤努力在分析阶段弄清楚客L需?以后的开发维护阶D就能将需求变更的代h降到最?只有对事物认识越深刻,才越有可能认识到事物可能存在的变?q条哲学法则在需求分析阶D同样适用.
l过以上讨论,我们可以看Cؓ什么多数公司的需求分析书难以辑ֈ预期要求.它们没有功能分解阶段,没有原型构徏阶段,没有反馈认识再加q阶段....q样的需求分析书,仅仅为构构?对系l的开发毫无帮?(我还看到q有人用三天写完一个系l的需求分析书)接踵下去的Y件开发阶D?如何q行?q样做出来的软g,能好到哪里去?
一Ҏ?ȝ方家. :-)
2 pȝq行环境
2.1 g环境
2.1.1 一?86微机,CPU主频?00MHZ以上,内存大于512MB.
2.2 软g环境
2.2.1 WINDOWS 或类 LINUX 操作pȝ.该操作系l应能正常运行JAVA虚拟?
2.2.2 安装IE6或FIREFOX1.5览?br> 2.2.3 安装J2SDK,要求版本?.4以上.
2.2.4 安装TOMCAT或其他支持SERVLET 2.3 的WEB 服务?
2.2.5 安装MYSQL数据?要求版本?.0以上.
3 pȝ用例说明
3.1 pȝ用例说明
3.1.1 用例名称:用户查看BUG列表
用例~号:1
用例说明:用户点击"查看我的BUG"标签,查看属于自己的BUG列表.或者点?查看所有BUG"标签,查看所有BUG列表.q能Ҏ自定 义的条gqo?查看W合特定条g的BUG.
前置条g:用户已登录系l?
3.1.2 用例名称:用户查看BUG详情
用例~号:2
用例说明:在BUG列表上存在HTML链接,用户点击该链?可以看到BUG的详l情?q且用户可以修改BUG的状?修改旉.
前置条g:用户已登录系l?br>
3.1.3 用例名称:用户增加新BUG
用例~号:3
用例说明:用户点击"增加新的BUG"界面,q入增加新BUG界面.可以增加新的BUG到系l?
前置条g:用户已登录系l?br>
3.1.4 用例名称:用户理BUG列表qo?br> 用例~号:4
用例说明:用户可以增删改BUG条gqo?在BUG列表?可以通过选取qo器查看符合特定条件的BUG(请参照用?).
前置条g:用户已登录系l?
3.1.5 用例名称:用户修改个h资料
用例~号:5
用例说明:用户可以修改个h资料,例如修改EMAIL,住址{?
前置条g:用户已登录系l?
3.1.6 用例名称:用户理帐号
用例~号:6
用例说明:pȝ理员可以增删改新的用户.
前置条g:用户已登录系l?且该用户必须是系l管理员.
3.1.7 用例名称:用户理开发组
用例~号:7
用例说明:pȝ理员可以增删改开发组.在增加新BUG界面,该组名用于划分BUG的归?
前置条g:用户已登录系l?且该用户必须是系l管理员.
3.2 单的用例?br> 见图:
4 pȝ功能分解
4.1 BUG理
4.1.1 列出我的BUG
功能q?以分늚列表方式列出指派l我的bug,可以选择某条记录q行修改,可以弹出框Ş式查看bug详情.
界面控g:序号Radio(可以选择某条记录),修改按钮(对记录进行修?
界面标签(指Label):可选项,序号,概述,紧急程?状?所有h,发现旉.
HTML链接:序号
4.1.2 查看所有bug
功能q?以分늚列表方式列出所有bug,可以选择某条记录q行修改,可以弹出框Ş式查看bug详情.可以按过滤器查看W合?nbsp; qo器条件的bug.
界面控g:序号Radio(可以选择某条记录),修改按钮(对记录进行修?,qo器选择?选择某个qo?.
界面标签(指Label):可选项,序号,概述,紧急程?状?所有h,发现旉.
HTML链接:序号
4.1.3 增加新的bug
功能q?用户可以增加新的bug
界面控g:所属模块选择?讑֮bug的所属模?,发现旉日期控g(定bug的发现时?,发现者选择?定bug的发现?,?nbsp; 态选择?定bug的状?,截止期限日期控g(定bug的徏议修Ҏ?,指派l选择?选择bug的所有h),描述文本?输入 bug的描q?,附g一(文g选择?,附g?文g选择?,附g?文g选择?.提交按钮.
界面标签(指Label):Ҏ界面控g描述q行配对.如所属模块选择框的标签?所属模?.不再赘述.
4.2 个h资料
4.2.1 修改我的资料
功能q?用户可以更新个h资料
界面控g:姓名文本?输入姓名),邮箱文本?输入邮箱),密码文本?输入文本),认密码文本?输入认密码),所属组别?nbsp; 择框(输入所属组?,地址文本?输入地址),备注文本?输入备注).提交按钮.
界面标签(Label):Ҏ界面控g描述q行配对.如姓名文本框的标{是"姓名".不再赘述.
4.3 qo器配|?br> 4.3.1 列出qo?br> 功能q?列表方式列出该用h增加的过滤器,可以选择某条记录q行修改,可以弹出框Ş式查看过滤器详情,可以删除某条?nbsp; ?
界面控g:序号Radio(可以选择某条记录),修改按钮(对记录进行修?,删除按钮(Ҏ条记录进行删?
界面标签(Label):可选项,序号,qo器名U?
4.3.2 增加新过滤器
功能q?用户可以增加新的qo?每个用户只能有最?0个过滤器.
界面控g:qo器名U文本框(输入qo器名U?,状态选择?选择状?,所属模块选择?选择模块),发现者选择?选择发现?nbsp; ),指派l选择?选择bug的所有h),发现旉D|间选择?选择发现起始旉),发现旉D|间选择?选择发现l止旉 ),截止旉D|间选择?选择截止起始旉),截止旉D|间选择?选择截止l止旉).提交按钮.
界面标签(Label):Ҏ界面控g描述q行配对.如过滤器名称文本框的标签?qo器名U?.不再赘述.
4.4 pȝ理
4.4.1 用户列表
功能q?列表方式列出所有用?可以选择某条记录q行修改,可以弹出框Ş式查看某用户详情,可以删除某条记录.
界面控g:序号Radio(可以选择某条记录),修改按钮(对记录进行修?,删除按钮(Ҏ条记录进行删?
界面标签(Label):可选项,dID,Email,电话,职位
4.4.2 增加新用?br> 功能q?增加新用?br> 界面控g:dID文本?输入用户帐号),姓名文本?输入姓名),邮箱文本?输入邮箱),密码文本?输入文本),认密码文本 ?输入认密码),是否理员选择?讑֮是否理?,地址文本?输入地址),备注文本?输入备注).提交按钮.
界面标签(Label):Ҏ界面控g描述q行配对.如姓名文本框的标{是"姓名".不再赘述.
4.4.3 开发组列表
功能q?列表方式列出所有开发组,可以选择某条记录q行修改,可以弹出框Ş式查看某记录详情,可以删除某条记录.
界面控g:序号Radio(可以选择某条记录),修改按钮(对记录进行修?,删除按钮(Ҏ条记录进行删?
界面标签(Label):可选项,开发组名称,描述.
4.4.4 增加新开发组
功能q?增加新开发组.
界面控g:l名U文本框(输入开发组名称),备注文本?输入备注).提交按钮.
界面标签(Label):l名U?备注.
4.4.5 日志列表
功能q?分页列出pȝ日志.用户删除某条记录,可以弹出框Ş式查看某条记录详?
界面控g:删除按钮.
界面标签(Label):可选项,日志旉,用户ID,操作概述.
UML在国内不地方获得了应用。这应该说是个好事,然而背后我们也看到Q这U应用大多属于不够冷静的炒作和跟风,UML在很多时候已l变成了一UŞ式主义的东西。实际上QUML本n所倡导的主旨是很好的,它保证了E序员之间的交流语言QRUP之类的工具也保证了Y件开发过E的规范性,严格保证了先设计后开发,设计阶段有翔实的规范化的文档{。接下来Q我们要看看目前的UML热潮是怎么产生的?Z么会存在形式MQ以及RUP之类的工L竟存在哪些问题?/p>
W一是目前几乎所有的UML工具都非怸好用Q不观、不直观、更不方便,在项目中q行同步l护也很困难。很多项目中用UML基本上可归于形式M的范畴。事实上QUML本n是一U规范,而规范本w的目的在于更好的交沟通和更快更好的设计质量,事实上现在UML的发展已l背Mq些更基本的宗旨。我崇尚单就是美Q最传统的流E图每个人都能看懂(甚至不是E序员也可以Q,现在的UML呢?太多不够体脓和h性化的东西了Q过于抽象化和公式化。我x来会有新的更轻量U的cM的东西取代落后、冗肿和闭的UML。我个h崇尚单就是美…?/p>
W二个问题是目前E序员的普遍素质不够。UML本n基本是于面向对象的Y件设计思想的,没有_优良的OO设计能力Q很难有真正需要UMLcd设计工具去表达自p计意囄必要。这个观点不夸张,其实有的人OO理论很强Q但真正在实践中往往q度设计Q或者设计本w极度不qQ把目开发改成了U研实验和上机实验。另外更多的一些h对自q动手能力很信任,往往忽视设计环节Q基本上目的设计一直处于反复和动荡中。这些程序员不给他们一D|间学习和实践Q是很难成ؓ成熟的设计师的,在基本成熟之前,UML对他们将是一个Ş式化的东西,不会有很强的意义。Andrei曄说程序员要到35岁才会成熟,而代码员可能20多岁可以了。这句话里大概也有“设计本w是个很需要经验的工作”的意思?/p>
W三个问题是数C会层面的宣传误对{印度v归派、外企员工、IT译书作者和出版C、职业培训机构等处于各自的经验、目的和原因Q大部分人完全背ȝ实的盲目鼓吹UMLQ甚臛_乎片面的认ؓUML是软g工程。外企应用UML其实也ƈ不很成功Q不q他们有成熟的培训体p,所以一定程度的弥补了UMLq于晦ӆ的弱点,作ؓ已经掌握他们的外企员工有一些可能会比较片面的欢qUML。而印度v归派的目的就不用多说了,至于培训和译书的人很多都学者成分大于实战成分,他们需要鼓吹UMLQ不q早晚他们会发现更好的东西而放弃对UML的鼓吏V事实上Q现在已l有人开始考虑q样作了?/p>
W四个问题是数E序员非怾赖自动代码框架生成,而这其实Ҏ不是UML的关键问题。他们ؓ了用某些工L成的一点也不符合中国h阅读习惯的代码,情愿攑ּ其他的一切。对他们来说UML只是一个代码生成工兯已Q所以他们作的UML大都没有多大价|比较形式化?/p>
W五个问题是目资源的问题。国内大多数目实际可支配的资源非常有限Q如果给其他外国公司的开发h员看无论开发周期还是资金h力都基本是荒唐可W的。UML实际上应该诏I始l,而不是只在最初的设计阶段Q也应该贯穿整个目l,包括设计、管理、开发、测试所有的人都应该应用它?/p>
我想一般的公司如果没有极大的把握不用太q信UML/RUPQ其实某些基于轻量目q不需要RUP或UML。现在正打算学习UML的同行们Q也可以先放下它,来一定会有更优秀的技术取代它Q现在不如多q旉学习和实践一下OO设计{更基础的东ѝ其实仅仅熟悉一下工兯Y件和交流范式Q将来对你来说只是几天到个把月的事情Q不用那么在意。而对于那些现在已l决定了实战UML的项目,要想获得成功Q我的徏议如下:
W一Q项目周期至g镉K常计划?0%?00%。你必须跟所有h解释_只有q样才能让UML本n有意义,才能切实提高目的设计质量?/p>
W二Q在目开始集中提供一D|间的UML开发培训。诏IK目始l,都要l常q行全方位面向对象设计思想的交(当然是结合UML的)Q力N过交流提高设计质量?/p>
W三Q顶住客户和公司领导斚w的压力,坚持把尽可能多的设计问题在最初的设计阶段解决Q而不要被q匆匆完成Ş式主义的UML设计Q然后把设计丢在一边,开始编码?/p>
W四Q妥善处理部分“精英”程序员的抵触情l。能疏导q|不能疏导应考虑压服甚至他d排除在项目组外。UML量的团队开发ƈ不鼓׃雄主义,不下狠心根本没Z推进下去?/p>
W五Q对目的期望不要太高。无论是面对急于验收向上U邀功的政府客户Q还是公叔R不懂技术只懂蛮q的领导Q都要保持低调,把它当做一个ƈ不见得立竿见q实验…?/p>
好了Q就写这么多Q祝大家好运?br />