实战需求分析(txt+pdf+epub+mobi电子书下载)


发布时间:2021-01-30 06:17:14

点击下载

作者:杨长春

出版社:清华大学出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

实战需求分析

实战需求分析试读:

前言

也许您是个对信息化很感兴趣的管理者,也许您是从事软件开发的专业人士,也许您刚刚入行还不知道需求分析为何物,也许您从事需求分析工作已经有年头了,总之,不管您从事什么工作,只要跟信息化相关,就不能回避需求分析的问题。想到需求分析,您是不是曾经有过或正在经历以下这些困惑呢?

我在企业从事管理工作,很想做信息化管理,听说信息化工作中需求分析很重要,需求分析究竟是做什么的呢?

我是个程序员,最近刚改行做需求分析,以前做程序员时总觉得需求分析很容易,无非就是画画界面原型,现在才发现不是这么回事,需求分析究竟包括哪些具体工作?有什么工作步骤?有什么注意点?怎么才能做好?

我在软件开发团队工作,企业找我们开发软件,究竟想达到什么目的呢?

用户的需求真的很难搞清楚啊,怎么调研呢?调研时,用户要不什么也不说,要不天马行空不着边际,怎么办呢?

软件好写,可让软件融入企业管理体系真的好难啊!

我要成为优秀的软件设计者,我的目标就是设计出好软件,可究竟什么样的软件才算是好软件?

是不是能让管理软件像QQ那样,用户自学后就会使用?我尝试过,但做不到啊。

知道软件需要易学、易用、健壮、灵活、高效,但怎么才能做到呢?

那一次,我把软件设计得相当满意,可领导说成本有限,说我过度设计,这样开发大家只能喝西北风,这个度该怎么把握呢?

为什么研发总是按照我的设计思路,开发出来的软件并不是我想要的?我该怎么表达清楚我的设计思想?

烦人的需求变更快把我们团队逼疯了,怎么控制需求变更?怎么处理需求变更?

我是团队主管,领导说我们的需求分析工作缺少规范,可需求分析变数很多,好像很难规范啊,怎么才能让需求分析工作规范起来呢?

我从事需求分析工作很久了,能力平平,觉得遇到了技能天花板,怎么才能成为需求分析的高手呢?

只要您有这些困惑,那么恭喜您,幸运地找到了这本完全来自实战的、深入浅出的关于需求分析的书,它会彻底帮助您消除困惑、廓清迷雾,对需求分析工作有一个全新的认识。本书具有如下鲜明的特点。

深入浅出:用浅显的文字说明专业道理,多用短语,深入浅出,阅读时不需要选择时间、地点,在火车上、飞机上、马桶上、枕头上,都可以读几行,收获可大可小,进步会在每一次阅读中发生。

大量案例:上百个来自工作实践的短小案例,易懂而深刻,每个都能帮助读者对需求分析工作的理解深入一步,让读者理解原理、消除困扰、少犯错误。“干货”派送:提供了几十个来自工作实践的文档模板、工作规范,详细讲解编写要求,使用场景,帮助读者在短时间内成为高手,写出规范、有用的需求文档。

经验心得:每一个字都是来自工作实践的领悟、心得,让读者在工作中可以避开一个又一个“雷区”,少受挫折,少碰壁,少走弯路,站在巨人肩上起步,走得更快、更远。

拓宽视野:帮助读者拥有开阔的视野,再也不会认为需求分析就是画画原型界面那么简单了,帮助读者理解设计软件的终极目标——建立信息化管理体系,深刻理解软件在信息化管理体系中应该承担的角色。

改善思维:重塑思维方式,帮助读者建立一个优秀的需求分析师应该具有的思维方式,彻底改变对需求分析工作的看法。

本书强调在需求分析过程中应建立正确的思维方式,这是将这件事做好的基础。掌握了正确的思维方式才知道什么是对的什么是错的。没有正确的思维方式,永远都不会成为需求分析高手;没有正确的思维方式,用什么工具都不会设计出好软件。本书几乎没有讲解任何一款专业工具,因为这不是作者的初衷。

感谢您选择本书与您共度几十个小时的时光,这段时光可能快乐,可能难受,可能困惑,可能顿悟……不管怎样,我相信,读完本书后,您对需求分析工作一定会有一个全新的认识。买一本书容易,几十块钱也不算什么,关键是将大把的时间与精力花费在这本书上值得吗?相信我,这是一本值得您花费时间的书,它会让您对需求分析的认识跟没有读过本书的人有根本的区别。

最后,感谢我的妻子孟维,因为你的勤快与爱心,让我从来不需要操心家庭的琐事,才得以有足够的闲暇时间从事这本书的写作;感谢女儿杨舒,因为你惊人的自爱与自律,让我从来不需要操心你的学习与生活,才有了足够的精力从事这本书的写作。没有你们的支持,不可能有这本书的诞生,致谢!

作者联系方式:个人博客http://yangcc.blog.hexun.com;新浪微博@无锡杨长春;微信公众号yang_changchun。编者2016年4月  第1章需求分析入

需求分析是指在开发软件之前对用户的信息化需求进行引导、收集与分析,保证设计出来的软件既能够充分满足用户的要求,解决用户的问题,给用户带来收益,又能够控制开发成本,降低开发风险,为自己的开发团队带来收益,保证客户与开发团队可以双赢。所有的软件在开发之前都需要进行需求分析,只不过有些团队设有专职的需求分析师,而有些团队由其他岗位的人员兼任,如项目经理、程序员之类的人员,都有可能从事需求分析方面的工作。

本书讲述的是针对管理软件的需求分析,因此在阅读正文之前需要先了解下什么是管理软件。管理软件,顾名思义,就是用来帮助企业进行管理的软件。当然,需要管理的并不仅仅是企业,学校、政府机关等都需要管理。在这里使用“组织”两个字比较准确,但为了行文方便,后面统一称之为“企业”,这并不意味着这些知识只能用于企业中。

管理软件往往被用来管理一个企业的人财物信息,以及供产销过程,人们耳熟能详的OA、ERP、CRM、SCM、EHR、KM、进销存等都属于管理软件的范畴,这些软件的重点在于管理信息的收集、流转,资源的共享、集成,任务的下发、驱动,工作流程的控制、审批,管理决策的支持、验证等。管理是一个很宽泛的概念,管理过程中用到的软件很多,但并不是在管理工作中用到的软件都可以称为管理软件,例如一些办公工具类软件、图像处理类软件等,这些软件主要是用来提高某一特定工作的效率,不能划入管理软件的范畴。

