课件
过程的含义
过程是软件工程的一个基本要素。过程是一个广义的概念,是通过一系列相互关联的活动,将输入转化为输出。对于软件开发来说,用户需求是软件开发的基础,也是整个开发过程的一个输入,开发人员通过一系列软件开发活动,最终交付出用户需要的产品。
那么问题来了,如何才能保证最终交付的是用户满意的产品?
其实需要在软件的构建过程中加以控制和管理,产品质量保证的关键在于对软件开发过程进行有效控制。
要实现对软件开发过程的有效控制,首先要规定过程实现的方法和步骤,即要把整个过程进行细分,详细的定义出过程里面的每一个环节,以及各个环节之间的执行顺序。
其次,还要对过程进行监控,这个监控并不只是对最终产品进行质量检验,而是要对过程的开始、每一个活动的执行、一直到结束,进行全方位地监测,从而保证每一个活动能够达到应有的质量。
举例:过程管理
过程管理对产品质量的控制起到至关重要的作用。以麦当劳食品为例,无论在世界的什么地方,进入麦当劳餐厅,除了少量本地特色食品外,几乎所有餐品的质量都没有太大的差别,这是如何做到的呢?
麦当劳对汉堡包的原材料和制作过程都做了非常细致的要求,诸如面包的大小、牛肉的品质、肉饼的组成以及汉堡的烘烤时间等,同时对制作后的售卖过程也做了严格的时间限定,甚至规定了与汉堡包一起卖的可口可乐的温度和柜台高度等。
正是由于在过程细节上的精益求精,从而保证了世界各地售卖的麦当劳产品,在品质上没有太大的差异,也就是无论何人、无论何时、无论何地,无品质差异。这就是运用过程方法来有效保证最终的产品质量。
过程方法
所谓过程方法,是系统地识别和管理组织内所使用的过程,保证更有效地获得期望的结果。
从麦当劳的例子可看出,过程方法是一个组织和管理工作活动的有效手段,其目的是更好地为用户创造价值。
通常,过程包括实现过程、管理过程和支持过程三种类型,其中:
- 实现过程:是提供有价值产品或服务的关键性活动,这些活动负责把输入转化为输出;
- 支持活动:负责提供所需要的资源和能力,从而使关键性的实现活动能够顺利进行;
- 管理活动:则是衡量和评价实现过程和支持过程的效能,建立起组织的质量管理体系;
软件过程
软件过程是为了获得高质量软件而实施的一系列活动,它包括问题定义、需求开发、软件设计、软件构造及软件测试等一系列软件开发的实现活动。
每一项活动都会产生相应的中间制品,为了保证软件开发过程能够按照预定的成本、进度、质量顺利完成,还需要诸如项目管理、配置管理、质量保证等一系列开发管理活动。
通过建立整个组织的质量管理体系,实现对软件开发实现活动的有效控制和质量保证。
下面介绍软件开发过程的一些基本活动。
问题定义
任何一个软件产品都起源于一个实际问题或者一个创意,当问题或创意提出之后,我们通过开展技术探索和市场调查等活动,来研究系统的可行性和可能的解决方案,从而确定待开发系统的总体目标和范围。
以微信抢票应用为例,来说明问题定义这个活动。过去学生参加学校举办的活动总是需要排队买票或领票,这个过程是非常烦人的一个过程,这个问题有不同的解决方案,可以开发一个 Web 应用,也可以开发一个独立的手机 APP,还可以做一个微信应用,通过比较不同方案,可以看出微信应用是一个成本最低、开发最快的一个解决方案,而且学生几乎每个人都使用微信,那么微信应用可以更容易地被学生接受和认可,因此我们最终确定系统的目标是开发一个微信抢票应用。有了该应用,再参加学校的活动和演出就是一个非常愉悦的过程。
需求开发
在可行性研究之后,需要分析、整理和提炼所收集到的用户需求,进而建立完整的需求分析模型,最终形成一个软件需求规格说明书。
首先要收集用户的需求,然后对所收集的需求进行分析、整理和提炼,来理解和建模系统的行为,在这个过程可能还要返回去继续收集更多的需求。对系统的行为进行明确之后,还要用文档的形式把待开发系统的行为定义出来,并且来检查和确认这个文档是不是满足用户的要求,在确认的过程里还会进行反复去「收集、分析、再补充」这样的一个过程。确认通过之后,形成一个正式的软件需求规格说明书,它是作为后续开发的一个基础。
软件设计
有了需求规格说明之后,需要对软件进行设计,然后形成软件设计说明书。这个设计的活动包括以下几个方面:
首先是要对软件的整体结构进行设计,然后定义出每个模块的接口,并且进一步地设计每一个组件的实现算法和数据结构,同时还要对整个系统的数据库进行设计。
软件构造
软件设计完成之后,通过构造活动,把设计转化成程序代码。这是一个复杂而迭代的过程,要求根据设计模型进行程序设计以及正确、高效地编写和测试代码。
首先我们要理解系统的模型,编写代码,进行代码的审查和单元的测试,还要进行代码优化,最终要构建系统并且集成联调,这一个过程是一个复杂而迭代的过程。
软件测试
软件构造完成之后,对软件产品进行测试,测试是有不同层次的,包括单元测试、子系统测试、系统集成测试和验收测试,在不同层次上,来保证每一个模块、整个系统和最终产品的质量。
软件维护
测试通过后,产品就可以发布了。但是,系统投入使用后还会进行不断地修改,以适应不断变化的需求。完全从头开发的系统很少,整个开发和维护是一个连续交叉的过程。
当新的需求出现后,要定义这个需求,然后看现有的系统是不是能够满足当前这个新的需求,如果现有的系统不能满足需求,就要进行进一步地开发,提出系统的变更。针对这个系统的变更,要修改现有的系统,然后形成一个新的系统。整个过程是一个循环往复的一个过程。
软件开发管理
除了基本的实现活动以外,软件项目管理和软件配置管理是两个很重要的开发管理活动。
软件项目管理
软件项目管理是为了软件项目能够按照预定的成本、进度和质量顺利地完成,而对成本、人员、进度、质量和风险进行控制和管理的活动。
项目管理主要体现在4个方面:
- 计划:首先要明确项目的目标,制定项目的计划,明确项目需要的资源;
- 组织:其次要组建开发团队,明确每一个成员的分工和责任;
- 领导:在项目实施过程中,检查和评价项目的总体进展情况;
- 控制:控制整个项目范围的变更,监控项目进展过程中出现的问题,并及时地纠正这些问题;
软件配置管理
软件配置管理是通过版本的控制、变更的控制,并且使用合适的配置管理软件, 来保证整个开发里面的所有产品配置项(例如代码、文档等)的完整性和可跟踪性。
主要包括四个基本活动:
- 版本管理:是跟踪系统中每一个组件的多个版本,来保证开发者对组件的修改不会产生混乱;
- 系统构建:是把不同的组件进行编译、链接,组成了一个可执行的系统;
- 变更管理:是对开发过程中来自用户和开发者的开发请求进行分析和评估,做出适当的决策,来决定是否变更和何时变更;
- 发布版本管理:整个开发完成后,发布版本管理需要准备发布的软件,并对用户使用的软件进行持续地跟踪;