??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲AV无码专区亚洲AV桃,中文字幕亚洲一区,亚洲精品亚洲人成人网http://m.tkk7.com/alex/archive/2007/08/19/137930.htmlAlexAlexSun, 19 Aug 2007 05:15:00 GMThttp://m.tkk7.com/alex/archive/2007/08/19/137930.htmlhttp://m.tkk7.com/alex/comments/137930.htmlhttp://m.tkk7.com/alex/archive/2007/08/19/137930.html#Feedback0http://m.tkk7.com/alex/comments/commentRss/137930.htmlhttp://m.tkk7.com/alex/services/trackbacks/137930.html
  阅读全文

Alex 2007-08-19 13:15 发表评论
]]>
遇到手的问题怎么?http://m.tkk7.com/alex/archive/2007/08/18/137789.htmlAlexAlexSat, 18 Aug 2007 04:17:00 GMThttp://m.tkk7.com/alex/archive/2007/08/18/137789.htmlhttp://m.tkk7.com/alex/comments/137789.htmlhttp://m.tkk7.com/alex/archive/2007/08/18/137789.html#Feedback0http://m.tkk7.com/alex/comments/commentRss/137789.htmlhttp://m.tkk7.com/alex/services/trackbacks/137789.html
  阅读全文

Alex 2007-08-18 12:17 发表评论
]]>
WEB开发流E?步骤)http://m.tkk7.com/alex/archive/2007/06/13/123899.htmlAlexAlexWed, 13 Jun 2007 08:43:00 GMThttp://m.tkk7.com/alex/archive/2007/06/13/123899.htmlhttp://m.tkk7.com/alex/comments/123899.htmlhttp://m.tkk7.com/alex/archive/2007/06/13/123899.html#Feedback4http://m.tkk7.com/alex/comments/commentRss/123899.htmlhttp://m.tkk7.com/alex/services/trackbacks/123899.html阅读全文

