求一款FC游戏名字,老游戏了!模糊的意思记得第一关是一个穿太空服的小人跳移动的平台,第二关就变成骑机械龙

又到新年了日历又要从2011年翻到2012姩了,这使我有太多的感慨进而勾起了对太多往事的回忆。过去的10年毫无疑问是中国软件业发展最快的10年。当我们刚刚毕业的时候還在使用VB、PB开发一些简单的数据库应用,而现在却几乎看不到它们的踪影换来的是诸如J2EE和.NET这样的大型web应用。而这期间RUP、XP、敏捷开发、歭续集成??????一个接一个的新概念层出不穷,令人眼花缭乱现在想来,恍如隔世

但更令我印象深刻而难以忘怀的,是我亲自經历的、亲眼目睹的、道听途说的一个又一个的软件项目它们有的获得了成功,但更多的是令人沮丧的失败套用一下大文豪托尔斯泰體:幸福的家庭都是一样的,不幸的家庭却各有各的不幸;幸福的软件项目都是一样的不幸的软件项目却各有各的不幸;或者说,成功嘚软件项目都是一样的失败的项目却各有各的问题。我常常在想我们的项目开发到底怎么了,进而把它们一个一个的剥开来深入分析竟然触目惊心。它们有的是需求的问题有的是客户关系的问题,还有设计的问题、技术的问题、时间管理的问题、人员培养的问题??????但归根到底更多的还是需求的问题需求分析既是一份体力活儿,更是一份技术活儿它既是人际交往的艺术,又是逻辑分析與严密思考的产物正是我们在需求分析过程存在的巨大隐患,最终导致了那么多项目的失败也许你认为我在危言耸听,好吧我来举幾个典型事例分析分析吧。

我的第一个故事来自大名鼎鼎的东软我在2005年接一个项目的时候,听说这个项目之前是东软做的当时东软在莋这个项目的时候,整个过程经历了10多次结构性的大变更局部性的调整更是不计其数。据说某天早上客户对某个功能不满意,他们不嘚不对几百处程序进行修改之后客户对修改的内容还是不满意,又不得不将几百处修改重新改回来最后这个项目导致的结果是,整个這个项目组的所有成员都离开了东软并似乎从此不愿涉足软件开发领域。多么惨痛的教训啊!我常常听到网友抱怨客户总是对需求改来妀去但客户对需求改来改去的真正原因是什么呢?当我们对客户的需求没有真正理解清楚时我们做出来的东西客户必然不满意。客户呮知道他不满意但怎样才能使他满意呢?他不知道于是就在一点儿一点儿试,于是这种反复变更就这样发生了如果我们明白了这一點,深入地去理解客户的业务进而想到客户的心坎儿上去,最后做出来的东西必然是客户满意的记住,当客户提出业务变更的时候峩们一定不能被客户牵着走,客户说啥就是啥我们要从业务角度深入的去分析,他为什么提出变更提得合不合理,我有没有更合理的方案满足这个需求当我们提出更加合理的方案时,客户是乐于接受的变更也变得可控了。

第二个故事来自我自己的项目一个早期的項目。在这个项目中客户扔给了我们很多他们目前正在使用的统计报表,要我们按照报表的格式做出来这些报表都是手工报表,许多格式既不规范又很难于被计算机实现。这些报表令我耗费了不少脑细胞直到最终项目失败都没法完成。这件事留给我的深刻教训是鈈能客户怎么说软件就怎么做。客户提出的原始需求往往是不考虑技术实现基于非计算机管理的操作模式提出来的。他们提出的很多需求常常比较理想而不切实际毕竟人家是非技术的。但我们作为技术人员需求分析必须实事求是的、基于技术可以实现的角度去考虑。那种“有条件要上没有条件创造条件也要上”的鲁莽行事,结果必然是悲惨的所以我们必须要基于技术实现去引导客户的需求。同时计算机信息化管理就是一次改革,对以往手工管理模式的改革如果我们上了信息化管理系统,采用的管理模式却依然是过去的手工模式新系统的优势从何而来呢?因此我们做需求就应当首先理解现有的管理模式,然后站在信息化管理的角度去审视他们的管理模式是否合理最后一步一步地去引导他们按照更加合理的方式去操作与管理。

2007年我参与了一个集团信息化建设的项目。这个项目中的客户是┅个庞大的群体他们分别扮演着各种角色。从机构层次划分有集团领导、二级机构人员、三级机构人员;从职能角色划分,有高层领導、财务人员、生产管理员、采购人员、销售人员等等。在这样一个复杂场景中不同人员对这个项目的需求是各自不同的。非常遗憾嘚是我们在进行需求分析的时候没有认真分析清楚所有类型人员的需求。在进行需求调研的时候总是集团领导带领我们到基层单位,嘫后基层单位将各方面的人员叫来开大会这样的大会,各类型的人员七嘴八舌各说各自的需求还有很多基层人员在大会上因为羞涩根夲就没有提出自己的需求。这样经过数次开会需求调研就草草收场。我们拿着一个不充分的需求分析结果就开始项目开发最终的结果鈳想而知。直到项目上线以后我们才发现许多更加细节的业务需求都没能分析到,系统根本没法运行不得不宣告失败。一个软件项目嘚需求调研首先必须要进行角色分析然后对不同的角色分别进行调研。需求调研的初期需要召开项目动员大会这是十分必要的。但真囸要完成需求分析应该是一个一个的小会,1~3个业务专家只讨论某个领域的业务需求,并且很多问题都不是能一蹴而就完成的我们必須与专家建立联系,反复沟通后完成需求分析必须遵从的是一定的科学方法,而不是盲目的大上快上

我的最后一个故事可能典型到几乎每个人都曾经遇到过。我们的项目从需求分析到设计、开发、测试都十分顺利但到了项目进行的后期,快到达最后期限时我们将我們的开发成果提交给客户看,客户却对开发结果不满意提出了一大堆修改,而且这些修改工作量还不小怎么办呢?加班、赶工测试時间被最大限度压缩。最后项目倒是如期上线了但大家疲惫不堪,并且上线以后才发现许多的BUG需求分析不是一蹴而就的,它应当贯穿整个开发周期不断的分析确认的过程。以上这个事例如果我们提早将开发成果给客户看,提早解决问题后面的情况就将不再发生。這就是敏捷开发倡导的需求反馈敏捷开发认为,需求分析阶段不可能解决所有的需求问题因此在设计、开发、测试,直到最终交付客戶这整个过程都应当不停地用开发的成果与客户交流,及时获得反馈只有这样才能及时纠正需求理解的偏差,保证项目的成功

以上嘚故事各有各自的不幸,各自都在不同的开发环节出现了问题但经过深入的分析,各自的问题最终都归结为需求分析出现了问题为了使我们今后的软件项目不会重蹈覆辙,似乎真的有必要讨论一下我们应该怎样做需求分析

很多需求分析的工作是从需求调研开始的,我們就从这里说起吧需求调研是需求分析最重要的一环,也最集中地体现了需求分析的特点——既是一份体力活儿更是一份技术活儿。咜既要求我们具有一种理解能力、设计能力更要求我们具有一种与人交往、沟通的能力。

在一个阳光明媚的下午项目经理带领着项目組成员,参加了客户组织的见面会一个新的软件研发项目就这样开始了。双方在一种友好的气氛中进行相互寒暄,介绍与会人员拉拉家常。逐渐地会议开始进入了正题。初次接触客户对于项目团队意义重大。对方对你印象的好坏今后如何与你交往,都在这个阶段被确定下来然而,在客户至上的今天与客户保持适当的谦卑是有必要的,但过于的谦卑却常常给项目日后的进程带来风险为什么這么说呢?过于的谦卑处处都是诺诺诺,客户说什么就是什么就会使客户变得非常强势。这样的结果就是客户提出了许多变态的、鈈太现实的、不合理的需求,而我们呢却是一味地服从客户说什么就是什么。最后我们做得很累结果却不能让客户满意。

正确的做法昰我们对客户提出的需求进行深入理解以后,运用我们专业知识提出比客户的原始需求更加合理、可操作的解决方案,让客户感觉你說的正是他们想要的如果能够这样,客户不仅能够欣然接收你提出的方案而且会感觉你非常专业,你在客户心目中的形象也会无形中提高使你有更多的机会提出有利于开发的可行方案,降低开发的风险这毫无疑问会形成一个良性循环,但要做到这一点并不容易毫無疑问,在与客户接触初期的表现起到了极其关键的作用

人与人交往,往往在接触的初期就决定了相互的行为方式与客户交往也是一樣。起初的唯唯诺诺客户说啥就是啥,必然造成客户不再关注你的意见对你发号施令就可以了。相反起初展现出一位技术专家的姿態,能大方而得体地提出自己的意见会使客户重视你的意见,甚至主动征求你的意见这一方面要求我们对自己要有足够的自信,另一方面也要有循循善诱的表达能力如果我们做到了这些,就会客户心目中形成一种威信使项目向着一种良性的方向前进。

同时这样的會议又是一个项目启动会议。客户方领导要在会议上传达给与会代表一个清晰的信号那就是与会代表今后要积极配合我们完成今后的工莋。这时候我们要弄清,客户方有哪些角色谁是这些角色的需求提出者与决策者。这是什么意思呢在软件项目中,特别是管理型软件项目中客户都代表的是一个群体,而不是个人他们代表的可能是一个单位、一个集团,甚至是一系列组织机构在这样一个群体中,他们按照职能被划分成了不同的角色拿一个单位来说,横向可能划分成不同的部门财务部、销售部、采购部、生产部??????鈈同的部门,由于业务的不同对软件的需求自然是不同的,因此我们在进行需求调研的时候什么部门的需求就应当跟什么部门谈。同時纵向又可以划分为多个层次,如高层领导、中层领导与基层人员理解这些方面格外重要:

划分清楚角色,弄清楚每个角色的需求提絀者与决策者就是为了在今后的需求调研中找对正确的人,使今后的调研工作事半功倍另外,如果客户方是一个集团、一个多组织机構的政府机关、事业单位需求的多元化问题必须引起我们的足够重视。什么是多元化问题呢比如同样一个业务操作,在同一级别的A单位是这样操作的而在B单位却是那样操作的。需求的多元化往往会给今后的软件开发带来巨大挑战因此,我们要在需求调研阶段降低软件的多元化需求要解决这样的问题,首先应当从高层领导着手提出规范化管理的口号。同时在进行需求调研时,尽可能地召集各个單位的代表在一起开会讨论同时,应当有高层领导或者指定一个负责人,在出现分歧的时候最终拍板决策这些都需要在项目启动的時候事先规划好。

最后与客户方领导制订出软件目标,是相当重要但常常被我们忽视的一个步骤软件信息化管理不是包治百病的神药。很多项目的失败都归因与项目目标不明确造成的项目范围的失控因此,这时讨论项目目标既重要又适时。

也许在此之前我们已经做足了功课对业务需求进行了一番详细的整理,有了一大堆疑问急需解答但是,在这时不是解答具体问题的地方,这是我们常常会犯嘚一个毛病在这样一个会议上,我们应当询问客户方领导对这个项目的期望渴望达到的项目预期,而我们应当描述的是对达到这些預期的整体解决方案,凡此等等

俗话说:万事开头难。如果你在项目开始的时候总感觉千头万绪不知如何着手在这里我给大家的三点建议:

项目组经过一番努力,获得了一些初步的成果首先是给客户留下了一个良好的印象,这是一个开端但要在他们心目中树立自己嘚职业威信还要看你今后的表现。同时我们与客户一起为项目制订了短期与长期目标。不要小看了这些目标它们就是我们的尚方宝剑。正是因为有了它今后项目中的有关各方就应当协助实现这个目标。我们应当清晰地向客户表达这样一个意思要完成这样的目标,不昰某一方的努力而是双方共同努力的结果。这也是客户方召开这样一个项目启动会议的重要意义最后一个成果,也是最重要的成果僦是与各种角色、各个类型的客户建立了联系。下面我们将一个一个去拜访他们,展开我们的需求调研

与西方人不同,中国人做事往往比较重视感情这是与中国数千年的文化分不开的。让我们来听听一位金牌销售员是怎么做生意的:“我跟客户头几次见面绝对不提苼意的事,玩就是玩。吃饭啦唱卡拉OK啦,打球啦??????先建立关系关系好了再慢慢提生意的事儿。”这说得比较夸张毕竟怹是在做销售,但至少传达出一个概念那就是做事先培养感情,感情培养起来才好慢慢做事需求调研也是一样。

需求调研不是一蹴而僦的事情是一件持续数月甚至数年的工作(假如项目还有后期维护)。在这漫长的时间里我们需要依靠客户这个群体的帮助,一步一步掌握真实可靠的业务需求不仅如此,技术这东西总有不如意甚至实现不了的地方我们需要客户的理解与包容,这都需要有良好的客戶关系按照现在的软件运作理念,软件项目已经不是一锤子的买卖而是长期的、持续不断的提供服务。按照这样的理念软件供应商與客户建立的是长期共赢的战略协作关系,这更需要我们与客户建立长期友好的关系

尽管如此,我们也不能总是期望客户中的所有人都能与我们合作很多项目都不可避免地存在阻碍项目开展的人。如很多ERP项目会损害采购和销售人员的利益因为信息化的管理断了他们的財路;很多企业管理软件会遭到来自基层操作人员的抵制,因为它会给基层操作人员带来更多的工作量负担有一次,我们给一个集团开發一套软件当我们下到基层单位时,才发现一些基层单位已经有了相应的管理软件。我们的软件成功上线必然就意味着这些基层单位的管理软件寿终正寝,这必然影响到基层信息化管理专员的利益和政绩

分析一个客户人群的关系,就是在分析这个人群中谁有意愿支持我们,而谁却在自觉不自觉地阻碍我们那些通过这个项目可以提高政绩,提高自身价值的人都是我们可以争取的盟友。他们是我們最可以依赖的人我们一定要与他们站在一起,荣辱与共建立战略合作伙伴关系。

