软件工程与UML案例解析(第三版)(txt+pdf+epub+mobi电子书下载)


发布时间:2021-02-16 10:04:32

点击下载

作者:何晓蓉

出版社:中国铁道出版社

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

软件工程与UML案例解析(第三版)

软件工程与UML案例解析(第三版)试读:

版权信息

书名:软件工程与UML案例解析(第三版)

作者: 何晓蓉

排版:中国铁道出版社

出版社:中国铁道出版社

出版时间:2018.01

ISBN:978-7-113-23858-2

本书由中国铁道出版社授权北京当当科文电子商务有限公司制作与发行。

— · 版权所有 侵权必究 · —内容简介

为了满足广大读者对软件工程应用技术的学习需求,特别是为了提高高等职业院校软件技术专业学生的UML(统一建模语言)建模能力,本书在介绍软件开发各阶段所涉及的基本理论的基础上,以实际的开发项目为案例,重点介绍了用例模型、分析模型、系统架构设计、设计模型等UML全程建模过程,并对软件开发所必需的项目管理工具MS Project(项目开发时间、资源和成本计划的编制与监控管理)、数据库建模工具PowerDesigne、测试工具(LoadRunner、NUnit、QuickTest)等关键技术分别进行了详细的阐述。

本书按“问题引入-解答问题-分析问题”的方式设计情境,注重理论与实际相结合,内容选取难度适中,全书结构严谨、布局合理、重点突出,具有很强的实用性。“项目实战”环节更让学生可以学以致用,培养学生软件开发的职业能力。

本书适合作为高等职业院校软件技术专业软件工程课程的教材和参考书,也可作为软件开发人员的自学用书。第三版前言

FOREWORD

随着计算机科学与网络技术的不断发展,计算机的应用范围越来越广泛,软件的规模及社会需求量在迅速增大,软件工程化方法的重要性也日益突出,这从客观上迫切需要众多既具有软件工程理论知识,又掌握软件工程实际应用技能的人才。特别是高等职业院校的软件技术专业学生,更需要一本注重软件工程实际应用技术的教材。本书正是在“理论够用、实战为本”的思想指导下,特为高等职业院校软件技术专业学生学习和掌握软件工程应用技术而编写的。

为培养软件开发实用型专门人才,本书在介绍软件工程理论知识基础上,以实际的软件项目“客户服务系统”的建模过程为主线,按照软件开发的实际工作过程及流程,重点阐述面向对象的软件开发技术以及UML全程建模。注重对学生实际应用技能和动手能力的培养。书中内容按“问题引入—解答问题—分析问题”的方式设计情境,打破了传统的“提出问题—分析问题—解决问题”的问题解决模式,更符合人们的认知过程。

本书共分9章,主要内容包括:

第1章 概述。主要介绍软件缺陷现状、软件工程及软件工程的目标、过程和原则、UML及UML建模工具等方面的问题和基本概念,并对作为全书案例的软件项目做了简要描述。

第2章 软件项目管理。主要介绍项目管理的概念、组成部分以及工期的计算公式、WBS等基本知识,重点介绍了项目管理范围、项目时间管理、项目成本管理、项目质量管理和项目人力资源管理等概念,项目的时间、资源和成本计划的编制与监控管理,以及用MS Project项目管理软件来管理与跟踪这些计划。

第3章 软件系统开发方法。主要介绍软件生命周期及传统的生命周期模型、传统软件开发方法与面向对象软件开发技术、RUP统一软件开发过程、敏捷软件开发技术等方面的问题及基本概念。

第4章 建立用例模型。主要介绍建立用例模型的过程及相关知识,包括需求获取、分析需求、用例在需求分析中的使用、识别参与者、确定用例、用例的粒度、用例间的关系、用例描述和客户服务系统用例模型等方面的内容。

第5章 建立分析模型。主要介绍建立分析模型的过程及相关知识,包括对象、类和对象、类的UML表示、确定关键抽象、类之间的关系及其UML表示、建立领域模型、分布模式的选择与应用、构建分析类、职责分配、定义类属性,以及构建客户服务系统分析模型等方面的知识。

第6章 数据库建模。主要介绍建立数据库模型的过程及相关知识,包括从业务需求创建数据模型的流程、定义数据需求、定义概念模型、设计逻辑数据模型、设计物理数据模型、数据模型的优化与发布等方面的内容。

第7章 系统架构设计。本章主要介绍系统架构的设计过程及相关知识,包括活动图、状态图、业务架构及业务架构的分析、软件架构及软件架构的设计、软件架构与框架的区别、软件架构的“4+1”视图模型、组件图和部署图等方面的内容。

第8章 建立设计模型。主要介绍建立系统设计模型的过程及相关知识,包括设计模式的选择与应用、设计类的包结构、定义设计类、设计类间的关系、客户服务系统的设计模型,以及自动生成程序代码等方面的内容。

第9章 软件测试。主要介绍软件测试的基本概念、测试方法和测试过程等方面的知识。

本书注重理论与实际应用相结合,具有很强的实用性,并在第一版和第二版的基础上做了一些改进。

本书由何晓蓉任主编,车书、罗佳、张婵、陈建潮任副主编,李洛主审。参加修订的有何晓蓉(第1章、第3章、第7章、第8章),张婵和罗佳(第4章、第5章、第6章),车书(第2章),陈建潮(第9章)。本书由何晓蓉拟定大纲,并进行统稿和定稿。在编写过程中,软件企业通力配作,软件企业开发人员余颖给予了大力支持与帮助,并提供了真实的软件开发案例,在此表示衷心的感谢!

由于编者水平有限,书中难免会有不足之处,敬请广大读者不吝赐教。编者电子邮箱:xrhe@163.com。

编者2017年.10月第1章概述

在近代科学技术发展的历史中,工程学科的发展一直是产业发展的极大动力。传统的工程学科,如建筑工程、机械工程、水利工程、电力工程等对各行各业的发展都有非常深远的影响。近年来人们开始对环境工程、生物工程、软件工程等有了极大的关注,许多高等院校都增设了这些专业,以培养研究这些新兴学科的专门人才。然而,由于人们对这些新兴工程学科认识不足,还处在一个艰难的探索阶段,如软件工程。国内许多软件企业对软件工程还没有引起足够的重视,事实上,软件工程在计算机的发展和应用中的地位非常显著,它对软件产业的形成和发展起着决定性的推动作用,是现代信息产业的巨大支柱。