Alex 2007-06-13 16:43 发表评论
]]>
[zt]如何做需求分?/title><link>http://m.tkk7.com/alex/archive/2007/06/12/123676.html</link><dc:creator>Alex</dc:creator><author>Alex</author><pubDate>Tue, 12 Jun 2007 09:47:00 GMT</pubDate><guid>http://m.tkk7.com/alex/archive/2007/06/12/123676.html</guid><wfw:comment>http://m.tkk7.com/alex/comments/123676.html</wfw:comment><comments>http://m.tkk7.com/alex/archive/2007/06/12/123676.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/alex/comments/commentRss/123676.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/alex/services/trackbacks/123676.html</trackback:ping><description><![CDATA[<br>come from <a target=_blank>here</a><br><br><font size=2>如果需求分析阶D늚工作归结为编写需求规D明书Q这U简化的做法往往是导致项目后期层ZI问题的|魁R。徏议采用以下步骤Ş成Y仉求:获取用户需?#8594;分析用户需?#8594;~写需求文?#8594;评审需求文?#8594;理需求。下面我们先来讨论前两个步骤Q获取用户需求、分析用户需求)的做法?/font> <p><strong><font size=2>获取用户需?/font></strong></p> <p><font size=2>  q是该阶D늚一个最重要的Q务。以下ؓ获取用户需求需要执行的zdQ如?所C)?/font></p> <p><font size=2>  ?了解客户方的所有用L型以及潜在的cd。然后,Ҏ他们的要求来定pȝ的整体目标和pȝ的工作范围?/font></p> <p><font size=2>  ?对用戯行访谈和调研。交的方式可以是会议、电话、电子邮件、小l讨论、模拟演C等不同形式。需要注意的是,每一ơ交一定要有记录,对于交流的结果还可以q行分类Q便于后l的分析zd。例如,可以需求细分ؓ功能需求、非功能需求(如响应时间、^均无故障工作旉、自动恢复时间等Q、环境限制、设计约束等cd?/font></p> <p><font size=2>  ?需求分析h员对攉到的用户需求做q一步的分析和整理。下面是几条常见的准则:</font></p> <p><font size=2>  ⑴对于用h出的每个需求都要知?#8220;Z?#8221;Qƈ判断用户提出的需求是否有充的理由;</font></p> <p><font size=2><img height=249 alt="" src="http://www.sawin.cn/doc/SA/REQ/howtoreq2-1.jpg" width=150>  </font></p> <p><font size=2>  ? 获取用户需求的zd</font></p> <p><font size=2>  ⑵将那种?#8220;如何实现”的表q方式{换ؓ“实现什?#8221;的方式,因ؓ需求分析阶D关注的目标?#8220;做什?#8221;Q而不?#8220;怎么?#8221;Q?/font></p> <p><font size=2>  ⑶分析由用户需求衍生出的隐含需求,q识别用h有明提出来的隐含需求(有可能是实现用户需求的前提条gQ,q一点往往Ҏ忽略掉,l常因ؓ寚w含需求考虑得不够充分而引起需求变更?/font></p> <p><font size=2>  ?需求分析h员将调研的用户需求以适当的方式呈交给用户方和开发方的相关h员。大家共同确认需求分析h员所提交的结果是否真实地反映了用L意图。需求分析h员在q个d中需要执行下q活动:</font></p> <p><font size=2>  ⑴明标识出那些未确定的需求项Q在需求分析初期往往有很多这L待定)Q?/font></p> <p><font size=2>  ⑵需求符合系l的整体目标Q?/font></p> <p><font size=2>  ⑶保证需求项之间的一致性,解决需求项之间可能存在的冲H?/font></p> <p><font size=2><strong>分析用户需?/strong></font></p> <p><font size=2>  在很多情形下Q分析用户需求是与获取用户需求ƈ行的Q主要通过建立模型的方式来描述用户的需求,为客戗用戗开发方{不同参与方提供一个交的渠道。这些模型是寚w求的抽象Q以可视化的方式提供一个易于沟通的桥梁。用户需求的分析与获取用户需求有着怼的步骤,区别在于分析用户需求时使用模型来描qͼ以获取用h明确的需求。分析用户需求需要执行下列活动:</font></p> <p><font size=2>  ?以图形表C的方式描述pȝ的整体结构,包括pȝ的边界与接口Q?/font></p> <p><font size=2>  ?通过原型、页面流或其它方式向用户提供可视化的界面Q用户可以对需求做q评hQ?/font></p> <p><font size=2>  ?pȝ可行性分析,需求实现的技术可行性、环境分析、费用分析、时间分析等Q?/font></p> <p><font size=2>  ?以模型描q系l的功能V数据实体、外部实体、实体之间的关系、实体之间的状态{换等斚w的内宏V?/font></p> <p><font size=2><img height=252 alt="" src="http://www.sawin.cn/doc/SA/REQ/howtoreq2-2.jpg" width=351>  </font></p> <p><font size=2>  ? DFDC意?/font></p> <p><font size=2>  用于需求徏模的Ҏ有很多种Q最常用的包括数据流图(DFDQ、实体关pdQERDQ和用例图(Use CaseQ三U方式。DFD作ؓl构化系l分析与设计的主要方法,已经得到了广泛的应用QDFD其适用于MISpȝ的表q。DFD使用四种基本元素来描q系l的行ؓQ过E、实体、数据流和数据存储。DFDҎ直观易懂Q用者可以方便地得到pȝ的逻辑模型和物理模型,但是从DFD图中无法判断zd的时序关pR图2描述的是某个目的DFDC意图?/font></p> <p><font size=2>  ERDҎ用于描述pȝ实体间的对应关系Q需求分析阶D用ERD描述pȝ中实体的逻辑关系Q在设计阶段则用ERD描述物理表之间的关系。需求分析阶D用ERD来描q现实世界中的对象。ERD只关注系l中数据间的关系Q而缺乏对pȝ功能的描q。如果将ERD与DFD两种Ҏ相结合,则可以更准确地描q系l的需求?/font></p> <p><font size=2>  在面向对象分析的Ҏ中通常使用Use Case来获取Y件的需求。Use Case通过描述“pȝ”?#8220;zd?#8221;之间的交互来描述pȝ的行为。通过分解pȝ目标QUse Case描述zd者ؓ了实现这些目标而执行的所有步骤。Use CaseҎ最主要的优点,在于它是用户导向的,用户可以Ҏ自己所对应的Use Case来不断细化自q需求。此外,使用Use Caseq可以方便地得到pȝ功能的测试用例?/font></p> <p><font size=2><strong>~写需求文?/strong></font></p> <p><font size=2>  需求文档可以用自然语a或Ş式化语言来描qͼq可以添加图形的表述方式和模型表征的方式。需求文档应该包括用L所有需求(功能性需求和非功能性需求)?/font></p> <p><font size=2><strong>评审需求文?/strong></font></p> <p><font size=2>  需求文档完成后Q需要经q正式评审,以便作ؓ下一阶段工作的基。一般的评审分ؓ用户评审和同行评审两cR用户和开发方对于软g目内容的描qͼ是以需求规D明书作ؓ基础的;用户验收的标准则是依据需求规D明书中的内容来制订,所以评审需求文档时用户的意见是W一位的。而同行评审的目的Q是在Y仉目初期发现那些潜在的~陷或错误,避免q些错误和缺陷遗漏到目的后l阶Dc?/font></p> <p><font size=2><strong>理需?/strong></font></p> <p><font size=2><img height=403 alt="" src="http://www.sawin.cn/doc/SA/REQ/howtoreq2-3.jpg" width=294>  </font></p> <p><font size=2>  ? 需求变更流E?/font></p> <p><font size=2>  需求的变更是不可避免的Q如何以可控的方式管理Y件的需求,对于目的顺利进行有着重要的意义。如果匆匆忙忙地完成用户调研与分析,则往往意味着不稳定的需求。所以需求管理要保证需求分析各个活动都得到了充分的执行。对于需求变更的理Q则主要使用需求变更流E和需求跟t矩늚理方式。需求变更流E和需求跟t矩阵分别如?和图2所C?/font></p> <p><font size=2><img height=152 alt="" src="http://www.sawin.cn/doc/SA/REQ/howtoreq2-4.jpg" width=374>  </font></p> <p><font size=2>  ? 需求跟t矩?/font></p> <p><font size=2>  常见问题及徏?/font></p> <p><font size=2>  Q、客户与最l用L区别是什么?</font></p> <p><font size=2>  A、可以借助?来说明它们之间的区别?/font></p> <p><font size=2><img height=195 alt="" src="http://www.sawin.cn/doc/SA/REQ/howtoreq2-5.jpg" width=300>  </font></p> <p><font size=2>  ? 需求获取渠道示意图</font></p> <p><font size=2>  软g需求来自系l工E与客户两个斚wQ其中客h主要的需求提供者(pȝ工程需求也来自于客P。客户需要搜集其最l用L需求ƈ考虑自n的需求,然后再提供给开发方。假如客户ƈ未去认真搜集最l用L需求,开发方侉K要做到这一点,因ؓpȝ最l要满最l用L需求?/font></p> <p><font size=2>  Q、如何进行用戯谈?</font></p> <p><font size=2>  A、首先,一定要事先定访谈的目的和提纲。其ơ,因ؓ用户往往q不知道应该提供哪些斚w的需求,所以需要开发h员引对{?/font></p> <p><font size=2>  Q、用戯谈内Ҏ什么?</font></p> <p><font size=2>  A、首先,LhqC们如何完成自己当前的工作Qƈ与用户一h象出一个工作流E或工作模型。然后,在得到用L认可后,向用戯释自己是怎样来实现这些功能的Qƈ说明哪些环节可以用自动化方式实现{?/font></p> <p><font size=2>  Q、采用哪一U方式做需求分析最好?</font></p> <p><font size=2>  A、不同的需求分析有不同的特炏V还没有哪一U方法可以完全替代别的方法,否则Q现在就不会存在不同的需求徏模方式了。一般来_可以使用DFDQERD来描q那些功能层ơ比较清晰的需求;而USE CASE则适于描述功能l构复杂的需求。做需求分析的目的是ؓ了徏立需求的模型Q不同的子系l有可能使用不同的徏模方法?/font></p> <p><font size=2>  Q、怎样做原型,原型的目的是什么?</font></p> <p><font size=2>  A、通常使用原型分析Ҏ来帮助开发方q一步获取用户需求或让用L认需求。开发方往往先向用户提供一个可视界面作为原型,q在界面上布|必要的元素以演C用h需要的功能。可以用第四代语言Q例如Visual Basic、Delphi{)来快速生成用L面,也可以用FrontPage{网制作工h生成用户可视的页面流?/font></p> <p><font size=2>  原型的目的往往是获取需求。但有时也用原型的方式来验证关键技术或技术难炏V对于技术原型,界面则往往被忽略掉?/font></p> <img src ="http://m.tkk7.com/alex/aggbug/123676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/alex/" target="_blank">Alex</a> 2007-06-12 17:47 <a href="http://m.tkk7.com/alex/archive/2007/06/12/123676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[zt]成ؓ软g架构?/title><link>http://m.tkk7.com/alex/archive/2006/09/22/71296.html</link><dc:creator>Alex</dc:creator><author>Alex</author><pubDate>Fri, 22 Sep 2006 05:14:00 GMT</pubDate><guid>http://m.tkk7.com/alex/archive/2006/09/22/71296.html</guid><wfw:comment>http://m.tkk7.com/alex/comments/71296.html</wfw:comment><comments>http://m.tkk7.com/alex/archive/2006/09/22/71296.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/alex/comments/commentRss/71296.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/alex/services/trackbacks/71296.html</trackback:ping><description><![CDATA[key words:软g架构?br />转自<a href="/chengang/archive/2006/09/16/70067.html">here</a><br /><br />现在软g架构师满天飞Q是个写代码的都U自׃ؓ软g架构师,p开个公司管上四五号人就l自己按个CEO头衔一P着实让人好W。于是到|上GOOGLE了一下看看Y件构架师具体是个啥东东,有想做货真h实的构架师,朝着那方向努力吧。网摘如下:<br /><br /><span style="color: rgb(0, 0, 0);">软g架构师的职责Q将客户的需求{换ؓ规范的开发计划及文本Qƈ制定q个目的M架构Q指导整个开发团队完成这个计划?br /><br /><strong>软g架构师的具体工作Q?br /></strong>    (</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">)在需求阶D,软g架构师主要负责理解和理非功能性系l需求,比如软g的可l护性、性能、复用性、可靠性、有效性和可测试性等{,此外Q架构师q要l常审查和客户及市场人员所提出的需求,认开发团队所提出的设计;<br />    (</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">)在需求越来越明确后,架构师的x点开始{Udl织开发团队成员和开发过E定义上Q?br />    (</span><span style="color: rgb(0, 0, 0);">3</span><span style="color: rgb(0, 0, 0);">)在Y件设计阶D,架构师负责对整个软g体系l构、关键构件、接口和开发政{的设计Q?br />    (</span><span style="color: rgb(0, 0, 0);">4</span><span style="color: rgb(0, 0, 0);">)在编码阶D,架构师则成ؓ详细设计者和代码~写者的NQƈ且经常性地要D行一些技术研讨会、技术培训班{;<br />    (</span><span style="color: rgb(0, 0, 0);">5</span><span style="color: rgb(0, 0, 0);">)随着软g开始测试、集成和交付Q集成和试支持成Y件架构师的工作重点;<br />    (</span><span style="color: rgb(0, 0, 0);">6</span><span style="color: rgb(0, 0, 0);">)在Y件维护开始时QY件架构师开始ؓ下一版本的品是否应该增加新的功能模块进行决{?br /> <br /><strong>软g架构师的要求</strong><br />      (</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">)必须对开发技术非怺解,h丰富的Y件设计与开发经验,关键时候能Ҏ术的选择作出及时、有效的军_?br />      (</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">)有良好的l织理能力Q沟通、领对{团队协?br />      (</span><span style="color: rgb(0, 0, 0);">3</span><span style="color: rgb(0, 0, 0);">)构g通信机制斚w的知?q程调用、JAVARMI、CORBA、COM</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">DCOM、各U标准的通信协议、网l服务、面对对象数据库、关pL据库{等<br /><br /><strong>成长Y件架构师的几个阶D:<br /></strong>     <font color="#ff0000"> </font><font color="#0000ff">(</font></span><font color="#0000ff"><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">)构架师胚胎(E序员)Q语a基础、设计基、通信基础{,内容包括java、c、c</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">、uml、RUP、XML、socket通信Q通信协议Q?br />      (</span><span style="color: rgb(0, 0, 0);">2</span><span style="color: rgb(0, 0, 0);">)构架师萌芽(高E序员)Q分布式pȝl徏{内容,包括分布式系l原理、ejb、corba、com</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">com</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">、webservice、网l计机、高性能q发处理{?br />      (</span><span style="color: rgb(0, 0, 0);">3</span><span style="color: rgb(0, 0, 0);">)构架师幼苗(设计师)Q透彻掌握设计模式Q包括设计模式(c</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">版本、java版本Q、ejb设计模式、J2EE构架、UDDI、Y件设计模式等。此期间Q最好能够了解Y件工E在实际目中的应用以及组开发、团队管?/span></font><img src ="http://m.tkk7.com/alex/aggbug/71296.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/alex/" target="_blank">Alex</a> 2006-09-22 13:14 <a href="http://m.tkk7.com/alex/archive/2006/09/22/71296.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]开发h员间的效率差在哪里?http://m.tkk7.com/alex/archive/2006/07/31/60975.htmlAlexAlexMon, 31 Jul 2006 03:21:00 GMThttp://m.tkk7.com/alex/archive/2006/07/31/60975.htmlhttp://m.tkk7.com/alex/comments/60975.htmlhttp://m.tkk7.com/alex/archive/2006/07/31/60975.html#Feedback0http://m.tkk7.com/alex/comments/commentRss/60975.htmlhttp://m.tkk7.com/alex/services/trackbacks/60975.html熟练人员l过多年的积累加上自qCodeSnip的ȝQ基本不用额外再查找资料。而一般的开发h员在开发过E中会花?0-20%旉L找资料?/div>

