软件工程的概念
- 2.1 定义软件工程学科
- 2.2 软件过程
-
- 2.2.1 过程框架
- 2.2.2 普适性活动
- 2.2.3 过程的适应性调整
- 2.3 软件工程实践
-
- 2.3.1 实践的精髓
- 2.3.2 通用原则
- 2.4 软件开发神话
- 2.5 这一切如何开始的
课程连接 –> [进入]
软件相关的几个简单事实
- 软件深入到生活各个方面
- 信息技术需求日臻复杂
- 日常运作管理以及战略战术决策越来越依靠软件
- 随着特定应用感知价值的提升,其用户群和软件寿命也会增加。
- 各种形式、各个应用领域的软件都需要工程化。
2.1 定义软件工程学科
(1)将系统化的、规范化、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。
(2)对(1)中所述方法研究。
软件工程的内容
- “系统化的、规范化、可量化”是好的方法,也可能是负担,因此,需要规范,也需要可适应性和灵活性。
- 软件工程是一种层次化的技术。
- 任何工程方法必须构建在质量承诺的基础上。支持软件工程的根基在于质量关注点
- 软件工程的基础是过程层。软件过程将各个技术层次结合在一起,使得合理、及时地开发软件成为可能。
- 软件工程方法为构建软件提供技术上的解决方法(如何做
- 软件工程工具为过程和方法都提供自动化或半自动化的支持。
2.2 软件过程
- 软件过程是工作产品构建时所执行的一系列活动、动作和任务的集合。
- 活动主要实现宽泛的目标(如沟通),与应用领域、项目大小、结果复杂性或者实施软件工程的重要程度没有直接关系。
- 动作包含了主要工作产品生产过程中的一系列任务。如设计。
- 任务关注小而明确的目标,能够产生实际产品。如单元测试。
注意:
- 过程不是对如何构建软件的严格规定,而是一种可适应的调整方法,以便工作人员(软件团队)可以挑选适合的工作动作和任务集合。
- 目标是及时、高质量地交付软件,满足软件项目资助方和用户需求。
2.2.1 过程框架
- 过程框架定义了若干个小的框架活动,为完整的软件开发过程建立了基础。这些框架活动可广泛应用于所有软件开发项目,过程框架还包括一些普适性活动。
- 通用的软件工程过程框架的5个活动:沟通、策划、建模、构建、部署。
通用框架活动
- 沟通:包含了与客户(和其他共利益者)之间大量的交流和写作,还包括需求获取以及其他相关活动。
- 策划:指为后续的软件工程工作制定计划。它描述了需要执行的技术任务、可能的风险、资源需求、工作产品和开发人员更好地理解软件需求;设计可以实现需求。
- 建模:它包括创建模型和设计两方面。创建模型有助于客户和开发人员更好地理解软件需求,设计可以实现需求。
- 构建:它包括编码(手写或自动生成)和测试。
- 部署:软件(全部或者完成的部分)交付到用户,用户对其进行评测并给出反馈意见。
注:
1)不同软件过程细节可能差别很大,但框架活动都是一致的。
2)对许多项目来说,随着项目的开展,框架活动可以迭代应用。即,在项目的多次迭代过程中,沟通、策划、建模、构建、部署等活动不断重复(迭代 -> 软件增量 -> 软件逐渐完善)。
2.2.2 普适性活动
- 软件项目跟踪和控制
- 风险管理
- 软件质量保证
- 技术评审
- 测量
- 软件配置管理
- 可复用管理
- 工作产品的准备和生产
2.2.3 过程的适应性调整
- 软件工程过程不是教条,而是灵活可适应的。
- 不同项目采用的项目过程可能有很大不同,主要体现在以下方面
(1)活动、动作和任务的总体流程,以及相互依赖关系
(2)在每一个框架活动中,动作和任务细化的程度
(3)工作产品的定义和要求的程度
(4)质量保证活动的应用方式
(5)项目跟踪和控制活动应用的方式
(6)过程描述的详细程度和严谨程度
(7)客户和利益相关者对项目参与的程度
(8)软件团队所赋予的自主权
(9)队伍组织和角色的明确程度
2.3 软件工程实践
2.3.1 实践的精髓
- 理解问题(沟通和分析)
- 计划解决方案(建模和软件设计)
- 实施计划(代码生成)
- 检查结果(测试和质量保证)
2.3.2 通用原则
- 第1原则:存在价值
- 第2原则:保持简洁
- 第3原则:保持愿景
- 第4原则:关注使用者
- 第5原则:面向未来
- 第6原则:提前计划服用
- 第7原则:认真思考
2.4 软件开发神话
软件神话:关于软件及其开发过程的一些被人盲目相信说法。
- 会影响到几乎所有的角色:管理者、顾客、其他非技术性角色、具体的技术人员;
- 看起来是事实的合理描述(有时的确包含真实的成分)、符合直觉,并经常被拿来做宣传;
- 实际上误导了管理者和技术人员对软件开发的态度,从而引发了严重的问题。
管理神话:
- 我们指定了完善的规范和标准,只要照章执行,软件开发就不会出现问题
- 软件项目拖期了,再招聘几个人,很快就能赶上进度;
- 只要我们使用了最先进的软件开发语言、开发工具和开发环境,软件项目将会一帆风顺。
客户神话:
- 软件改起来简单,你们先做着,做好了我看看,不合适再改。
- 我就需要你们做一个类似Excel的功能,但是要符合我的要求。
从业者神话:
- 客户要什么,我们就做什么
- 当我完成程序并将其交付使用后,我的任务便结束了
- 软件还没开发完呢,好不好用等做完再说
- 程序好使就行,其他无所谓
- 软件工程将导致我们产生大量的无用文档,并因此降低工作效率
2.5 这一切如何开始的
每个软件项目都来自业务需求,需求可能是:
- 对现有应用程序的纠错
- 改变遗留系统以适应变化的业务环境
- 扩展现有应用程序功能和特性
- 开发一种新的产品、服务或系统
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!