本篇“废话”其实就是本书的序。我买书很少看序,直接翻到目录,而有时候偏偏遇上一些书写了一堆前言、卷首语、作者序、译者序、**序等,至少要浪费掉我几十秒时间来找目录。己所不欲勿施于人,欢迎你无视本序直接看目录,当然如果你有时间也不妨看看本序说了什么“废话”。温馨提醒一下,本序有点长噢! 我为什么要写此书
10年前**次接触UML,终于知道这是“神马”东西了!UML,Unified Modeling Language(统一建模语言)的简称呗!当时我那十分之一桶水都不到的UML知识,除了可以在一些不明UML真相的人面前侃侃而谈外,并不能当饭吃,更加不能在实际工作中发挥什么作用。我急需阅读一些UML书籍来填满我那十分之一桶水,问题是找不到实践性强的UML书籍!
实用的UML书是找不到了,但我的UML入门导师出现了!他是一位活生生的人,是我当时的直接领导。他上任后立马在实际项目中应用UML,直接使用UML与客户沟通,通过实际的工作让我体会到UML的强大威力。10年来在实际工作中实践UML以及分享实践知识,让我形成了一套实践性强的UML知识体系。
但近年来我也遇到过一些对UML嗤之以鼻的技术高手,甚至在我主讲的UML课程中也有一些学员对UML提出了质疑。这些对UML不满的朋友,都曾经领教过某些使用了UML的文档,那些文档不知所云,而文档作者的解释显得理论有余实践不足,让他们产生不用UML反而更好的想法。
关于UML,业界存在这样的问题:
(1)缺少实践性的书籍,以及在一些理论化书籍培养出的一些UML理论家,让很多追求实效的朋友对UML产生了误解,甚至产生了“UML无用论”。
(2)一些学习UML的朋友,只掌握了UML的“形”没掌握UML的“神”。UML的“神”是指UML所体现的一种工作思路和方法,而UML的神髓只能通过实践来体验和获得。
(3)公司中只有自己一人用UML,无法与别人交流,大家不用只有自己用,自然无法在工作中用起来,也无法发挥UML的作用。
直到现在,追求实战性的UML书籍仍然不多。不是所有朋友都能像我这样幸运,能在工作中有一位UML的实践高手来指导工作,让我通过实际的工作来掌握UML。我实践UML已有10年,关于UML大部分的知识来自我的实践,希望阅读本书的读者,能感觉到好像身边有一位导师在指导一样。希望本书能**UML的实践之风,“活用UML”才是关键!
UML可应用于软件需求方面,也可应用于软件设计方面,本书介绍的是UML在软件需求方面的*佳实践。而软件需求方面的工作,可以分为需求分析与需求管理两方面。简单地说,需求分析是指如何全面、准确地获取需求;需求管理是指需求的商务处理(如需求范围控制、需求签署、需求变更处理等)以及如何需求驱动地工作。
需求分析工作普遍存在的问题有:
(1)客户需要的是一把梯子,系统分析员了解到的是一个凳子,开发人员做出来的是一张桌子,测试人员以为是一把椅子……各种角色所理解的需求是不一致的。
(2)客户今天想要一个苹果,明天改变主意要一个香蕉,但后天突然又说还是苹果好,到*后他想要一个西瓜!客户的需求变来变去,无法准确把握客户的需求。
需求管理工作普遍存在的问题有:
(1)客户越要越多,持续增加项目的工作量,导致软件公司面临亏本的危险。
(2)客户不愿意签署需求,喜欢让你先做出来看看,然后慢慢提意见。
(3)客户的需求变来变去,不但不签署变更协议,而且还要求你免费满足这些要求。
从我的经验来看,如何快速全面准确地把握客户的真正需求,是解决以上问题的根本途径,需求分析是首要的,需求管理是辅助的,两者占成功的比例大致是7:3。
本书**介绍的内容有:
(1)UML如何帮助我们提升需求分析能力。
(2)需求分析的*佳实践,这里既有UML的内容也有非UML的内容。
(3)需求管理的*佳实践,这里主要是非UML的内容。
UML只是我们可以利用的一种工具,解决问题才是我们的**目标。知识以用为本,本书融合了UML、非UML、需求分析及需求管理等方面的知识,希望能帮助解决上述提到的UML业界问题、需求分析及需求管理问题。 谁适合看这本书
对UML感兴趣或者想提升软件需求分析及需求管理水平的人士,均适合阅读本书。无论你是Java技术流派、.NET技术流派还是其他技术流派,只要工作中涉及到需求分析,均适合阅读本书。
如果你是以下情况之一(当然不限于以下所列),也适合阅读本书:
(1)需求分析师(系统分析师):系统、全面、准确、深入地把握软件需求,是该类读者的主要工作职责。本书介绍了活用UML挖掘需求的各种*佳实践,能帮助该类读者提升职业水平。
(2)项目经理:中国的软件项目经理经常要兼顾高难度的需求分析和烦人的需求管理工作,本书介绍了活用UML进行需求分析以及需求管理的*佳实践,有利于提升该类读者在这方面的工作水平,让项目经理更加轻松地面对这方面的工作。
(3)产品经理:提炼产品需求,提升产品竞争力是产品经理的主要职责,而UML可帮助产品经理提升需求分析及挖掘的能力。
(4)软件设计师及程序员:虽然不直接参与需求工作,但需要“需求驱动”地工作,把握真正的需求才能做出有灵魂的软件。本书介绍的UML及需求分析知识,有助于该类读者更好地理解和思考需求,做出更好的软件。
(5)测试工程师:测试工程师往往是软件开发工作中的“弱势群体”,听命于程序员诸如“你这样测就可以了,这个你不用管”之类的“指令”!测试工程师经常得到的是“二手需求”(即由开发人员告知的需求,而不是自己亲自去向客户获取的需求),难以系统、全面、准确地理解和把握需求,而本书介绍的知识将帮助测试工程师解决这个困境。
(6)实施工程师:实施工程师似乎干的都是“体力活”,但如果没有深厚的业务知识是难以和客户沟通以及推动系统上线的。本书介绍的UML及需求分析知识,将有助于该类读者成为业务专家,提升自身价值。
(7)计算机相关专业在校大学生:学校学到的知识可能过于理论化,希望尽快接触实际项目,体验真实的需求分析工作,可能是每位大学生的愿望!本书会让该类读者体验“残酷”的软件需求分析工作,学习各种实用的UML及需求分析、需求管理知识,为将来的工作做好准备。 本书各章的“设计思想”
本书的学习目标如下:
(1)掌握UML的基本语法。
(2)掌握面向对象的分析方法。
(3)掌握应用UML进行需求分析的*佳实践。
(4)掌握软件需求管理的*佳实践。
本书的内容组织及表达经过精心设计,本书没有基础篇、进阶篇之类的划分,也不采用先理论后实例的组织方式,而是大案例贯穿全书,小案例一个接一个,直接用案例来讲解UML基本及进阶语法、UML*佳实践、需求分析及需求管理的*佳实践等。
本书讲究实效,希望读者每阅读一页都能立马有收获,能马上在工作中应用所学,而不需要看了几十页甚至半本书才搞清楚来龙去脉。
下面简述各章的“设计思想”:
第1章大话UML:期望读者可以在很短时间内,快速了解各种UML是怎样一回事,什么情况下可以使用什么图等。读者不需要看完全书,只需要看完第1章,就能对UML有全面而清晰的认识,找准学习方向。
第2章 耗尽脑汁的需求分析工作:本章揭示了需求分析的核心问题和基本道理,并介绍UML能在需求工作中发挥怎样的作用。
第3章到第9章:详细介绍类图、对象图、活动图、状态机图、顺序图、通信图、用例图、部署图、构件图、包图,每一章主要讲述一种UML图,部分章节会介绍两种或两种以上的UML图。 知识以用为本,各章以问题为引子,通过案例、练习、思考和分析等,由浅入深地逐步介绍各种实用知识。各章内容大致是这样设计的:前三分之一内容抛出问题及利用浅显的例子,让读者轻松快速地掌握相关的基本语法和知识;中间三分之一内容会进一步抛出更复杂的例子,结合案例介绍进阶知识;后面三分之一内容将问题深化,列出综合性更强或更加复杂的案例,提出更多来自现实工作的思考和解决方案。
各章的内容并不是完全独立的,越到后面的章节,越会介绍更多的UML图的综合应用,后续章节是基于前面章节的知识滚动向前的。
第10章 UML共冶一炉——考勤系统的需求分析:本章是全书*长的一章,完整地回答了如何从零开始完成需求分析工作。本章将前面学过的知识融合在一起,并且补充了大量的实用知识。
第11章 需求分析的团队作战:团队作战对于需求分析工作是相当重要的,除此以外本章介绍了一些需求管理的实用技巧。
第12章说不尽的UML——UML补遗:通常有13种UML图,前面章节已经介绍了较为常用的10种,本章介绍不太常用的3种UML图,并对全书进行总结。
本书还附带一张光盘,光盘中有两个课程视频及相应的教材:
(1)活用类图,拥抱需求:本视频内容与本书第3章内容一致,但书中的内容更加具体和深入。
(2)做一回软件设计高手:这是一个活用UML进行软件设计的课程。
本书的前身是我的课程“活用UML——需求分析高手”的教案,这是一个两天的课程,课程的全部和部分内容,我已经分享过多次。课程时间有限,本书的内容将会比该课程更全面更深入。
和讲师面对面交流是理想的学习方式,我期望读者通过阅读本书能达到甚至超过参加现场培训的效果。书比现场培训有两大优点:一是学习的速度可以随意控制;二是可以随时复习已学过的内容。但书的一大缺点就是:作者不能随时回答读者的问题!不过读者可以到网站学习和提出问题,可以和作者以及其他朋友交流。
*后我要感谢我的UML启蒙老师,是他在实际工作中言传身教地教会了我UML,让我受益匪浅,直到今天我还会经常想起他指导我时的情景! 希望本书能成为大家学习的良师益友,祝你学习愉快! 张传波 软件知识原创基地 **专家