前言
程序员修炼内功心法的终极目标就是梦寐以求的架构师。内功心法的修炼需要具备“十八般武艺,八十种技巧”。本书正是继《Java代码与架构之完美优化——实战经典》后,优秀软件架构师必学的另一本书。无印良品社长松井忠三有句名言:无论什么工作都有“做好工作的诀窍”。他成功的秘密就是找出那些诀窍,并将其规范化,本书亦是如此,不但从宏观上进行了全面深入的软件开发横向与纵向品质管理技能介绍,而且从细节入手形成了品质管理的理论与技巧体系,并使其规范化与实用化。所以这是一部提高软件品质管理技能不可多得的宝典。
从优秀到卓越,对我们技术人员来说,缺少不了工匠精神。因为它代表了我们本身的耐心、专注、坚持、严谨、极致、精益求精等一系列优秀的职业素养,更重要的是,它也是本行业的代表与典范——拥有着无价的文化与精神财富。工匠精神不是口号,而需要在行动中进行修炼与领悟。长久以来,正是由于缺乏对精品的坚持、追求和积累,才使得许多人的个人成长之路崎岖坎坷,它的缺乏也让持久创新变得异常艰难。所以在资源日渐匮乏的后成长时代,重提工匠精神,重塑工匠精神,是生存与发展的必经之路——品质管理精细化时代已经到来,也是品质管理发展的必然之路!对于我们软件行业,过去一句话、一篇说明书就做一个系统的时代已经结束,现在已进入软件精品化时代!可是对于我们来说,如何才可以做到精品的极致呢?也就是我们程序员如何具备工匠精神呢?本书正是培育这种工匠精神所应具有的品质素养的及时雨,也是对我国长期软件开发中缺乏系统、全面品质管理技能的一方良药。
笔者来日本之初就下定决心,要“师夷长技以制夷”——把日本的品质相关技术等引进国内。笔者十多年来在日本一直从事一线软件开发工作,也切实地感受到了世界先进品质管理技术带给日本的各种利益,也很庆幸能够多次参加NTTDATA品质管理第一人——西川先生的培训,并曾多次与其探讨品质管理问题。与品质相关的国内外各种资料等,作者这十多年间阅读过近百本上万页。本书是结合笔者多年品质管理经验,花费大量心血,整理、优化、提炼而成——最终目的就是希望读者可以用最少的时间学到最有实用价值的品质管理技能。
品质管理是与我们每个程序员息息相关的必须重视的大事情!很多项目经理都曾有这样的感慨:如果早注意到设计阶段的这个品质问题,项目就不会失败!项目开发是没有后悔药的,为了不再后悔,本书给出了项目开发中应该注意的各种品质管理问题。读者如果在实际项目中运用得当,必定会给项目开发带来事半功倍的意外惊喜。
另外,本书还纠正了很多程序员对品质管理的各种错误认识,如“提高品质就是加强软件测试,品质不好就是没做好测试”。测试当然非常重要,但是,品质是制造出来的,不是检验出来的,测试只是品质验证的手段,不是软件品质管理的全部。
最后,学以致用,通过研读此书而获得的最新品质管理思想与技能,一定要在实际项目开发中利用起来,用以产生实际的价值与效益,这才是笔者写作本书的初衷!
工匠精神
寿司之神的故事
日本有一家没有菜单、没有卫生间,却价格高昂,只有10个座位的小寿司店,然而就这样一家小店却要提前一个月预约,而且被认为是“值得用一生去排队的小店”,还曾连续两年荣获美食圣经《米其林指南》三颗星最高评价!它就是寿司之神——小野二郎的寿司店。
小野二郎是日本国宝级人物,也是全球最年长的米其林三星寿司大厨,他做的美食吸引着来自世界各地的游客。他对做寿司有着几十年经验和独到见解。他对食材要求极其苛刻——为保证食材的品质不计成本,而只为做到最好。因此70岁前他一直亲自去菜市场从最信任的商贩那里挑选食材。在食品处理方面,他为保证章鱼柔软而不僵硬,要对章鱼按摩40分钟;为呵护米粒的弹性,他要求米粒温度要接近人的体温。小野二郎将处理过程标准化,保证每样食材都处于最美味的时刻。鲜活且处理得当的食材,保证了寿司的美味,这也表现出他对细节把控的一丝不苟和对劳动的认真负责。
制作寿司,三分靠食材,七分靠手势。他在客人面前全神贯注地捏寿司,食物在灵巧的双手中变形,融入时间味道。然而这样娴熟的技艺需要多年基本功的反复锤炼,才能让手法如天生般成为习惯。他曾说:“要爱你的工作,要同你的工作坠入爱河。”他在日复一日重复的基础上诞生新作,在平淡的重复中不失创新。他对寿司的独到见解是他不断思索创新的结果,最终形成了自己特有的寿司文化。
在日本,拥有高难度专业技能的人被称为职人。小野二郎自称职人,也履行职人的本分:对细节一丝不苟,对技艺的完美追求,在重复中精益求精。他将劳动作为修炼,追求平淡中的真味——这种典型的东方智慧切合中国国学的“格物致知”和“知行合一”的思想。他对劳动的认真、苛刻的自律及对完美的追求,使他不但名利双收,而且得到高度的精神回报,这种精神回报也是他不断前行的动力。小野二郎说:“我一直在重复做同样的事以求精益求精,我始终向往能有所进步,我会继续向上,努力达到巅峰,但没人知道巅峰在哪里。”这位大师修炼一生,却仍在探寻巅峰的路上——这就是对品质的无限追求。本书之所以名为《软件品质之完美管理》,也是起源于此,同样是激励我们不断追求品质,以达到理想中的完美。
本书与软件架构师
本书是包含了笔者多年品质管理经验之精华,其中,设计阶段品质注入与测试阶段品质验证技能体系是本书的核心,亦是对日本先进的品质管理精髓与技巧的总结。同时,本书还包含品质管理5项解密;6篇品质管理标准范文;7种品质项目检查表;10种品质管理要领;13种品质管理原则;18个实战经典案例;18个温馨提示;40项品质管理技巧;以及完美文档品质、完美运营品质、架构师的自我完美修炼等完整品质分析与管理体系内容。全书内容翔实,理念新颖,条理清晰,图文并茂,实战性强——一切都用于提高读者软件品质管理技能,而这种能力正是当今软件架构师必备的“工匠精神”所包含的品质水准行动指南。
本书是365IT学院规划的整个“软件架构师成长之路”培训教材的中级读本,亦是软件品质培训教程中的“管理篇”内容(其姊妹篇《Java代码与架构之完美优化》已出版),是培养具有高级软件品质管理技能的优秀架构师所必备的武器之一。优秀的软件品质管理技能是程序员通往架构师神圣殿堂的必经之路,本书将是这条路上的一盏明灯,帮助读者早日实现软件架构师之梦,如图1所示。
本书与PMP
很多程序员可能都学过PMP项目管理内容,甚至拥有这个资格证书。PMBOK对项目管理的基本理论方法进行了深入的讨论,特别是品质管理内容。本书亦包含这部分内容,对IT领域特有的品质管理技能进行了深入、系统的分析与补充,操作性与实用性很强。
图1 软件架构师成长之路
本书与翻转课堂模式
本书采用翻转课堂模式(The Flipped Classroom),在内容安排上,首先给出本章的关键问题,让读者进行思考,之后正文进行解释说明,最后根据内容深浅适当加入练习题,以巩固对核心内容的理解,进一步让读者来消化吸收重要知识与技巧。这样在写作技巧上进行了革新,可以让读者更好地吸收与理解本书精华。读者在阅读过程中,有任何疑问都可以和笔者联系沟通,笔者会给予及时的帮助与反馈。
本书配套教学视频与品质管理专家软件
本书配套视频培训教程与教材将同步出炉。配套视频可以在365IT学院官网免费下载,在笔者的抛砖引玉下,读者可以更好、更轻松地学好本书所阐述的技能。同时,本书所提供的一些标准设计书模板等电子文档资料也可以到官网下载并应用到读者的系统开发中。
另外,与本书配套的还有一款智能品质管理软件——品质管理专家(www.quality1.cn)。本软件不但可以用于本书内容的练习与实践,还可以应用于实际项目管理。阅读本书后,读者一定要亲自进行项目品质演练,进而在实际项目中应用起来,特别是如何根据系统中的数据进行项目的品质分析,这将会给读者带来非常有价值的高级实用技能。
以上资源均可通过关注机械工业出版社计算机分社官方微信“IT有得聊”获得下载链接。
本书特色
1.授人以鱼,授之以渔:本书的内容是按照品质管理培训师的标准进行编排的,不仅可以作为自我提高的书籍,亦可以作为讲师教材。
2.案例驱动,脚踏实地:不单独讲理论,而是以案例驱动进行实战解析;不仅是经验与理论总结,更重要的是用最佳项目案例来说明技术应用。特别是各种文档成果物的模板,在实际项目中都可以拿来即用。
3.图解技术,形象生动:避免了乏味难懂的文字描述,使复杂的事物一目了然,也是对理论进行深刻透彻理解的形象记忆。
4.与时俱进,中西结合:本书汲取了日本品质管理中的大量精髓,并结合我国实情进行了优化。特别是在文档的写作能力上,本书安排了较大篇幅进行指导,就是针对国内IT从业人员不善制作文档的弱点而开出的药方。而且本书安排的图表很多,这样会给读者带来爽心悦目的阅读体验。因此,真切地期望读者朋友能够快速掌握这些技能,为大家成长尽一点微薄之力!
本书所面向的读者
目前,市场上关于软件品质管理的图书很少,在凤毛麟角的几本中,也几乎都是对CMM(能力成熟度模型)、品质算法(理论研究)或者是PMBOK品质管理工具的介绍,然而这些对我们广大程序员来说,都离得很远,在实际工作中也不常用。因此,本书摒除这些内容,只介绍与我们工作紧密相关的技巧与知识,如图2所示。
虽然笔者是Java程序员出身,但是本书所讲述的技能不仅适用于Java技术领域,而且是IT领域中通用的品质管理技能,同时其品质管理思想亦可应用到其他产品领域。
图2 能力提高点设置
本书比较接地气,所面向的读者主要是志在提高软件品质管理技能与品质思维的程序员,也适用于以下读者朋友:
(1)走在架构师之路上的工程师;
(2)软件项目经理;
(3)测试员;
(4)在校学生。
总之,无论是在校大学生还是走上工作岗位的新员工,无论是程序员还是测试员,无论是架构师还是项目经理,都有必要研读本书。
如何最佳阅读本书
品质管理内容整体划分为软件品质理论要点、开发中的品质管理、运营中的品质管理及品质预防四大部分,如图3所示。
图3 软件品质管理整体划分
第一部分是第1章,介绍了软件品质相关的理论基础与概念,在阅读其他章节之前需要读透这一章。
第二部分是本书的第2~10章,即本书的核心章节,主要介绍软件开发中所必备品质管理技能体系。本书大量的篇幅都在论述软件开发过程的品质,因为这方面是我们的弱点,却又是精细化软件开发的重点。因此研读此部分内容时,要给予足够的重视。第2章介绍了品质管理要点,包含了品质管理整体大致流程,是第3~6章品质实践活动的概括与前提;第3、4章介绍了品质注入阶段中具体的定量与定性品质管理技能;第5、6章是品质验证阶段中具体的定量与定性品质管理技能的介绍;第7章重点介绍了软件开发过程中必备的文件种类与文档写作技巧;第8章主要介绍了架构品质管理方面应该考虑的要点;第9章介绍了各种品质管理要领;第10章介绍了品质开发与运营中重要的常用工具,包括工具的制作技巧、使用技巧等。
第三部分是本书的第11章,主要介绍软件运营时必备的品质管理技能。其内容在实际工作中非常实用,我们应该如何来做,这一章有具体详细介绍。
第四部分是第12章,是品质预防部分内容,主要介绍架构师自我修炼的必备技巧。架构师应该具备哪些能力体系,这些能力体系的有效修炼技巧与方法又有哪些,想知道答案的读者切莫错过此章。
以上4部分组成了完美品质管理体系的全部核心内容。另外,附录包含了各阶段品质项目检查表、品质管理重要技术规范范文、品质管理主要术语、章后习题答案等内容,亦是学习的重点内容。软件品质管理体系如图4所示。
图4 软件品质管理体系
本书中出现了新名词“品质注入”,这个词也是日本品质管理界近年来出现的新词“品質作り込む”,现在这个词已经在日本IT界被广泛使用,相信不久的将来,这也将会是我们习以为常的惯用词。另外,读者可能还会遇到其他各种新名词,甚至新的品质管理思想。这里建议读者要尽快理解并应用这些新鲜事物,改变自己才可以提高自己(另一方面也要为自己祝贺——进入了当代品质管理的先行队列)。
本书对于部分段落要点(题眼)或者需要特别注意点,也特意用醒目的字体加粗,提示读者加强对技术重点的掌握。另外还有一个用意——可以利用图与表,再借助这些要点,迅速把握本书核心,以节约时间。
书中对一些正文外的重要知识点用温馨提示(NOTE)的形式来补充,内容安排亦分布在各个章节的最佳位置,以便读者学习。
要点提示示例如图5所示,温馨提示示例如图6所示。
图5 要点提示示例
图6 温馨提示示例
有些技术书把整个软件工程的各个过程定义为小的工程,如概要设计工程、详细设计工程,这样往往会引起对“工程”含义的误解。为避免这个现象,本书采用PMP标准用语——整个项目称为工程(Project),项目的各个中间过程称为阶段(Process),如概要设计阶段、详细设计阶段。希望读者在以后的工作中也能够采用这个标准说法,以提高自己的专业水平。
学习软件品质管理技能,必须考虑软件的开发模型——瀑布式、螺旋式、增量式、敏捷开发等。本书以最近流行的敏捷开发流程为主,结合常用的瀑布式开发模型的优点,进行开发流程的介绍。
本书内容以中大型项目品质管理为基础,介绍进行管理工作时应该具备的技能与方法。对于小项目,管理思想、方法、手段亦是一样,只是没那么复杂,可以适当取其必要内容应用于项目管理中。因此,在实际开发中,要根据项目大小与条件进行内容的增减,一定要灵活运用,不求全,但求有最佳效果。
阅读本书时一定要多问自己几个为什么。对于书中的技巧,要问为什么这么做,还有更好的解决方案么;在实际工作中要如何应用;能够给我们带来怎样的好处;是否还可以进行扩展与创新。对于经典案例,有些是正面案例,有些是负面案例。对于这些案例,如果读者自己来处理,会如何解决呢?当对自己如此一番洗礼后,应该会对品质管理有“会当凌绝顶,一览众山小”的心境!
符号说明
软件品质管理中常用的简略符号如表1所示。
表1 简略符号
致谢
首先,感谢同学郑夺在百忙之中抽出宝贵时间为本书作序。
其次,感谢同事周伟鹏朋友王伟伟、乳山二中闫晓峰老师与兰霞老师细致耐心的审核,以及尹勋成对本书提出的宝贵建议。
最后,感谢爱人兰宁的大力支持。为了本书早日和读者见面,几年来笔者几乎使用了所有的休息时间。特别是2016年以来,曾有一段时间排除了所有的外界干扰,闭关写书,目的是希望能够早日完成一本值得读者朋友信赖的教程。
读者在阅读过程中如果发现任何疑问,可以与作者通过邮箱(yantingji@126.com)联系。
颜廷吉
2017年4月1日于东京