当前位置:文档之家› 1 软件工程基础

1 软件工程基础


析、制定和采取对策。 – 每叠代一次,软件开发就前进一次,软件系 统就生成一个新的版本。
螺旋模型
软件开发模型
螺旋模型
主要适用于:软件组织内部开发的大规模软件项目。 1. 如果进行风险分析的费用接近整个项目的经费预 算,则风险分析是不可行的。 2. 只有内部开发的项目,才能在风险过大时方便地中 止项目。
3.2.5 喷泉模型
OO软件过程 迭代(求精) 无缝 维护:时间缩短
– 较小的圆圈
Rational统一过程 (RUP)
二维模型
(工作流-时间)
– 核心工作流: 9个 – 工作阶段:4个, 目标、里程碑 – RUP迭代式开发:迭代,渐增
RUP 过程
3.2 软件过程
3.2.1 软件生命周期 3.2.2 瀑布模型 (waterfall model) 3.2.3 快速原型模型(rapid prototype model) 3.2.4 螺旋模型 (spiral model) 3.2.5 喷泉模型 (fountain model)
给我们的生活、工作、学习等带来了巨大的变化
2.2 软件的发展趋势
•软件运行平台正在 从 单机环境 发展到 网络环境 •这 将导致软件在很多方面的重要发展 • 网络环境的变化:
Internet Grid computing -〉Cloud computing 云计算
闲散资源、虚拟集群服务 云服务
Pervasive computing -〉IoT (Internet of Things) 物联网
• 软件危机实例
IBM, 1963-1966年之间曾开发过一个OS/360系统,这一项目花了 5000人一年的工作量,最多时有1000人投入开发工作,写出了近 100万行源程序。......据统计,这个操作系统每次发行的新版本都 是从前一版本中找出1000个程序错误而修正的结果。
这个项目的负责人F. D. Brooks事后总结了他在组织开发过程中的沉 痛教训时说:“......正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是 挣扎,陷得越深,最后无法逃脱灭顶的灾难。......程序设计工作正像这样 一个泥潭,......一批批程序员被迫在泥潭中拼命挣扎,......谁也没有料到 问题竟会陷入这样的困境......”。
2.1 软件本质特性
软件 = 程序 + 数据 + 文档 •软件的本质特性
•构造性 •演化性
软件的构造性
软件 是 是 典型的知识产品 客观世界中 问题空间的具体描述 软件 是有结构的 构造性 是软件的本质特性 传统的软件开发 是 个体作坊式的 只 解决功能问题 未 考虑结构问题
造成 软件 复杂度 高 维护难度 大
软件的演化性
软件 是 是 客观事物的一种反映 知识的提炼 知识的体现 知识的固化 不断发展 不断发生变化 不可能一成不变 新需求、新技术不断出现 软件系统要不断升级
客观世界
软件系统
• 软件 作为逻辑产品的特点:
劣势: 不易被理解 容易出错 找错、排错困难 优势: 易于变化,适应性强 复制成本低,适合规模经济
– OS/370 – Windows: ~5000万行代码
软件工程四十年:软件工程、构件、中间件
• 软件的发展现状
(1)已经存在大量正在运行的软件 金融、电信、航空航天等 (2)软件的应用范围不断扩大 商务、交通、家电等,“计算机软件?” (3)软件的规模与复杂性持续增加 (4)出现了大量与软件相关的标准
工具 方法 (过程) 质 量 焦 点
3.2.1 软件生命周期
定 义
Definition Feasibility Study Requirements Analysis System Design
开 发
Program Design Coding & Module Testing Integration & System Testing
维护
Delivery & Maintenance
软件生命周期
1.问题定义:问题性质、工程目标和工程规模 2.可行性研究:可行性论证报告,初步开发计划 3.需求分析:
SRS
(开发的依据; 验收的标准)
4.总体设计:总体设计规格说明书(划分、块间关系、块内功能描
述),数据库或数据结构说明书,集成测试计划
软件的开销比重
从 开发为主要开销 向 开发、演化开销并重 的发展
最近一段时间 延长软件生命 维护、演化软件 等问题 同时受到了 学术界与产业界的双重关注
诸如 柔性结构技术、远程维护技术、自适应技术 等 将得到重视
软件的提交形式
从 以 产品 为中心 向 以 服务 为中心 的发展
例如:应用服务提供商 (ASP: Application Service Provider) “Web服务”(Web Services) Grid Computing, Cloud Computing 这一发展 将使 软件在 方便使用、安全可靠 等方面 更加人性化 等 皆体现了软件向服务发展的趋势
软件开发的集成
从 以单个软件开发为主 向 以集成式开发为主 的发展
例如:业务流程重组 (BPR:Business Process Reengineering) 企业应用集成 (EAI:Enterprise Application Integration) 在这样的背景下 符合标准规范的软件将更加受欢迎
软件工程基础
1. 软件危机 2. 软件
2.1 软件的本质 特性 2.2 软件的发展 趋势
3. 软件开发
3.1 软件开发的特点 3.2 软件开发过程 3.3 网络环境带来的影响
4. 程序设计语言的发展
3.3 网络环境带来的影响
网络环境的特点:
•共享性 •开放性 •并发性 •可扩展性 •容错性 •…
3.2 软件过程
3.2.1 软件生命周期 3.2.2 瀑布模型 (waterfall model) 3.2.3 快速原型模型(rapid prototype model) 3.2.4 螺旋模型 (spiral model) 3.2.5 喷泉模型 (fountain model) 和RUP
软件开发模型

