Spiga

OOA&D实践之路——真实案例解析OO理论与实践(七、【第一轮迭代】需求分析与领域分析)

2009-10-23 13:37 by T2噬菌体, 4751 visits, 收藏, 编辑

查看本系列全部文章:
《OOA&D实践之路——真实案例解析OO理论与实践》索引贴

      在前面,我们花了六篇文章的篇幅去讨论需求分析之前发生的事情,这些内容看起来枯燥或飘渺,但实际是为真正开始系统的分析、设计和实现进行的必要准备。从这篇开始,将正式进入系统的开发阶段。这一篇文章,将讨论第一轮迭代过程中的需求分析和领域分析环节。

选取第一轮迭代要实现的特性

      回顾前面章节,我们说到,“迭代与增量”和“用例驱动”是系统开发的两大法宝。另外,指出了如下几个要点:

      1)迭代单元不是环节,而是系统功能的某个子集。如不能说第一次迭代完成需求分析、第二次迭代完成设计……这不叫迭代式开发,这叫里程碑式开发,和迭代有本质区别。

      2)每次迭代一定要完整完成需求分析、系统分析、概要设计、详细设计、编码、测试、部署实施这一套环节,产生的成果必须是成品,是可运行、可交付的,是整个系统的一个子集,而不能是一个半成品。

      所以,说白了,这第一步就是要从前面得到的特性列表或业务用例分析文档中选取一个或几个特性或业务用例进行实现。(因为特性和业务用例有对等映射关系,所以,从特性列表或业务用例分析文档中选取迭代功能点在理论上是等价的。)这里,我们从特性列表选取特性。那么首先把我们前面完成的特性列表再搬出来:

      上图就是我们前面得出的特性列表,总共有六个特性。理论上,第一轮选取哪些,总共选取几个,没有明确的规定,但是,在选取特性方面,还是有一定经验可以遵循的,大致有如下原则:

      1)就选取个数来说,与迭代周期有关。一般的迭代开发中,一个迭代周期大多选在一周到两周之间,不宜多于两周,所以,每个周期选择的特性要估算能在这个周期内完成。(顺便说一下,在每个周期内,如果发现时间不够,做不完计划,应削减一些特性推入下个周期,切不可延长周期。另外,切不可在周期开始后添加任务。)

      2)就选取的特性来说,最好是比较内聚的几个特性。也就是说,每个周期选取的特性,要尽量关联紧密,而和其他周期的特性要尽量耦合度低。

      3)就选取顺序来说,因为要求每一个周期都要产生一个可运行的子集系统,所以,最好先选取平台性、基础性、对外依赖弱的特性,再选取功能性、对外依赖强的特性。例如,在这个例子中,如果第一轮迭代选择特性2则不是一个好主意。因为购物车功能要依赖于管理员、加盟商、物料等诸多特性,在后者没有实现之前,很难单独做出一个可运行的购物车子集系统。

      针对以上原则进行考虑,笔者最终选择3、4和6作为第一轮迭代的特性。

      至于为什么这样选,我就不再分析,请各位结合我上面提到的三个原则自己思考一下。