要成为一个合格的面向管理软件的需求分析师,需要把自己打造成一个通才,需要既懂软件,又懂管理,既善于与人沟通,又能够静下心来进行系统性的思考,既要有工程师式的逻辑性思维能力,又要有管理者的那种开放的艺术性思维能力。要成为一个优秀的需求分析师,需要经过很多项目的积累,掌握书本上可以提供的显性知识是远远不够的,还需要在工作过程中慢慢领悟很多说不出来的隐性知识,需要从一个项目又一个项目中不断学习——优秀的需求分析师是项目“砸”出来的。1.1 认识管理软件1.1.1 什么是管理软件

本书所说的需求分析都是针对管理软件的,下面就从什么是管理软件开始介绍。

管理软件就是用来辅助企业进行管理的软件,既包括对企业“人、财、物”相关的资产信息的管理,也包括对企业“供、产、销”相关的业务活动信息的管理。管理软件的重点在于管理信息的收集、流转,资源的共享、集成,任务的下发、驱动,工作流程的审批、监控,管理决策的支持、验证等。

下面从一个简单案例开始认识什么是管理软件。

案例:一款典型的管理软件

李经理是某制造企业的物料部经理,主管采购与原料仓库。随着企业业务的发展,他越来越不满意自己部门的工作了,总觉得要改变些什么,因为以下这些问题总是困扰着他。

经常有人反映某某把仓库的东西偷偷带回家,但仓管员并不承认,坚称自己的仓库中没有丢东西。由于仓库账目不清,除非抓个现行,李经理确实找不到仓库丢东西的直接证据。

供应商送货时经常多送,因为他们跟财务结账时是根据仓库的收货单结算的,这样导致仓库经常积压一些特殊原料用不掉。

计划部门投诉,有些常备材料经常缺货,采购不知道提前补货,导致生产中断。

仓库中的原料存放好像有问题,车间刚上班时,需要领用大量的原料,仓库保管员需要四处寻找,发料太慢,影响车间的开工时间。

保管员请了一天病假,仓库就乱套了,代班的实在不知道东西放在什么地方,只能不断给躺在病床上的保管员打电话。

经过咨询,李经理决定找软件公司开发一套软件来管理库存,希望通过这套软件规范原料入库、出库流程,改变仓库内物料的存放方式,通过安全库存、警戒库存的设置及时提醒采购员补货,规范物料编码做到账实相符等。

软件如期开发完成,提供了采购单管理、入库、出库、盘点、库位管理、警戒库存设置、消息提醒等一系列功能。上线后,物料部的工作流程发生了很大的变化。

每次采购,采购员必须在系统里下采购单,这些采购单需要得到领导的审批,审批完的采购单会直接推送到仓库,仓库据以做好收货准备。

采购员会把这些采购单以邮件的形式发送给供应商,或者打印出来传真给供应商,供应商必须根据采购单送货。

供应商送货到仓库时需要出具采购单,仓库根据采购单收货。

仓库保管员可以在系统中核查本采购单的应收、实收、待收数量,多出的货物仓库拒绝接收。

所有的货物都有规范的物料编码,仓库根据物料编码入库、出库。

在系统中入库时需要指明某原材料存放在哪个位置,出库时也需要确定某原材料是从哪个位置出库的,任何时候都可以查看到每种原料在哪个库位有存放,数量是多少。

计划人员在系统中设置每种原料的安全库存、警戒库存,达到警戒库存时,系统自动发消息提醒相关采购人员。

采购人员根据系统的提醒编制采购计划,计划人员核定采购计划,部门经理审批采购计划。

采购人员根据部门经理审批过后的采购计划给供应商下采购订单。

本案例中,物料部通过软件管理原材料信息,可以收集原材料在采购、入库、出库等一系列业务活动中产生的管理信息,可以让采购、仓库、计划人员共享原材料信息,可以管理采购计划的发起与审批过程,可以跟踪采购计划的执行情况,可以给采购决策提供支持等。这是一款典型的管理软件。

注意,本书即将频繁用到两个名词,“软件”与“系统”,这两个名词的含义是有区别的,相信读者在本案例中已经有所体会。软件仅指开发出来的代码,软件在企业中正式使用起来后,才构成系统,也就是说系统不仅包括软件,还包括数据,包括围绕软件、数据的相关流程、规范。软件可以复制无数份,而每个系统都是独一无二的。虽然有时候说开发“某某系统”,但这只是软件的名字,并不能说写出来的就是系统。有时候,谈到某个系统,为了强调其中的软件,也用“软件系统”这个词。1.1.2 什么是好的管理软件

需求分析的工作目标是设计出好软件,从事管理软件的需求分析工作,当然就是设计出好的管理软件。好软件在人们的工作、学习、生活中俯拾皆是,百度、淘宝、QQ、微博、微信、Office等,使用好软件的感觉就是一个字——爽,看起来舒服,使用起来流畅,不拖泥带水,不磕磕绊绊,功能总是出现在需要的地方,总是能解决问题等。但究竟什么是好软件呢?作为软件行业的专业人士,对软件是好是坏的认识自然不能仅仅满足于此。

在正式讨论需求分析相关工作之前,先来看看究竟什么样的软件是好软件,以此作为未来工作的努力目标。

1.好软件是有用的

所谓的有用,就是指软件真正能够解决问题,不能解决问题的软件绝不是好软件。从企业管理的角度来看,或者可以增加收入,或者可以节约成本,最终反映在它能够促进利润的提升,这个利润可以是短期的,也可以是长期的。如果软件提升的利润大于软件的成本,那么这个软件是有用的,否则就不能说是有用的。

不过,利润是由多方面的因素决定的,大部分情况下很难说得清楚一个小软件对企业的利润有什么影响,也就很难说得清楚它是有用还是没用,因此可以尝试从一些更具体的方面来界定一个软件是不是有用。

有用的软件解决问题而不是制造问题。可以用软件解决的问题很多,小到简单地保存某种信息,大到为企业建设管理平台。但要知道,在用软件解决问题的同时一定会带来全新的问题——软件本身的问题,对于一个不是搞软件的企业来说,这种问题处理起来并不容易。有很多单位,好像是为信息化而信息化,目的不是解决现实问题,而是为了面子好看,结果导致使用软件不但没有解决问题,反而带来了许多额外问题。还有的时候,软件真的解决了某些小问题,但相对这些被解决的问题来说,软件本身带来的问题要严重得多,得不偿失。例如,为了获得某种报表开发了一款软件,却需要专人录入数据,专人维护系统,如果让这些人进行手工统计,报表不但可以按时出来,工作量还会小得多,这种软件实在不能说是有用的软件。