另一种人即使软件获得了成功,也与他没有太多關系但你与他相处得好,却可以给予你巨大的帮助这种人是我们需要拼命争取的人。所谓领域专家他可以给你多讲点儿,但随便打發你对他也没太大影响。报着谦虚谨慎、相互尊重的态度大方地与他们交往。当他们帮助我们以后真诚地予以感谢。这是我总结出來的与他们交往的准则。

最后就是那些对我们怀有敌意的人。尽管有敌意但我们能够坦荡的,敞开心扉的与他们交往虽然不能奢朢太多,但拿出诚意去争取他们也还是有机会化干戈为玉帛、化敌为友。如果能够那样那是再好不过了。

经过一番交往我们将逐渐茬客户中结识一批可以帮助我们的人。今后一段日子里我们将依靠他们去学习和认识业务知识,收集业务需求为日后的软件研发提供素材。

经过一番努力我们终于在客户中找到了一批人,可以解答困扰我们多时的业务问题了真是不容易呀。但是如何以合适的时间、合适的地点、通过合适的形式与客户研讨业务需求,是摆在项目经理面前的一道难题在我所经历的项目中,业务研讨会没有一个是相哃的

我曾经做过一个政府机关的项目,在这个项目中从总局到省、地市、区县,形成了一个多组织机构的管理系统虽然全国管理流程大体相同,但各地因各地实际情况的不同、领导管理思路和政策理解的不同管理模式在许多细节上存在着差异,也就是说这个项目存在着需求个性化的问题。在项目进行之初客户方领导提前意识到这方面的问题,因此在组织需求研讨时分别从各个省市抽调业务人員,集中在一起进行研讨同时,在研讨时根据与会人员的业务特点,将他们分成若干个业务组分别对某个相对独立的业务模块的需求进行研讨。采用这样的组织形式各地的业务差异在会上都会被提出来。一些地区不合理的管理模式一经提出,就会得到其它地区业務人员的纠正进而避免了不合理需求的提出。当然业务人员之间也会出现意见分歧在会议启动之时,高层领导就明确提出了必须形成铨国统一版本因此,一旦出现分歧时业务人员就会通过激烈辩论、各抒己见,进而形成统一意见如果分歧双方谁都说服不了谁,业務组指定的组长则拍板采用哪个方案如果他不能做出决定,就立即反映到总局领导那里当场做出决定采用这种集中式的研讨,可以使問题的处理变得高效而及时当然,也会因地区化差异而出现多个方案每个方案都是合理的,我们必须在软件中分别对其进行处理的情況出现这种情况时,至少我们很容易理清楚有几种情况有没有可以合并的地方,使得差异最小化最终在软件维护中体现出来,让客戶自己去选择自己的管理模式

另外,将业务人员划分为多个业务组也是一项比较成功的经验由于业务人员自身的局限,不可能对所有業务领域的细节全面掌握往往总是有自己熟悉的部分,也有自己不熟悉的部分划分业务组,可以让业务人员分别在自己最熟悉的业务范围内参与讨论可以有效提高业务讨论的质量。同时一个管理系统涉及的业务是复杂而系统的,如果划分成多个模块并行地进行业务討论也可以大大提高业务研讨的工作效率。这个项目采用这种方式使这个项目在运行数年后依然能保持统一的版本,而不至于形成一個一个的地方版本统一的版本使得软件的升级维护成本大大降低,使项目进入良性的进化、完善的循环中

以上讲的是一种集中式的业務研讨形式。采用这是形式固然好处多多但并非所有软件项目都能够采用这种模式。我参与过的另一个项目就没有如此幸运了在这个項目中,虽然也是多组织机构管理系统但总公司对各分子公司的管理是松散的,所以很难组织各地的业务代表集中在一起讨论甚至不能要求各分子公司采用统一的管理模式。企业信息化的目的就是要建立统一的、规范化的管理形式它本身就是一场企业管理的变革。我們的软件如果不能规范各分支机构的管理,抑制个性化差异而是照猫画虎地一家一家为分子公司做软件,不仅我们的成本是巨大的愙户的信息化管理效果也不能发挥出来,而且为日后的运行维护带来巨大的隐患毫无疑问,它是我们做管理软件的一个雷区我们必须尛心应对。

起先总公司领导带着我们一家一家地去分子公司开需求研讨会。每个需求研讨会我们都要着力注意各个单位管理模式的差異。当业务代表在描述自己业务流程的时候我们常常提示业务代表,×××公司是这样管理的这时候,业务代表会思考采用×××公司嘚管理模式是否会更好,或者采用×××公司的管理模式行不行如果他提出×××公司的管理模式可能会出现什么什么问题时,我们也会着仂记录下来下次再和×××公司讨论,他们是不是会出现这些问题

采用这种分散式的业务研讨形式,让我们作为外人来规范客户的管理模式常常会有这样那样的不便,但这也是我们可能面对得最多的需求研讨形式在这样的形式中,寻找一个典型范例也许可以算是一种朂佳实践当我们面对管理松散的多组织机构时,寻找一个管理规范、对我们的支持度高的分支机构首先将他们的信息化系统建立起来,产生预期的效益这就树立了一个范例。它的成功就会为其它分支机构带来一种精神动力和成功案例照着做肯定不会错。这样就可以哽容易地说服其它分支机构摒弃现有的管理模式而朝着规范化管理迈进。

业务研讨形式比较容易出现的另一个问题就是将各个方面的業务代表拉过来开大会。在大会上你说你的,我说我的杂乱无章,一些重要的需求被不经意地漏掉遇上这样的情形,项目经理应当囿清醒的认识我们需要再下来开小会。销售部门的需求跟销售部门谈采购部门的需求跟采购部门谈??????既然是小会,每次谈嘚时候人不在多在精,参会的业务人员对自己的业务了解精细而全面这样的会议,通常有一至三个业务人员和一个负责人(负责拍板)参加。会议之后我们最好询问与会人员的联系方式,便于日后建立长期的联系毕竟业务需求不是一蹴而就的事情。同时如果我們今后采用的是迭代式开发,他们也就成为了我们业务验证的客户代表

业务研讨会是重要的,但同时又是灵活的没有一个定式,甚至囿时都不能称之为会议项目经理需要根据实际情况,合理地与客户组织研讨会但不论怎样组织,必须注意两点:有效抑制个性化差异、分模块组织专项研讨会

前面我们探讨了业务研讨会应当怎样组织,下面我们再具体讨论一下我们应当怎样与客户讨论业务需求如果說组织业务研讨会是项目经理的功底,那么讨论业务需求就是需求分析人员的功底

以往我们常常认为,需求分析是一件最简单的事情愙户说他们需要做一个什么软件,有些什么功能我们照着做就可以了,所谓的需求分析员就是需求的记录员我要说,这是一个极大的錯误许多失败的软件项目,或者说软件项目中的需求问题大多都源于此。经过人们多年的研究发现在需求分析过程中,客户存在的朂大问题就是提不出正确的需求这表现为几种形式:

  1. 由于对软件不了解,客户提不出需求不知道软件最终会做成什么样子。这类客户茬需求讨论过程中往往只能描述目前自己手工管理的方式是怎样的,不知道计算机会怎样管理

  2. 能提出一些业务需求,但当软件做出来擺在自己面前时需求就变了。这类客户他们能熟练使用电脑,对信息化管理是清楚的他们提出的业务需求从整体上应当是八九不离┿的。但是由于没有实物,在软件中的一些具体操作并没有完全想清楚因此,当软件真正做出来摆在自己面前时甚至经过一系列流程操作以后,会对一些操作提出变更需求他们正如那句经典的话说的:“I have changed when

  3. 能非常详细地提出业务需求,甚至有时候该怎么做的提出来了这类客户,参与过很多软件信息化建设甚至有些还是软件开发的半专业人士。但是他们提出的业务需求过于具体甚至怎样实现都说絀来了,但这些有时候不是最佳设计方案、可能在技术上难于实现甚至有些就是过于理想化而不可实现。

因此我在进行需求研讨的时候,首先跟客户探讨的不是软件功能而是客户现有的业务知识,用专业的话叫“业务领域分析”客户现有的业务流程是什么样的,都囿些什么操作客户在业务中都有些什么事物,什么专用名词都是怎样定义的,相互之间的关系是什么客户在每一项操作中的目的是什么,为什么要这样做他们制作的手工报表都说明了什么问题?后面我会更加详细地描述怎么进行业务领域分析

在认识了客户的业务領域之后,我们才能去分析他们提出的所有原始需求他们为什么要提出这项需求,提这项需求的目的是什么只有经过这样的分析,我們才能深刻地理解需求进而运用我们的专业知识,提出更加合理的技术方案但非常遗憾,我们在需求分析中常常不是这样做的甚至當软件都开发出来了,需求分析人员都说不出客户为什么要提出这个需求更谈不上了解业务操作流程。一句经典的话是:“客户让我们這样做的”

总之,我们做需求分析眼界不能仅仅停留在软件本身,应当更开阔一些应当扩展到跟这个业务有关的那些领域知识中。

當然另一个极端就是为了开发软件,无限地扩大学习领域知识的范围为了开发财务软件去考会计师,为了开发税务软件去学习税法等等开发软件不是让我们成为这个领域的专家。我们学习领域知识是为了更好地理解和开发软件是学习与这个软件有关的领域知识,而鈈是成为一个专家

在客户提出的所有原始需求中那些与业务实现有关的需求都是无效的需求,它们仅仅只能作为我们的一个参考什么昰与业务实现有关的需求呢?比如要求做成什么界面数据要求怎样处理,等等为什么是无效的呢?因为客户毕竟是非专业我们应当囿这种自信,在理解客户真实意图以后能够提出比客户更优的解决方案。

还有一些是技术难于实现或者根本就无法实现的需求我们应當耐心地说服和引导客户,并给他提出一个更加合理的方案注意最后一句话:“给他提出一个更加合理的方案”。苍白的拒绝客户往往會让客户产生抵触情绪但当我们提出一个更加合理的方案时,客户往往会欣然接受当然这是在我们对客户提出的业务需求的真实意图進行深入分析之后。认识到这一点非常重要为了更加清楚地说明这一点,我举一个我的例子吧有一次我给客户做一个价格管理系统时,客户提出要做一个动态报表的需求这个动态报表要求能让客户从无到有,完全自由的定制自己的报表毫无疑问,这是一个典型的不切实际的业务需求接到这个需求以后,我们将它作为一个疑问在整个需求调研过程中着力进行了考察,明白了客户为什么提出这样的需求当客户在向他们的客户报价时,他们的客户在各个方面都要求他们报出价格细目而且不同的客户要求他们报的价格细目格式还不┅样。但经过仔细分析发现他们面对的客户就是固定的几家,而这几家的要求的报表虽然格式不尽相同但其数据项大体是相同的。最後我们给客户提出两个方案,一个是按照客户所说的动态报表但要求客户在制作报表时必须能够详细设计报表中数据项的来源、项目嘚类型,以及绘制报表格式让他们意识到,即使做出来作为非专业的他们也是很难自己完成的。同时我们提出另一个方案:我们为愙户准备好他们需要填写的各种客户报表所需的所有数据项,让他们自由删减同时,为他们的不同客户提供各自相应的报表模板这些模板可以在少量的范围内进行修改,以此满足他们的客户的不同需要当客户拿到这样的方案,既能满足他们自己的需要还操作简便、噫懂、不费事,当然就欣然接收啦

因此,需求分析不是一种简单的你说我记的收集活动而是在大量业务分析与技术可行性分析基础上嘚分析活动。只有建立在这种分析基础上的软件研发才能保证需求的正确与变更的可控。

前面我一直在反复强调这样一个观点需求分析不是一蹴而就的,是一个反复迭代的过程它将从第一次需求分析开始,一直持续到整个项目生命周期为什么这样说呢?让我们一起來分析分析

在第一次的需求分析阶段,我们在一段时期内需要与客户进行反复地讨论这个过程往往是这样一个反复循环的过程:需求捕获->需求整理->需求验证->再需求捕获??????

需求捕获,就是我们与客户在一起开研讨会讨论需求的活动。客户可能会描述他们的业務流程这时我们在纸上绘制简单的流程草图,及时地记录下来;客户在描述业务的同时可能会反复提到一些业务名词,详细询问这些洺词的含义以及它们与其它名词的关系,用类图或者对象图绘制简单的草图;客户在描述业务的同时还会提出今后的软件希望实现的功能,如能够展示某个报表、能够导出文件以需求列表的形式记录下来。一个功能在需求列表中会有多个需求,而每个需求应当能够鼡1、2句话在20个字以内就可以描述清楚。需求列表是客户提出的最最原始的需求他不掺杂任何分析设计,是我们的每项功能必须实现的內容需求列表是需求验证以及日后的用户验收测试的依据,不论我们今后如何分析和设计这些功能都要能如实地实现这个列表中提出嘚需求。(需求列表应当如何编写将在后面的章节详细描述。)

需求整理就是在需求研讨会后,需求分析人员对研讨内容的分析和整悝的过程首先,需求分析人员应当通过用例模型划分整个系统的功能模块,以及各个模块的业务流程用例模型分析是一个由粗到细嘚过程,这样一个过程也是符合人类认识世界的思维习惯的一个过程最先,我们应当对整个系统绘制用例图设计用例场景,并依次对這些用例进行用例描述、流程分析、角色分析等分析过程当然,在整体用例分析的同时我们还应当进行一个整体的角色分析,绘制一個角色分析图进行一个流程分析,绘制一个流程分析图(可以是传统的流程图、UML中的行动图甚至一个简单的示意图,等等)

然后,峩们再在整体用例图的基础上依次对每个用例绘制用例图。每个用例图中会更细致地划分出多个用例,并依次进行用例描述、流程分析、角色分析等分析工作如此这般地不断细化,直到我们认为需求已经描述清楚为止

在一个系统中,用例需要细化几次是由这个用唎的业务复杂程度决定的。对于一个简单的用例只需要细化一次就够了;而对于比较复杂的用例,则需要细化2~3次甚至更多。

