??xml version="1.0" encoding="utf-8" standalone="yes"?> 下面正式谈一下我寚w求文档的一些写作思\Q?nbsp;
首先要对用户机构机构有清晰的了解Q写出各机构所涉及的业务,d相应业务的用例图Q之后提取出相应的业务流E,d相应的流E图。通过业务程Q即可抽
象出pȝ需实现的功能。再各业务Q功能)涉及到对象(如h员,物品{)信息描述出来Q根据提取出的信息将功能以IPO表(卌入、处理、输Q的形式
q行描述Q逐项定量和定性地叙述对Y件所提出的功能要求,详细的说明输入什么量、经怎样的处理、得C么输出,q说明待开发Y件应支持的终端数和应支持?
q行操作的用h。需求文档的主要部分p样完成了?/p>
====================完全没有必要的分割线===================== 引用topic: 做可行性分析不能以偏盖全,也不可以什么鸡毛蒜皮的l节都加以权衡。可行性分析必Mؓ决策提供有h值的证据?br> l济 一、成本——收益分?br>成本——收益分析最Ҏ理解Q如果成本高于收益则表明亏损了,如果成本大大高于收益那就亏大了。商人都不喜Ƣ做吃亏的事情。有些商店成天脓着“最后一天蟩楼大拍卖”的标语,意思是Q我准备吃大亏让你占便宜Q同志,你快上钩吧?br>如果是ؓ客户做Y仉目,那么收益写在合同中。如果是做自q软g产品Q那么收益就是销售额?br>Z在预C品销售额时常常过分乐观而犯下大错。那些对你的产品说恭l话的hq不见得是要买货的人,俗话?#8220;嫌货才是买货?#8221;。当你没到一个挑刺的感觉这产品好得会让你发大胦Ӟp做好会破产的心理准备?br>如果做的是小本生意,那可得对成本q行l算。Y件的成本不是指存放Y件的那张光盘的成本,而是指开发成本。要考虑的成本有Q?br>Q?Q办公室房租?br>Q?Q办公用品,如桌、椅、书柜、照明电器、空调等?br>Q?Q计机、打印机、网l等g讑֤?br>Q?Q电话、传真等通讯讑֤以及通讯费用?br>Q?Q资料费?br>Q?Q办公消耗,如水电费、打印复印费{?br>Q?QY件开发h员与行政人员的工资?br>Q?Q购买系lY件的费用Q如买操作系l、数据库、Y件开发工L。有些老板买盗版的pȝ软gQ却按市Zh成本,可从国佬那里赚一W?br>Q?Q做市场调查、可行性分析、需求分析的交际费用?br>Q?0Q公思h员培训费用?br>Q?1Q品宣传费用。如果用Internet作宣传,则要考虑Web站点的费用?br>Q?2Q如果客h政府部门Q还要充分考虑用于吃喝玩乐、行贿的费用?br>Q?3Q如果公司的风水不好Q会有很多莫名其妙的理贏V每戳一个红艌的公章都要化一把钞?/font> 二、短期——长q利益分?br>Z喜欢吃着里的、看着锅里的,q想着别h安的。短期利益和长远利益兼得是h们梦寐以求的事。在商业上,q等好事可不会轻易降临?br>短期利益Ҏ把握Q风险较低。国内Y件公司经常出CH蜂地去做信息管理系l、多媒体光盘、系l集成项目或Internet服务。每当我们沉q于短期利益不思进取时Q应该好好回忆童q时代那些伟大的pQ给自己一些激励?br>?
q利益难以把握,风险较大。能Z长远利益不惜短期亏损的hQ要么是雄心勃勃的将帅之才,要么?#8220;U怸谈兵”?#8220;眼高手底”的那一cd人。国内目前有不少
Internet企业Q只投入不出。ؓ了成将来的怸Q甘愿现在拼财力、比耐性。最后存zM来的几个公司瓜分市场?br>那些为长q利益奋斗的ZQ你们可得把长征的\途走完啊Q千万别让事业中途夭折?/font> 技?/strong> C会环境 ?/strong>
• Z减少不确定性,必须避免模糊的、主观的术语Q例如,用户友好、容易、简单、迅速、有效、支持、许多、最新技术、优的、可接受的和健壮的。当用客?#8220;用户友好”或?#8220;?#8221;或?#8220;健壮”Ӟ你应该明它们的真正含义q且在需求中阐明用户的意图?br>•
避免使用比较性的词汇Q例如:提高、最大化、最化和最佛_。定量地说明所需要提高的E度或者说清一些参数可接受的最大值和最倹{当客户说明pȝ应该“
处理”?#8220;支持”?#8220;理”某些事情Ӟ你应该能理解客户的意图。含p的语句表达引起需求的不可验证。由于需求的~写是层ơ化的,因此Q可以把层不明
的需求向低层详细分解Q直到消除不明确性ؓ止。编写详l的需求文档,所带来的益处是如果需求得到满I那么客户的目的也pCQ但是不要让q于详细?
需求媄响了设计。如果你能用不同的方法来满需求且q种Ҏ都是可接受的Q那么需求的详细E度也就_了。然而,如果评审软g需求规D明的设计人员对客
L意图q不甚了解,那么需要增加额外的说明Q以减少׃误解而生返工的风险?br>•
~写可测试需求文?/font>?/font>需求文档的~写人员L力求L到恰如其分的需求详l?
E度。一个有益的原则是~写单个的可试需求文档。如果你惛_一些相关的试用例可以验证q个需求能够正地实现Q那么就辑ֈ了合理的详细E度。如果你
预想的测试很多ƈ且很分散Q那么可能就要将一些集合在一L需求分d。已l徏议将可测试的需求作量Y件品规模大的度QWilson
1995Q?br>•
文档的编写h员必M相同的详l程度编写每个需求文档。我曾见q在同一份Y仉求规D明中Q对需求的说明五花八门。例
如,“l合键C o n t r o l - S代表保存文g”?#8220;l合键C o n t r o l -
P代表打印文g”被当成两个独立的需求。然而,“产品必须响应以语x式输入的~辑指o”则被作ؓ一个子pȝQ而ƈ不作Z个简单的功能需求。文档的~写
人员不应该把多个需求集中在一个冗长的叙述D落中。在需求中诸如“?#8221;Q?#8220;?#8221;之类的连词就表明了该部分集中了多个需求。务必记住,不要在需求说明中使用
“??#8221;Q?#8220;{等”之类的连词。文档的~写人员在编写Y仉求规D明时不应该出现需求冗余。虽然在不同的地方出现相同的需求可能会使文档更易读Q但q?
也造成了维护上的困难。需求的多个实例都需要同时更斎ͼ以免造成需求各实例之间的不一致。在软g需求规D明中交叉引用相关的各,在进行更Ҏ有助于保持它们之间的同步。让独立性强的需求在需求管理工h数据库中只出Cơ,q样可以~和冗余问题?br>
================可有可无的分割线================
首先Q应重视需求分析的目的Q意义)Q编写目的明,写的详细Q能保文档的质量有所提高?br>下面是一D需求分析意义的范例Q希望对大家有所帮助?br>1.6q行需求分析的意义
1. 本说明书对用户生信息理的业务、对pȝ要实现的主要功能、性能{需求进行全面地阐述Q以便帮助用户判断所要开发的软g是否W合他们的要求。该说明书将在Y件开发目标和需求方面ؓ用户和开发者之间创Z个共同的基础和共识?br>2. ?
于需求说明书要有用户的审核、修改完善、认定的q程Q在q个q程中可以用户在Y件设计之前广泛地征求各业务部门的意见、提出有关系l徏讄、对自己
的需求和要求q行周密地思考,q要把这些意见和反映到用户需求说明书中。这样就能减事后重新设计、重新编码和重新试的返工行为?br>3. 用户需求的调查分析q程也是用户对自q业务和管理进行ȝ和规范的q程Q通过用户需求说明书把用h加规范的理反映C软g开发中Q从而用户的管理更加完善和规范?br>4. 需求说明书是开发者进行Y件设计的依据QY件设计要依据本说明书进行系l分析、数据库设计、模块设计、接口设计、输入输出格式设计等?br>5. 需求说明书使开发者在软gq行设计和开发之前,能够充分了解和熟悉用L要求Qƈ判断q些要求是否有不能解决的技术问题,若有应提Z个用戯可的代替解决Ҏ。以免出现设计出的一个目标不能在开发过E中实现的问?br>6. 在需求调查和分析期间可以搜集有关pȝ开发的有关原始数据和代码,以便在系l开发中建立开发环境时应用
7. 在Y件开发方面ؓ用户和开发者提供一个标准,为系l开发结束进行确认和验收提供一个双方认可的依据?br>8. 便于软g的维护和提高Qؓ软gl护和ؓ今后Ҏ开发的软gq行完善扩充提供q一步分析的基础?br>MQ用户需求说明书的编写是软g工程中的非常关键的一个环节,用户说明书也是Y件工E中的非帔R要的一个文档。一个好的用户需求说明书不但能够提高软g开发的效率、保障Y件开发的质量Q而且有利于系l的验收和以后Y件的l护及扩充?/font>
]]>
联想集团领导人柳传志曾说Q?#8220;没钱赚的事我们不qԌ有钱赚但投不起钱的事不干Q有p也投得v׃没有可靠的h选,q样的事也不qӀ?#8221;柳传志ؓ决策立了上述准则Q同时也为可以行性分析指明了重点?br>
一般地QY仉域的可行性分析主要考虑四个要素Q经、技术、社会环境和人。本节只是泛泛地解释q四个要素,旨在建立全局分析的观c?.2节将l合案例围绕上述要素q行重点分析与评注?/font>
l济可行性分析主要包括:“成本——收?#8221;分析?#8220;短期——长q利?#8221;分析?/font>
技术可行性分析至要考虑以下几方面因素:
Q?Q在l定的时间内能否实现需求说明中的功能。如果在目开发过E中遇到难以克服的技术问题,ȝ大了。轻则拖延进度,重则断送项目?br>Q?QY件的质量如何Q有些应用对实时性要求很高,如果软gq行慢如蜗牛Q即便功能具备也毫无实用价倹{有些高风险的应用对软g的正性与_性要求极高,如果软gZ差错而造成客户利益损失Q那么Y件开发方可要赔惨了?br>Q?Q?
软g的生产率如何Q如果生产率低下Q能赚到的钱少Qƈ且会逐渐丧失竞争力。在l计软gȝ开发时间时Q不能漏掉用于维护的旉。Y件维护是非常拖后腿的
事,它能把前期拿到的利润慢慢地消耗光。如果Y件的质量不好Q将会导致维护的代h很高Q企N过偷工减料而提高生产率Q是得不偿失的事?br>技术可行性分析可以简单地表述为:做得了吗Q做得好吗?做得快吗Q?/font>
C会环境的可行性至包括两U因素:市场与政{?br>市场又分为未成熟的市场、成熟的市场和将要消亡的市场?br>涉未成熟的市场要冒很大的风险,要尽可能准确C计潜在的市场有多大?自己能占多少份额Q多长时间能实现Q?br>
挤进成熟的市场,虽然风险不高Q但Ҏ也不多。如果供大于求,卌Y件开发公司多Q项目少Q那么在竞标时可能会出现恶性杀L情Ş。国内第一批卖计算机的、做pȝ集成的公司发了胦Q别人眼U了也挤q来Q这个行业的q_利润也就下降了?br>
要消亡的市场就别进M。尽很多程序员怀念DOS时代~程的那U淋漓尽_可现在没DOS应用软g了。学校教学尚可用用DOS软gQ商业Y件公司则不可再去开发DOS软g?br>政策对Y件公司的生存与发展媄响非常大。整?0q代Q中国电信的收费相当高,仅此一招就把国内互联网企业打得奄奄一息。某些Y件行业的利润很高Q但可能存在地方保护政策Q竞争不公q뀂政{不当将ȝ软g公司的健康发展,可最怕的q是政府q预企业的正当行为。例如:
现在家电行业竞争非常Ȁ烈,其中有一个著名企业的总裁十分了得Q把Ҏ打得节节败退。于是中央领gh来视察该企业ƈ作讲话:“你们的业l辉煌,得到了中央的高度重视Q?#8230;…但我们是C会M国家Q不是资本主义国Ӟ你们dl兄弟企业的同志们留口饭吃吧!”
有一ơ我拜访了北京大学一位研I经学的朋友。这个年青hQ还是个党员Q竞然这么说Q?#8220;我最q在研究国内明星企业的兴衰问题,我发C一个规律,明星企业一旦被政府领导察过Q它忘了自己是谁,׃做些走向M的蠢事?#8221;
?
实在不明白企业中Z么还要有“书记”职位。我以ؓ“书记”乃是天下W一号可W的官衔Q?#8220;书记”本是“U书”QsecretaryQ的同义词,是个可有?
无的行政人员的称|在中国竟然成了最大的官衔。每ơ看到新闻联播把国家d错叫成M记我都十分气愤:因ؓM记的U喟只对几千万的党员适用Q国家的?
L构难道不面向十多亿普通老百姓?如果我将来的工作单位q靠“书记”来管事,我每天准忙着生气Q那里还有精力去~程?/font>
有句名言Q?#8220;人分四类——h物,人才Qh手,人渣?#8221;
如果一个Y件公叔R上述四类人齐全了Q那么最好的分工是让“人物”当领|“人才”做第一U的开发h员,“人手”做行政h员,“人渣”负责行較?br>
q里只谈公司的领g开发h?#8220;行还是不?#8221;?#8220;人物”毕竟是少敎ͼ“人才”可是济的。D重若ȝ那类“人才”可以做领|举轻若重的那cMh才适合做Y件开发h员。假如一持有学士、硕士和博士文凭的毕业生到Y件公司应聘,该如何录用呢Q我的徏议如下:
先选择本科毕业生,因ؓ他们正当青春、干劲十뀁不摆架子、不M问、要求不高、奉献甚多?br>其次选择士毕业生,如果该生没象范进中D旉么老,q且在读士时没有天天去造文章而丢弃了~程工作Q那么让有经验的学士E序员带他们煅练几个月就可以用了?br>
?
果学士、硕士被其它公司取光了,那只好捡几个博士充数。博士到了Y件公司有什么用呢?我想不出有什么用Q只知道他们挺值得可怜的Q从士d博士出头Q这
六七q时_真本事没学多,倒学?#8220;眼高手低”甚至“弄虚作假”Q毕业时蓦然回首Q发觉青春已被虚度,心灵已呈老态,唯有长叹短嘘Q强把自负作自信。我
也将博士毕业Q就要论Z手贷贱卖了。真慕那些比我q轻的学士、硕士们Q他们可以远走高飞,唉!
]]>
1 客户说不清楚需?/strong>
有些客户寚w求只有朦胧的感觉Q当然说不清楚具体的需求。例如全国各地的很多政府机构在搞|络Q这些单位的领导和办公h员大多不清楚计算机网l有什么用Q反而要软gpȝ分析人员替他们设想需求。这cdE的需求是如此的主观,以致产生很多贪污腐|现象?br>
?
些客户心里非常清楚想要什么,但却说不明白。读者可能很不以为然。就举日常生zȝ事例吧,比如说买鞋子。我们非怺解自已的脚,但没法说清楚脚的大小和Ş
状。只能拿鞋子去试Q试I时感觉到舒服才会买鞋(居然也有通广大的售货员,看一眼客L手,q道应该穿什么样的鞋Q?br>
如果客户本n?
懂Y件开发,能把需求说得清清楚楚,q样的需求分析将会非常轻松、愉快。如果客户全不懂软gQ但信Q软g开发方Q这事也好办。分析h员可以引导客P先阐
q常规的需求,再由客户否定不需要的Q最l确定客L正的需求。最怕的是“不懂装懂”或?#8220;半懂充内?#8221;的客P他们会提Z切实际的需求。如果这些客
L臌得自己是上帝的爸爸,那么沟通和协商都会很困难?/font>
2 需求自w经常变?/strong>
唐僧曾说Q?#8220;妖要是有了仁慈之心,׃再是妖,是h妖?#8221;Q《大话西怹大圣娶亲》)
q妖都会变心Q别说h了。所以喜新厌旧乃Z常情Q世界也因此变得多姿多彩?br>软g的需求会变化吗?
{:据历史记载,没有一个Y件的需求改动少于三ơ。唯一只改动需求两ơ的客户是个Mh。这个可怜的家伙q是在运送第三次需求的路上被R子撞ȝ。[Cline 1995]
让我们先接受“需求会变动”q个事实吧,免得在需求变动时惊慌失措。明?#8220;需求会变动”q个道理后,在进行需求分析时p留点:
Q?Q尽可能地分析清楚哪些是E_的需求,哪些是易变的需求。以便在q行pȝ设计ӞY件的核心建筑在稳定的需求上Q否则将会吃苦头?br>Q?Q在合同中一定要说清?#8220;做什?#8221;?#8220;不做什?#8221;。如果合同含含糊p,日后扯皮的事情就多。要防止象韩复渠那样Q在别h请他喝酒吃饭时他什么都点头Qh家就更加献殷勤)Q吃完了他就宣布刚才{应的事都不数Q便扬长而去?/font>
3 分析人员或客L解有?/strong>
有个外星人间谍潜伏到地球刺探情报Q它l上司写了一份报告:“d地球的是车。它们喝汽aQ靠四个轮子滚动前进。嗓门极大,在夜里双D出强光?#8230;…有趣的是QR里住着一U叫?#8216;?#8217;的寄生虫Q这些寄生虫完全控制了R?#8221;
?
件系l分析h员不可能都是全才。客戯辄需求,不同的分析h员可能有不同的理解。如果分析h员理解错了,可能会导致开发h员白q活Q吃力不讨好。我M
学时候最怕写作文逃题Q如果逃题了,不管作文写得多长QL零分。所以分析h员写好需求说明书后,要请客户方的各个代表验证。如果问题很复杂Q双斚w不太
明白Q就有必要请开发h员快速构造Y件的原型Q双方再ơ论证需求说明书是否正确?br>
׃客户大多不懂软gQ他们可能觉得Y件是万能的,会提Z些无法实现的需求。有时客戯会把软gpȝ分析人员的徏议或{复l想歪了?br>
有一个Y件h员滔滔不l地向客戯解在“信息高速公路上做广?#8221;的种U好处,客户听得z|有味。最后,心动的客户对软g人员_“好得很,p我们马上行动h吧。请您决定广告牌的尺寸和攑֜哪条高速公路上Q我立即zhd?#8221;
Z么Y件系l分析员的工资要比普通程序员高?是因ؓ需求分析困隑֘?/font>
1 正确性与_?/strong>
正确性与_性之所以排在质量因素的W一位,是因为如果Y件运行不正确或者不_Q就会给用户造成不便
甚至造成损失。机器不会主动欺骗hQY件运行不正确或者不_一般都是h造成的。即使一个Y件能100%
地按需求规格执行,但是如果需求分析错了,那么对客戯言q个软g也存在错误。即佉K求分析完全符合客L要求Q但是如果Y件没?00%
地按需求规格执行,那么q个软g也存在错误。开发一个大的Y仉目,E序员要?#8220;正确”?#8220;_”四个字竭精力?br>与正性、精性相关的质量因素是容错性和可靠性?br>
定w性首先承认Y件系l存在不正确与不_的因素,Z防止潜在的不正确与不_因素引发NQ系lؓ此设计了安全措施。在一些高风险的Y件系l,如航I天、武器、金融等pȝ中,定w性设计非帔R要?br>
?
靠性是指在一定的环境下,在给定的旉内,pȝ不发生故障的概率。可靠性本来是g领域的术语。比如某个电子设备,一开始工作很正常Q但׃工作中器件的
物理性质会发生变化(如发热)Q慢慢地pȝ׃失常。所以一个设计完全正的gpȝQ在工作中未必就是可靠的。Y件在q行时不会发生物理性质的变化,?
们常以ؓ如果软g的某个功能是正确的,那么它一辈子都是正确的。可是我们无法对软gq行d地测试,无法栚w软g中潜在的错误。^时Y件运行得好好的,?
不准哪一天就不正怺Q如“2000q?#8221;问题。因此把可靠性引入Y仉域是有意义的。我曾买了一本关于Y件可靠性的著作Q此书充满了数学公式。我发现以我
目前的学历实在难以看懂书上讲了些什么。请宽恕我的愚昧Q我把此书给“?#8221;hQ没敢用W画一处记受?/font>
2 性能与效?/strong>
用户都希望Y件的q行速度高些Q高性能Q,q且占用资源些Q高效率Q。旧C会C是q么对待长工 的:q活要快点,吃得要少炏V程序员可以通过优化法、数据结构和代码l织来提高Y件系l的性能与效率。优化的关键工作是找出限制性能与效率的“瓉”Q? 不要在无关痛痒的地方瞎忙乎。如果你惌U升得快Q光靠增加课时能屁用;你就该一q写它几十篇文章Q争取破格升教授?/font>
3 易用?/strong>
易用性是指用h觉用Y件的难易E度。用户可能是操作软g的最l用P也可能是那些要用源代码的程序员。现代h的生z节奏快Q干啥事都想图个方便。所以把易用性作为重要的质量因素无可非议?br>
?
致Y件易用性差的根本原因是开发h员犯?#8220;错位”的毛病:他以为只要自qh方便Q用户也一定会满意。俗话说“王婆卖瓜Q自卖自?#8221;。当E序员向用户?
CY件时Q常会得意地Ԍ“q个软g非常好用Q我操作l你看,……是很好用吧!”软g的易用性要让用h评h。当用户真的感到软g很好用时Q一股温暖的?
觉a然而生Q于是就?#8220;友好”来评h用性?/font>
4 可理解性与z?/strong>
可理解性表达了Z一U质朴的愿望Q我化钱C它,d让我明白它是什么东ѝ我时候的一个伙伴在M学时Q就因无法理解电荷之分正负,觉得很烦|便早早地~学当工h?br>? 理解性也是对用户而言的。开发h员只有在自己思\清晰时才可能写出让别理解的程序。编E时q要注意不可滥用技巧,应该用自然的方式~程。我们的不? 道自q得意之DI竟是锦上添花,q是画蛇添。就象蒸ZW馒_在上面插一朵鲜花,本想弄点诗情LQ却让h误以为那是一堆热气腾腄牛粪?/font>
z是一U美Q不是自己q是用户都会有同感。在生活中,与简z对立的?#8220;|里|嗦”。中国小说中最“ 婆婆妈妈”的男人是唐僧。有一Ҏ意调查:如果世上只有唐僧、孙悟空、猪八戒和沙僧这四类男hQ你要嫁l哪一c?请列Z先。调查结果表明,Cx毫 不例外地把唐僧摆在老末。一个原始的应用问题可能很复杂,但高水^的hp够把软gpȝ设计得很z。如果Y件系l臃肿不堪,它迟早会出问题。简z是Z 对工?#8220;_求精”的结果?/font>
废话大师有句名言Q?#8220;如果我o你过于轻村֜明白了,那你一定是误解了我说的话?#8221;我最q有一U奇怪的? 会:如果把学术文章写得很z,让h很容易理解,它往往中不了;只有加上一些玄乎的东西Q把本来单的弄成复杂的,才会增加投稿的命中率。事实上Q我可以 ?分钟之内说清楚三q来d所做的工作Q根本用不着?00多页的博士论文。我是在临近毕业Ӟ才发觉自己完全不适合d士学位。将来工作后Q我一定要 好好~程Q重新做人?/font>
5 可复用性与可扩充?/strong>
复用的一U方式是原封不动C用现成的软构Ӟ另一U方式是对现成的软构件进行必要的扩充后再使用。可复用性好的程序一般也h良好的可扩充性?/font>