《实践者的研究方法》—— 第2章 软件工程 2.1 定义软件工程学科

简介:

本节书摘来自华章出版社《实践者的研究方法》一书中的第2章,第2.1节,作者罗杰 S. 普莱斯曼(Roger S. Pressman),更多章节内容可以访问云栖社区“华章计算机”公众号查看。


第2章

Software Engineering: A Practitioner’s Approach, Eighth Edition

软 件 工 程

要 点 浏 览

概念:软件工程包括过程、一系列方法(实践)和大量工具,专业人员借由这些来构建高质量的计算机软件。

人员:软件工程师应用软件工程过程。

重要性:软件工程之所以重要是因为它使得我们可以高效、高质量地构建复杂系统。它使杂乱无章的工作变得有序,但也允许计算机软件的创建者调整其工作方式,以更好地适应要求。

步骤:开发计算机软件就像开发任何成功的产品一样,需采用灵活、可适应的软件开发过程,完成可满足使用者要求的高质量的软件产品。这就是软件工程化方法。

工作产品:从软件工程师的角度来看,工作产品是计算机软件,包括程序、内容(数据)和其他工作产品;而从用户的角度来看,工作产品是可以改善生活和工作质量的最终信息。

质量保证措施:阅读本书的后面部分,选择切合你所构建的软件特点的思想,并在实际工作中加以应用。

要构建能够适应21世纪挑战的软件产品,我们必须认识到以下几个简单的事实:

软件实际上已经深入到我们生活的各个方面,其结果是,对软件应用所提供的特性和功能感兴趣的人显著增多。因此,在确定软件方案之前,需要共同努力来理解问题。

年复一年,个人、企业以及政府的信息技术需求日臻复杂。过去一个人可以构建的计算机程序,现在需要由一个庞大的团队共同实现。曾经在可预测、独立的计算环境中实现的复杂软件,现在要将其嵌入任何产品中,从消费性电子产品到医疗器械再到武器系统。因此,设计已经成为关键活动。

个人、企业和政府在进行日常运作管理以及战略战术决策时越来越依赖于软件。软件失效会给个人和企业带来诸多不便,甚至是灾难性的失败。因此,软件应该具有高质量。

随着特定应用系统感知价值的提升,其用户群和软件寿命也会增加。随着用户群和使用时间的增加,其适应性和增强型性需求也会同时增加。因此,软件需具备可维护性。

由这些简单事实可以得出一个结论:各种形式、各个应用领域的软件都需要工程化。这也是本书的主题——软件工程。

2.1 定义软件工程学科

对于软件工程,美国电气与电子工程师学会(IEEE)[IEE93a]给出了如下定义:

软件工程是:(1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;(2)对(1)中所述方法的研究。

然而,对于某个软件开发队伍来说可能是“系统化的、规范的、可量化的”方法,对于另外一个团队却可能是负担。因此,我们需要规范,也需要可适应性和灵活性。

软件工程是一种层次化的技术,如图2-1所示。任何工程方法(包括软件工程)必须构建在质量承诺的基础之上。全面质量管理、六西格玛和类似的理念促进了持续不断的过程改进文化,正是这种文化最终引导人们开发出更有效的软件工程方法。支持软件工程的根基在于质量关注点(quality focus)。

软件工程的基础是过程(process)层。软件过程将各个技术层次结合在一起,使得合理、及时地开发计算机软件成为可能。过程定义了一个框架,构建该框架是有效实施软件工程技术必不可少的。软件过程构成了软件项目管理控制的基础,建立了工作环境以便于应用技术方法、提交工作产品(模型、文档、数据、报告、表格等)、建立里程碑、保证质量及正确的管理变更。

软件工程方法(method)为构建软件提供技术上的解决方法(如何做)。方法覆盖面很广,包括沟通、需求分析、设计建模、程序构造、测试和技术支持。软件工程方法依赖于一组基本原则,这些原则涵盖了软件工程所有技术领域,包括建模活动和其他描述性技术等。

软件工程工具(tool)为过程和方法提供自动化或半自动化的支持。这些工具可以集成起来,使得一个工具产生的信息可被另外一个工具使用,这样就建立了软件开发的支撑系统,称为计算机辅助软件工程(computer-aided software engineering)。

相关文章
|
算法 测试技术
五校联合软件工程专业软件工程概论
五校联合软件工程专业软件工程概论
122 0
五校联合软件工程专业软件工程概论
|
测试技术
【软件工程基础】需求工程
【软件工程基础】需求工程
115 0
|
机器学习/深度学习 数据可视化 大数据