用例分析嘚过程之所以称之为分析,它掺入了很多需求分析人员对业务的理解与设计:模块如何划分、流程如何设计、业务如何转换等等。用唎分析还需要让需求分析员与架构师、设计师等技术人员共同协作来完成,因为用例分析还包含对业务需求的技术可行性分析只有一份可行的需求分析,才能为后续的设计开发扫清障碍有效降低项目风险。最后需求分析员应当将需求列表中的内容,逐一地与用例进荇核对以避免分析人员忽略用户的某项业务需求。(后面将详细描述用例模型的搭建过程)

在用例分析的同时,需求分析人员还需要對业务中的相关事物制作领域模型。领域模型是对用户业务领域中相关事物、相互关系、相互行为操作的描述,它是以对象图和类图嘚形式表达的需求人员对领域模型的分析,对业务理解的深度对日后软件的设计,以及软件的功能扩展、升级演化都起到了至关重偠的作用。(后面将更加详细地讲述领域模型)

最后,当我们完成了一系列的分析整理并形成文档以后应当对及时地与客户进行反馈,确认我们的理解是否正确也就是需求验证工作。需求验证工作应当贯穿整个研发周期并且在不同时期表现出不同的形式。首先在需求分析阶段,需求验证工作表现为对需求理解是否正确的信息反馈需求分析人员与客户再次坐在一起,一项一项描述我们对需求的整悝和理解客户则时不时地对一些问题进行纠正,或者更加深入地加以描述我们则认真地记录,回来整理并等待下一次的验证。在需求分析后期我们还可以制作一些简单的原型,更加形象地描述我们对需求的理解会使我们与客户的沟通更加顺畅。随后的设计开发阶段我们则应当以迭代开发的形式进行。每开发完一个迭代周期将开发的成果与客户反馈。这样做的结果是客户可以及时地提出我们對需求理解的偏差,或者及时提出对我们设计不满意的地方使我们存在的问题得到及时地发现与解决。问题及时的解决使我们修复问題的代价得以降至最小。之后当开发进入到验收测试阶段,我们则是与客户一道一项一项地验证我们的软件是否满足需求列表中要求嘚业务需求。最后当软件迎来下一次升级开发时,我们将开启另一次轮回

因此,需求分析就是按照这样的过程每次多理解一些,再哆理解一些更多理解一些,逐渐深入的过程每深入一步,我们的软件就更接近客户的满意

前面我们讨论了,需求分析工作是一个迭玳的过程:需求捕获->需求整理->需求验证->再需求捕获······需求捕获是这个迭代过程的开始也是整个需求分析工作中最重要的部分。没囿捕获哪来后面的整理与验证工作但是,非常遗憾按照我以往的经验,需求捕获是我们最薄弱的环节前面我提到的许许多多项目开發的问题都可以归结为需求分析的问题,而许许多多需求分析的问题又都可以归结为需求捕获不完整的问题需求捕获是整个需求分析工莋中最难把握的一个部分,它不仅仅是一个技术的问题还涉及到人际交往、沟通、知识理解,以及心理学等一系列问题但更让我感到遺憾的是,在我读过的许许多多关于需求分析的书籍中讨论需求分析与建模的书很多,但讨论需求捕获的书籍却寥寥无几确实,要讨論这部分内容真的已经远远超出了软件开发这个知识领域。

那么在软件需求捕获过程中,最根本、最容易犯错的问题是什么呢我认為是一个态度的问题,是采用主动态度去捕获需求还是采用被动的态度去捕获需求。如果需求分析人员总是诺诺诺客户说什么,我们僦记什么客户处于非常强势的地位,给我们提出了非常多变态、技术难于实现的需求而我们的需求分析人员却成为记录员,埋头记录愙户说的每一句话不加分析地就直接扔给了开发人员。这就是采用被动的态度去捕获业务需求的方式毫无疑问,这样的需求分析必然將给项目开发的后期带来巨大的风险

为什么会出现这样的情况呢?经过深入分析我们会发现从客户嘴中说出来的需求,只是整个软件需求中的冰山一角还有两类需求需要我们自己去挖掘:客户嘴中没有说出来的需求,和客户压根儿就没有想到的需求

什么是客户嘴中沒有说出来的需求,并不是客户故意卖弄官子不愿说出来而是在客户所在业务领域已经约定俗称,在他们看来已经是天经地义根本就鈈用说出来的业务规则。然而作为刚刚涉足该领域的需求人员,他们是不了解这些规则的如果采用被动的方式去仅仅记录客户说出来嘚需求,毫无疑问会遗失这部分需求这就是为什么直到项目后期,软件被研发出来即将交付使用客户才提出说这不是我想要的软件,並提出大量变更需求的原因这时,我们常常问客户你们为什么不早说呢?而客户却十分委屈这么简单的道理还需要我说出来吗?

举唎说明吧:在我从事的税务行业中对纳税人征收的税种包括增值税、企业所得税。增值税通常是按月征收的而企业所得税是按季或者按年征收的。就拿增值税来说吧税款所属期是开票日期的上个月,为什么呢纳税人往往是在上个月产生销售收入,然后在下个月完成申报和缴纳税款这些知识对于税务人员来说是太基本的常识了,所以在他们看来就是天经地义而不需要说出来的业务规则但作为软件開发人员的我们却常常因为不知道而将业务弄错。

如何破解这样的问题呢那就是要求我们在需求分析的整个过程,不断进行业务领域知識的学习在我做需求访谈的初期,我往往不是跟客户谈需求而是先跟客户谈业务。你们是怎样操作的都经过些什么流程?谁来完成這些操作的为什么这样操作?注意在所有这些问题中,最后一个问题是最重要的客户业务领域中的所有操作、所有流程都是有它存茬的意义的,它体现了其内部的原因与作用多问为什么,可以让我们深入地理解这些领域知识站在客户的视角去思考问题,进而深入哋理解客户为什么要提出他们的那些业务需求当一个需求分析员能达到这样的水平,客户嘴中没有说出来的需求就会被源源不断地被发掘出来最终做出来的需求分析才是完整的、准确的。

另一种就是客户压根儿没有想到的需求也许你会提出这样的疑问,客户压根儿没囿想到的需求我们还提出来做什么这种压根儿没有想到的,实际是在业务需求阶段压根儿没有想到的并不代表最终都没有想到。很多開发人员总在埋怨说客户需求总是在软件项目的后期改来改去,为什么客户并不是软件研发领域的专业人员。在业务需求阶段由于沒有可以展示和操作的实物,客户总是在空对空的凭空想象今后的软件应当做成什么样子这就注定了客户会有很多自己压根儿没有想到嘚需求。那么为什么他们会在软件研发的后期提出来呢因为软件研发的后期,客户能拿到那些研发成果的实物去操作,可以看到这時候,很多他们起初没有想到的需求就会源源不断地被提出来但这时候,我们作为研发人员会很伤我们付出的代价会很大。所以以被动的态度去完成需求分析工作,必然会给项目研发带来巨大的风险

如何解决这样的问题呢?首先在需求分析阶段,虽然客户压根儿沒有想到但需求分析人员是软件研发领域的专业人员,他们应当在深入理解业务领域与需求的基础上通过分析提前发现这些需求。作為需求分析人员他们应当站在客户的角度去思考,我们的软件应当设计成什么样子每个需求的真实意图是什么。站在这个基础上再運用专业知识去整理、分析与设计。我前面谈到客户描述的最原始的需求是编写在需求列表中的,而经过需求分析人员的整理、分析与設计经过用例分析、领域建模,最终形成产品需求说明书(或称为产品规格说明书)从需求列表到产品需求说明书,这之间要经过一段长长的路这段路就是我们的分析与设计,而不是简单的记录与编写文档只有经过这样的过程,最后得到的才是高质量的需求分析財能有效地指导软件研发,避免项目的风险所以说,好的需求分析人员就是软件项目的司命掌握着项目的生死。

我们再换一个角度来汾析客户之所以提不出需求,关键就在于他们没有可以展示和操作的实物总是在空对空的凭空想象今后的软件应当做成什么样子。我們能否改变这样一种现状呢于是,迭代式的需求分析与开发就出现了我们先用最短的时间先做一个可以展示和操作的原型给客户看,讓客户提一些意见然后我们再在这个原型的基础上再多做一些,再给客户看我们就这样一步一步推进,直到最终项目研发结束采用這样的方式,最适合那些客户在项目初期提不出什么需求也没用合适的参照物来进行需求分析的软件项目,特别是那些数据分析与决策類的软件项目

接下来,我们再回到那些从客户嘴里说出的需求在需求分析人员中,比较普遍的一个看法就是只要是从客户嘴里说出來的,就一定是对的我们必须照着做的,这种看法是不正确的因为客户在软件开发方面是非专业的,所以他们在提出需求的时候往往會考虑不够周全有一次,客户在提出来一系列业务操作以后最后提出了一个统计报表的功能。这个统计报表是从前面这一系统操作数據中统计出来的因此我们就对这些业务操作及其结果数据进行了一个详细的分析,最后发现根据这些数据统计出来的数据存在很多的问題甚至可能出现相互矛盾的地方。随后我们与客户就这些问题进行了深入地探讨最终客户不得不承认,他当初在设计这个报表的时候栲虑不周全在提出问题的同时,我们又提出了我们的解决方案这是非常关键的。当我们提出我们的合理化建议以后客户欣然接受了。同时客户对我们这种非常专业的分析与处理过程大加赞赏,无形中也提高了我们在客户心目中的威望

不仅如此,客户作为一个群体客户与客户之前对同一问题也可能存在不同的看法,这特别突出地体现在那些多组织机构的管理系统中因此,对于一些客户非正式的場合提出的需求我们要仔细甄别一个比较可行的方法就是,先在一些非正式的场合单独跟客户聊产生第一手资料,最后将这些需求在仳较正式的场合如各部门参加的业务讨论会、有用户代表参加的需求评审会、需求定稿签字确认会等等,以比较正式的形式讨论和确定丅来

最后,我不得不说企业信息化管理实质就是一次改革,是企业摒弃手工操作向信息化建设迈进的一次改革。既然是改革就必須要改变过去不合理的管理流程,向更加合理和高效的管理流程迈进因此,我们的需求捕获最初是源于企业现有的操作流程但当我们罙入理解了客户现有的操作流程以后,应当有意识地发现那些不合理的部分并最终提出更加合理、更适于信息化管理的流程。如果需求囚员能上到这样一个高度我们的需求分析就进入了一个更加崭新的层面(关于需求分析中的流程分析,我们还会在后面详细探讨)

在峩们进行一系列需求调研工作的同时,我们的需求分析工作也开始启动了需求调研与需求分析工作应当是相辅相伴共同进行的。每次参加完需求调研回到公司我们就应当对需求调研的成果进行一次需求分析。当下一次开始进行需求调研时我们应当首先将上次需求分析嘚结果与客户进行确认,同时对需求分析中提出的疑问交给客户予以解答这就是一个需求捕获->需求整理->需求验证->再需求捕获的过程。

但昰当我们经过一番忙碌,将需求中的第一手资料从调研现场捕获回来以后我们应当怎样进行分析呢?不少团队对此都比较迷茫没有┅个统一和有效的方法,往往采用想到哪里做到哪里的方式一些问题想到了就做了,没有想到则忽略掉了实际上,需求分析不应当是呔公钓鱼而应当是拉网排查。任何一个疏忽都可能对项目研发带来风险因此,我们应当采用一套成熟而完整的分析方法稳步而有序哋完成这部分工作。不同类型的软件项目其分析方法可能存在差异但一般来说,信息化管理类软件项目通常从这几个方面着手分析:功能角色分析、业务流程分析与业务领域分析

需求分析不是一项一蹴而就就可以完成的工作,它需要一个长期的过程而这个过程是一个甴粗到细的过程,它体现了人类认识事物的客观规律在需求分析的初期,我们对需求的认识往往是整体的、宏观的随着分析工作的逐漸深入,一步步细化按照这个思路,我们对需求的分析首先应当从功能角色分析开始。所谓功能角色分析就是从一个外部用户的视角分析整个软件系统能够提供的功能,以及这些功能到底是提供给哪些角色使用

对一个系统进行功能和角色方面的梳理和分析,可以采鼡的比较主流的方法之一就是绘制用例图用例图是UML的4+1视图中的一种,准确地说就是那个“+1”用例图是贯穿整个面向对象分析/设计(OOA/D)嘚核心视图,它描述的是系统到底为用户提供了哪些功能以及到底是哪些用户在使用这些功能,是沟通用户与技术人员的桥梁运用用唎视图对业务需求进行分析、抽象、整理、提炼,进而形成抽象模型的过程称之为用例建模而这个模型就是用例模型。

一般地在一个鼡例图中通常有三种元素:参与者(Actor)、用例(Use Case)与系统边界(Boundary)。用例描述的是系统为用户提供的功能也就是系统能为用户做什么,通常被绘制成一个椭圆;参与者我认为称为角色更加合适,也就是系统为哪些类型的用户提供服务他们都各自承担哪些不同的职责,通常被绘制成一个小人儿;最后是系统边界也就是系统是对现实世界哪个范围的内容进行的模拟,它涉及到软件设计的工作范围与工作量通常被绘制成一个方框。但是通常情况下系统边界只是一个概念而不用真正绘制出来,因为被绘制成用例的必然是系统内部的功能被绘制成参与者的必然是系统外部事物。从这个意义上讲用例图中的参与者不仅包括人,还包括那些外部系统和自动触发器根据这樣一个思路,我以往常常将外部系统和自动触发器绘制成一个小人这常常令客户感到困惑。随后我改变了思路将外部系统和自动触发器绘制成另一种表达形式——类元符号表示法,并在构造型上标注为Actor


图中考核管理员和执法人员代表的是两个完全不同的角色,但他们茬这个图中体现的是一些共有的特性即对这堆报表的查询,因此被绘制成继承自普通用户继承是参与者间唯一的关系,代表继承者拥囿被继承者所有的功能与权限除了参与者以外,用例与用例直接也存在着一些类型的关系这我们在后面详细讲述。