有用的软件可以提高工作效率。计算机的长处在于运算更快、更准,存储更多、更久,分享更全、更易,无论用户的要求多么无理它也不会闹情绪。利用好计算机的这些特点,没有理由不提高工作效率。如果软件不能提高工作效率,绝对不能说是有用的软件。提高工作效率一般体现在这些方面:同样一件事情,完成的速度大大提高了,例如一个审批流程,以前可能需要三天,现在三个小时就可以完成了;或者经过软件优化后,有些工作根本就不需要了,例如使用财务软件后,登记明细账簿的工作就可以取消了;或者有些工作需要的人力资源大大减少了,例如编排生产计划,以前需要计划助理到车间收集生产状态,用了软件后可能这种岗位就不需要了;或者相同的人员,可以完成更多的工作,例如采用作业成本法计算生产成本,通过软件可以完成非常复杂的计算过程,并且快速、准确,在以前,同样一个成本会计不可能做到这一点;或者可以降低工作难度,例如生产数据统计员,使用软件后很多生产数据可以直接从生产过程中获得(如生产任务完成时间、机器号等),而不需要统计员再去进行手工统计。

有用的软件可以降低资源消耗。利用软件来降低资源消耗体现在许多方面,例如,可以通过库存管理减少仓库物料的无故丢失;可以通过计划管理软件提高库存的周转率降低资金的积压;可以通过办公管理软件降低办公物品的消耗;可以通过生产管理软件降低生产材料的消耗;可以通过调度软件让任务安排得更科学,降低生产能耗,等等。

软件的有用性还表现在很多方面,如规范流程、提升客户感知、增加企业核心竞争力、帮助决策等,这里不再赘述。

有用,是好软件的最基本条件,其他方面做得再好,如果缺少有用性,这个软件也不能说是一个好软件。软件开发之前为什么要进行需求调研呢?最重要的目的就是为了保证软件的有用性。

2.好软件是易学的

好软件充分考虑到易学性。所谓易学,就是指软件功能方便学习,容易上手。对于易学性,需求分析者的终极目标是,所设计的软件功能不需要任何培训,用户看着界面就可以学会操作,用户通过自学有什么问题都能自己解决。当然,管理软件与面向公众的社交软件还是有很大区别的,要想达到这个境界不大可能,但在做设计的时候,设计人员应该时刻提醒自己,这里如果再努力一把,是不是用户就可以不用学习了?或者,是不是可以减少用户的学习难度?容易学习的功能,对于用户来说,使用中会觉得是一种享受,也就更加容易接受软件,对于后面的实施来说,可以大大减少培训成本。

比起十多年前,如今的用户对软件的易学性要求越来越高。由于一批又一批软件人的努力,现在的用户对软件体验的要求越来越高,对软件的期望也越来越高,对于学习软件的耐性却越来越少了。这些因素决定了,在易学性方面下多少工夫都是值得的。

3.好软件是易用的

好软件充分考虑到易用性。所谓易用,就是指软件用起来舒服、趁手,处理问题全面、容易、方便、快捷,犯了错误容易纠正。请注意易用性与易学性之间的区别,易学性指软件容易学会,而易用性指学会之后,使用软件处理问题的感受,这是两个完全不同的概念。有些软件容易学会,但确实不易用,也许它容易学习的原因只是因为功能简单罢了,而功能简单往往预示着处理问题不全面,也就是说有一些问题甚至处理不了。软件的易用性一般体现在以下这些方面。(1)在操作层面,界面美观大方,录入或操作快速、方便,功能出现在需要的地方,处理同一件事鼠标点击、键盘击键次数最少。(2)在业务层面,处理问题容易、快捷,不需要切换一大堆界面,处理问题全面,一些异常业务也可以方便处理。(3)在性能层面,软件反应速度快,占用资源少。

易学性是针对没有学会软件的新用户,易用性是针对已经学会软件并可以熟练操作的老用户。

4.好软件是灵活的

好软件充分考虑到灵活性。所谓灵活,就是指软件不仅满足于能够实现用户当前的需求,还会充分考虑到其他的特殊需求,充分考虑到软件的发展,让软件易于扩展,易于应对可能的需求追加与变更。无论开始的需求工作做得多完善,用户的需求终究会有变化,或者需要修改某些需求,或者需要增加某些需求,或者需要取消某些需求,而灵活的软件具有柔性,即使用户的需求发生了变化,软件不修改也可以解决很多问题。当然,任何软件都不可能解决所有问题,作为设计者,能做的是尽量设计出可以应对更多需求变化的软件,也就是尽量增加软件的灵活性。

使用字典代替写死的数据,使用参数开关控制程序的代码分支等,这些都是提高软件灵活性的常用手段,人们所看到的几乎每一款好软件都有大量的参数开关(一般都在“设置”的功能中),这就是软件开发者为了软件的灵活性所做的努力。

5.好软件是健壮的

好软件充分考虑到健壮性。所谓健壮性,是指软件在用户使用过程中有很强的容错性,可以帮助用户少犯错误,犯了错误可以纠正,可以反悔,用户在使用软件的过程中没有心理负担。在这里,“健壮”的反义词是“脆弱”,脆弱的软件,用户使用时需要小心翼翼,神经绷得紧紧的,数据不能录错,不能删错,操作顺序不能颠倒,不该点的按钮不能乱点,不该打开的界面不能随便打开等,一不小心犯了错误,就会付出很大的精力处理,有时候甚至只能由软件维护者在后台才能修好,总之,软件中仿佛布满了地雷,一不小心就会引爆,轻者皮破肉烂,重者残废丧命。

6.好软件是高效的

好软件考虑到性能要求,追求功能的高效性。所谓高效性,指程序执行速度快,占用的IT资源少。IT资源一般包括数据存储能力、服务器运算能力、网络传输能力、客户端运算能力等方面,不同的业务系统,不同的架构方式,甚至针对不同的用户,关于这几个方面的考虑重点并不相同。

软件功能再强大,能解决的问题再多,执行起来如蜗牛般缓慢,让人等得几乎要崩溃,也不算好软件。高效的软件会努力提高功能的运行效率,降低IT资源的消耗,让软件系统运行得更快速、更经济。

7.好软件是方便交互的

好软件方便用户与系统之间交互,具有交互性。交互性,指程序在执行过程中可以与用户进行友好沟通,让用户顺利获得应该知道的系统信息,让系统顺利获得用户应该提供的信息。例如,执行某一项操作需要用户等待很长时间,用户就会觉得烦躁,不知道是不是系统出了问题,不知道还要等待多久,但是,如果有进度条显示执行进度,那么就会大大减少用户的烦躁情绪,也就是通过进度条让用户知道系统内部的信息(执行进度),从而提高交互性。