本章将对软件缺陷现状、软件工程及软件工程的目标、过程和原则、UML等方面的问题和基本概念给出简要的介绍,以便读者对软件工程的一些基本知识获得一定的理解。书中各个部分是以一个项目为主线,按任务驱动的方式进行,提供了基本完整的分析设计过程和UML全程建模。本章还给出了贯穿全书的案例项目描述,以便让读者在进入软件工程专题之前,对本书所要解析的软件工程项目作一个全面了解。

本章学习内容

● 当前软件开发中存在的缺陷;

● 软件工程;

● UML简介;

● UML建模工具简介;

● 案例描述。

本章学习目标

● 了解软件缺陷现状;

● 了解软件工程的基本概念、软件工程的目标、过程和原则;

● 了解UML的几种图形;

● 了解Rational Rose和StarUML两种建模工具的基本内容;

● 了解教学案例的用户需求。1.1当前软件开发中存在的缺陷

问题引入

软件质量是软件的生命。为了提高软件质量,人们采取了多种方法,如软件开发过程控制与管理、软件测试等,这些方法在一定程度上促进了软件质量的提高。然而,软件产品不同于普通的产品,它是人类最复杂的脑力劳动的产物,由于软件要解决的问题越来越复杂,软件中存在缺陷是必然的。软件开发过程实际上是一个不断实现用户需求与修正软件中出现的缺陷交替进行的过程。那么,当前软件开发中究竟存在哪些缺陷呢?

扫一扫 看视频

解答问题

笔者从网络上收录了如下10条软件缺陷现状。虽然其中涉及的统计数据可能并不是非常准确,但这些缺陷却具有代表性。(1)在项目发布后发现和修复缺陷的成本是需求和设计阶段所需成本的100倍。(2)在时下的软件项目中有40%~50%的人力都花在了可以避免的重复劳动中,避免重复劳动可以显著提高劳动生产率。(3)80%可避免的重复劳动源自于20%的缺陷,其中两大主要来源包括草率的需求定制和象征性的案例设计和开发。(4)大约80%的缺陷来自于20%的模块,而约半数的模块几乎没有缺陷。(5)90%的软件的停工期最多来自于10%的缺陷。(6)同行评审能发现60%的缺陷。(7)有针对性的评审能比无导向性的评审多发现35%的缺陷。(8)个人行为的规范化可以减少缺陷注入率高达75%。(9)在其他因素相同的情况下,开发高可靠性软件每条源代码指令的成本投入比开发低可靠性软件要多出近50%。然而,如果项目需要很高的运行和维护成本,这样的投资是值得的。(10)40%~50%的用户程序都存在着很大的缺陷。

分析问题

软件缺陷(Defect,常常又被称为Bug),即为计算机软件或程序中存在的某种影响正常运行能力的问题、错误,或者隐藏的功能和性能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需求。越是进行到软件开发生命周期后期才发现的缺陷,其修复成本也就越高。也就是说,错误越早发现,成本越低。事实上,大部分错误都是在软件开发的前面阶段引入、后面阶段才发现的,修复这些错误必将付出巨大的代价。

从上面的软件缺陷现状中我们知道,大部分错误都集中在少数模块。缺陷集中出现有两种可能:①大量出现缺陷的模块特别复杂,软件开发人员难以保证程序没有错误。②负责这些模块的开发人员比负责其他模块的开发人员水平要低,或者责任心不够强,做事比较马虎。第一种可能情况容易避免。如果模块太复杂,就应该由技术骨干攻关,以保证其正确无误地顺利实现。而出现问题的往往是第二种可能情况。软件开发人员良莠不齐,部分人员质量意识和责任心不够强,由这部分人员开发的模块往往会隐藏许多缺陷。

虽然在开发的软件中出现缺陷很正常,但我们必须尽力减少软件中隐藏的各种缺陷,这就要求开发团队一方面要提高职业素质,另一方面还要遵循软件工程的思想,在提高软件开发效率的同时不忘降低软件的缺陷率,力争提交给用户一个高质量的软件系统。同时降低软件的维护成本,保证软件企业可持续发展。1.2软件工程1.2.1 软件工程的定义

问题引入

我们知道,计算机软件是指计算机程序、数据以及解释和指导使用程序和数据的文档的总和。当计算机软件上升到工程学的高度后,又如何来定义它,即什么是软件工程呢?

扫一扫 看视频

解答问题

软件工程(Software Engineering,SE),是一门研究应用工程化方法构建和维护有效的、实用的和高质量的软件的学科。

分析问题

工程不仅仅是一个学科或一个知识体系,它还是解决问题的方法。这里的方法包括了管理、过程和技术三个方面,其中,“过程”是指软件的开发、维护过程以及管理过程。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法相结合,这就是软件工程。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面的内容。1.2.2 软件工程目标

问题引入

软件工程的主要目标是采用工程化方法,提高软件产品质量和软件生产率,降低软件开发成本,成功地构建一个满足用户需求的软件系统。那么,一个成功的软件项目需要达到哪些主要目标呢?

解答问题

一个成功的软件工程项目需要达到的主要目标有以下几个方面:(1)达到要求的软件功能;(2)取得较好的软件性能;(3)付出较低的开发成本;(4)开发的软件易于移植;(5)开发的软件易于维护,且维护费用较低;(6)能按时完成开发任务,并交付使用。