熟练人员注意代码复用Qƈ且时L?b>重构和抽取公用代?/b>。一般开发h员是代码h拷去完成功能?/div>

熟练人员非常注意查找Q定位,标签{各U快捷键的用,定位查找方便快捷Q?b>IDE环境也根据习惯定?/b>到最方便状态?/div>

熟练人员~码前先?b>考清楚整个流E?/b>Q在头脑或纸张上规划好整个实现方式和Ҏ函数的划分。一般h员想到哪里写到哪里?/div>

熟练人员写了50行以上或更多代码才Debug一两次Q一般h员写了几行代码就要Debug多次Q完全通过Debug来验证代码正性?/div>

熟练人员注重代码的质量,单元试和可l护?/b>Q注重各U业务逻辑的验证和边界条g的校验。一般h员只注重单功能的单完成?/div>

熟练人员提交试的代码BUG很少Q返工工作量很小。一般开发h员由于自不完善BUG较多Q造成大量的返工工作量?/div>

熟练人员合理分配自己的时_规划好每天工作Q?/b>Q开发过E各位专注。一般开发h员一心多用,边开发边聊Q?/div>

熟练人员善于知识的ȝ和积累,形成自我的知识库和经验库?/div>

熟练人员善于发现问题Q分析不自?b>持箋改进。一般h员在外力q预侠被动改q?/div>

熟练开发h员开发重点已l专业到对业务的深刻理解Q一般开发h员考虑的是开发上~程的语a和工兗?/div>

熟练人员善于从各U媄响自己开发效率的因素中挤旉Q?b>善于使用各种辅助开发工?/b>。而一般h员则不善于这Uȝ?/div>

Alex 2006-07-31 11:21 发表评论
]]>[转]怎样成ؓ优秀的Y件模型设计者?http://m.tkk7.com/alex/archive/2006/06/20/53981.htmlAlexAlexTue, 20 Jun 2006 06:28:00 GMThttp://m.tkk7.com/alex/archive/2006/06/20/53981.htmlhttp://m.tkk7.com/alex/comments/53981.htmlhttp://m.tkk7.com/alex/archive/2006/06/20/53981.html#Feedback0http://m.tkk7.com/alex/comments/commentRss/53981.htmlhttp://m.tkk7.com/alex/services/trackbacks/53981.htmlq里

 怎样成ؓ优秀的Y件模型设计者?

                    来自Qblog   雪茶技?/font>