当用户在界面上操作时,一个友好的系统会将执行信息根据需要反馈给用户,有些信息只是告诉用户一段程序执行的状态,如常见的告诉用户保存成功的提示消息,而有些是用于接受用户额外指令的,如让用户确认是否删除某记录的提示消息。系统反馈给用户的信息,可以通过各种方式表达出来,如弹出消息框、显示在某固定区域、写入日志文件等,有的时候也会通过组件形状变化、位置变化、颜色变化、文字字体变化之类的方式向用户传达。

8.好软件是可重用的

好软件具有可重用性。可重用性,指本软件对不同环境的适应性。重用,可能是整个软件的重用,也可能是软件中某些功能的重用。有些产品型的软件,可以原封不动地用到多个企业中,不需任何修改,或者只需要进行少量修改,这就是整个软件的重用;有些软件的某些功能,可以复制到别的软件中继续使用,如很多团队的“用户管理”“权限管理”之类的功能。对于功能的重用,有些功能自成体系,跟本功能之外的功能、数据没有任何关系,具有最强的可重用性;有些功能隶属于某个环境,离开这个环境就没有任何意义,那么这种功能就没有任何可重用性。注意,这里所说的重用,是指功能级别的重用,跟代码级别的重用(封装函数、过程、类之类)是两码事,不可混为一谈。

增加可重用性,可以大大降低团队的开发成本,提高开发速度,增加软件系统的稳定性等。1.1.3 管理软件的发展

随着IT技术的普及,越来越多的企业管理者倾向于使用计算机辅助自己的管理工作。谁都知道,没有好的软件,计算机、网络这些硬件设备是没有任何价值的,正如有铁轨却没有火车,有公路却没有汽车一样。管理者刚开始使用的软件偏向于一些工具类的软件,如Word、Excel、邮件系统等,这些系统有一个共同的特点,就是可以提高某些具体工作的效率,而且非常明显,同时由于有很强的同质性(大家使用的都是相同的软件),可以大量复制,采购成本很低,因此使用起来非常容易,普及起来也很快。

后来管理者发现,软件可以帮助自己做更多的事情,有些事情,软件做起来比人要快得多、正确得多。企业规模越大,管理起来越复杂。几十个人的小公司,巡查一圈,吆喝一嗓子,基本上把该了解的东西都了解了,如果是几千人、几万人的大公司,员工分布在各个地方工作,管理者要想了解自己所管理的这些人的情况委实不易。管理者做决策,最重要的也是最麻烦的事情就是获得信息——快速地获得正确的信息。为什么你的领导总是比你看得远些,总是显得比你高明些?大部分情况下不是因为他比你聪明,而是因为他掌握的信息比你多。

于是,越来越多的管理者重视起长于处理各种管理信息的管理软件了。开始时管理软件的重点在信息的录入与收集,因为这是管理过程中最需要的东西,也是管理软件比较容易处理的部分。很多公司的管理信息化都是从Excel开始的,管理者最关心的信息,如客户、订单、回款、工资、物料之类的信息,都可以通过Excel进行录入与管理,而Excel购买成本低,学习、使用非常方便,使用它作为管理信息的录入、收集系统最好不过了。Excel本身是一个工具软件,不能称为管理软件,但是却可以使用Excel建立一个管理软件系统,不管这个系统多么简单。不过,使用Excel进行管理,却有很大的局限性:Excel录入太随意,录入数据容易出错;Excel往往只能充当数据的收集软件,不能直接使用到工作中,势必需要专人进行数据的整理与录入,导致信息滞后还浪费人力;Excel不太适合集体作业,流程作业;Excel的信息比较零散,如果要进行综合性的分析需要在数据处理上耗费大量的时间与精力等。

认识到Excel的局限性后,管理者开始将眼光放到真正的管理软件上来。通过采购或开发,财务部上个财务软件管理财务数据,人力资源部上个人力资源软件管理工资、考勤数据,仓库上个仓库管理系统管理仓库物料信息等。这些管理软件可以彻底解决Excel面临的那些困难,它们可以真正使用到工作中,在工作过程中自然地获得信息;还可以对工作起到规范作用(有些事情,不按照系统的规范要求就没法处理);也支持不同岗位的协同作业,例如,上了财务软件后,支持现金会计在系统中录入现金、银行存款收支记录,支持成本会计在系统中录入成本核算记录,支持总账会计根据这些记录生成会计凭证结账等;还可大大提高某些岗位的工作效率,例如,在手工记账时,会计人员根据记账凭证登记账簿的工作量很大,有了财务软件后这项工作就完全由软件替代了。

随着这些软件的使用,越来越多的各级管理者发现了软件带来的好处,于是纷纷决定使用管理软件来协助管理,软件越上越多,管理者也越来越离不开软件,然而,管理信息化到了一定阶段后,管理者就会遇到一个无法逾越的鸿沟——信息孤岛。在这个阶段,企业里存在着许多管理软件,不同的软件管理不同的业务,车间有个软件管生产任务,仓库有个软件管库存物料,计划部有个软件管生产计划,销售部有个软件管销售订单等,它们各自为政,老死不相往来,这就形成了所谓的“信息孤岛”。这个岛上存放着库存信息,那个岛上存放着订单信息,那个岛上存放着回款信息,无法沟通。注意这里的信息孤岛与数据存放的物理位置没有关系,存放在同一服务器甚至同一数据库中也可能是信息孤岛,存放在世界各地服务器上的数据也可能不是信息孤岛,关键不在于数据存放的位置,而在于这些数据是不是一个有机体的一部分。由于有信息孤岛的存在,给管理者获得信息带来了巨大的困难,越是高层的领导,受信息孤岛的影响越大。或者信息格式不一致,在不同的系统中无法统一处理;或者相同的信息,在不同的系统中的结果矛盾,不知道哪一个是正确的;或者有些信息,明明另外一个系统中存在,却不得不在这个系统中重新录入才能运行下去;或者为了统计某些数据,不得不从不同的系统中手工摘抄,浪费人力且影响士气等。

为了解决信息孤岛的问题,管理者需要一揽子集成解决方案,通过软件将公司的信息统一管理,统一设计格式,统一编码,统一管理数据流向,统一数据入口,避免数据的重复录入等。在这个阶段,企业的统一数据建模显得异常重要。对于一个企业来说,在管理过程中存在大量的数据实体(可以理解成对应于数据库中的表),少则数百多则成千上万,它们有着千丝万缕的关联关系,也有着复杂的业务背景。随着软件规模的扩大,数据的关联复杂程度呈指数级上升。这种集成解决方案的实施难度绝不是简单的一个个小系统的累加,它要复杂得多。从MIS到ERP,都属于这种解决方案。一般企业总是在存在了若干信息孤岛后才会着手实施这种解决方案,于是就会有一个非常麻烦的事情等着管理者——如何处理已经存在的信息孤岛?很多麻烦事需要处理:以前的操作已经成了习惯,员工改变习惯很难;以前的历史数据与新软件的数据格式不兼容,很难导入新系统,历史数据又不能放弃;以前的特定软件虽然不能集成,但有些功能确实相当强大,真不情愿放弃等。许多集成方案最终归于失败的原因都是因为没有解决好信息孤岛问题。