分析问题(1)软件的功能是指在一般条件下软件系统能够为用户“做什么”,能够满足用户什么样的需求。用户的需要就是软件开发人员的目标,开发的软件必须实现用户要求的功能;另一方面,一个软件项目“做得怎样”,比如:开发的软件运行速度、易用性、可靠性、适应性等,是否达到了用户的需求。这些都是一个软件工程项目最基本的目标,是必须努力实现的。(2)软件的研制工作需要投入大量复杂的、高强度的脑力劳动,它的成本往往比较高。但随着软件技术的飞速发展,软件开发工具、开发方法等不断出现,应用先进的软件过程管理手段,使得降低开发成本成为可能。所以,不断探索新方法、新技术,努力减少软件开发成本,是软件工程项目所追求的主要目标。(3)软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。软件不能完全摆脱硬件单独存在。为了提高软件的可移植性,在软件开发过程中要尽量使用不依赖于计算机硬件和操作系统的计算机语言和方法编写程序,这也是软件工程项目所追求的目标。(4)所谓软件维护就是在软件已经交付使用之后,为了改正错误或者满足新的需要而修改软件的过程。其目的是保证系统能持续地与用户环境、数据处理操作、政府或其他有关部门的请求取得协调。在现代软件开发过程中,不重视文字资料工作,使分析、设计、编码和支持过程的资料很不完整,兼之,人们常常忽视人与人之间的沟通部分,发现问题只知道修修补补,这样的软件很难维护。维护费用的支出是不可避免的,但怎样才能降低维护费用呢?主要有三点:①软件设计时,充分考虑软件的可修改性、可扩展性。②软件开发文档齐备。③加强团队合作精神。提高软件的易维护性、降低其维护成本也是软件工程项目所追求的最基本的目标。(5)软件项目极大的复杂性与用户需求高度的不确定性,是软件项目能按时完成的困难所在。加之,软件开发人员对项目往往按照最乐观的估计,对于任务的复杂性和难度,对于自己能支配的时间,对于可能的突发事件的干扰等没有清楚的认识和估计,在软件企业内部项目管理混乱的情况之下,软件项目常常严重超期或超出预算。提高软件项目管理能力,按时完成软件开发任务,并交付使用,是许多软件企业力争实现的重要目标。

在实际的软件开发项目中,要同时实现所有这些目标往往是比较困难的。甚至有些目标之间很可能相互冲突。比如,若一味降低开发成本,势必也同时降低了软件的性能、减少了软件的功能。因此,往往需要在这几大目标上做一些取舍。1.2.3 软件工程过程

问题引入

在软件工程的定义中,我们强调了过程的概念,例如,开发过程、维护过程、管理过程。过程是一组将输入转化为输出的相互关联或相互作用的活动。然而,什么是软件工程过程?

解答问题

软件工程过程是指软件生命周期(关于软件生命周期的相关知识将在第3章的3.1节详述)所涉及的一系列相关过程,是生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。

分析问题

软件工程过程主要包括开发过程、运作过程和维护过程。它们覆盖了分析、设计、编码、测试以及支持等软件工程活动。在软件工程活动中,分析活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一个模块的接口定义。详细设计产生程序员可用的模块或者类说明。编码活动把设计结果转换为可执行的程序代码。测试活动贯穿于整个软件开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩展、修改与完善。伴随以上这些过程,还包括管理过程、支持过程和培训过程等。

管理过程、支持过程、培训过程贯穿软件开发过程的始终,对软件开发过程起着至关重要的作用。1.2.4 软件工程的原则

问题引入

为了达到软件工程的目标,在软件开发过程中针对项目设计、支持以及管理必须遵循哪些基本原则?

解答问题

在软件开发过程中针对项目设计、支持以及管理必须遵循的基本原则是:(1)选取适宜的软件开发模型;(2)采用合适的软件开发方法;(3)提供高效的开发支撑环境;(4)重视软件开发过程的管理;(5)建设高素质的软件开发团队。

分析问题(1)正如任何事物一样,软件也有其孕育、诞生、成长、成熟以及衰亡的生命过程,一般称其为“软件生命周期”。软件生命周期一般分为6个阶段,即制订计划、需求分析和定义、设计、编码、测试、运行和维护。软件开发的各个阶段包含了一系列的活动,活动之间的关系可以是顺序的、重复的、并行的、嵌套的或者是有条件引发的。在软件工程中,这个复杂的过程用软件开发模型来描述和表示。在软件生命周期中,软件开发的各个阶段相互关联,用户需求的频繁变更会对软件的开发过程产生重大影响。因此,必须认识需求定义的易变性,采用适宜的软件开发模型予以控制,以保证软件产品满足用户的要求。(2)在软件开发中,通常要考虑软件的模块化、抽象与信息隐藏、可移植性、局部化以及可适应性等方面的问题。合适的软件开发方法,如面向对象软件开发方法等,有助于这些方面的实现,以达到软件工程的目标。(3)在软件工程中,软件开发工具与开发环境对软件过程的支持尤为重要。软件工程项目的质量与开发成本直接取决于对软件工程所提供的支撑环境。(4)软件工程的管理,直接影响到可用资源的有效利用、满足目标的软件产品的生产、软件组织的生产能力的提高等问题。因此,只有在软件过程得以有效管理时,才能实现有效的软件工程。(5)正如Tom DeMacro和Timothy Lister在《人件》中所说的,“人与人之间的交互是复杂的,并且其效果从来都难以预料,但却是工作中最为重要的方面。”过程和方法对于项目的影响只是次要的,而首要的影响是人。因此,只有当开发人员发挥其效力时,才能达到软件工程的目标。

软件工程的目标是生产满足用户需求的高质量、高生产率、低开销的软件产品;实施一个软件工程要选取适宜的开发模型,采用合适的开发方法,提供高效的支撑环境,实行开发过程的有效管理,建设能相互沟通、极具社会责任感的软件开发团队。软件工程主要包括分析、设计、编码、测试和支持等活动,每一个活动可根据特定的软件工程项目,采用合适的开发模型、方法、支持过程以及过程管理。1.3UML简介

UML(统一建模语言,Unified Modeling Language)是一种定义良好、易于表达、功能强大的用于对软件密集型系统建模的图形语言。它支持从需求分析开始的面向对象软件开发的全过程。

UML作为一种建模语言,它使软件开发人员专注于建立系统的模型和结构,而不是选用具体的程序设计语言和算法来实现。当模型建立之后,模型可以被UML工具转化成指定的程序设计语言代码和数据库结构。

UML 1.4有9种图:

用例图:用于业务建模、需求捕获,作为测试的依据。

类 图:描述类以及类之间的相互关系。

对象图:描述对象以及对象之间的相互关系。

构件图:描述构件及其相互依赖关系。