领域分析

      在确定迭代特性后,下一步要进行领域分析。领域分析就是针对特性涉及到的实体及实体间的关系进行一个分析,构造出静态领域模型。这里要注意三点:1、领域模型是静态模型;2、领域模型要反映的是实体及实体见得静态关系(例如包含等,而调用这类动态关系不该在这里出现);3、领域模型是比较高视角的模型,其中的实体和最终程序中的实体类未必对应。

      领域分析的方法有很多,下面我使用一种我总结的领域分析方法。流程如下:

      step1、提取特性中的名词

      我们这个迭代周期内涉及的特性是3、4和6,从中可提取出如下名词:加盟商,连锁店,网络,管理员,系统,直属连锁店,原价,等级,折扣。注意,这些名词就是领域实体的候选者。

      step2、筛选名词,确定实体

      不是所有候选名词都是领域中的实体,这一步要对候选者进行筛选。这一步非常重要,也相对难度较高,需要结合经验和前面的客户谈论材料、需求记录等,必要时,要咨询客户或业务专家。下面我们进行筛选。

      首先,“网络”显然不是领域内的实体,排除。“系统”是对整个产品的总称,也比较明显不是领域实体,排除。排除了两个明显的“干扰项”,下面看几个可疑的家伙,这里,我发现“原价”、“等级”和“折扣”比较可疑。通过对前面材料的回顾分析,基本可以肯定“原价”应为物料的一个属性,难以成为单独的实体,排除。而“折扣”和“等级”是否能成为实体,依赖于后续系统的设计方式,如果将等级单独设计成一个模块,则其应该为一个实体,而若将其设计为加盟商的属性,则不能成为实体。对于这种摸棱两可的候选项,我们姑且保留,并加一个“?”作为后缀。当然,由于前面分析中说明“折扣关联与等级”,所以,仅保留“等级”就可以了,“折扣”可作为其属性。

      经过上述筛选,获得下列领域实体:加盟商,连锁店,管理员,直属连锁店,等级?

      我们不妨先将各个实体画入领域分析图。

      step3、确定实体间的关系

      有了实体,下面要确定各个实体间的关系。如上图所示,管理员比较容易确定,因为它似乎不与任何实体存在静态关系。这里比较纠结的是加盟商、连锁店、直属连锁店和等级四个实体。关于它们间的关系我们不能臆想,要去查阅前面的记录资料或去咨询客户。在OOA&D实践之路——真实案例解析OO理论与实践(三、降低风险)一文中,我们记录了这样一段文字:

      “加盟商和连锁店不是一个概念,加盟商直属总公司,连锁店可能直属总公司也可能直属某加盟商。加盟商和直属总公司的连锁店直接向总公司定料,不直属的的连锁店向相应加盟商领取原料。连锁店按原价定料,加盟商按照等级分为5级,每级折扣不同。”

      从以上文字中,我们提炼出如下关系:

      1)加盟商和连锁店没有关系。

      2)直属连锁店是连锁店的一种特例。而且应该还有种“非直属连锁店”

      3)非直属连锁店可能会属于某个加盟商。

      4)等级仅属于加盟商。

      到这里为止,几个实体间的关系基本清晰了,我们将其表达在领域分析图里:

      以上就是第一轮迭代的领域分析图了。其中直属连锁店和非直属连锁店都继承于连锁店,而非直属连锁店必定对应一个加盟商,加盟商可以对应零到多个非直属连锁店,每个加盟商有且只有一个对应的等级。

      step4、领域分析的优化

      别觉得完成上述步骤就万事大吉了,虽然我们的领域分析模型已经出来了,但它可靠吗?还有优化的余地吗?万事多思考一点,总是没坏处的。就像刚出厂没经过检测的飞机,你敢坐吗?所以,这里我们要对已经成型的领域分析模型进行一个检测。检测的方法很简单,就是回顾前述工作,逐个点进行验证和确认。当我回顾了特性及初步业务需求后,发现如下两点问题:

      第一、管理员是否是领域中的实体?要知道,领域中的实体,一定是系统边界内的实体。那这里就要分情况讨论了,如果系统只需要一个管理员,那么系统中就没有对管理员的管理,那么管理员只是系统外部的用户,就不能存在于领域实体中了;如果有多个管理员,并且管理员管理单独成为一个模块,则管理员应放在这里。于是我联系了客户,在确认系统只需要一个管理员后,我毫不犹豫将管理员从领域模型中抹去了。

      第二、我觉得领域模型抽象层次还有所欠缺。加盟商和连锁店性质很类似,都有注册、都要被审核,其实它们应该继承自某个更高抽象,这里我称其为会员。于是经过思考和修正,得到最终的领域模型如下:

      这里要注意,领域模型只表示出实体和实体间的静态关系就好了。至于各个实体有哪些属性,有哪些交互,那是后面设计阶段的工作。

