叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ee544ab366b0419728301c438bc29b2e.png#pic_center)
第7章 项目质量管理习题之案例分析汇总
【案例一】
某信息技术有限公司 曾经为K公司开发过一套信息系统,该系统涉及了K公司的所有主要业务。该系统中关于组织机构的业务规则如下:
(1)组织机构树通过部门编码体现层级和隶属关系。即部门0001的下属部门包括00010001、00010002,依次类推,根据代码中包含的层级关系确定某个部门在组织机构树中的确切位置,该编码由公司统一制定。
(2)任意一条业务数据隶属于某个特定的部门。
(3)部门之间存在友好和互斥的关系。关系为友好的部门可以共享业务数据,关系为互斥的部门互相不能访问对方的业务数据。
后来,K公司需要调整部门的组织结构,因此对系统提出了升级的要求:
(1)系统中的部门编码需要更新为最新的企业标准。
(2)组织机构根据最新的企业标准重新生成。
(3)组织结构调整是不能丢失业务数据。
(4)系统中可以保留组织机构调整的痕迹,业务数据可以追踪除原属于哪个部门,机构调整后属于哪个部门。
(5)部门间友好和互斥的关系可能会被重新定义。
(6)升级后的系统需要能够适应再次的组织机构调整而不需要再次升级。
项目经理张工接受了这个项目,经过细致的调研和分析,发现原系统存在如下缺陷:
(1)原系统中将企业对部门的标准编码设计为部门主键,修改起来难度很大,容易发生数据不一致的问题。
(2)新的企业标准没有考虑到原有企业标准,同是一个部门张工在原标准中为00010001,在新标准中为00010005,部门的层次也可能发生变化。
(3)业务数据中保存了隶属部门编码,系统已经使用近两年,保存了大量的历史业务数据。
(4)原系统在设计时将部门间的友好与互斥关系硬编码在系统代码中,且涉及面很广,原系统中80%以上的程序存在这样的硬编码。
(5)不少业务逻辑和工作流程是根据特定的部门编码进行判断的,部门编码的变化会造成业务混乱。
(6)原系统在设计时没有考虑到组织机构调整的可能,也没有对保留部门变革历史的功能进行设计。
张工认为,需求已经非常明确,对于这个项目的关键是设计的质量,其中包括解决方案的设计和业务系统的改造两部分。一旦设计出现偏差,返工的工作量会非常巨大,反之,整个项目还是容易控制的。但张工在如何提高设计质量方面却犯了愁。
案例一分析
这是一个开放式的案例分析题,案例中仅粗略地描述了项目背景的目标,针对如何提高项目质量进行发问,难度相对较大,需要仔细的分析。
前面一部分对项目背景和目标的描述无非是为了说明这么几个问题:
(1)这是一个系统改造的项目。
(2)原系统中存在设计缺陷,没有考虑过组织机构改革的可能性。
(3)需要大量更改原系统的程序,消除硬编码。
(4)需要更改已有的业务数据,同时增加部门变革历史的功能。
基于这些问题,案例的后半部分给出了张工的观点:设计质量是项目的关键,需要提高设计的质量
。结合案例后的问题,我们不难发现,案例的前半部分是引子,后半部分才是关键,也是该案例的题眼:如何提高项目的质量,显然需要用项目质量管理的知识作答
。
质量管理是项目管理中的一个知识域,但在PMBOK中并没有给出具体的质量管理的方法,需要结合软件开发和项目的特点给出特定的质量管理策略和方法
。这也正是这个案例的用意所在,考察考生在面对实际的项目问题时需要采取哪些措施解决项目的质量问题。
我们首先从软件工程的角度考虑一下软件质量的问题。软件的质量一直是软件界近几十年致力解决的问题,针对使用软件提高软件质量提出了很多的方法和理论。首先是软件工程的理论,需要使用工程活动的方法进行软件开发,从系统定义与分析开始,经过设计、实现,最终到验证。在软件工程中,人们提出了多种软件开发模式和工程活动方法。在开发模式中,有瀑布模型、螺旋模型、迭代模型、喷泉模型等;在工程活动方法中,有自顶向下、结构化分析、面向对象分析、架构风格,等等。除此之外,还有一系列的软件验证方法,如软件复审与软件测试。纵观这些林林总总的模式与方法,人们无非是想解决两个问题:一是通过恰当的工程活动提高工作产品的质量;二是在工作产品完成后通过恰当的工程活动来保证该产品的质量。
因为在软件开发过程中,还有一个很明显的特点,就是在分析、设计、实现和测试这些过程中,每一步都可能引入缺陷,且难以发现,而这些缺陷暴露得越晚,造成的后果就越严重,修改的代价就越高昂。开发活动需要尽量提前发现潜在的缺陷,验证手段必不可少。
题目中问的是如何提高设计的质量,设计是承接分析、指导开发的一个关键环节,在这个环节中很容易引入难以发现的缺陷,而这些缺陷往往又会造成严重的后果。因此提高设计的质量是每个软件项目都会遇到的问题,也是每个项目经理都会思考的问题。提高设计质量包括两个层面的工作:在设计过程中提高设计的质量;在设计完成后对设计结果的质量检查。在答题中需要分别给出相应的策略
。
设计工作在分析工作之后,因此,充分的分析是保证设计质量的前提。对于这种改造型项目,原系统的功能、设计和实现的情况直接影响了设计的结果,原系统的情况就是要解决的问题域,如果对原系统了解不足必然导致设计上的偏差。因此要想提高设计的质量,首先要充分了解原系统。
在设计时还应该选择恰当的设计方法,如有可能可以考虑复用已有的解决案例,如分析模式与设计模式等。不过在这方面,案例中给出的信息甚少,显然不是答题的重点。
根据项目背景的描述,这个设计工作并不简单,需要论证的过程,设计方案的讨论
也是必需的。因此张工需要制定出相应的沟通计划,组织必要的会议进行方案讨论,若有必要还需要客户和原系统的开发者参加。
在设计完成后还需要对设计结果进行质量检查
,对应这类活动,我们通常采用评审和走查的方式。评审和走查可以比测试更早地找出工作产品中的缺陷,用来检查设计质量非常合适,可以避免缺陷在系统测试阶段才被发现,降低修正缺陷的成本。
除了评审和走查外,对设计过程进行迭代
也可以提前暴露设计的缺陷,并将这些缺陷反馈到后续的设计过程中,从总体上减少缺陷数,提高设计的质量。例如在可以将整个项目根据系统模块进行划分,首先升级一个模块,然后把这个过程中发现的问题反馈到后续的迭代过程中。
如果能够做好上述工作,设计就不会产生重大的偏差,保证设计的质量。
对于第二个问题,除设计外,张工还需要特别注意哪些工程活动。
在分析第一个问题是我们已经找到了一部分答案——分析。分析是设计活动的基础,在错误的分析上不可能产生正确的设计。因此充分、细致地分析原系统
是保证设计质量的前提。
除此之外,对于系统改造的项目,测试的工作显得非常重要。同原系统开发相比,系统改造的总工作量相对较少,但测试的工作量却应该超过原系统开始时的测试工作量。根据案例中的描述,超过80%的程序都存在硬编码的问题,都需要修改。这些程序在修改后首先需要满足同原系统功能一致,可以通过原系统测试用例的测试;其次还要保证与系统升级的目标一致,能够满足设计的要求,这就需要开发新的测试用例进行测试。因此,如何规划、组织、展开测试工作
,也是张工需要特别注意的方面。
除了分析和测试外,其余的工程活动也是不可或缺的,不过相比之下,分析和测试工作更具特殊性,是张工必须特别注意的。
第三个问题与第二个问题是关联的。有了第二个问题的答案,第三个问题就比较容易了。
如何提高分析活动的质量呢?
对于案例中的项目来说,系统要解决的是原系统中的缺陷,原系统本身就是问题域,提高分析活动的质量也就是充分地分析原系统。
对原系统的分析可以包括对原有业务功能、原设计方案和原程序的分析。对原系统中业务功能的分析需要同客户一起进行,通过同客户的沟通来把握原系统所实现的业务功能。对原设计方案的分析出了参考设计文档外,最好能够同原系统的开发者进行沟通,这样的沟通往往能获取到文档之外的宝贵信息。例如,通过设计文档仅能了解设计的结果,但与原系统开发者的沟通则可以了解到设计的思路。除了这些方法外,对分析的结果进行评审也是保证分析质量的一种有效的方法。
对于测试工作,上面已经讲了很多,既需要保证修改后的代码仍然与原系统功能一致,又要保证同系统升级的目标一致。
案例一参考答案
问题1:
张工可以采取以下措施提高设计的质量:
(1)充分分析问题域是保证设计质量前提。
(2)组织必要的讨论来确定概要设计的方案。
(3)采用迭代的方法验证设计的正确性,提高设计的质量。
(4)对设计进行评审或走查。
问题2:
除设计外,张工还需要特别注意以下工程活动:
(1)需要细致分析原有系统。
(2)对于这样的改造项目,测试的难度和工作量很大,需要把握测试的工作。
问题3:
如何提高这些工程活动的质量:
(1)在分析方面
① 同客户充分沟通,了解原系统的业务需求;
② 阅读原系统中的文档和程序,掌握设计和实现的情况;
③ 如果可能,与原系统的开发者联系,在原开发者的帮助下把握原系统;
④ 对分析的结果进行评审。
(2)在测试方面
① 使用原系统开发过程中的测试用例进行回归测试;
② 针对改造后的系统开发新的测试用例进行测试。
【案例二】
某信息系统集成公司在完成了一个中型项目后,公司副总康工召开了一个由该项目成员组成的茶话会,会上,大家谈到了有关项目质量的一些问题。
康工说:“质量就是命根,在这个项目中,大家对质量有什么新的看法没有啊?”
小林是刚刚毕业的大学生,这是他参加的第一个项目,是在座最兴奋的一位,康工话刚落音,小李就站起来说道:“的确,质量太重要了。对于客户来讲,质量代表着投资的效率,而对于我们来讲,代表着我们的信誉。因此我觉得,质量一定是第一位的,无论做哪个项目,一定要按照规范,力求做到最好”。
康工笑而不语,又问道“大家对提高质量有何看法?”
赵工是有8年开发经验的老员工,在这个项目实施中,他担任系统分析师这一角色,赵工发言道:“以我多年的经验来看,要提高质量,文档化是一个很重要的事情,而且,像我们做项目,项目的实施者是开发人员,还必须做好开发人员的激励和考核工作。”
问题1:如何理解信息系统项目建设过程中质量的概念?
问题2:赵工提到了提高项目的文档化水平,请问项目中的文档有何作用?
问题3:提高信息系统项目质量的方法有哪些?请列举并简单介绍几点。
案例二分析
问题1:
对于质量
的解释,目前最能接受的还是朱兰提出的Fitness for Use,这一说法有以下几层意思:
(1)质量是建立在需求的基础之上的。
(2)适用性是建立在某个时间段的(即项目问题定义阶段所制订的项目)。
(3)质量不仅仅是交付成果,还同时针对整个过程,如项目管理的成果也是项目质量的重要一部分。
一个项目的交付成果并不是越优越好,当然,在条件允许的情况下,尽量提高质量是肯定有必要的,但一方面要看项目的成本和时间消耗,另外就是客户到底有没有相应的需求,没有需求的质量是没有意义的,而没有满足需求的质量又是致命的。质量也不能仅仅只考虑当前需求,还必须考虑到交付成果使用期内可能会产生的一些新需求,例如,用户数目的增长,或者数据在可能范围内的积累等。此外,系统的可维护性非常重要。
对于客户的需求,要分为显性需求和隐性需求两部分来认识。另外,还包括一些通常情况下需要满足的指标。
同一交付成果,对于不同的用户,质量是不一样的,因为不同的用户会有不同的需求。另外,质量也不是在交付之后就不变的,随着时间的推移,用户的需求会发生变化,这也导致项目的质量随之变化。在信息系统使用的过程中,还会对其进行各种维护,这也会影响其质量,维护一般是针对功能和性能上的质量改善,但往往会对其他方面的质量产生不利的影响,如文档质量等。
问题2:
文档(Documents)
是信息系统工程中的一个重要概念和工具,它是指具有固定和统一的用以供人对各种情况和问题进行描述、记录和阅读的数据或者数据载(媒)体。信息系统项目的工作对象往往是复杂而又不可见的逻辑实体,而且历时长,为了使系统建设和使用更规范,更方便,在整个过程中往往会组织以下一些文档。
(1)用户文档
。包括软件需求规格说明书、用户手册、操作手册、质量报告以及各类建议。通常使用对于用户来说容易的理解方式表达,如用户的专业术语和简单的操作规程。
(2)开发文档
。包括可行性研究报告、软件需求规格说明书、项目开发计划、设计说明书(包括概要设计说明书和详细设计说明书)和数据要求说明书等。一般使用开发人员易于理解的方式组织。
(3)管理文档
。包括项目开发计划、各类周报月报、测试文档(包括测试计划、测试报告、测试总结)。
文档通常用来回答以下几个方面的问题(简称5W1H)。
①What:对描述对象的内容进行记录。
② Who:对与描述对象有关的操作者及相关员进行指定;
③ Why:指出描述对象主要相关现象及进行相应操作的原因;
④ Where:找出描述对象产生相关现象及进行相应操作的位置和情境;
⑤ When:找出描述对象产生相关现象及进行相应操作的时机;
⑥ How:指出描述对象进行相关操作的具体方法。
除了以上6个方面外,对于文档的描述对象,需要对其进行优先级划分、例如,针对用户的需求,不同的功能肯定会有不同的质量、性能要求,因此为了利用有限的资源在开发和测试中更好地满足需求,对不同的功能进行优先级划分就很有必要了。
在信息系统项目中,文档通常具有以下几个方面的作用。
①桥梁和交流作用
。信息系统项目中干系人较多,而且十分复杂,包括客户、需求分析人员、软件开发人员、编码人员、测试人员、管理人员以及在项目成果交付之后的运营维护人员等,这些人员面对的都是同一个系统,而系统又是复杂的,文档有利于各方面的人员对系统构成一个统一的认识。
② 明晰责任
。通过文档可以回顾到整个过程的每个环节,成文的东西更容易成为规范,也有利于回溯。
③ 更好地理解系统
。信息系统项目是个庞杂的工作和工程,当需要回溯进行系统认识,或者让新人员接触系统时,完备的文档更容易还原到相应阶段对系统的概括。
④ 进行项目质量管理
。信息系统项目的质量、成本和进度都是较难控制的,重要原因之一就是量分困难。文档是一种对各种指标进行量化的工具。
在文档化的过程中,需要注意文档的标准化
,但同时还需要注意防止文档的形式化
,保证文档处在合适的粒度,并使文档成为项目建设的一种常规性工作。高质量的文档通常具备表7-1所示的一些特性。
表7-1 高质量的文档的特性
在进行文档撰写和组织时,注意以下几个方面的内容可以提高文档的质量。
① 采用主动句和主动语气,并注意语言的组织。
② 掌握好文档的粒度,进行适当的细化,通常情况下,涉及人员越多的文档,越应进行更好的细化。
③ 对于多个描述对象,一定要明晰其之间的关系。
④ 文档组织和撰写完成后,一定要进行审查,可让系统分析员和领域专家共同进行。
⑤ 对文档的版本进行良好的管理。
⑥ 使用优先级对文档的重要性进行分级。
⑦ 文档涉及人员较多,且专业水平(包括计算机方面和专业领域方面)有明显差异时,一定要对文档具有针对性的再组织,如针对开发人员和用户组织不同的软件需求规格说明书。
⑧ 既要注重格式和标准的统一,又要避免文档的形式化。
问题3:
提高项目质量是项目干系人是关心的问题之一。当项目的成本和时间被限定后,接下来的事情就是要在保证投资和进度的情况下尽量提高项目的质量了。一般的,以下几个方面的措施可提升项目的质量。
(1)领导与管理
。在信息化的过程中,最需要的是高层领导的支持,只有这样,整个相关的安排和计划才能够顺利地进行。统计发现,质量出现问题最主要原因之一往往就是缺乏有力的领导,质量问题往往就发生在管理上。强有力的领导可以实现从上至下的执行力。质量管理的观念也需要从高层领导开始转变。
(2)组织项目管理体系
。这主要包括合理的组织机构安排,高效的工作流程扭转、以及一个融洽的内部项目环境。
(3)项目质量管理体系
。项目质量管理体系主要是信息系统建设和集成方内部组织级的项目管理环境,是将相关的标准和规范与企业自身情况相结合,以体系质量文件为表现,在实施过程中不断改进和优化的过程。
(4)项目级激励制度
。信息系统项目实施对人有着极大的依赖性,尤其是项目开发和管理人员,相关人员的工作效率、质量甚至情绪状态都会影响到项目的质量,因此,设法使其处于最佳工作状态就十分必要了。其中一个有效方法就是设立适当的项目级激励机制,针对项目的实施情况,分阶段、分绩效地对其进行各方面激励。激励也需要掌握好方法,对相关人员进行公平公正的物质和精神激励,使全员都参与到管理工作中也是有效的激励方法。
(5)项目文档质量
。在项目实施的过程中,一定要将文档化提到一定的认识调度,掌握好文档的粒度,并在标准的基础上进行文档建设。
(6)成熟度模型
。通过不断项目积累,信息系统集成和建设企业总会在经验和体系建设上有一定的积累,当条件成熟后,就可以考虑使用一些比较成功的模型来规范以后的项目建设工作了。例如,使用CMM或者SQFD(软件质量功能模型)来指导项目建设和组织体系建设。
(7)质量与成本
。通常情况下,高质量意味着更多的成本消耗和进度拖延,这又会影响项目管理的结果。因此,把握好质量与成本的关系,让质量建立在可以接受的成本范围内也是非常重要的。而且,在需求一定的情况下,过高的质量也是一种学浪费。
(8)形成质量改进的习惯
。质量改进是一个持续的过程,也是一个演进的过程,而对于执行者来讲,又是较为烦琐的,因此质量改进要成为组织内部的一种习惯和规程,才能真正发挥质量改进的作用。要使组织在发现错误和改正错误之后,能够对整个流程进行梳理,找出问题的原因,总结出需要注意的问题,并在下一次进行相关操作时能够查阅以前的经验并具有可操作的建议。随着系统运营时间的推移,客户的需求会不断变化,对系统的维护次数也会增加,维护过程中也要同样注重系统质量。如果仅仅把维护作为一种修修补补,那会给后期工作带来巨大的麻烦。例如,在进行新系统的开发过程中,往往会通过对旧系统再工程和反向工程的方法来降低开发成本,因此必须做好维护阶段的质量管理工作。
案例二参考答案
问题1:
质量包括项目交付成果和项目管理成果,是相对于用户需求的概念。它是对范围所圈定的标准所需要达到的程度而进行的规定。同一成果对不同用户来讲,质量不同。另外,质量强调在一定的时间范围内满足需求。
问题2:
文档在信息系统项目中,有以下几个作用。
(1)桥梁和交流作用。是项目成员对系统看法达成的确种共识。
(2)明晰干系人责任。文档都有相应的责任人,另外对问题进行回溯时也可以做到有据可依。
(3)方便对系统进行理解。尤其是对于维护人员来讲,理解系统往往关系到系统维护的效率和成败。
(4)进行质量管理。对项目中的各种不可见指标进行量化。
问题3:
通过以下几个方面,可以有效提高项目交付成果的质量。
(1)通过强有力领导,从上至下贯彻质量观念。
(2)建立组织项目管理体系。
(3)建立组织级的项目质量管理系统。
(4)建立项目级的激励制度,并设法和鼓励全员参与管理。
(5)着力提高项目实施过程中产生产的各种文档的质量。
(6)用规范的成熟度模型来指导自身的组织和和体系结构建设。
(7)掌控好成本与质量的关系,在有限的成本下尽量通过良好的管理来实现更高的质量。
(8)形成质量改进的习惯。质量改进要成为一个组织内部的一种习惯和规程,真正发挥质量改进的作用。
Ending!
更多课程知识学习记录随后再来吧!
就酱,嘎啦!
注:
人生在勤,不索何获。