软件工程学习笔记(二)


前言

过程是软件开发的一个基本要素,这一讲将学习什么是过程,过程在软件开发管理中起到什么作用,软件过程又包括哪些基本活动。
同时还将学习五种软件过程模型。


一、过程的含义

过程是一组将输入转化为输出的相互关联或相互作用的活动
  1. 对于整个软件开发来说,用户需求是软件开发的基础,也是整个开发过程的一个输入
  2. 开发人员通过一系列软件开发活动最终交付出用户需要的产品
  3. 产品质量保证的关键在于对软件开发过程进行有效控制
    • 首先,规定过程的实现方法和步骤,也就是说要把整个过程进行细分,详细地定义出过程里面的每一个环节以及各个环节之间的执行顺序
    • 其次,还要对过程进行监测,其中包括对过程的开始每一个活动的执行过程的结束进行全方位地监测

在这里插入图片描述


二、过程方法

过程方法是系统地识别和管理组织内所使用的过程,保证更有效地获得期望的结果。
  1. 通常,过程包括实现过程管理过程支持过程
    • 实现过程是提供有价值产品或服务的关键性活动,这些活动负责把输入转化为输出
    • 支持过程负责提供所需要的资源和能力,从而使关键性的实现活动能够顺利进行
    • 管理过程则是衡量和评价实现过程和支持过程的效能,建立起组织的质量管理体系
  2. 软件开发管理与支持活动包括:软件项目管理计划、软件配置管理计划、软件质量保证计划、评审记录……

三、软件开发活动

1.问题定义

问题定义:人们通过开展技术探索和市场调查等活动,研究系统的可行性和可能的解决方案,确定待开发系统的总体目标和范围。

在这里插入图片描述

2.需求开发

需求开发:在可行性研究之后,分析、整理和提炼所收集到的用户需求,建立完整的需求分析模型,编写软件需求规格说明。

在这里插入图片描述

3.软件设计

软件设计:根据需求规格说明,确定软件体系结构,进一步设计每个系统部件的实现算法、数据结构及其接口等。

在这里插入图片描述

4.软件构造

软件构造:概括地说是将软件设计转换成程序代码,这是一个复杂而迭代的过程,要求根据设计模型进行程序设计以及正确而高效地编写和测试代码。

在这里插入图片描述

5.软件测试

软件测试:检查和验证所开发的系统是否符合客户期望,主要包括单元测试、子系统测试、集成测试和验收测试等活动。

在这里插入图片描述

6.软件维护

软件维护:系统投入使用后对其进行改进,以适应不断变化的需求。完全从头开发的系统很少,将软件系统的开发和维护看成是一个连续过程更有意义。

在这里插入图片描述

四、软件开发管理

1.软件项目管理

软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量和风险进行控制和管理的活动。

在这里插入图片描述

2.软件配置管理

软件配置管理是通过执行版本控制、变更控制的规程,并且使用合适的配置管理软件,来保证所有产品配置项的完整性和可跟踪性。

在这里插入图片描述

五、软件过程模型

软件过程是为了获得高质量软件所需要完成的一系列任务,它定义了完成各项任务的工作步骤,把任务、人员和工具密切地结合在一起,软件过程模型是对软件过程的抽象描述

瀑布模型将基本的开发活动看成是一系列界限分明的独立阶段,这是一种计划驱动的软件过程,有利于规范软件开发活动。
原型化模型 原型是一个部分开发的产品,用于加强对系统的理解,有助于明确需求和选择可行的设计策略。
迭代式开发 将描述、开发和验证等不同活动交织在一起,在开发过程中建立一系列版本,将系统一部分一部分地逐步交付。
可转换模型利用自动化的手段,通过一系列转换将需求规格说明转化为一个可交付使用的系统。

1.瀑布模型

开发阶段严格按照线性方式进行,每一个阶段具有相关的里程碑和交付产品,且需要确认和验证。

  • 以预测性为原则
  • 以文档驱动开发国过程
  • 以过程控制为核心

在这里插入图片描述
弊端:瀑布模型只有到测试阶段才能真正地验证和确认软件的功能和性能,但这个时候所有的代码都已经开发完成,很难返回去纠正需求的问题和设计的缺陷。虽然这种模型对各个阶段进行严格控制,但是却缺少了对变化的适应

软件开发具有迭代性

软件开发具有迭代性,需要不断地反复尝试,通过比较和选择不同的设计,最终确定令人满意的问题解决方案。

在这里插入图片描述

2.原型化模型

  • 如果用户能够看到软件的操作界面并且实际操作的话,就能明白这些功能是不是自己需要的
  • 另外,设计的原型化也可以帮助开发人员评价和分析不同方案的实现效果,最终决定更为合适的设计策略

在这里插入图片描述

3.迭代式开发——增量模型和迭代模型

今天的商业环境要求企业更快速地推出新产品,再加上用户需求存在不确定性和持续变化的特点。于是就需要使用新的过程模型来缩短软件项目的开发周期。

在这里插入图片描述
优势:迭代式的开发使得软件系统能够逐步地进行交付,不仅可以缩短产品的开发周期,还可以更好地获得用户对产品的反馈

迭代开发的两种形式:

增量模型:在每一个新的发布中逐步增加功能直到构造全部功能。
迭代模型:一开始提交一个完整系统,在后续发布中补充完善各子系统功能。

在增量模型中,首先定义一个小的功能系统,然后在每一个新发布的功能中逐步增加功能,直到构造出全部的功能

在这里插入图片描述
在迭代模型中,一开始就提交一个完整的系统,但是每个功能并不完善,然后在后续的发布中,再对其补充、完善

在这里插入图片描述
在这里插入图片描述

4.可转换模型

犯错是人的天性。往往是由于人为的错误,造成了软件的缺陷。因此,可转换模型是采用形式化的数学方法描述系统,并利用自动化手段通过一系列转换,将形式化的需求规格说明变为可交付使用的系统

在这里插入图片描述
优势:

  • 由于数学方法具有严密性和准确性,形式化方法所交付的系统具有较少的缺陷和较高的安全性。
  • 特别适合于那些对安全性、可靠性和保密性要求极高的软件系统,这些系统需要在投入运行前进行验证。

弊端:

  • 建立形式化的数学描述是一个比较困难的工作,目前这种方法还是应用于有限状态的嵌入式系统中

总结

  • 在这次的学习中,我学习了软件过程概念及其组成,软件过程包括实现过程管理过程支持过程。其中的实现过程又包含问题定义需求开发软件设计软件构造软件测试软件维护,这些活动都是关键性活动,负责把输入转化为输出。而软件的开发过程还需要进行软件开发管理,即软件项目管理软件配置管理
  • 还重点学习了几种常见的软件过程模型及其应用,软件过程模型的发展体现了软件工程理论的发展,从早期完全无序的状态到严格阶段控制的瀑布模型,以及现在流行的应对变化的迭代模型,其目的都是要提高软件开发效率和产品质量,更有效地解决软件开发面临地问题。

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值