基于用例的需求分析——编写用例图及用例规约

      传统的软件工程中,通常使用需求规格说明书进行系统需求分析。而我更喜欢使用用例分析技术。在用例分析阶段,我们要输出两份文档:用例图和用例规约。用例图用于概观上描述需求,用例规约用于对用例的流程进行详细描述,直接作为后续设计、编码及测试的依据。

      下面进行系统需求分析。

      step1、提取特性中的动词

      上面我们曾使用提取名词法找实体,那么要找用例,就要分析特性中的动词了。废话不多说,我们先提取出特性3、4和6中的动词:注册,审核,使用,管理,定料。因为用例分析中要确定每个用例的Actor,所以,在提取完动词后,要对每个动词赋予其主语,作为其Actor,于是,最终得到的提取列表如下:注册【未注册加盟商和连锁店】,审核【管理员】,使用【注册后的加盟商和连锁店】,管理【管理员】,定料【注册后的加盟商和连锁店】

      step2、动词筛选

      同样的,不是每个动词都是合法的用例,这里也要对候选动词进行筛选。具体到这里,“使用”是个很泛的名词,不应该成为用例,而“定料”虽是用例,但于这轮迭代的内聚性不高,建议放入后续迭代中。最后得到用例:注册【未注册加盟商和连锁店】,审核【管理员】,管理【管理员】

      step3、用例分析与优化

      这里的用例有进一步分析的余地,首先,“管理”这个用例粒度太大,很难知道设计和开发,于是应进行分解;其次,“审核”应属于管理的一部分。基于以上两点,将管理分解为“删除会员”、“指定加盟商等级”和“审核会员”,另外,“未注册的加盟商和连锁店”,跟据领域分析,可写作“未注册会员”。另外,这里有几个隐含的用例,就是关于等级的管理,这几个用例从动词分析中是提取不出来了,这取决于特性描述的局限性。我们通过经验和个人的分析,得到关于等级的管理用例。于是,最终用例敲定如下(这里用例命名规则为 uc迭代周期编号.用例编号):

      uc1.1 - 注册 actor:未注册会员

      uc1.2 - 删除会员 actor:管理员

      uc1.3 - 指定加盟商等级 actor:管理员

      uc1.4 - 审核会员 actor:管理员

      uc1.5 - 添加等级 actor:管理员

      uc1.6 - 删除等级 actor:管理员

      uc1.7 - 等级信息维护 actor:管理员

      step4、给出用例图

      跟据上述分析,给出用例图如下:

      step4、编写用例规约

      需求分析的最后一步,就是为每个用例编写相应的用例规约。用例规约是一种规范化文档,它面向设计开发人员,详细描述了各个用例内部的基本信息、执行流程及例外流程等,必要时可附上相应的活动图。因为用例规约是设计和开发的重要参考文档,所以在编写过程中务必要做到详尽和准确。

      下面仅给出“注册”这个用例的用例规约作为示例和参考。

      必要时,可在下端附上活动图:

总结

      在每个迭代周期的初始阶段,当选择完需要迭代的特性后,就可以开始领域分析和需求分析了。本文是先进行领域分析。其实两者并无确定的先后顺序,往往是相辅相成,交叉进行。下一篇文章将进入第一迭代周期的设计阶段。

Creative Commons License

本文基于署名-非商业性使用 3.0许可协议发布,欢迎转载,演绎,但是必须保留本文的署名张洋(包含链接),且不得用于商业目的。如您有任何疑问或者授权方面的协商,请与我联系

Add your comment