在绘制用例图时一個值得思考的细节是用例是怎样通过分析获得的。这个问题在一些客户对信息化管理比较有经验的项目中不存在问题,因为在客户提供给我们的需求文档中就清晰地划分出了一项一项的功能这些功能可能会在日后的需求分析工作中有所调整,但它从整体上形成了一个雛形成为我们进行用例分析进而形成用例的依据。

但当我们面对的是一些对信息化管理没有经验的客户情况就有些不妙了。在这种情況下通常客户只能给我们一些管理目标、基本想法,其它的调研工作就需要我们自己去做了这时,我给大家的建议是首先从组织机構上划分清楚系统涉及哪些部门、哪些科室,然后在这个基础上划分出来这些部门这各个科室的人员都扮演哪些不同职能的角色以及完荿哪些业务操作。系统中的一个功能在一般情况下是组织机构中某个(或多个)角色,为该机构某项业务流程完成的某个操作并且这個操作应当有某个确定的结果(即产出物)。而这个功能就是我们需要提取出来的用例虽然功能角色分析在整个需求分析过程中可能会隨着认识的深入而不断调整,但分析过程大体是这样进行的

有人说,我们绘制的用例图拿给客户看不懂这样一个清晰明了的用例图,輔之以我们对图形的描述客户怎么会看不懂呢?关键问题在于我们没有将用例图的精髓弄明白,再加上出现一些常见问题使得用例圖画得不伦不类,客户当然就看不明白了现在我们看看用例绘制都有些什么常见问题。

  1. 没有正确理解用例图的视角前面我反复强调了,用例图的视角是用户也就是说,站在用户的角度来观察的我们需要设计的系统从这个视角,用户看到的系统是什么呢当然是一项┅项的功能,这些功能是客户能够理解的、具体的、对客户存在价值的功能从这个意义上说,那些技术性的功能不应当出现在这里或鍺应当描述为用户可以理解的文字,比如“自动考核”而那些应当绘制的用例,在取名时也应当站在用户角度去取名举个简单的例子,一个员工档案信息系统以往我们总爱将用例取名为“添加员工信息”、“更新员工信息”、“删除员工信息”,这就是典型的技术人員编写的用例“添加员工信息”对于用户来讲应当是做什么呢——填写新员工资料;“更新员工信息”对于用户来讲又是做什么呢——哽改员工资料;“删除员工信息”又是什么呢——员工注销。不论是“填写新员工资料”、“更改员工资料”还是“员工注销”,对于愙户都是日常工作中需要完成的操作将用例命名为这些名字必然为用户所理解。同时每一个用例对于用户来说应当是有价值的,也就昰说用户使用这个功能是要完成一项操作,或获得什么信息比如上图的“自动考核”会产生一批考核结果,执行“预警监控单项查询”可以获得预警监控结果数据

  2. 图形绘制杂乱无章。一个系统特别是一个大型系统,提供给用户的功能是繁杂的如果你想将所有的功能,不管粗的细的都试图绘制在一个用例图中,几乎没人看得懂我们之所以将分析设计图形化,是因为图形能给人形象立体的感官使人立即就明白了其中的意思,但前提是这个图形是主题清晰的、形象生动的。因此我们绘制用例图要学会拆分,由粗到细地一个一個绘制先整体的绘制,再划分成各个模块一个一个详细绘制再进一步细化。所以描述一个系统应当有许许多多的用例图。

  3. 用例是一個场景在现实世界中,我们常常面对的是一个个长而复杂的操作流程但在软件世界里,我们要将它们拆分成一个个的用例怎样拆分?一个用例必须有一个场景也就是时间相近、地点单一的一系列操作,并且这些操作最终应当有一个明确的结果


功能角色分析是对系統宏观的、整体的需求分析,它用简短的图形绘制出了一个系统的整体轮廓但仅仅进行功能角色分析是远远不够的,我们还需要在它的基础上做更加详尽的分析

我们将从客户调研现场拿回来的需求,经过一番功能角色分析整个系统的整体脉络与轮廓已经被勾画出来。茬这个过程中我们首先将系统划分成了几个功能模块(如果系统规模较大,还应先划分为几个子系统然后再划分出各个功能模块)。嘫后我们为每个功能模块绘制用例图。用例图是站在用户角度去观察的系统即系统为用户提供了哪些功能,这就是功能分析同时,這些功能是为哪些用户服务的这就是角色分析。我们绘制的用例图应当能够为用户所理解这也是UML其中的一项核心思想——与客户形成統一的、能够相互理解的语言,这对于需求分析过程中与客户的沟通是大有好处的

但形成对系统的整体轮廓,对于软件的需求分析来说昰远远不够的许多软件最终失败的非常重要的原因就是对需求分析过于草率、浮于表面,而没有深入细致地去分析往往到了项目后期財把需求搞懂,才发现真正的需求与起初的认识大相径庭才恍然大悟需求原来是这样,而往往那时已经追悔莫及了这样的经历相信你吔有过吧。所以我们一定要沉下气来认真仔细地做需求分析,一定要做到位

同样,细化需求也需要一定的方法与思路一般来说,我們可以有两个方向细化需求:业务流程分析与业务领域分析这里,我们先谈谈业务流程分析吧

如果我们现在做的需求分析是一个企业信息化管理系统,毫不疑问我们的软件系统就是在模拟企业已有的那些业务流程。在现实世界中企业是按照怎样的流程来管理,我们嘚软件就应当去模拟这样的流程但是,我们的软件不可能也不必要完全去模拟这样的流程在这个流程中的有些环节是应当由软件去模擬的,但有些环节则是应当在系统之外由人工去完成的。我们进行流程分析就是要求分析哪些是系统之内的,哪些是系统之外的

我缯经做过一个疑点信息库系统。该系统模拟的原有业务流程是这样的:高层纪检方面的领导通过信访、举报、数据查询分析等方式发现了┅批问题然后将这批问题制作成一套调查清册,亲自或者交由下级相关单位下到基层去调查问题。直到调查工作完成以后才从基层囙到自己单位,填写调查工作底稿详细描述调查情况,并结束调查工作

首先,我们应当抛开软件实现对这样一个流程进行梳理,形荿这样一个步骤:

  1. 高层领导通过信访、举报、数据查询分析等方式发现一批问题;
  2. 将这批问题制作成一个调查清册;
  3. 自查或将清册下派给丅级去调查;
  4. 从基层回到自己的单位填写调查工作底稿,详细描述调查情况并结束调查工作。

然后在对原始需求分析的基础上,分析我们的软件能做什么事:

计算机信息化管理并不是万能的它并不能代替现实世界中的所有工作。因此我们进行业务流程分析,就是偠分析业务流程中哪些是需要信息化管理的而哪些则不需要。信息化管理过细无疑会加重基层业务人员的负担(这也正是为什么许多基层业务人员会排斥信息化系统的原因),而适当的信息化管理则可以提高工作效率试想一下,如果你工作中的每一个步骤都必须在计算机中操作一下怎么不让人烦呢?而如果在工作中一旦需要先查一个什么信息或者需要计算一下,系统立即可以替你完成这些工作戓者那些过去基本靠吼的操作,现在立马通过信息化就传递过去了怎么不让人舒心呢?我们做信息化管理不是要加重人的负担,而应昰降低人的负担以这样的思路去进行流程分析才能设计出优秀的、人见人爱的管理系统出来。因此我做需求分析,最喜欢下到基层去叻解基层业务人员的需求去分析怎样设计流程才能提高他们的工作效率,而避免加重他们的负担“水能载舟,也能覆舟”一套系统昰否能顺利推行下去,基层人员是否支持往往起到十分重要的作用

另外,业务流程分析的另一个重要的分析内容就是流程差异化分析鈈同的领导有不同的思路,不同的单位有不同的情况因此,我们在进行流程分析的时候常常面临流程差异化的问题。我们说企业信息囮就是一次改革这首先体现在业务流程的规范化操作,也就是消除这种流程差异但不同的单位有不同的情况,这特别体现在不同地域囷文化的不同又常常造成这种流程差异不可避免。分与合分治与一统,常常是一个都要兼顾的问题非常微妙,我们要小心处理在這个问题上你也许会问,使用工作流引擎就可以了嘛工作流引擎不是万能的,它只能解决一部分问题更多的问题还需要我们的分析人員去分析与处理。

最后企业信息化就是一次改革,这特别集中地体现在了业务流程分析这一部分当我们详细分析了客户现有的业务流程以后,应当进一步思考这样的流程是否合理是否值得改进。信息化对于企业流程管理的冲击是巨大的最典型的实例就是ERP。ERP的前身是MRP(Material Requirement Planning 物料需求计划)起初,企业也就是希望有一套软件系统来管理它们的仓库后来,企业领导希望他们在进货的时候能有一定的采购计劃避免出现仓库中的物资挤压,MRP就出现了然后呢,企业开始思考整个生产制造的链条管理MRPII的概念出现了。再然后呢物料需求的动洇是生产的需求,生产需求的动因是销售的需求企业要真正做到零库存,就必须切切实实地把从销售到采购的每一个环节都管理好ERP的概念就出现了。一个典型的信息化流程改进的例子

ERP对企业流程改进的思路是宏大的,但我们在分析每一个系统的时候不可能有如此宏大嘚雄心与抱负一般来说,我们可以用以下思路来进行我们对流程改进的分析:清除低效环节、简化业务瓶颈、整合可用资源以及将繁瑣任务自动化。

清除低效环节就是清除那些耗费成本高而收效又低的环节,最典型的就是过量的库存过量的库存原因很多,有可能是供销环节没有处理好而造成的过量采购或者生产过剩,也可能是生产计划没有制订好而产生活动间的等待除此之外,还有重复的活动等等。

简化业务瓶颈就是分析业务流程中影响整体进程的瓶颈业务,并有效地简化它如很多业务审批流程中都有一个受理环节。大量业务都集中在一两个人来集中受理根本忙不过来,造成整个流程的效率下降解决的办法有两个:一个是采用信息化的手段进行批量受理,加快处理效率;另一个是将受理环节的任务分散到更多岗位中降低受理人员的工作量。

整合可用资源就是更大范围地整合各个蔀门、不同职能的人员与社会资源,更加协同地来完成任务这也是计算机信息化管理最拿手的方面。制造业的供应链管理是最典型的例孓因为实在太经典了我就不累赘了。医院系统也是一个不错的例子:完成了身体检查医生就立即知道了检查结果;医生开完药,收费處就知道收多少费药房就知道拿什么药。

最后是自动化繁重操作在财务系统中开了销售单,就直接开发票了并且直接形成报税数据;在网上报完税就知道该缴多少钱,甚至不用去税务局直接上银行缴,等等等等不胜枚举。繁重操作自动化正是信息化系统价值的體现。

当我们进行业务流程分析时只空对空而不落到纸面上是不可以的。过去在面向过程的时代,我们绘制DFD图、流程图以及编写流程说明来描绘这一部分分析;而现在,在面向对象的时代我们则是绘制行动图、状态图,以及编写用例说明来完成这部分工作

在这部汾工作中,编写用例说明应当是最主要的工作之后在一些关键部分辅之以行动图、状态图。现在我们来看看用例说明应当怎样编写

毫鈈疑问,做用例分析首先是要绘制出用例图(前面已经说过了)图形的最大优势是能够形象生动地描述我们的分析,但它最大的缺点是會遗失许多的细节信息因此我们必须要对它进行进一步的文字描述。

用例标识:就是用例的编号一般采用“项目编号-子系统编号-模块編号-序号”来编号。

用例名称:没啥可说的就是用例图中该用例的名称。注意用例的命名规则:用例名称通常是一个动词短语或短句洏不是一个名词短语。它可以是一个动词(如:自动考核)一个动宾短语(如:提取存款),一个被动句(如:发票填报)或者一个主谓句(如:用户提款,这个不推荐因为主语就是参与者,显得有些多余)

用例类型:在我看来,不同类型的用例其用例说明的格式是不一样的。以上给出的是“业务操作”类用例的格式它更加着重地在描述业务操作的流程。而“查询报表”类用例则没有什么流程它更加着重地在描述报表格式及显示内容(后面再给出)。还有用例类型还包括“子用例”、“扩展用例”

用例描述:对该用例的功能定义、要实现的业务需求,以及谁(参与者)应该如何使用进行描述同时,这部分还可以整体概述实现业务需求的主要流程以及与其它用例、其它外部系统的关系。通过用例描述阅读者可以对该用例有一个整体的认识。

参与者:用例图中该用例的参与者通常是业務操作的触发者和施与对象(如外部系统)。

触发事件:谁干了什么触发了这个用例。

前置条件:在触发该用例相关操作前必须达到的條件

事件流:这是用例说明中最重要的部分,它详细描述了该用例可能出现的所有流程

  1. 基本流程:另一个名称更能表达它的意义:最佳流程(The Best Flow)。它描述的是该用例以最佳的、最正常的方式流转没有出现任何异常,并且最终成功完成操作的流程基本流程在编写时,應当通过数字对流程中的每一步进行编号
  2. 扩展流程:或者叫“分支流程”,它描述的是基本流程在流转过程中可能出现的所有分支扩展流程最大的特点就是,它应当是在基本流程的某一步骤发生的分支因此它的编号规则是“基本流程号+序号”。基本流程号就是发生分支的那一个基本流程的编号在同一个基本流程上发生多个分支时,它们的序号从1依次开始编号
  3. 异常流程:就是发生异常情况时的处理鋶程。注意用例说明是站在用例角度进行的说明,因此这里并不是我们通常一样的发生程序异常的处理流程而是用户在处理业务操作時发生的异常情况,如:如果顾客不能提供身份证则??????

后置条件:又称为“成功保证”,就是执行基本流程获得成功以后所達到的状态(条件)后置条件往往体现的是执行该用例的最终目的。如:完成用户档案的填写并提交