部署图:描述构件在各个节点上的部署情况。

顺序图:强调时间顺序的交互图。

协作图:强调对象协作的交互图。

状态图:描述类所经历的各种状态以及状态之间的转换关系。

活动图:用于对工作流程建模。

对于一般系统,常常使用类图来产生程序代码。而对于嵌入式系统,则用状态图生成程序代码。

本书阐述了使用UML全程建立系统模型的过程,并指导读者应用建模工具StarUML对案例项目建立模型。1.4UML建模工具简介

目前UML建模工具常用的主要有3种:Together、Rational Rose和StarUML。Together与Rational Rose的功能很强,但是商业软件,需要购买License,价格较高;而StarUML能够提供同Together、Rational Rose一样的功能,却是开源软件,支持UML2.1,已得到广泛使用。下面仅对Rational Rose和StarUML做简单介绍。1.4.1 Rational Rose简介

Rational Rose是一种支持UML 1.4的便于进行面向对象分析和设计的可视化的建模工具。它提供了一个集成化的建模环境,可以用来创建、查看和修改UML模型、视图、图和模型元素。

Rational Rose使用图形用户界面,包括如下元素:

菜单栏;

标准工具栏;

图形工具栏;

浏览器窗口;

图形窗口;

文档窗口。

图1-1即为Rational Rose的图形用户界面。浏览器窗口用于查看、处理和切换模型中的项。按层次结构排列浏览器中的项,其操作与Windows系统的资源管理器类似。在Rational Rose的浏览器窗口中包含四个视图:

Use Case View (用例视图);

Logical View (逻辑视图);

Component View (构件视图);

Deployment View (部署视图)。

每个视图可以包含特定类型或多种类型的图和模型元素。用例视图可以包括用例图、顺序图、协作图、状态图和活动图。逻辑视图可以包括类图、状态图、顺序图和协作图。构件视图包括一个或多个构件图。部署视图包括一个部署图。

图1-1 Rational Rose图形用户界面

图形窗口用于显示、创建和修改UML图。文档窗口用于创建、查看和修改选定的模型元素、图或视图的文档。标准工具栏包括当前处于活动状态的各种类型的图可使用的工具,类似于一般的Windows窗口的标准工具栏。图形工具栏提供为一个图添加模型元素的图形工具。1.4.2 StarUML简介

StarUML是一种支持UML 2.1的可视化的面向对象分析与设计的全程UML建模工具。与Rational Rose一样,StarUML也提供了方便的集成建模环境。

StarUML下载地址:http://staruml.en.softonic.com/download。文件很小,大约22MB,其安装过程也很简单。

StarUML可以读取Rational Rose生成的文件,让原先Rose的用户可以转而使用免费的StarUML。StarUML启动后,如用户选择图1-2中所示的“Rational Approach”选项时,就可以创建图1-3所示的Rose项目模型,这样就可以构建我们熟悉的Rational Rose的四个视图:用例视图、逻辑视图、组件视图和部署视图。当用户选择图1-2中所示的“Default Approach”选项时,系统出现图1-4所示的建模环境。

图1-2 新项目入口选择界面

从图1-4可知,StarUML集成建模环境中主要包括以下几个部分:

菜单栏:包括File(文件)、Edit(编辑)、Format(格式)、Model(模型)、View(视图)、Tools(工具)、Help(帮助)菜单。

标准工具栏、格式工具栏、视图工具栏:用于类似普通Windows应用系统的工具栏操作。

图形工具栏:不同图形具有不同的图形工具,还包括为图形元素设置文本内容和注解的各种工具。

图形窗口:所有的图形都以选项页的方式加载到图形窗口区域中,这些选项页可以单独关闭和显示。

图1-3 Rational Rose入口的集成建模环境

图1-4 StarUML默认入口的集成建模环境

模型元素属性设置、附加文本、附件窗口:为模型元素设置属性值,附加文本到模型元素上,为模型元素添加附件等。

浏览器窗口:包括模型浏览器和图浏览器,提供模型元素的管理与导航功能。

模型浏览器窗口中,包括5种模型:

useCaseModel (用例模型);

analysisModel (分析模型);

designModel (设计模型);

implementationModel (实现模型);

deploymentModel (部署模型)。

每种模型都默认包含一种主图:用例模型下是用例图,分析模型和设计模型是类图,实现模型是组件图,部署模型则是部署图。实际上,这里的模型与Rational Rose中的视图是对应的,用例模型对应用例视图,分析模型和设计模型对应Rose中的逻辑视图,实现模型对应组件视图,部署模型对应部署视图。

StarUML还结合了模式和自动生成代码的功能,当设计模型完成后,可根据类图直接生成特定编程语言的程序代码。1.5案例描述

随着企业软件业务的蓬勃发展,软件产品在市场上的普及应用及各种项目的不断上线使用,需要为客户提供更加优质快捷的售后服务,接受客户的相关问题咨询、系统维护升级及相关建议和投诉等。为帮助客户服务人员和其他相关技术人员提高服务质量和工作效率,规范业务的处理方式,并与其他相关资源进行整合,以更好地为相关系统提供良好的售后服务支持,特开发此客户服务系统。

客户服务系统的开发和使用主要是为跟进相关软件产品和上线系统的售后服务并帮助客户服务人员和其他相关技术人员提高服务质量和工作效率,规范业务的处理方式,以建立完善的客户数据资料库。将所有服务人员在各个环节对所发生的各种问题、处理情况、跟进结果录入系统,进行有效的统一管理、归档,并及时了解当日的安装配置、维护情况和可以调派外出的技术人员,使服务信息公开化,服务内容规范化。也便于各部门领导可以随时查询、掌握客户的容量,产品的销量及售后服务质量,回款状况等相关业务的综合统计信息。它面对的是客户,强调的是服务,注重的是管理。

系统的主要目标有以下三个方面:(1)成为公司客户服务人员及相关技术人员提高软件产品及项目售后服务质量的利器;(2)成为公司客户关系管理的重要组成部分;(3)成为公司领导及各部门领导查看、监督客户服务人员服务质量的评判工具。

软件用户定位于软件企业客户服务人员、相关技术工程师、公司领导及各部门领导。系统为B/S架构,用户可通过互联网访问和使用。