1946,第一台电子计算机 ENIAC 数值数据
– 程序系统 1956, 第一个高级语言Fortran 各种数据 – 软件工程: 起源于软件危机 1968,德国,NATO会议
软件危机:计算机软件在开发和
维护过程中所遇到的一系列严重 问题。
软件危机的本质是:软件开发的
高成本,低质量,低效率。
GOOGLE:4-5 万台 PC QQ:上万台 PC
(4) 容错性
硬件、软件、网络发生错误的不可避免性 网络环境必须维护可用性 容错的实现途径: 恢复(recovery) 冗余(redundancy)
“911”的启示
(5) 海量数据
大量 大量 大量 大量 大量 页面 代码 业务数据 视频 ……
软件的运行方式
从 纯被动式的方式 向 部分主动式的方式 发展
主动对象(Active Object) 类真体(Agent)等具有的 独立性、自治性和自适应性 能够很好地适应 从 封闭、静态、稳定的单机环境 的转变 到 开放、动态、多变的网络环境 这一发展 将 有利于 减轻人的负担 促进 人机和谐环境的 建立
不足:不易改动,缺乏灵活性。
•快速原型 模型 •面向对象 模型
3.2.3 快速原型模型
分析定义 系统需求 运行 和维护 原型化
软件开发模型
生成 原型
含原型化的 软件生存期
系统 设计
测试
编码
程序 设计
快速原型模型
与瀑布模型的主要区别:
– 获取用户需求的方法不同
原型:主要功能,注重界面,忽略细节
3.2.2 瀑布模型
需求分析 验证 规格说明 验证 设计 验证 编码 测试
软件开发模型
综合测试 维护
软件开发模型
瀑布模型
特点:

阶段间:顺序性和依赖性 推迟实现的观点 阶段性评审和文档
在初始需求是困难的;一个可运行的软件版本到最后阶段 才能得到。一旦出现问题,将给软件项目带来巨大的损失。
3.2 软件程
3.2.1 软件生命周期 3.2.2 瀑布模型 (waterfall model) 3.2.3 快速原型模型(rapid prototype model) 3.2.4 螺旋模型 (spiral model) 3.2.5 喷泉模型 (fountain model)
SE Methodology/Paradigm
软件危机还存在吗? 仍然存在: 1968-2011
四十多年!
软件的复杂性 是其自身所固有的 抽象、分治、分类等思想将在 其中发挥极为关键的作用
第一讲 软件工程基础
1. 软件危机 2. 软件 2.1 软件的本质特性 2.2 软件的发展趋势 3. 软件开发 3.1 软件开发的特点 3.2 软件开发过程 3.3 网络环境带来的影响 4. 程序设计语言的发展 4.1 发展历程 4.2 多角度的分类 4.3 语言的选择
微小计算设备(掌上电脑,智能手机,sensor,RFID) Ipv6
软件反映的对象
从 以 个体计算过程 为反映对象 向 以 群体合作过程(协同) 为反映对象
例如: 电子商务 电子政务 虚拟企业 …… 电子服务
的发展
人们的合作过程是丰富多样的、不断调整的 因此,网络环境下的软件 更加 复杂、易变 构造性、演化性 更加突出
软件的关注点
从 以正面功能为核心 向 兼顾侧面约束 的发展
近期出现的 面向 侧面 的编程 (AOP: Aspect Oriented Programming) 特征交互(FI: Feature Interaction) 等 与经典的 关注点分离(SOC: Separation Of Concerns ) 等相呼应 有效地处理 交叉(cross cutting)特征 例如: 安全性、可靠性、 同步性 等 这一发展 将使 软件工程师更容易地开发、维护应用系统
相关主题