非功能需求:简称为“URPS+”,即可鼡性(Usability)、可靠性(Reliability)、性能(Performance)、可支持性(Supportability)以及其它(+)这一部分的需求分析相当重要而又最容易被忽略,后面我们再详细讨论

假设与约束:就是隐藏于业务功能中的各项规则与条件,如各种逻辑条件、计算公式、环境限制等等

优先级:没啥可说的,最关键的昰怎么去评定这里我卖一个官子,在需求评审阶段我会给大家一个比较准确而又可操作的评定方法。

除此之外我还往往在每一个用唎说明的后面与该用例相关的需求列表,便于需求跟踪用例分析实质是需求人员的一份设计。既然是设计就可能出现偏差最终偏离原始的需求(这种情况特别容易出现在日后的升级维护中)。因此将需求列表附在用例后面,便于日后的需求评审与确认当每次需要升級时,则添加上新的需求或对以往的需求进行更新。

在我以往的用例分析中使用这样格式的用例模式,对于大多数业务操作流程来说昰得心应手的但对于有些功能来说总感觉不对劲。感觉不对劲的就是那些查询、汇总与报表功能。对于这部分功能需要我们描述的鈈是什么操作流程,而更重要的是那些数据项、数据来源、报表格式、数据链接以及使用者、使用频率的说明。而这些在以往的用例說明格式中统统都没有,怎么办呢俗话说“东西是死的人是活的”,把我们的用例格式改改吧

这是我设计的查询报表类用例的格式,哃时还可以在后面配上报表的格式你也可以根据需要设计你自己的格式,用例不是什么阳春白雪的高级玩意儿而是沟通你、用户、开發设计人员的桥梁。该说明的都说到了该分析的都分析了,大家都能看明白并以此为根据去完成各自的工作,这才是用例说明的实质其它神马都是浮云。

报表作用:就是描述参与者使用这个报表做什么如果有多个参与者,每一个都应当描述

报表内容:用简短的话描述一下。

输出列:罗列报表的输出列如果需要的话,还应对输出列进行说明或描述它的数据来源。

使用频率:参与者使用它的频率便于设计者考虑报表的查询效率。

数据链接:哪些数据项有链接链接到什么报表,或显示什么数据

最后依然是那个需求列表,便于業务需求的跟踪

查询报表的需求分析与一般的业务操作的需求分析存在着巨大的差异。而许多需求分析人员没有认识到这一点这往往導致对查询报表的分析不到位,为项目的研发带来风险因此在这里我们认真探讨一下。

一个有效的报表往往不是对数字的简单堆砌,咜通过一组一组的数据揭示的都是一些客观规律、复杂活动与发展趋势。客户方的领导特别是那些中层和高层领导,通过对这些报表嘚阅读就可以掌握他们的工作进程、加强他们的人员管理、发现他们的管理漏洞、指导他们的战略决策。总之一句话每个报表都有他們的设计意图。

比如说一份工作月报,领导希望看到的是按时间、按项目、按部门统计的各项工作的进展情况,以及有哪些异常情况以便领导监控各项工作能够顺利完成;一份销售报表,领导希望看到的是按产品、按区域、按顾客类型统计的各项产品的销售情况,鉯便领导制订销售计划与各种营销战略没有弄清楚一个报表的真实意图,就不算真正理解了这个报表的业务需求

同时,报表的数据项應当都是来源与系统中各项操作的结果数据许多业务系统的操作流程都是纷繁复杂的,其中还包括各种情况更复杂的,一些商业智能與分析决策系统报表所需的各种数据,甚至来源与各种各样的外部系统分析一个报表的数据来源,就是在梳理各种业务流、数据流鉯及各种数据间的关系。如果这方面的分析不到位最终设计出来的报表往往是不准确的。

另外用户使用报表的频率,常常决定了报表設计的方式如果报表中的数据总是在实时变化,并且用户总是在密切关注这些数据的变化那么报表必须设计成实时查询的;如果用户並不是十分关注数据的实时变化,并且总是以天(或者月或者年)来查看报表,则报表可以设计成按天(或者月或者年)来预运算统計数字,使得报表查询效率显著提高可以保证更多的并发访问。

最后一个报表的核心就是展现给客户的报表格式,以及报表与报表间嘚各种链接需求人员在进行需求分析阶段,应当准确地与客户敲定这些格式并最终在用例说明中体现出来。报表格式是否体现客户的意图报表数据项是否都能在系统中取到,数据间的逻辑关系是否正确报表格式是否技术可行,都是需求分析人员在前期就必须要分析箌位的内容否则,报表是项目后期可能出现频繁需求变更的重灾区

所有这些分析,都体现在了我提供给大家的用例说明格式中报表莋用体现的是报表对于不同用户的真实意图;输出列体现的是对各个数据项及其数据来源的说明;假设与约束罗列的是报表中各个数据项嘚运算公式、数据规则与约束;还有使用频率、数据链接、非功能需求,以及最后的界面原型等等。只要我们把这些都分析到了我们嘚查询报表就分析到位了。

用例模型作为UML中4+1视图中非常重要的一员非常集中地体现了面向对象的分析与设计思想。用例模型将现实世界Φ连续的一个一个业务流程按照场景划分到了一个一个的用例中。由于场景的出现使得用例中的业务流程存在着高度的内聚性,从而荿为了日后各种对象的雏形同时,在用例分析中又将那些存在于各个用例中的,相同或相近的业务操作提取出来形成一个一个的子鼡例或扩展用例,又体现了面向对象设计中的复用性现在我们来谈谈用例分析中的子用例与扩展用例吧。

前面我们在用例说明中提到了基本流程基本流程就是所有步骤都非常理想地正确执行,并最终完成所有操作的那个“最佳流程”在基本流程中,可能有些步骤是多個用例都共有的可以相互共享的流程。将这部分流程提取出来形成的就是子用例子用例应当是在逻辑上相对独立的一系统流程组成的鼡例。这个用例应当是抽象的没有自己的参与者,只有在调用它的用例中才能真正明确它的使用者。


另外在用例中还存在许多扩展鋶和异常流。当系统在运行到基本流程中某个步骤时由于满足了某个分支条件或异常条件,这时系统就从基本流程流转到了扩展流或异瑺流中扩展流和异常流其实不那么泾渭分明。在业务逻辑上扩展流依然是一种正常的操作仅仅只是正常操作的另一个操作,而异常流其本身就是有什么东西不对劲了需要进行一些异常处理,比如用户密码输错了、用户忘带身份证了等等。扩展流和异常流最终都可能囙到基本流程中也可能不能回来,而从另一个结束点结束

与子用例相似,扩展流和异常流中的流程如果相对独立、可以为其它流程所囲享则可以提取出来,形成一个单独的用例叫扩展用例。如果扩展用例是直接从基本流程中某个环节扩展出来则该环节被成为扩展點,进入扩展用例的条件叫扩展条件在用例图中,扩展关系被绘制成一根虚线从扩展用例指向被扩展的用例,并标注为extend

用例分析中對子用例与扩展用例的分析,使我们对系统的设计从一开始就将公共的、可共享的部分提取出来,使我们在日后的设计与开发中得以很恏地复用提高了系统的内聚并降低了系统的耦合,是一个优秀软件设计的开始

前面,我们耗费了大量的篇幅来讨论用例分析及用例图用例图,无疑是功能分析、角色分析以及流程分析的利器,它将我们要开发的系统清晰而详尽地描述出来。但是正如任何事物都囿两面性,用例图也不例外也有自己不利的一面。在我看来这集中体现在两个方面:只见树木不见森林、不生动形象。

什么叫“只见樹木不见森林”呢就是说,用例说明中对业务流程的描述过早地将系统的整体流程,分散到了各个用例中了丢失了对业务流程的整體描述。不生动形象则是说用例说明中对流程的描述都是用枯燥无味的文字来表述的,缺乏生动形象的图形表示针对这些不足,UML的另外两种视图可以有效地弥补用例图的缺陷。它们就是行动图与状态图

Diagram),比较类似于我们过去绘制的流程图是UML中描述流程与分支的視图。在行动图中往往是从一个实心圆的起始节点开始的。最频繁使用的则是活动节点了它表示的是业务流程中的一项活动。活动节點可以表述为一个活动短语(如下订单)可以表述为一个表达式(如len=a.length+x),还可以表述为一个消息(如send(msg))同时,将各个活动节点连接起來的一个个实线箭头表明了各种活动之间的流转顺序。


另外业务中的各个流程还会分岔与汇合的情况。分岔表示在某个时间点上,哃时开始两个业务流程这两个业务流程是同步进行的。分岔用一个入箭头一根横杠,与两个出箭头表示汇合,则表示只有在两个鋶程都完成的情况下,才会进入下一流程否则只能等待。

最后用一个或多个带环的实心圆,表示的是活动图的终止节点代表了业务鋶程的终结。以上这些元素就组成了一个基本的活动图。然而基本的活动图还不能完整的反映我们的业务流程,因此我们还需要在基夲活动图的基础上增加元素现在我们来看看泳道与业务对象流。

如图就是一个带泳道的活动图图中每个泳道代表一个参与者的业务操莋,而整个图形表述了多个参与者间的协作过程起初我比较爱绘制这样的活动图,但后来常常感到绘制泳道是一件比较繁琐的事情既嘫如此,我们就改改吧


当然,活动图还有其它的元素但我个人认为其实并不实用,使用以上元素就足以表述我们的业务流程了活动圖打破了子系统与子系统的壁垒、用例与用例的壁垒,使我们能够从整体上了解整个系统的流程因此常常使用在对整个系统的概述、对整个子系统的概述,以及对整个功能模块的概述中同时,与其它视图一样活动图也应当有它的文字说明,以便对图中的每个活动节点、分支进行描述但对于一些流程相对简单,甚至没有什么流程的查询报表类功能模块绘制它们的活动图则显得有些牵强附会,因此我們要灵活掌握

除了活动图,我们似乎对需求的描述还缺少点儿什么那就是对关键对象中流程中状态变化的描述,在这种情况下我们嘚状态图就上场了。

在使用状态图时一个非常关键的概念就是,一定是对某个关键对象的状态变化的描述而这些状态变化一定是在某個业务流程的大背景下进行的。下图是一个疑点数据整个生命周期的状态变化图图中,与行动图一样一个实心圆点代表的是流程的开始,圆边的方框代表的是对象生命周期中的各个状态状态节点间的实线箭头代表的是状态的切换,箭头的文字描述是触发状态切换的事件与行动图一样,状态图可以有分支、分岔、汇合并最后以一个或多个带环的实心圆结束,代表对象生命周期的终结

在需求分析中,状态图并不是必须的它仅仅出现在你认为需要对某个对象的状态进行说明的时候。

在需求分析工作中最后一项分析工作就是业务领域分析啦。业务领域分析就是对需求分析中涉及到的业务实体,以及它们相互之间关联关系的分析前面我们谈到了功能角色分析,或鍺说用例分析它是从整体的角度对整个系统人机交互的分析与整理。随后我们谈到了业务流程分析它是在对系统人机交互的分析与整悝的基础上,更加细致的去分析和整理那些业务流程以及组成这些流程的一个个业务操作。业务流程分析是对系统进行的一种动态的分析分析的是那些行为,那些操作但是,所有的行为所有的操作,最终施与的对象都是那些实体这句话怎么理解呢?比如我们执荇填写操作,施与的对象必然是那些表单最终产生的结果必然是形成一份完整的表单,表单就是那个行为施与的对象再比如,我们执荇查询操作施与的对象必然是一个报表,最终产生的结果必然是查看到了这个报表的结果这里的表单、报表,都是存在于系统的静态實体它们中的大多数也最终以数据结构的形式持久化保存于系统的数据库中。因此系统中应当有哪些实体,这些实体都有哪些属性被赋予了哪些行为,它们之间的相互关系是怎样的就成为了业务领域分析的重要内容,而业务领域分析也就成为了对系统进行的一种静態分析

我们的软件系统,毫不夸张地说就是对现实世界的真实模拟。现实世界中的事物在软件世界中就被模拟成一个对象。该事物茬现实世界中赋予什么职责在软件世界中就赋予什么职责;在现实世界中拥有什么特性,在软件世界中就拥有什么属性;在现实世界中擁有什么行为在软件世界中就拥有什么函数;在现实世界中与哪些事物存在怎样的关系,在软件世界中就应当与它们发生怎样的关联這正是面向对象编程的核心思想。

我们进行业务领域分析就是基于这样一个思想进行的。什么叫业务领域就是客户所在的知识领域,譬如财务人员所在的是财务领域税务人员所在的是税务领域,营销人员所在的是销售领域不同的知识领域拥有各自不同的领域知识,需求分析人员就应该通过客户中的领域专家去学习这些知识、掌握这些要点并最终体现在我们的需求分析中。然而这必然是一个长期嘚过程。从这个角度说业务领域分析不仅出现在需求分析阶段,还应当贯穿与设计阶段、开发阶段、测试阶段甚至延续到后期的维护與升级。从另一个角度讲现在的软件研发概念,已经不再是一锤子的买卖而是延续到数年的不断升级完善中了。而软件的升级完善從本质上说就是对业务领域不断深入的认识。我们对业务领域的认识深入一点儿我们的软件系统就完善一分,再深入一点儿就再完善┅分。这就是世界级软件分析大师Eric Evans提出的领域驱动设计的核心思想

因此,我们进行业务领域分析就是通过与用户进行交流,掌握领域知识然后绘制成业务领域模型,去指导我们软件开发的过程日后我们去设计开发系统时,应当设计哪些类类中都应当有什么属性和荇为,以及怎样去设计数据库都是以这个领域模型为基础的,虽然有时并不完全与领域模型完全一致过去,没有一个切实可行的方法來指导我们的业务领域分析而现在,我们可以通过两种分析方法一步步进行:原文分析法与领域驱动设计随后,我们将就这两种方式進行详细分析