客户服务业务流程在系统功能实现上分成三个阶段,第一个阶段是客户及相关资料录入,第二个阶段是接受客户相关咨询及意见或建议,第三个阶段是任务的安排及维护结果报告。客户服务系统同时提供相关的统计分析查询功能,主要用于市场部及各部门领导可以随时查询并掌握客户容量、产品销量、回款状况、售后服务质量等相关业务的综合统计信息。另外,系统也提供管理能力,包括用户的管理、权限管理,数据备份管理等能力,以保证系统安全而正常地运行。主要内容如下:

客户可以通过不同的方式(如电话,互联网)对软件产品提出使用中的Bug或疑难问题以及投诉建议等内容。

客户服务人员应当能保存客户资料,保存客户历次来电内容,并对客户提出的问题及时给予解答,不能在电话中处理的应当交由相关技术工程师继续跟进处理。

对需要安排上门维护的申请应能及时反映给相关部门领导,并由其做出派工处理。

应能及时反馈有派工任务的消息给相关技术工程师,并能保存其处理结果。

各部门领导应能对投诉的申请给予及时处理,并能保存处理结果。

公司领导和部门领导应能及时查询客户的来电内容,了解产品使用情况及客户服务人员的售后服务质量等相关业务的综合统计信息。

同时,还有一些其他方面的要求:

在无须人工干预和不可预知站点规模(每月可能有几十万条来电记录)等前提下,能满足未来200人同时使用系统的应用规模。系统上线后,应保留至少半年的来电记录,将更久来电记录抽取到历史库中保存以备查询。两年以上来电记录与语音记录应刻盘存档。

保证来电记录与语音记录的正确对应关系,以方便核查对应来电记录的语音记录。

至少支持200个同时登录用户使用本系统,90%的用户在5s之内完成查询工作,10s之内完成数据交互性操作,页面访问平均响应时间不大于3s,峰值响应时间不大于10s,并具备扩展功能。

系统必须支持传统的网络传输协议TCP/IP的HTTP和HTTPS,能够在互联网上访问使用。

系统应能够抵御来自互联网的常见Hacker攻击手段。

系统对服务器端用户操作有日志管理功能,能通过前台查询回溯修改时间及内容。

本系统服务器和客户端都能运行在MS Windows Server和MS SQL Server环境。

本系统为平台化的应用系统,支持各种标准化数据接口。

提供全部的数据库表结构、数据字典和二次开发详细参考文档。

在对软件工程的概念、目标、过程以及软件开发过程应遵循的原则有了基本的了解后,对于上述已得到的用户需求描述,接下来应该干什么呢?由于管理技术在整个软件开发过程中起着非常重要的作用,所以,下一步应该了解软件项目管理方面的知识。因此,在第2章我们将学习软件项目管理。总结

计算机软件是指计算机程序、数据以及文档的总和。计算机程序包括源程序和目标程序。源程序是指用各种编程语言编写的程序;目标程序是指源程序经过解释或编译处理以后,可以由计算机直接执行的程序。程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常访问信息的数据结构;而文档则是用自然语言或者形式化语言所编写的文字资料和图表,用用例来描述程序和数据的内容、组成、设计、功能规格、开发情况、测试、维护和使用方法。

软件工程是一门研究应用工程化方法构建和维护有效的、实用的和高质量的软件的学科。

软件工程的框架可概括为:目标、过程和原则。

软件工程的主要目标是采用工程化方法,提高软件产品质量和软件生产率,降低软件开发成本,成功地构建一个满足用户需求的软件系统。

软件工程的过程是指生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。

为了达到软件工程的目标,在软件开发过程中针对软件项目设计、支持以及管理必须遵循的一般原则:

选取适宜的软件开发模型;

采用合适的软件开发方法;

提供高效的工程支撑环境;

重视软件开发过程的管理;

建设高素质的开发团队。思考与练习

1.什么是UML?请查资料了解UML 2.1包含哪些图形。

2.什么是软件工程?

3.软件工程的目标是什么?

4.在软件开发过程中针对项目设计、支持以及管理必须遵循的基本原则是什么?

5.软件开发过程中问题很多,且并不因软件开发工具的完善而有大的改善,软件工程控制的重要性越来越被重视。请问软件开发过程中会出现哪些问题?

6.写出1.5节案例描述(用户需求文档)的问题陈述文档。第2章软件项目管理

项目管理是20世纪50年代发展起来的一种计划管理方法,它一出现就引起了人们的关注。它原本只是一种局限于某些职能领域的管理理念,而如今已经演变成为影响企业所有职能的企业管理体系,越来越多的企业已经把项目管理作为企业生存的必要手段。

软件项目管理离不开管理工具的支持,这是所有管理者的共识。本章将以客户服务系统项目案例为背景,利用Microsoft Project项目管理工具,介绍MS Project在项目管理的五个核心领域——范围管理、时间管理、费用管理、人力资源管理、集成管理的实际应用分析。

本章学习内容

● 项目管理概述;

● 项目范围管理;

● 项目时间管理;

● 项目成本管理;

● 项目质量管理;

● 项目人力资源管理;

● 项目集成管理。

本章学习目标

● 了解项目管理存在的意义;

● 了解项目管理的5个核心领域的基本知识;

● 能熟练应用MS Project项目管理软件完成项目的集成管理应用,包括编制项目的时间计划、资源计划和成本计划,以及监控这些计划的实施情况。2.1项目管理概述2.1.1 项目管理定义

问题引入

1957年,美国杜邦公司应用了一种计划管理方法,使原来维修停工的时间从125小时缩减到了78小时;1958年,美国人在北极星导弹设计中,应用了项目管理方法,将设计完成时间足足提前了两年。由于项目管理从根本上改善了管理人员的运作效率,所以其在西方发达国家得到了广泛应用。到21世纪初,项目管理已经在更为宽广的范围和环境下发挥了巨大的作用和影响力,并且还在不断地发展和完善。那么究竟什么是项目管理呢?

扫一扫 看视频

解答问题