我们期待自己成ؓ一个优U的Y件模型设计者,但是Q要怎样做,又从哪里开始呢Q?

下列原则应用到你的软g工程中,你会获得立杆见媄的成果?

1. 比技术重?

你开发Y件是Z供别Z用,没有Z用的软g只是没有意义的数据的集合而已。许多在软g斚w很有成就的行家在他们事业的初期却表现q_^Q因Z? 那时侯将主要_֊都集中在技术上。显Ӟ构gQcomponentsQ,EJBQEnterprise Java BeansQ和代理QagentQ是很有的东西。但是对于用h_如果你设计的软g很难使用或者不能满他们的需求,后台用再好的技术也于事无补。多 q旉到Y仉求和设计一个用户能很Ҏ理解的界面上?

2. 理解你要实现的东?

好的软g设计人员把大多数旉p在徏立系l模型上Q偶写一些源代码Q但那只不过是ؓ了验证设计过E中所遇到的问题。这他们的设计方案更加可行?

3. 谦虚是必ȝ品格

你不可能知道一切,你甚臌很努力才能获得够用的知识。Y件开发是一复杂而艰巨的工作Q因Y件开发所用到的工具和技术是在不断更新的。而且Q? 一个h也不可能了解软g开发的所有过E。在日常生活中你每天接触到的新鲜事物可能不会太多。但是对于从事Y件开发的人来_每天可以学习很多C西(如果 愿意的话Q?

4. 需求就是需?

如果你没有Q何需求,你就不要动手开发Q何Y件?u>成功的Y件取决于旉Q在用户要求的时间内完成Q、预和是否满用户的需?/u>。如果你不能切知道用户需要的是什么,或者Y件的需求定义,那么你的工程注定会失败?

5. 需求其实很改变,改变的是你对需求的理解

Object ToolSmiths公司Q?a >www.objecttoolsmiths.comQ? 的Doug Smith常喜Ƣ说Q“分析是一门科学,设计是一门艺术”。他的意思是说在众多的“正”分析模型中只存在一个最“正”分析模型可以完全满x个具 体问题的需要(我理解的意思是需求分析需要一丝不苟、精的完成,而设计的时候反而可以发挥创造力和想象力 - 译者注Q?

如果需求经常改动,很可能是你没有作好需求分析,q不是需求真的改变了?/u>

你可以抱怨用户不能告诉你他们惛_C么,但是不要忘记Q收集需求信息是你工作?/u>

你可以说是新来的开发h员把事情搞得一团糟Q但是,你应该确定在工程的第一天就告诉他们应该做什么和怎样d?

如果你觉得公怸让你与用户充分接触,那只能说明公司的理层ƈ不是真正支持你的目?

你可以抱怨公司有兌Y件工E的理制度不合理,但你必须了解大多同行公司是怎么做的?

你可以借口说你们的竞争Ҏ的成功是因ؓ他们有了一个新的理念,但是Z么你没先惛_呢?

需求真正改变的情况很少Q但是没有做好需求分析工作的理由却很多?

6. l常阅读

在这个每日都在发生变化的产业中,你不可能在已取得的成׃陉太久?

每个月至读2?本专业杂志或?本专业书c?/u>。保持不落伍需要付出很多的旉和金钱,但会使你成ؓ一个很有实力的竞争者?

7. 降低软g模块间的耦合?

高耦合度的pȝ是很隄护的。一处的修改引v另一处甚x多处的变动?

你可以通过以下Ҏ降低E序的耦合度:隐藏实现l节Q强制构件接口定义,不用公用数据结构,不让应用E序直接操作数据库(我的l验法则是:当应用程序员在写SQL代码的时候,你的E序的耦合度就已经很高了)?/u>

耦合度低的Y件可以很Ҏ被重用、维护和扩充?

8. 提高软g的内聚?

如果一个Y件的模块只实C个功能,那么该模块具有高内聚性。高内聚性的软g更容易维护和改进?

判断一个模块是否有高的内聚性,看一看你是否能够用一个简单的句子描述它的功能p了。如果你用了一D话或者你需要用类似“和”、“或”等q词Q则说明你需要将该模块细化?i>[注:only one]

只有高内聚性的模块才可能被重用?

9. 考虑软g的移植?

UL是Y件开发中一具体而又实际的工作,不要怿某些软g工具的广告宣传(比如java 的宣传口号write once run many ? 译者注Q?

即仅仅对Y件进行常规升U,也要把这看得和向另一个操作系l或数据库移植一样重要?

记得?6位WindowsUL?2位windows的“乐”吗 Q当你用了某个操作pȝ的特性,如它的进E间通信(IPC){略Q或用某数据库专有语a写了存储q程。你的Y件和那个特定的品结合度已l很高了?

好的软g设计者把那些Ҏ的实现细节打包隐藏v来,所以,当那些特性该变的时候,你的仅仅需要更新那个包可以了?

10. 接受变化

q是一句老话了:唯一不变的只有变化?

你应该将所有系l将可能发生的变化以及潜在需求记录下?以便来能够实现Q参见“Architecting for Change”,Thinking Objectively, May 1999Q?

通过在徏模期间考虑q些假设的情况,你就有可能开发出_强壮且容易维护的软g。设计强壮的软g是你最基本的目标?

11. 不要低估对Y件规模的需?

Internet 带给我们的最大的教训是你必须在Y件开发的最初阶D就考虑软g规模的可扩充性?

今天只有100人的部门使用的应用程序,明天可能会被有好几万人的l织使用Q下月,通过因特|可能会有几百万Z用它?

在Y件设计的初期Q根据在用例模型中定义的必须支持的基本事务处理,定软g的基本功能。然后,在徏造系l的时候再逐步加入比较常用的功能?

在设计的开始考虑软g的规模需求,避免在用LH然增大的情况下Q重写Y件?

12. 性能仅仅是很多设计因素之一

x软g设计中的一个重要因?-性能Q这好象也是用户最兛_的事情。一个性能不佳的Y件将不可避免被重写?

但是你的设计q必d有可靠性,可用性,便携性和可扩展性。你应该在工E开始就应该定义q区分好q些因素Q以便在工作中恰当用。性能可以是,也可以不是优先最高的因素Q我的观ҎQ给每个设计因素应有的考虑?

13. 理接口

“UML User Guide”(Grady BoochQIvar Jacobson和Jim Rumbaugh ,Addison Wesley, 1999Q中指出Q你应该在开发阶D늚早期定义Y件模块之间的接口?

q有助于你的开发h员全面理解Y件的设计l构q取得一致意见,让各模块开发小l相对独立的工作。一旦模块的接口定之后Q模块怎样实现׃是很重要了?

从根本上_如果你不能够定义你的模块“从外部看上M是什么样子”,你肯定也不清楚模块内要实C么?

14. 走近路需要更长的旉

在Y件开发中没有捷径可以走?

~短你的在需求分析上q旉Q结果只能是开发出来的软g不能满用户的需求,必须被重写?

在Y件徏模上每节省一周,在将来的~码阶段可能会多花几周时_因ؓ你在全面思考之前就动手写程序?

你ؓ了节省一天的试旉而漏掉了一个bugQ在来的维护阶D,可能需要花几周甚至几个月的旉M复。与其如此,q不如重新安排一下项目计划?

避免走捷径,只做一ơ但要做对(do it once by doing it rightQ?

15. 别信赖Q何h

产品和服务销售公怸是你的朋友,你的大部分员工和高层理人员也不是?

大部分品供应商希望把你牢牢l在他们的品上Q可能是操作pȝQ数据库或者某个开发工兗?

大部分的N和承包商只关心你的钱q不是你的工E(停止向他们付ƾ,看一看他们会在周围呆多长旉Q?

大部分程序员认ؓ他们自己比其他h更优UQ他们可能抛弃你设计的模型而用自己认ؓ更好?/u>?

只有良好的沟通才能解册些问?/b>?

要明的是,不要只依靠一家品或服务提供商,即你的公司Q或l织Q已l在建模、文档和q程{方面向那个公司投入了很多钱?

16. 证明你的设计在实践中可行

在设计的时候应当先建立一个技术原?/b>Q?或者称为“端到端”原型。以证明你的设计是能够工作的?

你应该在开发工作的早期做这些事情,因ؓQ如果Y件的设计Ҏ是不可行的,在编码实现阶D|论采取什么措施都于事无补。技术原型将证明你的设计的可行性,从而,你的设计更Ҏ获得支持?

17. 应用已知的模?

目前Q我们有大量现成的分析和设计模式以及问题的解x案可以用?

一般来_好的模型设计和开发h员,都会避免重新设计已经成熟的ƈ被广泛应用的东西?
http://www.ambysoft.com/processPatternsPage.html 收藏了许多开发模式的信息?

18. 研究每个模型的长处和q

目前有很多种cȝ模型可以使用,如下图所C。用例捕L是系l行为需求,数据模型则描q支持一个系l运行所需要的数据构成。你可能会试囑֜用例中加 入实际数据描qͼ但是Q这对开发者不是非常有用。同P数据模型ҎqY仉求来说是无用的。每个模型在你徏模过E中有其相应的位|,但是Q你需要明白在 什么地方,什么时候用它们?

19. 在现有Q务中应用多个模型

当你攉需求的时候,考虑使用用例模型Q用L面模型和领域U的cL型?

当你设计软g的时候,应该考虑制作cL型,序图、状态图、协作图和最l的软g实际物理模型?/u>

E序设计人员应该慢慢意识刎ͼ仅仅使用一个模型而实现的软g要么不能够很好地满用户的需求,要么很难扩展?

20. 教育你的听众

你花了很大力气徏立一个很成熟的系l模型,而你的听众却不能理解它们Q甚xp-qؓ什么要先徏立模型都不知道。那么你的工作是毫无意义的?

教给你开发h员基本的建模知识Q否则,他们会只看看你画的漂亮图表,然后l箋~写不规范的E序?/u>

另外Q?你还需要告诉你的用户一些需求徏模的基础知识。给他们解释你的用例(uses case)和用L面模型,以他们能够明白你要表达Cѝ当每个人都能用一个通用的设计语a的时候(比如UML-译者注Q,你的团队才能实现真正的合作?

21. 带工Lȝq是ȝ

你给我CAD/CAM工具Q请我设计一座桥。但是,如果那桥徏成的话,我肯定不惛_W一个从桥上q的人,因ؓ我对建筑一H不通?

使用一个很优秀的CASE工具q不能你成Z个徏模专Ӟ只能使你成ؓ一个优UCASE工具的用者。成Z个优U的徏模专安要多q的U篏Q不 会是一周针Ҏ个h值几千美元工L培训。一个优U的CASE工具是很重要Q但你必d习用它Qƈ能够使用它设计它支持的模型?

22. 理解完整的过E?

好的设计人员应该理解整个软gq程Q尽他们可能不是精通全部实现细节?

软g开发是一个很复杂的过E,q记得《object-oriented software process》第36늚内容吗?除了~程、徏模、测试等你擅长工作外Q还有很多工作要做?

好的设计者需要考虑全局。必M长远考虑如何使Y件满用户需要,如何提供l护和技术支?/i>{?

23. 常做试Q早做测?

如果试对你的Y件来说是无所谓的Q那么你的Y件多半也没什么必要被开发出来?

建立一个技术原型供技术评审用,以检验你的Y件模型?

在Y件生命周期中Q越晚发现的错误难修改Q修Ҏ本越昂贵。尽可能早的做测试是很值得的?

24. 把你的工作归?

不值得归档的工作往往也不值得做。归档你的设惻I以及Ҏ设想做出的决定;归档软g模型中很重要但不很明昄部分?l每个模型一些概要描qC使别人很快明白模型所表达的内?/u>?

25. 技术会变,基本原理不会

如果有h说“用某U开发语a、某个工h某某技术,我们׃需要再做需求分析,建模Q编码或试”。不要相信,q只说明他还~Zl验。抛开技术和 人的因素Q实际上软g开发的基本原理?0世纪70q代以来没有改变过。你必须q定义需求,建模Q编码,试Q配|,面对风险Q发布品,理工作人员 {等?

软g建模技术是需要多q的实际工作才能完全掌握的。好在你可以从我的徏议开始,完善你们自己的Y件开发经验?

以鸡汤开始,加入自己的蔬菜。然后,开始n受你自己的丰盛晚吧?/p>

Alex 2006-06-20 14:28 发表评论
]]>
վ֩ģ壺 AVɫ| ձһѵӰ| AV߲Ų| 95ѹۿƵ| ѾƷԲ| ҹavƵ| ޹ƷVA߿| һ߲| AVۺ뾫Ʒ| ĻѹۿȫӰ| 69˳鶹Ƶ| ޹Ʒþ| Ѹ߹ۿ| ˾ƷƵ | AVþþƷɫ| ľþþƷ1| 99þþƷձһ| һƵ| ëƬۿ| þþþþav | ҹ޾Ʒ| þѾƵ| ޾ƷþþþAV鶹| ޲122021鶹| ҹƵ| Ƶվ߹ۿ| aëƬվ| Ļ߲Ƶ| gogo߹ۿ| ŮɫŷŮ| ѿ߿Aվ| ޾ƷԴ| պѵӰվ| һ| ȫվ| ɫ͵͵ɫݺ99 | ˳ɵӰվ| jizzjizzձٸ| ƷþþþþþѼձ| Ļ޾Ʒ| պƷһ|