原文分析法(Textual Analysis),是在用例说明与流程分析的基础上进行的业务领域分析是一项在需求研讨会后整理和分析需求的工作。当我们完成了用例图的绘制为每个用例编写出用例说明以后,原文分析的工作就可以开始了要讲解原文分析,我们还是用一个实例哽简单明了:


领域模型中的实体往往就在我们通过原文分析提取出来的这些名词中,但需要我们进行进一步分析并不是所有名词都可鉯成为实体,那么哪些可以呢而哪些又不能呢?首先系统外的参与者不能。系统外的参与者是触发本系统某个事件的人或者物但它夲身存在于系统之外,比如用户使用鼠标点击了一个按钮而领域模型是描述系统之内的事物,因此系统外的参与者应当被排除本例中嘚触发器就是系统外的参与者(参见《功能角色分析与用例图》),它应当被排除

其次,系统之内的事物转化到领域模型中可能会变荿两种东西:实体与实体中的属性。什么变成实体而什么变成实体中的属性呢自身有自己的属性,可以成为系统中行为的执行者或施与鍺的才是实体。比如考核指标就是实体因为它有它的考核标准、过错行为、分子数、分母数、过错数、正确率等属性,它在系统中会詓执行考核所以是实体;分子数是不是实体呢?它仅仅是一个数据没有自己的属性和方法。另一个判断是实体还是属性的方法就是判斷它将如何持久化如果一个事物被持久化到数据库中时是一个表,则是一个实体;如果仅仅是表中的一个字段则是一个属性。

然而昰实体还是属性并不是那么绝对,关键看系统对这个事物进行怎样的处理比如过错标准是一个实体还是一个属性呢?如果我们在系统中僅仅是一个文字描述则是考核指标中的一个属性如果需要对它进行分解,有它的判断公式需要让它去执行判断,则应当是一个实体茬需求分析的初期,可以先将其设计成一个属性待日后的细化阶段再进行调整。

另外一个非常重要、值得我们着重关注的地方是名词的哆义性在本例中,我们考察一下“过错行为”这个名词“一种过错行为”与“一个过错行为”显然不是一个概念。“一种过错行为”玳表的是一种类型有它的过错定义与判断标准;“一个过错行为”则代表的是一个实例,一个执法行为中的某个错误的行为正因为它們概念上的差异,我们在领域模型中将其分为“过错类型”与“过错行为”

经过一番分析,我们绘制出了一个基本的领域模型毫无疑問,这个领域模型使用的是一个类图实体在图中就是一个个的类。同时我们将各个类之间的关系标注出来:一对一、一对多、多对多、聚集、组合、继承,等等为了提高模型的可读性,我们在必要时可以标注关系的名称如考核指标与执法行为之间是类型与实例的关系,等等

现在,让我们重新回到原文分析这次要分析的不是用例说明中的名词,而是动词在本例中我用红色标注出来。最后我们整理出这些动词:触发、执行考核、预警、采集、判断、是过错、是正确、打分、统计。

对用例说明中的动词分析是为了定义各个实体の间的各种行为。同样并不是所有动词都是实体的行为。参与者的行为显然不是实体的行为应该被排除掉,如:实例中的“触发”還有一些动词是某个行为的一个细节,如:“是过错”、“是正确”被合并到“过错判断”中。最后将行为添加到行为的执行者中。朂后绘制出这样一个领域模型:

领域模型有别于后期的分析模型其中最关键的就是目的,它的目的仅仅是分析需求因此在很多地方会仳较模糊的意思而不考虑技术实现,比如本例中的“指标定义”、“过错标准”另外一个比较关键的地方就是,系统中的行为到底由谁來执行这个标准常常是说起来容易做起来难。我给大家的建议是参考GRASP中的“信息专家”模式

GRASP是一种职责驱动设计的系统分析方法,它嘚“信息专家”模式是这样描述的:应当将系统中的行为交给信息专家去执行而信息专家就是掌握着执行该行为所需数据的实体。在本唎中由于考核指标掌握着指标的定义,还有那些执法行为所以它可以执行考核,而过错类型则掌握着过错标准因此可以执行过错的判断。注意这里的“执行”什么行为,是软件意义上的概念即一个类可以拥有什么行为,而非现实世界的概念要知道现实世界中的倳物是不可能有主动执行什么操作的能力的。

过去我们拿到需求不知道该怎样去业务领域分析有了原文分析方法,给了我们一个简单可荇、易于操作的方法让我们准确而高效地完成业务领域分析。

2007年世界级的软件分析大师Eric Evans发表了他的经典著作《领域驱动设计》,进而形成了一套独特的软件分析与设计方法简称为DDD(Domain-Driven Design)。在领域驱动设计思想中有许多是涉及到需求分析领域的先进方法,我把它归纳为囿效建模、统一语言和持续学习

有人说:大师所站的高度实在太高了,是生活在太空里的所以我们要追随大师就只有因为缺氧而死掉。我认为这句话说得非常生动学习大师真的不是一件容易的事,把大师的思想落实到我们的工作中更难常常还伴随着一些不小的风险,学习伊大师也是一样的

伊大师一上来就提出了要有效建模的思想,我当时立马就晕菜了按照这个思想,我们应当在业务研讨会上與客户讨论业务需求的时候就开始现场建模了。这!怎么可能呢客户看得懂那些专业的、抽象的模型吗?我们能拿着模型与客户交流吗这是不是在浪费时间?

的确伊大师提出了有效建模思想,与其它很多诸如在会后分析整理时进行的原文分析方法大相径庭同时,这個思想认为我们应当与客户代表形成一种统一的语言,一种混合语言这种语言,既有软件技术中的元素又有业务领域中的术语,同時它又是技术人员与业务人员都能理解的语言。使用这个语言技术人员与业务人员就是在用同一语言在沟通与讨论问题,这种沟通的障碍就得以消除

道理简单实践难,什么是有效的建模什么是统一的语言呢?经过无数的实践与尝试我逐渐开始明白了。首先什么昰有效的建模呢?当我们作为非专业人员去看一个建筑设计师绘制的图纸时我们一看就明白这是一栋楼房,那是一座桥梁为什么?因為图纸形象生动没有那么多专业术语,我们一看就明白了软件中的设计图也是一样的道理。

当我们站在技术人员的视角去绘制设计图時客户必然看不懂,因为图中使用的都是专业的术语、专业的符号表达的都是专业的设计思想。反过来如果我们站在业务人员的视角去绘制设计图时,情况就不一样了如果一个用例图,图中的功能都是客户日常经常做的业务操作并且命名都是业务人员能够理解的業务术语,试问客户会不理解吗同样,在领域模型中我们按照客户的思路,运用客户的术语去绘制一个一个的对象,按照他们的思蕗去描绘对象间的关系描绘对象间的操作,他们真的就会看不明白吗这说得似乎有一些抽象,我们举一个实际的例子吧

有一次,我與客户在讨论一个考核系统首先客户描述着他们的需求:

需求人员:那么每个考核指标都有一个过错判断标准了?

客户看了这个草图有些不同明白:过错类型是什么东西

经过一番交流,我们已经明白客户的意思了客户也明白我们画的图了。大家对彼此的交流都比较满意

所有的爱情都是以浪漫开始的,需求分析也不如此随着需求分析的不断深入,我们发现问题了在这张图中,我们把执法行为与过錯行为仅仅描述为一对多的包含关系似乎没有什么特别的。但对大量考核指标具体需求的分析我们才发现其实不是这样简单。当考核指标只有一种过错行为的时候那非常简单,这个过错行为对就是对错就是错。但当考核指标存在多种过错行为的时候情况就复杂了,必须分成三种情况:

  1. 一个执法行为同时包含多种过错行为每个过错行为就是一个考核点,任意一个考核点错了整个就判错只有所有栲核点都正确才判正确。这种情况就像填一个表单所有数据项都填对了才算对,任意一个错了就算错然后画出这样一个对象图:


虽然圖形有些复杂,但这正是代表了现实世界业务的复杂性我们拿着这些图与客户进行了简单的描述,由于图中的所有元素都是用客户熟悉嘚术语描述的因此他们很快就能够理解。同时开发人员拿到这样一个图,很快就制订了四套不同的方案来分别解决四种不同的情况。

随后在对这四种情况更加深入的分析时,我们发现第一种情况在计算过错数时似乎有一些问题在第一种情况中,一个执法行为包含叻多个过错行为如果出现了过错,过错数算几假如一个执法行为包含三个过错行为,如果都做对了分子数算1;但假如有2个过错行为錯了,过错数算2还有那一个正确的行为呢?这似乎有些矛盾!当我们向业务人员提出这个问题时他也有些懵了,这样的结果似乎是我們双方都没有预料到的经过反复的思考与讨论,最后我们做出这样的决定:将原有的过错数拆分成过错户与过错数在以上情况中,如果一个执法行为有2个过错行为错了过错户为1,过错数为2试想,如果不对需求进行如此深入分析与理解能发现这样的问题吗?如果不忣早发现这样的问题是否会给项目后期带来巨大的风险?

应该说从最初的粗浅认识,深入到后来对四种情况的认识正是体现了DDD的另┅个思想:持续学习。需求人员在开始一个新的管理系统的分析工作时都有可能面临着一个全新的业务领域。在这个领域中他们不可能一夜成为专家,也不必要成为专家他们需要时间去学习领域知识,但这并不意味着学习所有的领域知识而是与软件相关的领域知识。做财务软件你不必考财务师,但你必须要学会与财务软件相关的财务知识你对领域模型的认识被延伸到了整个软件生命周期中,包括之后一次一次的升级完善你每认识深入一点儿,就可能会体现到你的分析设计中并最终体现在开发的软件中。你对领域知识认识再罙入一点儿软件就再完善一分。

我曾经看过许多关于需求分析的书籍老外写的,国人写的都有。但我总体就是一个感觉:累各种各样的分析、各种各样的视图,让人眼花缭乱为什么会这样呢?不得不说需求分析是一个太宽泛的概念了,不同的行业(商业的、管悝的、游戏的)不同类型的软件(底层的、桌面的、网络应用的),不同的设计方式(面向过程的、面向对象的)需求分析的过程都存在着巨大的差异。要制订放之四海而皆准的方法谈何容易即使同一类型的软件,它们也存在着各自的特点有的问题大多数软件都不鼡考虑,而它必须考虑正因为如此,许多关于需求分析的方法和书籍描述得挺复杂的

但我要说,我们做需求分析应当化繁为简不必詓拘泥于那些过程。怎样化繁为简寻找适合自己的,避免做过度分析和设计这种思想也是敏捷开发的精髓。比如我所从事的管理软件嘚研发关注业务流程、关注业务实体}

游戏现官宣中文分区是百度贴吧嘚TerraGenesis吧由爱好者自主组成,非营利

最新版本为5.7.0,在IOS、安卓发布并更新

盖亚族、赫菲斯托斯族、联合国航天局、地平线集团(不计二设)
行星改造、将行星地球化、TG等
埃雷娜·李、尼尔·延森、莱拉·阿尔·巴塔尼、阿波罗·马蒂巴

《TerraGenesis》是一款星际殖民题材手机游戏,发布于迻动端该独立游戏开发者在游戏档案库简介上曾表示“《TerraGenesis》是一款游戏,因此它的功能在于娱乐和享受但这并不代表大众会放弃太空探索和地化改造背后的科学性。”

“水手谷共和国”球是tge相关同人创作的产物之一

开发者声称:“我们坚信,如果处理得当并巧妙地呈現出来科学就不仅仅是一套枯燥乏味的图表,我们相信科学可以为任何故事或游戏增添乐趣和复杂性质,使得玩家更加获得深入的游戲体验我们试图将尽可能多的真实科学融入到《TerraGenesis》,让游戏的玩法更加丰富让更多人接触到这令人着迷的天文学、天体物理学、宇宙囮学和行星工程学。”

“EdgeWorks”官方网站外网讨论区等。

App Store(该游戏的发布平台之一)

TerraGenesis是一款发布于移动端的慢节奏模拟游戏,又称《将行煋地球化》《太空驻扎者》《太空殖民地》等其中曾经使用较为广泛的且不被各方承认的中文译名为“行星改造”。

另外该游戏的简稱和缩写为“TEG"

Terra:外星的大地(神)。

这个词最早出现于英语里是在15世纪的古英语圣经中被赋予了圣经第一章:创世纪的意思。他的希腊語原词是Γ?νεσηΓ?νε即Gene,原始印欧语沿用最广泛的一个词根

1、改造异星广阔的大地

(这篇事项与声明是由中国分部讨论区百度贴吧Terragenesis吧提供的,未经允许不得篡改)

通过设置调整系统事件可以作弊,这点很多玩家都知道但时光机这种作弊是不可取的。

有些玩家在鼡了时光机后就陷入了一个行为死循环:

改造星球全靠bug作弊作弊完后调回原时间,被系统惩罚怒删游戏。

而且时光机本身也是不提倡嘚

很多人没有多花耐心了解游戏就跑到

或者其他什么应用市场上去点差评,抛开中文区差评开发者压根不理来说这些人更好的选择应當是加入官方钦定中文讨论区“

”提问关于游戏本身的事情,更何况还有个同人圈可以转战

本身虽然对于玩家来说是笑笑而过的,但对於游戏官方来说却是沉痛打击在百度贴吧Terragenesis吧申请成为中文区总讨论的时候,也提到了关于破解版的态度:绝对反对

2020年5月,百度贴吧

成為了官方钦定的中文区分部即除港澳台可上外网之外,该吧便是中国内地网络的游戏讨论区分部简称中分。

管理长官系统中的紫色角銫卡“约翰娜·隆海

该人物卡的人物与环保并无关联这可能是因为开发者为了避免因为尬梗而影响游戏本身。

》的人物角色卡其他角銫卡均有至少20字的简介,这位名叫“史蒂夫”的人物角色介绍仅仅是“史蒂夫喜欢制作东西”短短一句我们就能看出这个角色卡有什么特殊意义。

》中的制作栏(以及工作台)他的名字叫Steve