成功实施集成解决方案后,企业信息获得了最大限度的集成,各种信息可以非常顺畅地流动,所有岗位的信息可以相互共享,各种资源可以充分整合,软件系统植根于工作中,成为工作中不可或缺的工具,工作流程被软件所规范,由于信息得到了及时、充分、系统的收集与整合,使得大量的智能运算成为可能,可以给各级管理者提供决策分析工具,大大提高了管理效率。但是,管理者认识到,企业并不是独立在市场中生存的,一般都是某条价值链(所谓的价值链,就是从原料到消费者的路径,例如纺织价值链,是由种棉花、纺纱、织布、染色、制衣等各个环节构成的)中的一环或几环,自己管理得再好,如果这条价值链其他的环节出了问题,自己的企业一样可能出问题,这样就诞生了供应链管理的思想。通过供应链软件系统,企业可以跟自己的供应商、客户分享信息,抱团取暖,从而提高这些企业群体的共同竞争力。

最后要注意的是,以上所说的管理软件的发展过程只是一种行业性的示意过程,并不是说每个企业都一定会经过这些过程,对于具体的企业,使用管理软件的发展过程是由其行业特性、管理方式、管理者思想、地区习惯、竞争对手等各方面因素决定的。正如马克思为人类社会发展划分的阶段,并不是每个民族都经过那些发展阶段的,例如,非洲很多民族就是从原始社会直接发展到资本主义社会的。1.1.4 常用的管理软件

管理是非常宽泛的概念,它深入到企业业务活动的方方面面,因此用于辅助管理的管理软件包罗万象,从一个简单的工作日志记录系统到企业的信息化集成解决方案都可以算作管理软件的范畴。这里介绍一些常用的管理软件,希望能帮助读者更深入地理解什么是管理软件。

1.财务软件

财务软件的主要用户是财务人员,核心功能包括记账凭证录入,生成会计明细账,结账,生成会计报表等功能,功能扩展后还可能包括应收账款、应付账款等往来账项的管理,成本核算管理,固定资产管理等。企业管理中,财务软件是普及率最高的管理软件,很早很早以前就非常普及了。这么普及的原因,笔者觉得,一是软件开发者确实下了不少功夫;二者,对于高层管理来说,财务任何时候都是非常重要的事情;再者财务会计的业务规则比较明确,全中国都是采用财政部规定的统一标准,做信息化比较容易,也更容易做成可以复制的软件产品,大大降低了开发成本,一套财务软件可以使用到全国各地各行各业,对于别的管理软件来说,这几乎是不可能的。中国知名的财务软件包括用友、金蝶等,大概是由于国情的原因,在中国貌似很少有公司用国外的财务软件。

2.进销存

进销存软件主要以仓库管理为核心,同时管理采购与销售,强调对物料资产进行管理。“进”的方面,主要包括对供应商、采购计划、采购合同、采购订单、采购入库、供应商应付账款等方面的管理;“销”的方面,主要包括对客户、销售合同、销售订单、销售出库、销售退回、客户信用、货物装运、客户应收账款等方面的管理;“存”的方面,主要包括对仓库物料的入库、出库、盘点、退回、结存、库位、批次、包装等方面的管理。财务软件是以管理资金为核心,而进销存是以管理物料为核心,由于这两种资产都是管理者异常关心的,因此在企业中的使用率都相当高。国内几乎各大管理软件供应商都推出了自己的进销存软件。

3.ERP

ERP全称Enterprise Resource Planning,即“企业资源计划”。ERP作为企业信息化的集成解决方案,在企业中的使用率越来越高。由ERP的理念又衍生出各行各业的资源计划式的解决方案,如面向高校的CRP(College Resource Planning),面向医院的HRP(Hospital Resource Planning)等。ERP类的软件一般提供财务管理、采购管理、物料管理、库存管理、销售管理、生产管理、计划管理、成本管理、财务管理等一系列功能。既然叫“资源计划”,ERP的核心在于资源的集成及计划的运算与管理,一般包括两个方面,一是通过物料资源的集成,运算生成物料采购与生产计划;二是通过生产能力资源的集成,运算生成生产资源的安排计划。ERP起源于制造型企业,后来ERP的概念扩展到其他行业,但往往偏重于信息集成。有些ERP软件是从生产管理发展起来的,最后扩展到财务,这种软件往往偏重于生产、计划管理;有些ERP软件是从财务软件发展起来的,从财务扩展进销存,扩展到生产计划管理,这种软件往往偏重于资产信息的管理。

4.MES

MES全称Manufacturing Execution System,即“制造执行系统”。MES用在制造业,核心是面向车间内部生产活动的管理,可以理解成ERP系统中的生产管理、计划管理等功能的进一步延伸,主要包括生产计划管理、生产单管理、调度管理、生产数据采集、产品质量管理、生产工艺管理、机器设备管理、生产成本管理等功能。由于MES实施相当复杂,不同企业的生产管理方式千差万别,导致软件很难复制使用,并且不像财务、进销存系统那样容易看到成果——一般企业自然不愿意投入过多预算,因此真正成功的案例并不多。但最近几年,由于制造企业对于全面质量管理、精益化生产的要求越来越高,愿意在这方面投入预算的企业也越来越多,相信在不久的将来MES会成为管理软件界的热点。

5.CRM

CRM全称Customer Relationship Management,即“客户关系管理”。软件的核心在于市场、销售、客户的管理,主要包括客户管理、业务员管理、市场营销管理、销售管理、客服管理、客户价值分析、业务员分析、订单分析等功能。绝大部分企业都会把自己的营销工作作为重中之重,从市场活动,到潜在客户挖掘,到客户拜访,到下销售订单,到产品交付,到回款,到客户关系维护,到提供持续服务以不断提高客户的满意度等,都可以归于市场营销的范畴,而这些都是CRM软件管理的重点。

6.OA