28 条回复

  1. #1楼 疯流成性      2009-10-23 13:44
    图片X
     回复 引用 查看   
  2. #2楼 Ivony...      2009-10-23 13:46
    为何图片都看不到涅?
     回复 引用 查看   
  3. #3楼 Ivony...      2009-10-23 13:55
    LZ用的图片服务器太慢了。。。。。

    的确是相当不错的实践。。。
     回复 引用 查看   
  4. #4楼 金色海洋(jyk)      2009-10-23 16:29
    好,留名,慢慢看。
     回复 引用 查看   
  5. #5楼 zwws[未注册用户]2009-10-23 16:42
    终于更新了, 来支持下再细看
     回复 引用   
  6. #6楼 阿K&LiveCai      2009-10-23 17:12
    大哥最近又不忙了么,呵呵
     回复 引用 查看   
  7. #7楼 Ivony...      2009-10-23 17:57
    分享几个观点。。。。尽管我知道我肯定木有LZ专业。

    首先是在做领域分析(需求分析)后,我们是不是应该对所有的实体的共性进行明确。或者我将这个过程称之为实体的定义,譬如说具备什么样的特性的东西我们称之为代理商,代理商必须具备什么特性等。

    另外就是经验告诉我,会员并不是所有代理商和经销商的抽象,这应该是一个实体的两个面。在领域模型中,代理商和经销商具象自会员是令人费解的。在领域模型中,代理商和经销商的共性(抽象)应该是商户(定义为可以销售产品的东西)。

    那么会员是什么呢?会员应该是可以被管理员管理的成员。或者可以这么说,代理商和经销商在面向总公司时,更像是会员。在面向最终客户时,其特性是商户。
     回复 引用 查看   
  8. #8楼[楼主] EricZhang(T2噬菌体)      2009-10-23 18:27
    @Ivony...
    关于第一个问题“具备什么样的特性的东西我们称之为代理商,代理商必须具备什么特性”,这些在前面的业务分析过程,也就是需求分析之前已经明确了。因为涉及到客户权益,这里文章里不能具名所有细节。

    另外,你说的“商户”和我说的“会员”是同一实体,用哪个都可以,只是个称呼问题。只要在整个开发过程中保持一致就行了。
     回复 引用 查看   
  9. #9楼 lihangcom      2009-10-23 19:31
    关于需求分析:需求分析应当包括业务分析和系统分析。
    1、业务分析时关注的是用户做什么,这个阶段不应该考虑要实现的系统,甚至可以抛开系统只考虑用户问题的解决。领域专家/咨询公司擅长做这件事。业务分析的产出物应该是业务流程和场景描述。其中业务流程分解的最小单位应该是活动,(1)有价值的,(2)不可替换和(3)不可缺少是确定活动的三个要素。场景描述是对某个活动的具体实现的说明(这里用不用IT系统,用什么样的方式完成活动,可以采用现状和期望两种说明方式)。
    2、系统分析关注的是用户用系统做什么,这个才是软件公司需求人员发挥优势的环节。这时要考虑将哪些活动定义为系统特征。
    系统特征的定义首先要明确系统的实现是对业务流程的自动化、还是流程改进、亦或是流程重组。这个很重要,决定了系统开发程度。
    至于系统的特征/特性/Feature:就可以从业务分析阶段的业务流程的活动直接取舍。
    取舍的方法是:价值法+Kano模型。
    系统特征有4种价值表现:(1)解决问题、(2)抓住机会、(3)看起来好和(4)感觉好。
    Kano模型有3类要求:(1)基本型要求、(2)期望型要求和(3)兴奋型要求 。
    综合成本、进度情况取舍,但至少解决问题的基本型要求时必须实现的,否则用户就根本不买帐了。

    关于用例的粒度,个人认为根本就不应该给用例划分什么层次和粒度,更不应该用用例的实现时间划分粒度。用例本来就应该从活动——特征——用例直接映射过来,而且用例是给开发人员准备的技术,也不应该出现在用户的面前,至于用例图更是可有可无的技术,用例注重的应该是用例规约即用例内部细节的描述,这些细节是直接对应系统特征的具体行为以及行为中的具体操作。
    无论多么细节,用例也只能说明系统做什么,没办法解决系统怎么做的问题,而怎么做系统这需要系统设计来完成了。
     回复 引用 查看   
  10. #10楼[楼主] EricZhang(T2噬菌体)      2009-10-23 19:39
    @lihangcom
    说的很不错!不过没看懂你想表达的意思,以及与我这篇文章的关联

    PS:你说的理论我都学过,不过我写这个文章是想用通俗点的方法和大家分享一些系统分析与设计的方法。我也可以写得很理论,但那样的话,大家就不如去看教科书了^_^
     回复 引用 查看   
  11. #11楼[楼主] EricZhang(T2噬菌体)      2009-10-23 19:42
    @lihangcom
    用例是需要划分粒度的,用例图更不是可有可无。
    用例也分业务用例和系统用例,虽然用例规约注重细节,但在分析中一样需要使用用例图从概观上分析系统做什么。
    而用例的粒度更是非常重要的概念,这里我就不展开说了。你可以多看一些相关书籍,记得《程序员》以前也有文章专门分析用例的粒度。
    建议你深入了解一下用例分析技术。
     回复 引用 查看   
  12. #12楼 lihangcom      2009-10-23 20:38
    @EricZhang(T2噬菌体)
    引用EricZhang(T2噬菌体):
    @lihangcom
    说的很不错!不过没看懂你想表达的意思,以及与我这篇文章的关联

    PS:你说的理论我都学过,不过我写这个文章是想用通俗点的方法和大家分享一些系统分析与设计的方法。我也可以写得很理论,但那样的话,大家就不如去看教科书了^_^


    呵呵,首先这个是我的一家之言,应该没有哪本教科书这么写过。
    其次,我是从楼主的一系列文章看过来的,楼主还是倾向于用用例技术完成业务阶段的需求,但个人认为OO是不适合引入到业务分析的,换而言之,OO擅长的领域是实现阶段。
    再次,关于用例、需求、建模相关的中文书(翻译的、所谓原创的)多少看过一些,英文的经典的也看过一些。《程序员》这个吗没仔细研读过。当然理解的不是很透彻,至少实践中总是很别扭,后来发现在需求阶段,尤其是业务分析阶段,不用用例更自然一些,效果也更好,至少和用户交流,业务流程图和原型更顺畅.

    当然这只是我的看法,楼主不认同,可以无视。
    不过楼主在用用例分析的时候,从来都没觉得所谓用例粒度给你带来的困惑?没有感觉到在用例图上的花费得不偿失吗?毕竟画用例图不能带来继续工作的收益,充其量是理清业务或系统的层次,而且是极浅的层次。
    如果楼主从没有过这些困惑的话,一个原因就是服务的用户需求能力强;再有的原因就可能是没有面对过真正的用户了。
     回复 引用 查看   
  13. #13楼 lihangcom      2009-10-23 20:54
    引用EricZhang(T2噬菌体):
    @lihangcom
    用例是需要划分粒度的,用例图更不是可有可无。
    用例也分业务用例和系统用例,虽然用例规约注重细节,但在分析中一样需要使用用例图从概观上分析系统做什么。
    而用例的粒度更是非常重要的概念,这里我就不展开说了。你可以多看一些相关书籍,记得《程序员》以前也有文章专门分析用例的粒度。
    建议你深入了解一下用例分析技术。


    我理解的用例图也就是一个目录的作用,《include》《extend》《use》更是怎么用都对,也就是说不同的人从不同的角度都可以说的通,就是一种说法而已。用例图只是一个总结的工具,很难起到进一步分析的作用。
    用例粒度怎么划分,为什么这样划分本身就是个难敌,如果真正划分清楚了,不用用例也行。用例还是没有解决如何分析的问题。
    所以现在我偏向于,用例就是个容器,用例分析的作用有点夸大,当然不排除所谓牛人、牛组织为了某些利益夸大的成分。
    其实我还是希望楼主对用例的粒度划分展开一下,毕竟当年我就是被它困住了,才不得不转投它法。楼主真能把这里说清楚了,或者是有真正的心得体会,我想至少对我是受益匪浅的,如果这里讲不清,用例驱动也许就是空话了。

     回复 引用 查看   
  14. #14楼[楼主] EricZhang(T2噬菌体)      2009-10-23 21:29
    @lihangcom
    你说的很多蛮有道理的,值得思考。
    不过OO也好,用例技术也好,技术本身没有问题,关键是使用方式是否正确。如果用的别扭,不用也罢。不过我是应对过真正的客户的,而且不止两三个,我用用例技术和OO进行分析设计感觉挺舒服,效果也不错。

    include、extend等可不是怎么用都对,有严格的理论基础和使用规范的。感觉你可能是对这些理论不求甚解,如果有时间,建议你静下心来读几篇相关的书籍或论文,最好是理论性强一点的,去领会一下用例、用例粒度、用例关系丰富的内涵。
     回复 引用 查看   
  15. #15楼[楼主] EricZhang(T2噬菌体)      2009-10-23 21:35
    @lihangcom
    关于用例分析的一些话题,实在很多,我就不在这个文章系列里讨论了。如果有机会,我会再回顾一下这方面经典的书籍和论文,然后结合自己的观点,专门写一篇综述出来。
     回复 引用 查看   
  16. #16楼 lihangcom      2009-10-23 22:19
    用例会有严格的理论基础?这个哪本经典说到了。或者你能告诉我这个理论是什么?
    用例分析最大的问题(注意这里指不是用例规约)就是用例很难确定边界和粒度,或者说定义的用例边界没有充足的根据,比如说你例子中的添加等级、删除等级等CRUD用例,如果出现了一个根据用户等级删除等级和一个根据用户等级增加某某的需求怎么办,并不是所有的需求都是简单的增删改查,这时候你怎么划分用例层次,依据什么这样划分呢?那么“用例分析”的分析在哪里?
    所以我说用例规约作为一种组织需求的容器是有价值的,可以方便系统分析人员和设计人员的沟通。而用例分析的作用远小于思维导图和业务流程图,尤其在业务分析中。

    牛不代表好,好也不总是对,尽信书或许真的等于无书了。
     回复 引用 查看   
  17. #17楼[楼主] EricZhang(T2噬菌体)      2009-10-23 22:54
    @lihangcom
    用例分析技术确实有严格的理论基础,呵呵,我的导师就是专门研究用例技术的,我受他不少教诲,不是乱说的。像用例提取,用例切片提取,以及最近从用例分析技术上衍生出一种AOSD的面向方面分析技术,无不有理论基础。
    可以看下《用例分析技术》这本书,机械工业出版社出版的,其译者姚淑珍也是我们所一个比较强的教授,在用例分析方面很有造诣。
    另外,书本由于是给大众看的,还不能做到真正理论化,建议你可以去IEEE或ACM索引上,以use case为关键字搜索一些论文看看,有很多很丰富的理论。

    不过我并不是说非用用例分析技术不可,更不是说你的分析方法不好,用例分析是需求分析的一种选择,你也可以选择你喜欢的技术和方式。呵呵。只是我个人比较习惯和推崇用例分析技术。
     回复 引用 查看   
  18. #18楼 Ivony...      2009-10-24 09:55
    分享几个观点:

    首先我并不认同lihangcom的两个观点。
    1、但个人认为OO是不适合引入到业务分析的,换而言之,OO擅长的领域是实现阶段。

    至少我所遇到的大多数的业务都是可以用OO来抽象的。可能研究的领域不一样。


    2、用例分析最大的问题(注意这里指不是用例规约)就是用例很难确定边界和粒度,或者说定义的用例边界没有充足的根据。

    老实说我是没看明白这里想表达的是什么,如果是后面的具体场景:
    “如果出现了一个根据用户等级删除等级和一个根据用户等级增加某某的需求怎么办”
    我的解决方案很简单,放到后面的迭代周期去就完了。

    完全可以理解为:
    用户可以CURD
    CURD需要受到一定的限制

    这样两个用例。分别开发就完事了。


    最后来谈谈不认同LZ的地方:

    关于第一个问题“具备什么样的特性的东西我们称之为代理商,代理商必须具备什么特性”,这些在前面的业务分析过程,也就是需求分析之前已经明确了。因为涉及到客户权益,这里文章里不能具名所有细节。


    我觉得在上面的领域分析中,并非所有的实体都是直观的直接从业务分析的结果转变而来的。还有我们抽象出来的实体,例如经销商和会员,这些实体的就需要明确的定义,否则就会产生歧义。也就是“另外,你说的‘商户’和我说的‘会员’是同一实体,用哪个都可以,只是个称呼问题。只要在整个开发过程中保持一致就行了。”
     回复 引用 查看   
  19. #19楼[楼主] EricZhang(T2噬菌体)      2009-10-24 12:00
    @Ivony...
    我非常同意你说的“实体需要明确定义”,这是一定的,因为如果实体没有明确的概念,后面很多问题就会产生歧义。
    实际在做这个项目的时候,我们手里有一份叫“业务名词词典”的文档,这个文档是我们通过和客户谈话,详细描述了业务中的各个实体,并最终由客户审核确认,是我们后续分析设计的重要文档。但由于隐私问题,这里面涉及到那个公司的组织架构及运营体制,是半点不敢泄露出来的。

    至于领域分析阶段的一些名词,如“会员”,我们确实没有做到明确文档定义,只是觉得各个人员都明白,没有产生歧义。现在看来,这里确实有一定的疏漏。如果是很大型的系统,实体名词上百个,做到明确定义,确实是很有必要的。
     回复 引用 查看   
  20. #20楼 Ryan Zhao      2009-10-26 02:06
    希望博主能早日写完,以免像我一类的朋友成为缅甸的布岛族。
    感觉写这个跟写软件类似,或许会有些错误的地方(直说了请不要介意,毕竟这是难免的),所以会出现一些博友的争议,但希望这些不会影响到博主的创作动机,毕竟凡事没有一步到位之说,就像写软件一样,希望博主先写完再日益完善。

    奉承的话不多说,每次上网都先看看这个系列有否更新逐渐成为了我的习惯,要知道之前的习惯是先开QQ ^_^
     回复 引用 查看   
  21. #21楼 BillGan      2009-10-31 22:10
    每个项目,每个团队都有自己合适的方法。非常同意楼上缅甸兄的说法,继续完成系列,期待概要设计和详细设计的出现。
     回复 引用 查看   
  22. #22楼 22222222[未注册用户]2009-11-25 18:13
    写的挺不错的
     回复 引用   
  23. #23楼 YHY320[未注册用户]2009-12-26 17:08
    博主写很好,期待下文
     回复 引用   
  24. #24楼 YHY320[未注册用户]2009-12-26 17:10
    写的很好
     回复 引用   
  25. #25楼 teof      2010-04-16 14:17
    顶。。。看完了
     回复 引用 查看   
  26. #26楼 桀骜的灵魂      2010-10-06 12:05
    看完了整理系列,发现,如果特性分析不好,会影响到领域分析和用例分析~再看多次品味下。
     回复 引用 查看   
  27. #27楼 总是彷徨      2010-10-06 22:47
    非常好,期待下文
     回复 引用 查看   
  28. #28楼 巨蟹座      2010-12-31 09:41
    这个文章还没有完成呢吧?我看到这,就找不到后续文章了
     回复 引用 查看   
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1588632 8+nJz2s/AgU=