简介
本章目标是介绍软件工程的概念。读完本章将会:
- 理解软件工程是什么
- 理解开发不同类型的软件系统可能需要不同的软件工程技术
- 理解对于软件工程师很重要道德的和职业我问题
- 了解 4 非不同类型的软件系统。
1.1 专业化软件开发
专业化开发与个人化开发的关键区别在于,专业化软件会提供给用户使用,且通常由团队开发和维护。软件工程的目的是支持专业化的软件开发而非个人编程。
软件系统具有如下基本特性

1.1.1 软件工程
**定义: **
- 工程学科
- 软件生产的各个方面。
关注以下四个方面:
- 异构性
- 企业和社会的变革
- 信息安全与信任
- 规模
1.1.2 软件工程的多样性
每种类型系统需要专门的软件工程技术,然而,还是有一些软件工程基础适用于所有类型的软件系统:
- 开发过程:软件系统开发过程应当是受管理的并且被开发人员所理解。
- 可依赖性:可靠性和性能对所有类型系统都重要。
- 需求管理:理解和管理系统规格说明和需求是很重要的。
- 可复用性:尽可能高效地使用已有资源。
1.1.3 互联网软件工程
web 使软件成为高分部式的,业务应用中包含了对构件和程序的大规模复用。
- 软件复用已成为构建基于 web 的系统的主流方法
- 提前确定所有需求不切实际,基于 web 的系统总是增量开发和交付的
- 软件可以使用面向服务的软件工程来实现
- ajax 和 html5 等界面开发技术,支持 web 浏览器中富客户端界面的创建。
1.2 软件工程职业道德
做个有道德的工程师:
- 保密
- 量力而行,诚实守信
- 尊重知识产权
- 不要滥用技术
1.3 案例研究
本书采用了 4 种不同类型的系统作为例子:
- 嵌入式系统:这类系统中的软件控制硬件设备并嵌入到设备中。其典型问题包括物理尺寸、响应性、电量管理等。本书示例是一个面向糖尿病患者的胰岛素泵控制软件系统。
- 信息系统:这类系统主要目的是管理和提供对信息数据库的访问服务。其主要问题包括信息安全、可用性、隐私以及保持数据的完整性。本书示例是一个医疗记录系统。
- 基于传感器的数据采集系统:这类系统的主要怕目的是从多个传感器收集数据,并以适当的方式处理数据。其关键需求是可靠性和可维护性。
- 支持环境:这类系统集成了一系列软件工具开支持某种活动,例如 eclipse。本书介绍了一个用于支持学生校内学习的数字化学习环境。
1.3.1 胰岛素泵控制系统
该系统使用一个植入人体的微传感器来测量一些血液参数,这些参数与血糖浓度成正比。这些参数被送到泵控制器。控制器计算血糖浓度,得出胰岛素需要量,然后向一个小型化的泵发送信号使之通过持久连接的针头输送胰岛素。

1.3.2 心理健康治疗病人信息系统
Mentcare 系统是在诊所使用的一个病人管理系统,可以联网也可以本地使用。主要功能室病历管理、病人检测和管理报告。

1.3.3野外气象站
野外气象站只是一个更大系统的一部分,该系统是一个从气象站采集数据并将其提供给其他系统处理的气象信息系统。如图,包括:气象站系统(Weather station),数据管理与存档系统(Data management and archiving),气象站维护系统(Station maintenance)。

1.3.4 学校数字化学习环境
数字化学习环境是一个框架,其中包含一些通用工具及一些针对特殊目的设计的工具,外加一组满足用户需求的应用。如图,是一个面向 3 ~ 18 岁学生使用的数字化学学习环境(iLearn)的高层体系结构模型。采用分布式设计,所有构件都是可从互联网上任何地方访问的服务,不要求所有学习工具汇集在一个地方。

该系统是一个面向服务的系统,所有系统构建都被认为是一个可替换的服务,共有如下三种类型的服务:
- 公共服务:提供与应用无关的基础功能,可以被系统中其他服务所使用的。公共服务通常是针对该系统开发或修改的。
- 应用服务:提供特定应用(例如邮件、会议、图片共享等)以及针对特定教育内容(例如科学电影或历史资源)的访问手段。应用服务是为该系统特别购买的或从互联网上免费获取的外部服务。
- 配置服务:用于特定的应用服务集合对学习环境进行调整和设置,并定义如何在学生、教师、以及学生父母之间共享服务。
该设计是的服务再有了新服务以后可以随时替换,意味着该系统必须支持以下两个层次上的服务继承:
- 集成服务:提供 api 供其他服务访问。比如统一的身份认证服务。
- 独立服务:其运行与其他服务无关,可以直接通过浏览器访问。通过显式的用户动作(例如复制粘贴)与其他服务共享信息。
如果一个独立服务广发使用,可以集成该服务。
小结
- 软件工程是一门覆盖软件生产各个方面的学科。
- 软件产品的基本属性是可维护性、可依赖性、信息安全性、效率以及可接受性。
- 软件过程包括软件开发过程中所涉及的所有活动。
- 软件工程的基本思想适用于所有软件系统。包括:受管理的软件过程、软件的可依赖性和信息安全性、需求工程和软件复用
网友评论