项目管理是指为完成一个预定的目标,而对任务和资源进行计划、组织和管理的过程,通常需要满足时间、资源或成本方面的限制。进一步说,项目管理就是利用系统的管理方法将职能人员(垂直体系)安排到特定的项目中(水平体系)去。

分析问题

项目管理具有如下特点:

项目管理是面向成果的;

项目管理是基于团队工作的;

项目管理借助外部的资源提供跨职能部门的解决方案;

项目管理是可变化的。2.1.2 项目管理的组成部分

问题引入

如果能拥有预见项目的未来情况的特异功能,那管理项目可就……

以上想法并非是异想天开,在某种程度上是可以实现的,只要读者知道了塑造项目的三个基本要素:时间、费用、范围。项目的质量是受这三个因素的平衡关系所决定的。这三个因素构成了项目三角形。调整其中任何一个因素都会影响其他两个因素。虽然这三个因素都非常重要,但通常会有一个因素对项目有决定性的影响。这些因素之间的关系随着项目的不同而有所变化,它们决定了会出现的问题,以及可能的解决方案。了解什么地方会有限制、什么地方可以灵活掌握,将有助于规划和管理项目。那么项目管理是由哪些部分组成的呢?

解答问题

项目管理是按任务(垂直结构)而不是按职能(平行结构)组织起来的。项目管理的主要任务一般包括项目计划、项目组织、质量管理、费用控制和进度控制等。包括9个知识领域,即范围管理、时间管理、费用管理、质量管理、人力资源管理、沟通管理、风险管理、采购管理和集成管理。

分析问题

MS Project是一款易于使用、特性齐全的项目管理软件包,也是一个强有力的计划、分析和管理工具,能够让用户创建企业范围内对具体任务要求较高的项目管理解决方案。它包含项目管理9个知识领域中的5个核心领域。分别是:(1)范围管理

项目的目标和任务,以及完成这些目标和任务所需的工时。包括软件开发、测试、集成、培训和项目实施等。输出的结果就是WBS(Work Breakdown Structure,工作分解结构)。(2)时间管理

时间管理也称为进度管理,在MS Project中,提供了工期估计、进度安排、进度控制等基本功能。它能够自动计算出关键路径,可以方便地设置里程碑控制点,实现项目的动态跟踪,还提供了多种时间的管理方法,如甘特图、日历图等。该部分功能使用最为频繁,也是MS Project的强大所在。(3)费用管理

项目费用管理包括设计费用计划、估算、预算、控制的过程。以保证能在已批准的预算内完成项目。MS Project采用的是“自底向上费用估算”的技术,由于它是依赖每个WBS任务的估算,所以使得费用估算更为准确。(4)人力资源管理

在人力资源管理中,MS Project提供了人力资源的规划、人力资源责任矩阵和直方图等,它能帮助用户做好资源的分配,进行资源的工作量、成本和工时的统计。(5)集成管理

项目管理的集成管理是对于整个项目的范围、时间、费用和资源等进行综合管理和协调,在MS Project中能根据范围、时间和资源的变化自动进行相应的计算和调整。2.1.3 项目生命期和模型

问题引入

事物的存在都有其必然性,发展有其规律性。在社会工作中,通常将人的行为的变化划分为胎儿期、婴幼儿期、儿童期、青少年期、成年早期、中年期及老年期七个阶段。与人的生命周期相适应,人的行为呈现阶段性变化,每一阶段都有其显著特征。在长期的开发实践中人们逐渐认识到项目管理也存在生命期,正如人的生命周期一样,项目的每一个生命期都有其特征及评判的标准,用以评价这个生命期阶段的完成情况。只是在实际应用中根据不同的领域或不同的方法再进行具体的划分。那么软件项目生命期又是如何定义的呢?

解答问题

项目生命期描述了项目从开始到结束所经历的各个阶段,最普遍的划分是将项目分为项目启动(识别需求)、项目计划(提出解决方案)、项目执行、项目结束4个阶段:(1)识别需求。当需求被客户确定时,于是就产生了项目。这个阶段的主要任务是确认需求,分析投资收益比,研究项目的可行性,分析生产商所应具备的条件。(2)提出解决方案。主要由各竞标公司向客户提交标书、介绍解决方案,规划业务蓝图等。(3)执行项目。从公司的角度来看这才是项目的开始。这个阶段项目经理和项目组将代表公司完全承担合同规定的任务。(4)结束项目。主要包括移交工作成果,帮助客户实现商务目标;给客户提供培训,系统交接给维护人员;结清各种款项等。

软件项目通常细分为6个阶段,即计划、需求分析、系统设计、系统开发、系统测试、运行维护,分述如下:(1)计划阶段。定义系统,确定用户的要求或总体研究目标,提出可行的方案,包括明确所需资源和实施计划、成本、效益、进度和性能参数等。(2)需求分析阶段。确定软件的功能、性能、可靠性、接口标准等要求,根据功能要求进行数据流程分析,提出初步的系统逻辑模型,并据此修改项目实施计划。(3)系统设计阶段。它包括系统概要设计和详细设计。在概要设计中,要建立系统的整体结构,进行模块划分,根据要求确定接口。在详细设计中,要建立算法,数据结构和流程图,或设计包、类、接口等。(4)系统开发阶段。把流程图或类、接口等翻译成程序,并对程序进行调试。(5)系统测试阶段。通过单元测试,检验模块内部的结构和功能;通过集成测试,将模块连接成系统,重点寻找接口上可能存在的问题,做到高内聚,低耦合;验收测试,即按照需求的内容逐项进行测试;系统测试,就是到实际的使用环境中进行测试。以上4种测试中,单元测试和集成测试是由开发者自己完成,而验收测试和系统测试是由用户参与完成。这是软件质量保证的重要一环。(6)运行维护阶段。它一般包括3类工作,为了修改错误而做的改正性维护;为了适应环境变化而做的适应性维护;为了适应用户新的需求而做的完善性维护。在实际开发应用中,此类维护通常会被乙方引导甲方演变为二期项目,进入一个新的生命期,再从计划阶段开始,迭代完成。可见维护工作是软件生命期的重要一环,通过良好的运行维护工作,不仅可以延长软件的生命期,还可以为软件项目带来二期,甚至多期收益。

分析问题