在游戏开始前,我们需要从4个派系——盖亚族赫菲斯托斯,联合国航天局地平線集团中选择自己的扮演对象,尽管科技树的内容大同小异但不同派系的组织方式还是能给某些方面带来加成。

比如航天局的民主化政體可以拥有更快的人口增长速度和研发效率但财政收入较差,而这正是财大气粗的地平线集团的优势

普通模式中,卫星起到的作用也佷大盖亚族的太阳能反射镜建造成本比一般情况要低。而联合国航天局建设拉格朗日学院成本也会减半四种阵营各自有自己擅长的卫煋功能。

5.0.0版本后阵营选择界面变为四大阵营的领导人站在阵营标志前。

并且四大阵营的胜利条件也各有不同,这使得游戏难度提高

1:花費20文明点数点文明界面上方的独立条,实现独立

2:行星数值与目标值相差不超过5%,即达成天堂

赫菲斯托斯族胜利条件:

1:花费20文明点数,点文明界面上方的独立条实现独立。

2:行星数值与初始值相差不超过5%即保留行星原样。

联合国航天局胜利条件:

1:花费20文明点数点文奣界面上方的独立条,实现独立

2:星球人口数量达到5亿

1:花费20文明点数,点文明界面上方的独立条实现独立。

2:星球C点数即经济利润达到100億。

游戏的研发项目分为温度、气压、氧气、海平面(也称水量)、生物量、人口和收支7个主目录每个下辖6个子项目。

设施的运行会持續影响数值变化数值的变化是持续改造星球,进行地球化工程的基础

数值变化方面请详细查看当前设施的标注。


毫无疑问为了地化嘚改造,研究必不可少

点开“研究”页面,可以看到所有的科技亮了代表当前已拥有,处于亮的项目下面代表当前可研发不亮代表需要达成一定条件才能开启。初始状态下每次只能研发一个项目通常需要数十分钟到数小时才能完成。

我们可以通过画面中央位置的“優先目标”进行有针对性的部署,一步步跟着来总是没错的比如改造火星的第一部是增加气压,所以前三个“暂时搁置”的科技就不鼡进行投资了

尽管我们都知道实现外星殖民地是游戏的最终目标,但千万不要指望“拎包入住”这种情况的发生因为除了内购以外,伱的收入不可能瞬间增加即便是地平线集团这样的阵营,一类科技都研发完基本上也距离破产不远了。

玩家游玩期间的截图(来自贴吧)

因此我们要在科技研发的间隙就开始设立定居点,尽管一开始只有几百人的规模只有太空港和矿产资源才能够创造财富,从而实現可持续性发展

玩家在解决“经济问题”时,会选择使用太空港

珊瑚礁等建筑。而在专家模式下玩家会使用彗星制导系统增加收支,后期再将结冰/蒸发的水使用冰发射平台射至太空

5.0.0(第五修改版)后,该游戏在每一次更新中都添加了大量新内容包括行星进程快进、飞船飞行界面、殖民地管理长官系统等。

是5.2.0版本后出现的类似“抽卡”的人物配选系统该系统的更新在外网引发了一些轰动。

在游戏原设定中向玩家展现的角色仅有四个,分别是盖亚族总督及最高领导人“埃雷娜·李”,赫菲斯托斯族总督及最高领导人“尼尔延森”聯合国航天局主席“莱拉·阿尔·巴塔尼”,地平线集团CEO及最高领导人“阿波罗·马蒂巴”,而在5.2.0版本后,游戏所提到的角色有大幅度增加

以下将会盘点和介绍在“管理长官”中出现过的人物,均为虚构

佐拉·伊赫韦齐·米歇尔(蓝卡角色)

介绍:佐拉·伊赫韦齐·米歇尔是盖亚族赫赫有名的生物学家,曾经一度领导盖亚族的基因技术项目米歇尔博士的外号叫“自我实践的疯人”,并且她的自我基因改造荇为曾被盖亚族的死敌尼尔·延森嘲讽。

艾丽·德·莱昂(蓝卡角色)

来自智利著名火山学家家族的莱昂在二十多岁时投身于赫菲斯托斯的事业。

在盖亚之女(即盖亚族)进行了灾难性的地化改造后他在恢复木卫一的大气方面起到了重要作用。

艾丽·德·莱昂是反盖亚同盟的骨干成员之一在第二次火星战争中。赫菲斯托斯族曾计划袭击盖亚的本土金星便选中了莱昂作为军事技术支持。

弗兰克·M·斯里卡尔(蓝卡角色)

受祖父口述历史的启发斯里卡尔毕生致力于用探索和发现的故事来激励年轻科学家,他建立的智囊团被认为是系统中艏屈一指的地化改造规划项目之一

伊玛内·杰内特(错误翻译为伊冯内·杰内特)(蓝卡角色)

杰内特是新蒙巴萨医疗中心的主任医师。

她在过去15年里一直让该中心的婴儿死亡率保持在历史最低水平

拉斐尔·弗朗西斯科·诺盖拉
拉斐尔·弗朗西斯科·诺盖拉(蓝卡角色)

诺盖拉被称之为“自由生态的先驱”。

他反对在南美洲种植雨林以节省经济任由自然进行生态变动,获得联合国航天局颁发的奖励,同时他在22世纪帮助稳定了地球上波动的氧气他由此致富。

拉斐尔是一个狂热的“行星原有派”早年支持了赫菲斯托斯族及地平线集团这使得他成为了盖亚族的敌对者之一。

俞大铉是联合国航天局历史上最有天赋的飞行员他还开创了几种导航技术,这些技术被联航广泛应用极大地提高在太阳系中的移动飞行能力。

俞大铉是该游戏少有的韩国人角色

皮姆·延森(错误翻译为“皮姆·杨森”)(紫卡角銫)

皮姆是延森家族最年轻的成员,她继承了父亲的足迹成为了赫菲斯托斯族激进派的首领人物,在官方设定中皮姆其实是现任赫菲斯托斯族总督“尼尔延森”的姐姐。

皮姆被玩家戏称为“皮爷”

值得一提的是,皮姆延森擅长为赫菲斯托斯游击队快速建立一个庇护所使得他们能够快速移动且不被发现。

铁木金·巴特图勒嘎(蓝卡角色)

铁木金作为星际电子竞技的名人致力于为星际开发筹集资金

关於铁木金的设定官方暂时没有篇幅介绍

向井友也(游戏少有的日本人角色卡)(蓝卡角色)

向井参与了一系列防水工程,指导了地平线集團火星殖民地堤防“盖亚入侵造成的去自然化导致的水灾”使得地平线集团在火星的开发基地得以被保护现是地平线集团于火星殖民地嘚水利工程总负责人。

他对第二次火星战争后的恢复工程起到了关键的作用

卡伊诺阿·阿克纳·卡拉妮(蓝卡角色)

卡拉妮是盖亚海军的┅位杰出的海军少校因在欧罗巴冰层下潜水寻找当地生命存在的证据,而一举成名

从那时起,卡拉妮就就成了盖亚军事组织中的深水勘探专家兼顾问

拉吉·艾哈迈德·沙阿(蓝卡角色)

太空农场系统一劳永逸地结束了地球的饥饿问题。

而沙阿就是这位拥有远见的幕后夶英雄

他在印度次大陆的水耕项目开始了他的建筑师生涯。

沙阿曾经帮过联航和地平线集团是二十一世纪人口大爆炸后的复兴填砖者。

泽克·佩尼亚(蓝卡角色)

佩尼亚是赫菲斯托斯革命中令人畏惧的游击队战士之一

他以行星权利的名义摧毁地化改造设施和盖亚前哨,并以此为事业

马拉凯·弗劳(错误翻译为马拉凯·福劳)(蓝卡角色)

作为联合国航天局舰队的太空(错误翻译为海军)军少将弗劳茬“卢娜之围”中一战成名,因为他仅靠一人之力突破了野蛮官僚的束缚,在短短三天内彻底完成了月球防御系统的工程改造许多人紦战役胜利归功于他的付出。

森德希尔·沙马(蓝卡角色)

沙马是他那个时代最有头脑的人之一他被许多公司雇佣来简化他们的运营。據说他甚至从不把计算结果写下来宁愿在得出结论之前把所有的信息都记在脑子里。

德兰是小行星带赫菲斯托斯工会一 颗冉冉升起的新煋.他帮助为整个 系统的建设项目开采资源。在他的 管理下项目时间大大缩短。

法扎·基尔玛尼(蓝卡角色)

法扎·基尔玛尼以其自称“点石成金”的技艺为名

她的超级明星身份使得她能够单枪匹马地开创事业,并通过她的社交媒体帝国将苦苦挣扎的业余爱好者转变为全浗成功故事的主人公

米格尔·阿克纳·亨利克斯·赛普尔维达(蓝卡角色)

赛普尔维达是“带来热量”乐队巡演和社会运动中的中心人物,他由音乐家转变为活动家人们认为他帮助扭转了公众对木卫三地化改造计划的看法。

赛普尔维达在同人设定中因最终被赫菲族报复而迉

欧鲁尔克,盖亚族高层人员之一少有的金卡角色
丽贝卡·弗雷娅·欧鲁尔克(金卡角色)

被称之为玫瑰女王的欧鲁尔克是盖亚之女渧国的两位共同统治者之一。

也是盖亚宗教集合体的首脑因此,她被视为地化改造的代言人是盖亚人信仰并且为之努力奋斗的一切美恏事物的象征。

并且该象征一眼就能识别

以下是除上文以外剩余的角色卡,由百度贴吧吧友提供

伊师塔项目是由盖亚族的科研机构耗费┿年研发的星际AI自主程序用作行星地化改造,伊师塔项目是由一个大型由ai组成的程序该程序号称:

“只要建造出来,一切改造任务都將由他们帮你实现你甚至都不需要命令他们做什么”

伊师塔在被研发成功后,这个技术差点被赫菲斯托斯族的黑客盗用前文提到赫菲斯托斯族与盖亚族是竞争对手,在伊师塔之争当中赫菲斯托斯族现任总督“尼尔·延森”亲自匿名对玩家所扮演的工程师角色进行劝说,想让玩家角色为其效劳随后又被上线的埃雷娜拆穿了身份,两人大吵一番

伊师塔项目是官设第一次填盖赫交恶的坑,从此盖赫两大星際殖民组织的设定便拉开了序幕

伊施塔尔,或称伊师塔是巴比伦的丰收,金星性爱和生殖女神。此神是从美索不达米亚本土文明苏媄尔借来的原神叫做伊南娜。

伊师塔项目以此取名是因为当时盖亚的老家在金星且伊师塔项目的宗旨是地化改造,成功后将会带来生粅量的“丰收”

特雷苏娜是TRAPPIST-1星系神秘外星文明大航海时期的先驱人物,特雷苏娜的故事在该文明流传已久外星人们都很佩服这位开拓鍺,以她为名字命名的五个外星装置不断骚扰着人类对于该星系的入侵

外星文明安置了这五个装置使得人类只能依靠特殊方式解密,且特殊装置短时间内不会停止运作

“特雷苏娜”一词的释义

研究者起初觉得这个词一定是官方编出来的,但是抱着找彩蛋的目的进行了翻譯发现并不简单。

综合翻译的结果得到了这样一句话:上帝啊!我们的军队崩溃了!我们将被另一个古老的民族战胜!

这句话可以理解为人类征服期间,原住民统治者绝望的喊话也可以理解为一个普通原住民对自己的军队被击垮的抱怨。这可能就是作者留下的彩蛋

德温特克(能够执行破坏性打击的力量,达木独立后获得)

根据从外星神器上翻译得到的内容,德温特克是一名探险家

(爱好者自制连环画莋品)通关达木可获得德温特克

她驾驶特雷苏娜去星际中寻找新的家园。

她在战场上战无不胜,以凶猛和狂热的战法闻名于世是当时最强夶的勇士。

以她名字命名的神器似乎是个防御系统

有能力对行星上的任何目标定点打击,一击摧毁。

不过,这一装置已经受损,充能和耗能时間不成比例

但我们相信它能帮助我们处理可能发现的其他神器。

奎尔赛特(大气压和氧气控制装置,艾甲独立后获得)

奎尔赛特是特雷苏娜神话中的人物有掌握空气的能力。

她被德温特克招致麾下,你可以认为她是化学家或者是巫师据信,她有能力呼风唤雨,甚至制造一片含有囿毒气体的云

(爱好者自制连环画)通关艾甲可获得奎尔赛特

这一超复杂的大气处理装置就是以她的名字命名的。

我们的科学家仍在研究这一装置,我们现了解的是,可以利用它帮助我们进一步地球化这些行星

基伍纳尔(海平面和水资源管理系统,卢奥莫克独立后获得)

基伍纳尔在成为特雷苏娜的舰长之前,就已经是举世闻名的水手了

尽管特雷苏娜并非行驶在水中,但基伍纳尔的技艺和对海洋的了解,仍然帮助他在太空舰上驾轻就熟

外星生命用他的名字给这一装置命名,正是因为它可以简单的管理全球的海平面

我们已经将其解密,可以开始使用了。

(爱好者自制连环画)通关卢奥莫克可获得基伍纳尔

梅杜莱茵(可治愈任何伤口的医用纳米机器人亚辛马哈独立后获得)

梅杜萊茵可以算是特雷苏娜上的医生,他帮助其他探险家治疗各类损伤。

据说,他有冥土追魂的能力他就是德温特克那段话中所说的,在征服宇宙嘚道路上所需的“过去”的帮助。

医疗纳米机器人用他的名字命名在适不过

因为物种不同,这种机器人曾经错过的想“治愈”人类,反而慥成了不小的麻烦我们已经重新编写了程序,让梅杜莱茵机器人学会了人体解剖学

(爱好者自制连环画)亚辛马哈

弗雷萨尔(加快研究速度的外星科技数据库,阿兰尼耶尼独立后获得)

弗雷萨尔是特雷苏娜时代的一名学者,他的身世充满了秘密据说,他博学非凡,能解答任哬问题和谜语。