OA全称Office Automation,即“办公自动化”。软件的核心在于公司内部的办公管理,主要包括通知公告、公司新闻、工作安排、知识共享、通讯录、沟通交流、公文管理、会议室管理、工作车辆管理、工作流程管理、移动办公等功能。由于移动互联网的高速发展,现在通过手机办公的需求越来越强烈,因此手机办公平台成为OA系统不可或缺的重要组成部分,当然,由于屏幕尺寸、输入方便程度的限制,手机上的办公功能主要在于通知新闻的阅读、简单的工作汇报、审核审批工作流程等,不过由于手机在拍照、录音、定位等方面的强大优势,它一定会从根本上改变人们的办公习惯。由于各企业的办公方式非常类似,OA系统比较容易产品化,容易复制,现在OA系统的普及率越来越高,价钱也越来越便宜。

7.各种业务系统

管理软件远不止上面的这些,更多的是在各行各业广泛存在的各种业务管理系统。每个单位都有可能根据自己的要求引进或者开发管理软件,如学校上一款软件系统管理学生的操行记录,汽运公司上一款软件系统出售汽车票,公安部门上一款软件系统管理暂住证的发放,医院上一款软件系统管理处方等。这所有的业务系统都属于管理软件的范畴,从事这方面工作的软件团队太多太多了。1.1.5 管理软件的实施方式

当一家企业需要使用管理软件来辅助管理时,有多种实施方式可以考虑,可以自己开发,可以委托开发,可以采购软件,可以租用软件等,这些实施方式各有优缺点,企业可以根据自己的管理特点灵活选择。

1.委托软件公司开发

企业可以委托软件公司根据自己的管理方式开发合乎自己要求的软件。这种方式最大的优点是,软件是根据自己的业务活动、管理流程、管理特点开发的,量身定做,所谓无论多名贵的衣服,不合身的都不是好衣服。这种方式可以保证开发出来的软件最大限度地满足自己的要求,不需要强迫自己改变管理方式去适应某一款软件,推行的难度也小,如果软件公司的实力够强大还可以一边开发一边充当信息化管理咨询的角色,努力给企业的管理工作带来质的飞跃。

不过,由于这种方式纯粹是根据管理者自己的想法开发出来的,也导致了不可避免的缺点,那就是管理者的想法未必就是好想法,根据他的想法开发出来的软件自然也未必就是好软件。管理者长期从事这个企业的管理工作,非常容易形成思维定势,觉得自己针对很多问题的解决方法是天经地义的,但要知道,它山之石可以攻玉,也许就有更好的解决方法存在于思维盲点中呢?成熟的管理软件,会从很多企业提炼管理思想,对于管理者来说,这种思想很可能会意味着某种完全不同的管理思路,这种思路未必就适合这个公司,但是由于有这种管理思想的冲击,相信会给管理者带来许多关于信息化管理的灵感,因为灵感往往会从思想的碰撞中产生。

2.企业自主开发

有很多企业(特别是大中型企业)雇用了一些软件开发人员从事企业的信息化工作。

相对于委托软件公司开发,这种方式的优点是:软件开发者长年累月在公司内部工作,对公司的业务相当熟悉,对公司的业务活动、管理方式了解得很清楚,开发软件时只需要经过简单的需求调研就可以开始工作,效率很高;一旦软件有什么问题,由于开发者就在公司工作,进行调整、变更什么的都比较方便,应对也迅速;另外,由于每个公司的管理方式都会不断变化,管理软件需要跟随企业管理方式的变化而变化,开发者可以根据企业的要求随时进行软件变更,对企业管理者来说当然非常方便。

但是,对这种方式的缺点也需要有非常清醒的认识。企业内部的开发者,由于在这个企业内部工作(有些甚至一毕业就在这里工作,从来没有到过第二家企业),对外面的企业管理了解不多,做软件开发时,往往长于将公司的管理流程电子化,不太容易站在一个较高的角度研究如何通过信息化的手段对公司的管理进行一些必要的改善,不像软件公司的开发者,接触的企业多,在设计、开发过程中可以给公司的管理者提出一些关于信息化管理的建议,从而促进管理进步;另外,除非是一些比较牛的公司,一般不是搞IT的公司也不会有太多的软件人才,一者成本太高,二者也不容易留得住,这样就导致软件的健壮性、可维护性、可扩展性、可持续发展性都可能有严重不足,软件很快就发展到了自己的极限,软件团队为了应对管理变化不得不一次又一次舍弃原来的软件,重新开发新软件,这种浪费是巨大的;最后,还有的时候会遇到关键开发人员离职的情况,这对企业的信息化工作会有严重的打击,不像软件公司分工较细,人才也相对多些,一般都有一套管理方案应对人员离职,保证自己对客户的持续服务。

3.采购套装软件

所谓的套装软件,就是由软件公司开发的软件成品。有一段时间,这种软件是这样销售的:一个包装盒,一片光碟,一本说明书。付款后,服务人员上门安装,做下简单的培训,然后企业就可以使用了,使用过程中如果有什么问题,软件公司可以提供上门服务支持。这种方式觉得有点儿像现在卖空调、电视机的感觉。

不是所有的信息化需求都可以采用这种方式的,一般主要限于那种涉及的业务面较窄,管理变数较小的地方,如财务、库存、人力资源管理等。这种方式最大的优点在于成本低,价格便宜。由于是套装软件,软件公司开发完成后可以大量复制,研发成本投入后只要投入升级、维护的成本,可以将价格定得很低。另外,这种软件往往都比较稳定——成千上万的企业使用这套软件,经过千锤百炼,该出的问题都出现过了,能解决的问题都解决过了,用的人越多,自然稳定性就越高,这不是现开发的软件可以比拟的(无论开发、测试能力多么强大)。这种方式最大的缺点是不够灵活,几乎无法扩展,由于软件功能是固定的,企业只能根据它的功能使用,如果要定制开发成本会很高,一旦企业的业务发展需要扩展软件功能时,也很难做到。

4.引进解决方案

越来越多的大型软件公司提供企业信息化的整套解决方案,一般会面向不同的行业提供不同的解决方案,市面上大量的行业ERP基本上都是这种解决方案,如医药行业信息化解决方案、汽车行业信息化解决方案、服装行业信息化解决方案等。

引进这种解决方案的最大特点在于,并非仅仅购买了一套软件,而是同时购买了一种信息化服务,需要有咨询顾问到公司来,根据公司的情况进行信息化管理的综合策划,形成信息化解决方案,然后通过软件将这种方案实现出来。这种方式对咨询顾问的要求很高,他需要精通从管理到软件的各方面的知识,并且需要有大量的实施经验。由于这种方式牵涉企业管理的方方面面,需要长年累月的工作,需要对企业的管理方式进行巨大的变革,而变革往往就意味着会有大部分人的反对,因此企业一把手的支持程度往往会成为决定这种方式失败成功的最关键因素。

5.租用软件