每一个项目或者产品都有其特定的发展阶段,即生命期阶段。准确了解这些阶段,有利于管理层更好地控制企业的全部资源,实现既定目标。项目生命期的定义还将确定项目开始与结束时的哪些过渡行动应包括在项目范围之内,哪些则不应包括在内。这样,就可以用项目生命期的定义把项目和项目实施组织持续的日常动作业务联系在一起。项目生命期通常规定:(1)每个阶段应完成哪些技术工作?(例如,需求规格说明书应在哪个阶段完成?)(2)每个阶段的交付物应何时产生?对每个交付物如何进行评审、验证和确认?(例如,如何评价设计蓝图是否符合规范要求?)(3)每个阶段都有哪些人员参与?(例如,需求阶段需求分析人员和设计人员都会参与?)(4)如何控制和批准每个阶段?(例如,项目的生命期划分是否符合自身的特点?)

在项目生命期中有3个与时间相关的重要概念:检查点(Check Point)、里程碑(Milestone)和基线(BaseLine),它们描述了在什么时候对项目如何进行控制。(1)检查点。检查点是指在规定的时间间隔内对项目进行检查,比较实际现状与计划之间的差异,并根据差异进行调整。可将检查点看作是一个固定“采样”时点,而时间间隔根据项目周期长短不同而不同,频度过小失去意义,频度过大会增加管理成本。因此以笔者经验来讲,每一周Review一次,并由项目经理召开例会并上交周报比较切实可行。这些例会经常叫作关键设计评议,“转接梯”(On-off Ramp)和“门径”(Gate)。(2)里程碑。里程碑是完成阶段性工作的标志,根据项目类型、项目阶段的不同制定出不同的交付物或产出以达到完成阶段的标志。(3)基线。基线是指一个(或一组)配置项在项目生命期的不同时间点上,通过正式评审而进入正式受控的一种状态。在软件项目中,需求基线、配置基线等基线,都是一些重要的项目阶段里程碑。但相关交付物要通过正式评审并作为后续工作的基准和出发点。基线一旦建立,其变化需要受控制。

典型的软件开发项目生命期模型包括:瀑布模型、螺旋模型、演化模型等,将会在第3章软件系统开发方法中重点阐述。2.1.4 项目管理方法体系

问题引入

商鞅是大家耳熟能详的历史人物,是战国时期政治家、思想家,法家代表人物。经过商鞅变法,秦国的经济得到发展,军队战斗力不断加强,发展成为战国后期最强大的国家,并最终统一了中国。大到国家建设,小到企业文化,项目管理都需要一套行之有效的适合时代发展要求的管理方法体系。如果没有一个可重复用于每一个项目的方法,那么要实现项目管理的出色甚至成熟,是不太可能的。这种重复性过程就是项目管理方法体系。

解答问题

项目管理方法体系是一个可重复用于每一个项目的方法,将多种商业方法整合到项目管理方法体系中,采用单一的项目管理方法体系,可以降低成本,减少所需的资源设备,减少书面工作,避免重复性劳动。如图2-1所示,好的方法体系可以将其他方法整合到项目管理方法体系中去,整合成单一的方法体系。

图2-1 各种方法的整合(1)项目管理:计划、进度和控制工作的基本原则。(2)全面质量管理:保证最终产品满足客户要求。(3)并行工程:为了压缩进度,避免高风险,平行地完成工作而不是顺序地完成工作。(4)变更管理:控制最终产品的结构,为客户提供附加值。(5)风险管理:识别、量化项目风险,并对其做出反应,避免任何对项目目标的实质性负面影响。

近年来,还有不少新的管理方法、理念融入其中,如供应链管理,成本-收益分析,资金预算等。

分析问题

一个好的项目管理方法体系,可以为项目带来如下好处:(1)通过更好地控制项目范围,加快产品上市时间;(2)降低整个项目风险;(3)更好地制定决策;(4)让客户更满意,进而增加销售量;(5)有更多的时间用于增值工作,而不是用在内部政策和内部竞争上。

同时它也应具备如下特征:(1)有一个受欢迎的具体标准;(2)使用模板;(3)标准化的计划、进度和成本控制技术;(4)标准化的内部报告和客户使用反馈形式;(5)灵活应用于所有项目;(6)必要时灵活地快速改进;(7)便于客户理解和使用;(8)使用标准化的生命期阶段,阶段结束时反馈;(9)建立良好的职业道德规范。2.2项目范围管理2.2.1 范围规划

问题引入

某软件公司承担了A公司的一个CRM(客户关系管理,Customer Relationship Management)系统开发项目,在项目实施过程中,系统需求似乎永远无法确定,用户说不清楚自己的需求,怎么做他们都不满意,功能不断增加,今天要增加X功能,明天又说要添加Y功能,王总说要这样做,刘经理认为不妥,需要那样做,结果让软件开发人员无所适从,做了很多无用工。导致该项目进行了一年多,何时结束还处于不明确的状态,因为用户不断有新的需求提出来,项目组也就需要根据用户的新需求不断去开发新的功能。大家对这样的项目已经完全失去了信心。针对如此局面,项目管理专家余工程师通过对项目文档分析和对A公司相关重点人员的沟通认识到,这个项目一开始就没有明确界定整个项目的范围,在范围没有明确界定的情况下,又没有一套完善的变更控制管理流程,导致整个项目无法收尾。余工程师认为,要使项目回到正常轨道,首先必须做好项目范围规划,那么什么是项目管理的范围规划呢?

扫一扫 看视频

解答问题

范围规划是为了达到项目目标,为了交付具有某种特质的产品和服务,项目所规定要做的,对项目包括什么与不包括什么的定义与控制过程。这个过程用于确保项目组和项目干系人对作为项目结果的项目产品以及生产这些产品所用到的过程有一个共同的理解。范围规划如表2-1所示。

表2-1 范围规划

分析问题

项目管理的9大知识领域均会对项目的最后成功产生积极影响,然而,从9大知识领域对项目成功产生影响的轻重程度上来看,项目范围管理是最为重要的。该案例中软件开发人员没有认识到项目范围控制的重要性,没有弄清楚系统目标和系统功能的区别,没有在项目启动前把项目范围规划清楚。