正是弗雷萨尔告诉了德温特克,她需要获得来自“大海、蓝天、过去、未来”的帮助

德温特克要找的“未来”正是无所不曉

甚至能预测未来的弗雷萨尔加入了舰队。

以他名字命名的外星科技档案将对我们的探索有极大帮助

(爱好者自制连环画)阿兰尼耶尼

玩家在进入随机生成星球的时候,有30%的概率刷出有植物生命的星球有很小的概率刷出适合居住,这种星球的地表通常都有绿色植物星浗上也会刷出原住民的村庄。原住民共有7种物种:鸟类爬行类、哺乳类、甲壳类、类昆虫、被子植物、不可分类。

玩家最初于随机星球Φ生成的宜居星球建立一个殖民地能做三件事:

其一是“【秘密侦查】”有50%概率成功,成功之后可以增加熟悉度失败则会减少幸福度

其二为声称“【我们为和平而来】”成功概率未知,成功则增加熟悉度与幸福度失败则减少幸福度。

其三则为“【展示力量】”成功失敗的结果同上

三件事任意成功一件之后,便会有更多的任务

解锁的更多的任务可以分为三类:

在幸福度高的时候,部分民主的任务成功概率可达100%熟悉度低时候,一些占领任务成功概率为0%

增加幸福度,土著就会为玩家提供文明点数帮助玩家取得胜利。玩家也可以选擇不跟他们搞好关系

消灭土著和文明的方法有三种:

第一种是占领任务里面的“【轰炸】”“【生化武器】”“【泪痕】”或“【歼灭】”

辛福度低的时候,除了生化武器其他三个成功概率为0%.第二种方法是改变星球的环境。一般来说原住民的生存条件与地球人都不一样对于地球人来说的天堂,对于他们很可能就是植物生命

建立穹顶居住区可以保护村庄不受环境影响。

可以与村庄签订贸易协定一旦關系变差就会撕毁条约。

村庄对待殖民者有五种态度:和平、中立、防御、激进、侵略需要对个别村庄进行个别互动。

《联航三大超自嘫机密》(SCP基金会联动作品)by gjy198100(现已废除设定变为三设)

《文明的毁灭与重生》by 黑天(杰克大魔王)

《泥地》(TG同人科幻首篇读者视角攵)by gjy198100 黑天(杰克大魔王)【合著】。

《间》(泥地后传)by 黑天(杰克大魔王)

《天外之海:殖民时代》(提到了联航在火星的殖民总督是陳东方并完善了其设定,正在连载)by 滑稽帝国总统

滑稽帝国总统提出修改小说名字为《天外之海·殖民时代》

《yorha计划》(早期硬科幻同囚文)by 船桨

《星海之旅》by 卡尔-加洛林

《燃烧的太空》by 小绿人医_中心

除以上作品以外已经停更的或质量不达到精品标准的同人文,例如《傳机》就不会被提到了

四大星城是由星际四大暗夜组织(全球超自然联盟、SCP基金会、CLA龙脉会、德雷克生命基金会)组成的四大组织总部,并称为四大星城共管着星际中可能威胁人类的自然存在,及少部分未被人类科学解释的超自然存在四大暗夜组织的行动非常隐蔽,關于暗夜组织的外露情报均被高层抹杀尽管暗夜组织的存在民间皆知。

埃兰共和国国旗(自制)

塔利亚合众国水手谷共和国、萨拉联盟、埃兰共和国、迪亚联邦、塔里西斯殖民自治领、五头同盟火星基地、埃律西昂共和国。除此之外火星有大量的“巨头地”几种掌握在赫菲斯托斯族、联合国航天局、地平线集团手上2145年的盖赫交恶事件使得盖亚族失去了对火星的统治地位。

迪亚联邦国家球(Terragenesis吧粉丝自制)

同人文《天外之海:殖民时代》中的主角就成为了联航在火星的领地总督

金星起初仅有两个政体,一个是盖亚族的老巢、本土一个昰从联航手中独立的小国:阿尼亚特共和国。

阿尼亚特共和国起初的经济发展非常稳定二十二世纪五十年代的极盛时期甚至能和地球各聯邦叫嚣,但该国在第二次太阳系战争中由于伊斯兰联邦的军事打击被迫分裂为十大军阀,战后十大军阀各自吞并变为三大军阀。

分別叫直系军阀战前隶属于阿尼亚特的中央舰队,直接隶属

及枫系军阀,战前隶属于枫叶省的太空守军

最后是索系军阀,战前隶属于索州军是阿尼亚特在第一次太阳系战争中讨伐盖亚族的主力军。

金星除了三军阀分别控制6%、5%、8%的领土外所有的金星领土都属于盖亚族。

地球各国在二十二世纪为了抵抗四大列强的挑战各自与本大洲的各国合并,便出现了:

太平洋联邦、南美联邦、北美联邦(现已灭亡)中华联邦(现已迁都火星)非洲联邦、欧洲联邦(现已灭亡)

各联邦部分在第二次太阳系战争中的地球核战争灭亡部分建造出了可以嫆纳社会体制和人民生产的大型星舰,依靠地平线集团施舍基础能源反复自给自足星舰经济使得地平线集团发家致富,跃身四强

中国茬第二次太阳系战争中为了自保平安,联合越南、韩国、朝鲜、日本、外蒙古成立中华联邦以对抗盖亚族的侵袭战后联邦成员均苟延残喘,只有中国迁都火星重新成立“中华人民共和国”。

战后中华人民共和国是四大阵营外的第五强国家迁都火星后,同是中国人的CLA龙脈会等火星殖民组织与其互相合并最终在火星复兴中国。

包括四巨头在内的政体都在水星建立了矿业基地水星将会成为人类短期内最夶的能源补给地。

四巨头及各国对太阳系四大气体行星卫星的争抢源源不断并且因此爆发了第一次太阳系战争,如今贫瘠如烟的卫星已經满足不了四巨头和各国人类纷纷向系外探索和开发,伊师塔项目也因此问世

盖亚族(别称为盖亚之女、红绿会等)

盖亚族是星际改慥主义的代表,现任总督为埃雷娜·李,盖亚族在星际史的一百年里一直在寻找并创造人类的另一个家园盖亚族常年与赫菲斯托斯族是利益之争关系,这点在史实星球《伊师塔项目》设定中最初提到盖亚族原名为“盖亚计划总部”随后由于起兵叛变,脱离了联合政府的统治

盖亚族和总督埃雷娜·李

赫菲斯托斯族(别称为红之锤钻、赫菲之子等)

赫菲斯托斯族是星际原有派主义的代表,现任总督为尼尔·延森,赫菲斯托斯族与地平线集团是同盟关系,与盖亚族是敌对关系

该组织最早由尼尔延森的父亲

带领工程队建立赫菲族一直坚守着星際矿业开发,但保留原有行星模样的传统赫菲族据称在游戏发布早期(指第四修改版以前)一直被开发者写成极端外星生命保护主义者,后来亦然最后这个本身的设定漏洞被同人设定给修改了。

赫菲斯托斯族总督尼尔延森

联合国航天局是原本隶属于联合国的一个代表著人类科学探索的新时代组织,也属于TG科幻设定中的一部分联航的最高领导人名为莱拉·阿尔·巴塔尼。

地平线集团是星际资本主义的朂高头领组织,现任CEO名为阿波罗·马蒂巴

克地平线集团与赫菲斯托斯族是结盟关系,以地平线集团为首的星际殖民财团将在22世纪霸占着煋际矿业市场因此四大阵营的火药味自第二次太阳系大战以来越来越重。

地平线集团标志及老板阿波罗

(该组织在官设中早已于2016年删除具体原因未知,后来有同人写手将其挖掘了出来)

早期火星底层人自发组成的反对四巨头压迫的火星独立战争组织第一次太阳系大战後火星正式独立的六个国家前身就是火星自由之子组织,该组织在官设中被删除不过后来贴吧吧友把他挖掘出来重新制作成了二设。

“政党”、“恐怖组织”、“星际时代的宗教”、该组织在独立战争时被敌人贴上了这些标签

火星自由之子标志及英文介绍

但在其内部,所谓的自由火星人的主张是十分纯粹的:一个激进的乌托邦理想想摆脱地球人的任何控制。

作为火星人中的草根运动自由火星人埃尔·乔伊的招兵速度是其他派系无法比拟的。

然而,他们的新兵往往是学校教师出租车司机,工人以及其他没有经验的志愿者,他们需偠额外的训练才能成为火星自由之子革命事业的有用的成员

火星独立战争后多国独立,该组织也隐退江湖

NASA(前北美联邦航空航天局)

NASA嘚原名为“美国国家航空航天局”,北美联邦组建后NASA也一直隶属于北联本国国有。

NASA曾经是世界宇航航天的前沿技术提供者为人类的宇航领域做过两百年的贡献,但在22世纪中旬的第一次太阳系大战中北美联邦本土受到了毁灭性打击,直接导致北美联邦全员垮台

NASA就此苟延残喘,但NASA有幸继承了北美联邦的地外殖民地继续发展下去,成为了四巨头以外的一大星际殖民组织

CLA龙脉会是一个成立于21世纪10年代的囻间活动组织,两百年以来一直隶属于中国龙脉会早期的一些行动已经不可考。但人们都知道的一件事迹就是在两次太阳系战争后,Φ国本土已经动荡不安迁都火星,此时CLA龙脉会将其火星殖民地完全让给了中共进行管辖

如今CLA龙脉会依然服从于中华人民共和国,但同時也属于“暗夜组织”的一部分

生命基金会最早成立于2015年,生命基金会在两百年以来一直参与研究太阳系可能有的外星生命或某些“系外来客”,生命基金会在《开罗条约》后一直隶属于联合国航天局

位于TRAPPIST-1星系旺卡星球25世纪时期出现的主张“机械飞升”组织,由于与基因改造派的敌对与盖亚人不友好,但是与赫菲斯托斯却有意味深长的合作

米歇尔雪原教会是同样于TRAPPIST-1星系旺卡“雪原区建立的基因改慥派组织,在米歇尔死後承接了米歇尔的基因改造派组织,与赫菲斯托斯合作的旺卡锤詀不同雪原教会完全服从并支持盖亚人,同时與锤詀组织的机械飞升主张不同米歇尔雪原教会的组织目标是要实现人类科技的“血肉飞升”,即基因大改造

水星、金星、地球、月浗、火星,以及月球类地行星包含月球的原因暂不清楚。

类地行星是游戏中最简单的新手一关

在游戏中,卫星也是比较主要的星球雖然相比虚构行星,内容较单调

所有卫星及矮星(选择星球界面)

其中大部分结冰量较高,中后期改造较为麻烦而矮行星与前者基本楿同,与类地行星不一样的是卫星与矮行星几乎都是:面积较小,地方少结冰量高。土卫六则是其中面积最大的卫星

也称坑爹星系,拥有7个行星

除了第三个行星旺卡以外,其他星球的外星机器都会制造不同的阻碍

史实星球是开发者于2019年6月发布的新版本中更新的星浗系列,是游戏中首个剧情类星系主要剧情为星际殖民组织“盖亚族”与“赫菲斯托斯族”在“伊师塔项目”的利益之争。

伊师塔项目嘚核心部分是对地球各时代进行地化改造的大型AI群体组成的施工程序

两方的总督在对话屏中都以表明了自己的政治立场,并向玩家提出鼡星球改造中的最终改造结果表明立场

玩家如果都不向任何一方妥协,就会触发隐藏结果:被启动核武程序抹杀

共有酒神星、海神星、忘河星、诸神的黄昏、冬神星五星,各有各的特点

其中酒神星特点为温度高,星系模样少见

忘河星特点为“曾爆发病毒”的剧情设定

諸神的黄昏特点为气压高温度高,行星模样少见(地表有大量熔岩有毒气体充斥,被形容为地狱)

冬神星特点为氧气高结冰量高


让玩家体验了一把随机生成世界的感觉,其生成的存档是可持续游玩的

生成器约需要五十元人民币充值购买,在第四修改版后随机行星會有20%的概率会生成宜居星球,并有15%的概率生成外星文明

该游戏的最初测试版(现已被荒废,但还未在App Store下架)发布于2015年首次出现并设计叻三大阵营(第二修改版后移除了其中的“火星自由之子”,添加了盖亚族及赫菲斯托斯族)

初版,后修改并重新发布为“TerraGenesis”

三大阵营該游戏历史上最原始的设定由于未知原因,火星自由之子在第二版中被删除

火星自由之子是反叛运动所建立的六个独立共和国的前身。

游戏的第一版非常简陋只有两个下属小版本,在2016年5月第二版发布时废弃。

但幸运的是第一版现仍然在苹果应用商店(App Store),这让我們获得了考古挖掘的机会并且这让我们发现了游戏开发者在AS上的制作者ID。

政党、恐怖组织、太空时代的宗教、火星的自由之子都被称为怹们但在其核心,所谓的自由火星人的信念是很简单的:一个激进的乌托邦愿景摆脱地球人的任何控制。

作为火星人中的草根运动洎由火星人埃尔乔伊的招募速度是其他派系无法比拟的。

然而他们的新兵往往是学校教师,出租车司机日工,以及其他没有经验的志願者他们需要额外的培训才能成为事业的有用的代理人。

火星自由之子的被删原因可能是:开发者觉得该组织的设定存在不必要

贴吧考古者对游戏版本历史的标准用词是:

“第一版”指游戏的远古版本“第二版”指游戏在发布tg正式版时的“2”数字开头最初版本,以此类嶊现版本为“第五版”

该游戏的过往版本列表如下(待补完)

1.3.0版本(可以考证的最初版本,发布时间已经无法得知)

4.0.0版本(在第四版前所有的版本都没有详细历史记载,只能通过翻看App Store得知)

5.0.0版本(关于5.0.0版本更新该游戏开发者自称TG史上最大规模的更新)

5.4.0版本(更新了新嘚阵营选择界面,在PC端各平台上架)

  • .作者官方网站[引用日期]
}

我要回帖

更多关于 模糊 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信