软件的云服务是管理软件行业越来越热门的一个实施方案,因为Salesforce的努力,管理软件界越来越接受这种模式了。所谓的云服务可以理解成以前所说的SaaS(Software as a Service)模式——软件即服务。这种方式下,企业不是采购软件而是租用软件服务,软件部署在企业之外的云服务器上,软件公司提供软件服务,企业不需要投入硬件资源,需要使用软件时可以租用云服务器上的软件,软件、数据都在云端,企业根据租用的空间、时间、功能等付费,什么时候不需要了就可以停止租用,软件公司停止服务。

这种方式最大的优点在于企业的初始信息化投入很少,不需要自己搭建硬件系统,不需要管理机房,不需要专人维护系统,只要接入互联网就可以使用软件,入门门槛很低,使用方便。缺点主要是实时性的问题,由于软件、数据不在公司内部,有些对实时性要求很高的操作很难达到要求(例如车间中的物流管理);另外,数据不在自己公司内部,直接通过互联网传输,总觉得不安全,有被泄漏出去的风险(这可能是个理解误区,数据放在家里也未必就安全);当然,网络的稳定性也是不能不考虑的风险,哪一天公司网络断了,业务就没法处理了,这还是比较令人头痛的。1.2 认识需求分析

认识了管理软件后,再来看看什么是需求分析——本书特指面向管理软件的需求分析。本节是对全书内容的概括,可以让读者在准备阅读全书前对本书有个概要了解,内容有些抽象,读者在阅读过程中如果觉得有任何困难,都可以直接跳到下一节,在读完全书后再阅读本节的内容,或者,即使不再阅读也不会有什么影响。1.2.1 什么是需求分析

软件开发一般包括可行性分析、需求分析、软件设计、软件开发、软件测试、软件实施、软件服务等步骤。需求分析是软件开发的一个步骤,主要作用是充当软件研发与客户之间的桥梁,主要包括对客户的信息化需求进行分析,将客户不规范的、随意的需求,转换成规范的、严谨的、结构化的需求,将客户不正确的需求转换成正确的需求,将客户不切实际的需求转换成可以实现的需求,将客户不必要的需求砍掉,将客户漏掉的需求补上,等等。

本书所说的需求分析包括需求获取、系统规划、软件开发设计、软件变更设计等工作,以下案例说明了需求分析工作的主要内容。

案例:需求分析工作的主要内容

小王是某软件公司的需求分析师(小王运气不错,接下来,他会成为本书所有案例中的首席需求分析师)。最近公司刚签了一份软件开发合同,需要给一家企业开发一套库存管理系统用以管理该企业原材料、半成品、成品三个仓库的储存物料,小王负责这个项目的需求分析工作。

在到企业现场之前,他先准备了一份需求调查问卷发给各个仓库保管员与仓库会计,获得答卷后他做了仔细研究,觉得自己对这几个仓库的管理已经有了初步理解。然后他来到企业工作现场,收集了仓库用到的所有单据,如入库单、出库单、验收单等,分析这些单据后他搞清了仓库目前的信息处理情况,然后跟分管仓库的企业副总、物流经理、保管员、仓库会计做了单独的访谈,获得了他们对信息化管理的想法。

需求调研完成后,小王进行了系统规划。有些需求明显超出了项目范围,需要做控制,如副总提出能否在系统中管理生产任务,明显超出了这个库存系统的范围;有些需求,没有人提出来,但为了仓库的信息化管理是必需的,小王建议加进去,如仓库每个月给财务的结存报表,有了系统后明显不应该再由人工做这件事了。经过整理、讨论、沟通、说服等过程后,小王最终跟客户确定了需求。根据确定的需求,小王跟客户讨论确定了未来在信息化管理系统下的管理方式,包括相关人员应该如何工作,各岗位与信息化系统相关的工作职责,使用者的计算机终端如何布置,在什么情况下需要使用软件,等等。

然后小王开始进行软件设计。他先根据软件需要处理的信息,以及信息流动的过程,设计了数据模型,确定本系统需要哪些业务实体,每个实体包括哪些属性,各个实体之间的关系等;然后,他进行功能建模,确定需要提供哪些功能点,每个功能点包括哪些子功能,每个功能的业务规则等;接下来,他使用一款原型设计工具进行软件功能界面的设计,在设计的过程中,他安排时间给相关用户讲解自己的设计思想,告诉用户在工作过程中需要如何使用本软件,一边听取用户的意见,一边修改;另外,遇到一些技术上不容易实现的地方,还会征求开发人员的意见,经过几次外部、内部评审会后定稿了;最后,他根据设计成果撰写了原型说明书。

小王将数据模型、界面原型、原型说明书交给研发部门据以开发。

软件开发完成上线后,用户提出有些功能不符合管理要求,需要修改,提出了需求变更要求,小王根据用户要求设计了需求变更解决方案,撰写了需求变更说明书,交给研发部门修改软件。1.2.2 需求获取

需求获取就是通过需求调研获取用户对信息化的需求。常用的需求调研方式包括观察法、体验法、问卷调查法、访谈法、单据分析法、报表分析法、需求调研会法。这些方法在实际工作过程中需要灵活运用,不同的企业、不同的部门、不同的岗位、不同的业务都有可能导致调研方法的变化,不可生搬硬套。

1.观察法

通过观察用户的工作过程,理解用户业务,从而获取用户关于信息化的需求。例如,可以通过观察仓库保管员的入库、出库过程理解仓库物料的出入流程。

2.体验法

调研者亲自参与工作,通过体验用户的工作,理解用户业务,从而获取用户关于信息化的需求。所谓体验,就是去学习用户的工作,然后独立或者在指导下真正参与用户所从事的工作。例如,可以通过参与收银工作理解商店收银员的收银流程。体验法可以非常深刻地理解用户业务,但代价较大。

3.问卷调查法

通过发布调查问卷,由用户填写问卷的方法获取需求。这种方法由于需要较高的问卷编写水平,而回答的人也很少会在认真仔细思考后作答,效果并不好,用得不多。当需要快速、概略性地了解某业务时,可以考虑使用这种方式。

4.访谈法

通过与用户面对面的交谈理解用户业务,获得用户需求。访谈可以非常正式,有访谈稿,有预约,有精心准备好的会议室等;也可以非常随便,在餐桌边,在电梯上,在电话中,都可以进行一次访谈。这是使用得最普遍的需求调研方式。

5.单据分析法

通过分析用户现有纸质单据获得需求。由于我们开发的软件主要就是用来管理企业信息的,而在没有信息化系统时,单据体系本身就是企业的信息系统,只是没有电子化而已,所以分析单据相当重要,如果设计的软件承载不了这些单据所承载的信息,往往就意味着在软件使用过程中会有大量的麻烦在等着你。