客户不能够准确告诉软件开发人员需要哪些功能,他们只知道系统需要帮助他们达到哪些目标。功能需求并不是客户提供,是项目组成员在理解了业务需求后分析出来的结果。

范围规划即定义和规划项目目标,可交付成果的性能指标、结束条件、工作原则以及管理策略等。确定项目范围时,应该根据需求的定义,将项目范围分解为面向产品或服务的层次结果,即产品分解结构(Product Breakdown Structure,PBS)。产品分解结构中的每个产品单元的特性尽可能用可以度量的量化表述,以此作为设计、开发和签订合同的依据。在项目的不同时期,定义好检查点(即里程碑)。(1)范围规划的输入

项目范围计划编制,需要合理的、有效的根据,才能制定出指导项目顺利进行的范围管理计划。(2)范围规划的工具和技术

保证一个项目管理计划的合理性,必须要有合理、科学的分析方法和技术来支持。(3)范围规划的输出

范围管理计划对项目管理团队如何管理项目范围提供了指导。范围管理计划的组成部分包括:

①如何基于初步项目范围说明书准备一个详细的项目范围说明书。

②如何从详细的项目范围说明书创建WBS。

③如何对已完成项目的可交付物进行正式的确认和接受。

④如何对详细的项目范围说明书申请变更。这个过程直接与整体变更控制过程相关联。

项目实战

以小组的形式讨论:在你以前所做的或了解到的项目中,有无没有考虑范围规划的项目?如果存在这样的项目,效果怎样?2.2.2 范围定义

问题引入

尔时大王,即唤众盲问言:“汝见象耶?”众盲各言:“我已得见。”王言:“象为何类?”其触牙者即言象形如芦菔根,其触耳者言象如箕,其触头者言象如石,其触鼻者言象如杵,其触脚者言象如木臼,其触脊者言象如床,其触腹者言象如瓮,其触尾者言象如绳。盲人摸象这个成语大家都耳熟能详,如果没有明确的项目管理范围定义,那么项目的时间、费用和资源估算等都无法正常进行,也明确不了相关责任人的责任,更为严重的是不同角色的人对项目范围的定义和理解都不尽相同,因此项目范围定义对于项目而言至关重要。那么,项目究竟要定义什么样的范围呢?

解答问题

项目范围定义明确项目的范围,项目的合理性、目标,以及主要可交付成果。其最重要的任务就是详细定义项目的范围边界,界定应该做的工作和不需要进行的工作。

分析问题

随着项目信息的不断丰富,项目范围应被逐步细化。范围定义所编制的详细范围说明书根据项目的主要可交付成果、假设和制约因素,具体地说明和确定项目的范围。范围定义的过程如表2-2所示。范围定义的输出包括:(1)项目范围说明书

项目范围说明书详细描述了项目的可交付物和产生这些可交付物所必须做的工作。项目范围说明书在所有项目干系人之间建立了一个对项目范围的共识,统一了项目的主要目标,使团队能进行更详细的规划,指导团队在项目实施期间的工作,并提供一个范围基线或边界,用以评估所申请的变更或附加工作是在边界内还是边界外。项目范围说明书中对项目工作定义的详细程度,决定了项目团队能否很好地管理项目的范围。对项目的范围进行管理,又可以决定项目团队能否很好地规划、管理和控制项目的执行。详细的范围说明书应包括的文档有:

项目目标;

产品范围描述;

项目需求;

项目边界;

项目的可交付物;

产品可接受的标准;

项目的约束条件;

项目的假设条件;

项目组织干系人;

风险管理;

进度里程碑;

资金管理;

成本估算;

项目配置管理需求;

项目规范;

已批准的需求。(2)变更请求

在范围定义的过程中,可能需要对项目管理计划及其子计划进行变更。通过整体变更控制过程,我们可以接受或拒绝该变更请求。(3)项目管理计划(更新)

由于范围定义过程的变更可能导致范围管理计划的变更,从而项目管理计划应该做相应的更新。

表2-2 范围定义2.2.3 创建工作分解结构

问题引入

软件项目经理显然无法亲自完成所有的项目任务,项目经理所需要进行的重要工作是把项目的工作进行分解,交给合适的项目组成员去完成,那么如何使项目组所有成员都能够清楚地了解自己的工作,如何使所有的项目任务都有合适的负责人?

解答问题

利用工作分解结构可以解决这些问题。

WBS(Work Breakdown Structure,工作或任务分解结构),是以产品为导向的,子分支为硬件、服务以及为生产最终产品所要求的资料组成的树族。简单来说就是将工程项目的各项内容按其相关关系逐层进行分解,直到工作内容单一、便于组织管理的单项工作为止,再把各单项工作在整个项目中的地位、相对关系用树形结构图或锯齿列表的形式直观地表示出来的方法。其主要目的是使项目各参与方从整体上了解工程项目的各项工作(或任务),便于进行整体的协调管理或从整体上了解自己承担的工作与全局的关系。在实际应用中,树形结构图以其直观易懂的特点应用更为广泛。

分析问题(1)工作分解结构的作用

工作分解结构是项目定义对于项目范围定义的输出结果,工作分解结构定义了项目的全部范围,是项目可交付成果的合集,它组织和分解项目的可交付成果。它是一种交流手段,所以必须表达明确,无二义性。它将项目划分为可管理的工作单元,以便这些工作单元的费用、时间和其他方面较项目整体而言较容易确定。工作分解结构对于所有的项目非常重要,在于它是费用估算、费用预算、资源计划、风险管理计划,活动定义的基础和依据。工作分解结果能够帮助项目降低成本,减少离职带来的影响和屏蔽干扰因素。(2)工作分解结构的层次

工作分解结构把项目整体或者主要的可交付成果分解成容易管理、方便控制的若干个子项目或者工作包,子项目需要继续分解为工作包,持续这个过程,直到整个项目都分解为原子的工作包,这些工作包的总和是项目的所有工作范围。尽管存在多种工作分解结构,最普通的是如表2-3所示的6层结构。

表2-3 工作分解结构的分层

WBS上面三层通常由客户指定,反映了整合的努力程度,它们不应该同某一特定部门相连,下面由项目组内部进行控制。这样分层的特点有:

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载