图灵是英国著名的数学家和逻辑学家,被称为计算机科学之父、人工智能之父,是计算机逻辑
的奠基者,提出了“图灵机”和“图灵测试”等重要概念。
第一章
1945 年,ENIAC 诞生—现代意义上的计算机。
1946 年,美国数学家冯·诺依曼(Von Neumann)和同事完成《电子计算装置逻辑结构设计》的
研究报告,给出了由控制器、运算器、存储器和 I/O 设备组成的存储程序式计算机的组织结
构。奠定了现代计算机的基础。
软件产业的三次浪潮
•
1968-1985 年,称为第一次浪潮
– 满足在软件需求和复杂性方面日益增加的要求和因此导致的开发团队规模的不
断扩大。建立了以瀑布模型为主体的软件开发过程,以及结构化的软件分析与
设计方法。
– 1985 年美国防部发布 DoD-2167(1988 年,发布 2167A)可说是该阶段的总
结。
– 结构化方法关注的是方法本身,即,需求定义的正规化以及设计、创建那些可
以在最终系统中加以追踪的需求的方法。自动化工具在某种程度上对此起到辅
助的作用。这是从“家庭作坊”到大规模开发的良好的开端。
– 而导致这些项目成功/失败的真正原因(例如,需求管理和配置管理等)还未成
为关注的焦点。
• 过程改进的研究工作
– “二十多年来,并未实现用新的软件方法和技术解决软件产业化和软件质量方
面问题的承诺,工业界和政府组织认识到根本的问题是软件开发过程管理上的
不足”。---DoD, Report of the Defense Science Board Task Force on Military
Software, September 1987
– 软件过程改进是对不断提高的软件项目失败率的一种反应。从美国国防部对
SEI 的赞助开始,标志对过程的关注。
– 从 SEI‘87 后,对软件过程的关注开始影响世界的软件行业。Watts Hmphrey 在
软件开发中引入了传统工业(20 世纪 30 年代开始,70-80 年代盛行的质量控制
运动)的质量控制概念。从 1987 年的 SEI’87 开始到 1997/8 年 ISO/IEC 发表
ISO/IEC15504,形成的过程成熟度成为第二次浪潮。
• 软件工业化
– 过程成熟度运动为软件行业的第三次浪潮铺平了道路,而第三次浪潮就是“软
件工业化”。
– 在第三次浪潮中,软件开发将变得如同装配和制造过程一样。发动第三次浪潮
的技术因素包括:面向对象技术和重用软件技术,这使得利用标准重用组件以
装配软件成为可能(代表性的技术方法是:UML, SDL )。
– 推动第三次浪潮的关键因素是规范化的软件工程过程,使用这样的过程,确保
该过程中,质量、进度和功能是可以预测的和可以控制的。
什么是 CASE
CASE 是计算机辅助软件工程(computer-aided software engineering)的英文缩写。它包括很多
种类的软件工具,这些工具覆盖面很广,包括支持软件过程活动,如需求分析、系统建模、调
试和测试等。所有软件方法现在都由 CASE 中的相应技术来支持,如用于方法中的符号的编辑
器、根据方法规则检查系统模型的分析模块以及辅助生成系统文档的报告生成器等。CASE 工
具集还可能包括代码生成器,即从系统模型和过程指南自动生成源代码。过程指南能告诉软件
工程人员下一步该做什么。
系统的分解
术语
•
Firmware 固件
第二章
硬件装置,该硬件装置中驻留有只读的计算 机指令或计算机数据组合而成的软件,这种 软件
不能在程序控制下修改。
• HWCI(Hardware Configuration Item)
硬件配置项
为独立的功能而设计的且能满足最终用户功 能要求的一组硬件。
• CSCI (Computer Software Configuration Item)
计算机软件配置项
为独立的配置管理而设计的且能满足最终用户功能要求的一组软件。
• CSC (Computer Software Component)
计算机软件部件
计算机软件配置项中功能和性质不同的部分。计算机软件部件可以进一步分解成其它计算机
软件部件和计算机软件单元。
• CSU (Computer Software Unit) 计算机软件单元
计算机软件部件设计中确定的能单独测试的一部分软件。
系统特性
系统特性有两种类型:
1、 功能特性 当系统的所有部分一起工作,以达到一些目标的时候表现出来。举例来说,当
自行车被装配起来之后,就具有了运输工具的功能特性。
2、 非功能特性 如可靠性、性能、安全性和信息安全性。这些特性表现为在特定的操作环境
中系统的表现行为。对以计算机为基础的系统来说,有时会要求极高,如果在某些特性上
达不到最低要求,系统可能就无法使用。某些系统功能可能对某一类用户是不需要的,因
此,如果该系统不具备这些功能也是可以接受的。然后,若一个系统是不可靠的或运行速
度太慢,那它就很难被用户接受。
与系统总体可靠性紧密关联的 3 个方面如下:
硬件可靠性(Hardware reliability)、软件可靠性)(Software reliability)、操作员可靠性
(Operator reliability)
系统工程
系统工程师描述、设计、实现、有效性验证、实施和维护社会-技术系统的一系列活
动。Specifying, designing, implementing, validating, deploying and maintaining socio-
technical systems.
系统需求定义(System requirements definition)
需求定义阶段通常侧重于导出三种类型的需求:
1、 抽象功能需求 Abstract functional requirements
2、 系统特性 System properties
3、 系统一定不要有的性质 Undesirable characteristics.
系统设计 The system design process
系统设计主要是解决如何将不同的组件整合成一个能提供所需功能的系统。它所包括的活动
有:
1、 分割需求 Partition requirements
2、 识别子系统 Identify sub-systems
3、 为子系统分配需求 Assign requirements to sub-systems
4、 描述子系统的功能 Specify sub-system functionality
5、 定义子系统接口 Define sub-system
interfaces
遗留系统组件
遗留系统是以计算机为基础的社会-技术系统,它们是在过去开发出来的,往往采用在今天
看来是旧的和不再使用了的技术。遗留系统通常都是关键性业务系统。维护它们的原因就是更
换它们需要冒太大的风险。遗留系统组件如下:
1、 系统硬件 Hardware
2、 支持软件 Support software
3、 应用软件 Application software
4、 应用数据 Application data
5、 业务过程 Business processes
6、 业务策略和规则 Business policies and rules
遗留系统分层模型
第二章 key points
technical systems.
• Human and organisational factors have a significant effect on the operation of socio-
• There are complex interactions between the processes of system procurement,
development and operation.
• A legacy system is an old system that continues to provide essential services.
• Legacy systems include business processes, application software, support software and
system hardware.
第三章
系统可依赖性 Dependability
1、 可用性 Availability 系统的可用性是指系统在任何时间都能得到和运行,并能够执行有用服
务的可能性。
2、 可靠性 Reliability 系统的可靠性是指系统在给定的时间内,系统能正确提供希望的服务的
可能性
3、 安全性 Safety 系统的安全性是判断系统将会对人和系统的环境造成伤害的可能性
信息安全性 Security 系统的信息安全性是判断系统能抵抗意外或蓄意的入侵的可能性
(ARSS)
可依赖性其他性质 Other dependability properties
1、 可维修性 Repairability
2、 可维护性 Maintainability
3、 生存能力 Survivability
4、 容错 Error tolerance
可用性和可靠性 Availability and reliability
1、可靠性 Reliability 系统在一特定时间特定环境中为一专门目的而做的无失败操作的可能性
2、可用性 Availability 系统在一个时刻是可操作的和能提供所请求的服务的可能性
可以用于改善系统可靠性的辅助方法 Reliability achievement
1、 缺陷避免 Fault avoidance
2、 缺陷检测和删除 Fault detection and removal
3、 容错 Fault tolerance
(FA-FD-FT)
第三章 Key points
• A critical system is a system where failure can lead to high economic loss, physical
damage or threats to life.
• The dependability in a system reflects the user’s trust in that system
• The availability of a system is the probability that it will be available to deliver services
• The reliability of a system is the probability that system services will be delivered as
• Reliability and availability are generally seen as necessary but not sufficient conditions
when requested
specified
for safety and security
• Reliability is related to the probability of an error occurring in operational use. A
system with known faults may be reliable
Safety is a system attribute that reflects the system’s ability to operate without
threatening people or the environment
•
•
Security is a system attribute that reflects the system’s ability to protect itself from
external attack
• Dependability improvement requires a socio-technical approach to design where you
consider the humans as well as the hardware and software
第四章
主要的软件开发过程模型
• 顺序型:瀑布模型(Water Fall) 70’s
• 分离和区分需求、设计、开发等各阶段
• 迭代型:渐近模型 (Evolutionary) 80’s
• 规格说明和开发相互交互
• 顺序与迭代的组合:
• 螺旋模型(Spiral)
• 增量式开发模型(Incremental)
• 强调验证与确认:V-Model
l 形式化系统开发方法
• 一个数学系统,将说明形式化地转换为实现
l 基于部件/重用的开发方法
• 系统用已有的部件组合
瀑布模型
l 明确地将项目划分为不同的阶段
l 各阶段具有明确的定义,完成本阶段任务,并经评审后,才能进入下一阶段
l 对更改需求的相应很困难
l 本模型主要适合于需求可以得到很好理解的系统
渐进式模型
• 揭示开发
– 目的是和客户一起工作,并从最初的大概的需求说明演化出最终的系统。
• 抛出原型
– 目的是理解需求。没必要完全理解需求。
• 问题
– 缺乏过程的可见性
– 系统通常不能够很好的结构化
– 可能需要特殊技巧 (例如,快速原型语言)
• 应用
– 中小规模的交互式系统
– 大系统的一部分(例如,用户接口)
– 生命周期较短的系统
增量式模型
软件描述、设计和实现活动被分散成一系列的增量,然后轮流开发这些增量。
• 不是一次交付系统,开发和交付分解为每个增量,提交部分所需要的功能。
• 将用户的需求划分成多个块,最需要的需求在早期的增量中实现和交付。
• 一旦一个增量的开发启动,就将需求冻结,以便于后续的增量可以增加进来
增量式开发的优越性
• 客户的要求可以随着每个增量交付,因此,可以较早地使用系统的必须的功能
• 早期的增量作为原型,帮助明确后续增量的需求
• 整个项目失败的风险较小
• 最需要的系统服务将接收最多的测试
螺旋式模型
系统的开发从一个初始的大纲开始,成螺旋状开发,知道最后形成完善的系统。
• 目标设定
– 标识出各阶段的特定目标
• 风险评估和降低风险
– 评估风险,进行活动降低关键的风险
• 开发和确认
– 可以选择任何一种系统开发模型
• 计划
– 评审项目,并且对螺旋的下一阶段作出计划
V 模型