6.报表分析法

通过分析用户当前使用的报表获取需求。报表往往是信息的集大成者,在电子化的信息系统中如此,在非电子化的信息系统中也是如此。报表一般都是管理层用的,理解报表就是理解管理者的管理思想,通过刨根问底地研究当前报表中的每一个数据项的来源,可以深刻理解管理层对信息的要求。

7.需求调研会法

通过召开需求会议获取需求。当需要讨论的需求问题牵涉到的相关人员较多时可以组织需求调研会,可以在会议上理清流程、确定分工、调和利益等。由于牵涉的人员较多,并且可能有企业高层领导参加,在召开需求调研会时需要认真组织,认真准备,否则不但可能搞砸,还有可能让自己威信扫地,给后面的工作带来不便。1.2.3 系统规划

获得需求之后,需要根据需求进行系统规划,系统规划的过程就是根据用户的需求规划企业的信息化管理体系的过程。

1.需求确定

系统规划的第一步是对用户的需求进行校正。要知道用户的需求并不总是正确的,我们做软件追求的是“实现用户正确的需求”,对于不正确的需求要坚决剔除。不正确的需求包括很多方面,例如,用户的需求技术上实现不了,用户的需求没有必要,用户的需求重复,用户的需求超出项目范围,等等。另外,在很多时候,由于用户对信息化工作并不了解,根本不知道如何提需求,或者好多工作中必不可少的需求都想不到,这时候还要引导用户提出他想不到的需求。

2.整理需求

需求确定后需要将需求用文档整理清楚,本书主要介绍了需求调研报告的编制方法以及业务流程图的绘制方法。

3.系统蓝图

在进行软件开发或选型之前,需要对未来的信息化管理工作有个总策划,我们称之为系统蓝图,这个“系统”并不仅仅指软件系统,而是指相关业务的整个信息化管理体系。需要策划企业在未来有了软件系统后相关人员如何工作,业务如何运转,流程如何推动,管理如何进行,等等。不可能所有的工作都经过软件系统,需要确定哪些人使用软件系统,哪些工作经过软件系统。需要决定企业人员在工作过程中如何在软件内外切换,每个岗位跟软件相关的工作场景是什么,确定每个人在什么情况下使用软件处理业务,怎么处理,对每种异常情况是不是有处理预案,等等。

系统蓝图策划后要决定使用什么方式实施,如果是在甲方工作,那么有两种方式可供选择,一是内部开发,二是采购;如果在软件公司工作,一般实施方式在售前阶段已经确定,是使用现成的软件产品,还是根据客户要求开发,等等。本书主要讲述如何根据要求开发。1.2.4 数据建模

我们使用的是关系型数据库,数据建模就是设计数据库的表结构,这项工作可以在功能设计之前,也可以在功能设计之后,也可以同时进行,不同的团队有不同的工作方式。一般来说,越是复杂、大型的系统,数据建模工作越重要,也越应该尽早进行。良好的数据库结构可以让数据流清晰,可以降低功能设计与开发的难度,特别是一旦发生了需求变更,可以灵活应对。对软件开发有点儿经验的人都知道,一旦软件投入使用,修改数据库结构是非常致命的。

1.实体关系

所谓实体,可以理解为可以看得见摸得着的事物的种类,如员工、供应商、原料等。注意,数据库设计所说的实体是事物的种类,不是个体,“员工”是一种实体,而“张三”只是这种实体下的一个实例。每一种实体都有若干属性信息,如“员工”实体,包含工号、身份证号码、生日等各种属性。

在进行数据库设计之前,首先要分析好本系统需要管理哪些实体,这些实体的关系如何。相信大部分读者都知道实体关系图(E-R图),这个工具就是用来分析实体关系的,本书以实战为宗旨,不会在这方面说得太多,但并不表示这方面的知识不重要,相反,在进行数据库设计时,它应该始终在脑中盘旋。

现实世界中实体之间的关系一般有三种:一对一,一对多,多对多。

一对一的关系:如果实体A与实体B是一对一的关系,那么表示实体A中的一个实例,在实体B中或者没有实例,或者只有唯一一个实例可以与之对应,并且,实体B中的一个实例,在实体A中也是或者没有实例,或者只有唯一一个实例可以与之对应。

一对多的关系:如果实体A与实体B是一对多的关系,那么表示实体A中的一个实例,在实体B中可以对应多个实例,而实体B中的一个实例,在实体A中只能对应一个实例。

多对多的关系:如果实体A与实体B是多对多的关系,那么表示实体A中的一个实例,在实体B中可以对应多个实例,而实体B中的一个实例,在实体A中也可以对应多个实例。

在现实业务中,一对一的关系其实非常少,一对多的关系也不多见,大部分情况下都是多对多的关系。

2.范式

所谓范式,是指数据库中的表满足的准则。

第一范式,所有表的属性(在数据库中,属性就是字段,这两者是同义词)不可分。这个大概是历史遗留问题,对于关系型数据库管理系统来说,表的属性都是不可分的。

第二范式,所有表的非主属性依赖于主属性。这个可以理解成所有表都需要有个关键字,只要有关键字自然就满足了第二范式。

第三范式,所有表的非主属性只依赖于主属性。这个可以理解成,所有非主属性不会依赖于其他非主属性。假设有个订单表管理销售订单,在这个表里面存储客户信息时(订单号为主属性,客户依赖于订单号),只要存储客户代号就可以了,不要把客户名称也存储在这里。

BC范式,这是第三范式的补充,针对那种主属性有多个字段的表,所有非主属性依赖于主属性,但不能只依赖于主属性的一部分字段。

在设计数据库时,一个重要的思想是,不能违反范式,如果违反范式,那么要有这么做的充足理由,并且对后果有清醒的认识。

3.数据库设计

数据库设计就是设计本软件在数据库中需要哪些表,这些表有什么关系,每个表包括哪些字段等。

表:表是根据实体设计的,但要知道,数据库中的表跟实体之间是有本质区别的,现实世界中的同一实体,在数据库设计时可能会根据业务要求设计多个表来表达它,因为在不同的业务场景中,需要处理、保存的属性信息区别很大;也有可能在现实世界中的多个实体,在数据库设计时只设计一个表来表达它,因为虽然这些实体牵涉到不同的业务场景,但需要处理、保存的属性信息相同。

表的关系:数据库中表的关系有两种,一对一与一对多。数据库中的表是没有多对多的直接关系的,一般情况下,现实业务中一个多对多的关系会被转换成数据库中的两个一对多的关系。数据库中表跟

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载