第四篇 软件开发活动及过程
主要内容:
介绍软件开发个阶段活动的概念、
原理及方法。
讨论软件工程过程,即用一条什么路线把这些不可少的活动串连起来。
第一章 软件工程概述
软件工程的背景和历史
1968年由 NATO (北大西洋公约组织 )在德国 Garmish召开的学术会议上,Feitz Bauer首先提出了,软件工程,概念。
Evolution of software
早期 第二阶段 第三阶段 第四阶段
面向批处理?多用户?分布式系统?强大的桌面系统
有限的分布?实时?嵌入,智能,?面向对象技术
自定义软件?数据库?专家系 统
软件产品?人工神经网络
并行计算
网络计算
1950 1960 1970 1980 1990 2000
软件技术面临的问题
复杂性
生产率
例,Windows95有 1000万行代码
Windows2000有 5000万行代码
Exchange2000和 Windows2000开发人员结构
Exchange2000 Windows2000
项目经理 25人 约 250人开发人员 140人 约 1700人测试人员 350人 约 3200人改正一个问题需付出的代价需求分析结构设计详细设计编码集成测试系统测试现场改正一个问题的估计费用改正一个问题估计的工作量
20
200
2000
1000
5.0
2.5
0.05
0.5
(美元 ) (人天 )
成功的标准:
用户在 用
用户可很容易做完要做的事失败的根本原因:
开发人员写出的东西达不到用户要求
(人的问题,技术问题 )
什么是软件工程
软件工程 —— 是指把系统的、规范化的、可以度量的方法运用于软件的开发、运行和维护的过程
工程方法,人们利用技术(或工具)、技能通过有组织活动完成契约规定的目标,即按预定完工期交付合格成品。
工程要素,人力、资金、技术
工程目标,在给定的资金、限制的时间内,完成符合相应标准的产品。
软件工程的目标,
提高软件质量与生产率,最终实现软件的工业化生产。
软件需求方最关心的问题 是 质量
软件供应方最关心的问题 是 生产率
质量与生产率之间有着内在的联系,高生产率必须以质量合格为前提。
软件工程是一门交叉学科软件工程的主要研究内容
软件开发技术,软件开发方法学软件开发过程软件工具和软件工程环境
软件工程管理,软件管理学软件经济学软件心理学软件工程所包含的内容不是一成不变的,
随着人们对软件系统的研制开发和生产的理解。
应用发展的眼光看待它。
软件工程知识结构
软件需求
软件设计
软件构造
软件测试
软件维护
软件配置管理
软件工程管理
软件工程过程
软件工程工具和方法
软件质量
( Guide to
the Software
Engineering
Body of
Knowledge,
简称 SWEBOK

软件工程技术的两个明显特点:
强调规范化
强调文档化软件产品:
在选定的软件 /硬件平台上的程序集合,能满足预定的功能、性能需求。有全套的说明、
使用、维护的文档。
软件=程序+文档
软件生存周期
软件生存周期 (Software Life Cycle)
软件产品或软件系统从设计、投入使用到被淘汰的全过程。
软件生存周期 续 1
问 题需 求 分 析设 计构 造测 试维 护用 户 需 要规 范 说 明,可 行 性报 告,初 步 用 户 手册体 系 结 构 设 计,子规 范 说 明,各 模 块实 现 设 计 的 说 明各 模 块 代 码 和 单 元测 试测 试 计 划,测 试 设计,系 统 测 试,及各 种 目 的 测 试,测试 报 告分 布 计 划,培 训 计 划 及教 材,反 馈 信 息,维 护档 案退 役最 简 单 的 生 命 周 期 模 型
软件生存周期
需求分析
用户的需要 need变为开发目标需求 requirement
建模抽象出能实现业务工程的计算机能实现的模型
开发项目性质:
新概念型、新产品型、产品改进型、产品维护型
成果:需求规格说明、可行性报告、初步用户手册
需求规范,开发者的宪法,测试相符性的依据
初步用户手册,外部规范续 2
40— 20— 40规律:
工作量方面中,需求、设计占 40%,软件构造占 20%,测试及维护占 40%
需求活动最关键:沟通。
软件生存周期
设计
构思一个软件结构能满足规格说明定义的功能和性能要求
软件的性能潜藏在分析设计过程中
设计的两个阶段:
顶层(体系结构)设计:以模块 /对象相互间关系形成的体系结构作为整体的解决方案。功能和性能纳入到模块 /对象中
详细设计:选定数据结构和做算法设计,完成各模块或对象设计,既有功能,又有性能
设计方法:
传统的:面向功能,面向数据
面向对象,OO的事件驱动的对象交互
设计技术,抽象,模块化,数据隐藏,内聚性,耦合性续 3
软件生存周期
构造
软件构造是用某种编程语言编写源程序或以界面工具构造出应用界面,即现代意义编程
使用程序对象,力图方便,简易,并提供帮助
原则 减低复杂性,利于结构化确认,防止多样性,充分利用标准
好的编码环境应支持“一边编码、一边测试”
续 4
软件生存周期
测试
测试是交付的唯一手段(测试报告、测试结果评价)
测试目的:找瑕疵。
完全测试不可能
测试回答的是规范满足程度
测试系统测试确认测试集成测试单元测试
所有测试要在项目计划中作出子计划续 5
软件生存周期
维护
交付项目后的阶段即开始
维护类型:
改正性维护
适配性维护
改进性维护
维护是支持业务过程变更的重要手段续 6
第二章 软件需求分析准确地 定义 未来系统的目标,确定为了满足用户的需求系统必须做什么。用 <需求规格说明书 > 规范的形式准确地表达用户的 需求 。
思考、涉及的几个问题如何定义系统需求?
如何识别,获取需求?
你能够采取何种手段与用户进行交流沟通?
何为需求建模?
步骤:
收集需求建立模型细化模型
2.1 需求分析的任务
需求工程过程,
过程模型,过程执行者,过程支持和管理,过程质量和改进 。
需求导出,需求来源,导出技术 。
需求分析,需求分类,概念建模,体系结构设计和需求分配,需求协商 。
软件需求规范,需求定义文档,软件需求规范,文档结构和标准,文档质量 。
需求确认,需求审查,原型设计,模型确认,验收测试 。
需求管理,需求变更管理,需求属性,需求跟踪 。
软件需求的专题分解
2.2 需求获取需求获取的目的
清楚地理解所要解决的问题
完整地获取用户需求需求获取面临的挑战:
(1)问题空间理解
(2)人与人之间的通信
(3)需求的不断变化导出需求既要虚心听取,
又要坚持原则某出版社系统调查表编号提出问题
1 您在哪个部门工作?
2 出版业务流程是什么?
3 您每日都处理那些文件、数据、报表?
4 工作中手工处理特别麻烦的事情是什么?
5 工作中手工处理什么问题解决不了?影响效率的问题有哪些?
6 您认为提高工作效率,节省工作时间,减轻工作强度可采取哪些办法?
某出版社系统调查表编号提出问题
7 您的部门需要成本核算和统计的内容有哪些?
8 您的部门采用计算机管理工作情况如何?
9 如何改进业务流程使之更合理?
10 哪些问题是目前传统手工方法根本无法解决的?
11 出版社计算机管理信息系统需要解决什么问题?
需求获取的内容
(1) 功能需求
(2) 性能需求
(3) 环境需求
(4) 界面需求
(5) 用户或人的因素
(6) 文档需求
(7) 数据需求
(8) 资源需求
(9) 安全保密要求
(10) 软件成本消耗与开发进度需求
(11) 质量保证
(1) 功能需求
系统做什么?
系统何时做什么?
系统何时及如何修改或升级?
(2) 性能需求软件开发的技术性指标例如:
存储容量限制
执行速度、相应时间
吞吐量
(3) 环境需求
硬件设备,机型、外设、接口、
地点、分布、温度、
湿度、磁场干扰等
软件,操作系统网络数据库
(4) 界面需求
有来自其它系统的输入吗?
到自其它系统的输出吗?
对数据格式有规定吗?
对数据存储介质有规定吗?
(5) 用户或人的因素
用户类型?
各种用户熟练程度?
需受何种训练?
用户理解、使用系统的难度?
用户错误操作系统的可能性?
(6) 文档需求
需哪些文档?
文档针对哪些读者?
(7) 数据需求
输入、输出数据的格式?
接收、发送数据的频率?
数据的准确性和精度?
数据流量?
数据需保持的时间?
(8) 资源需求
软件运行时所需的数据、软件。
内存空间等资源。
软件开发、维护所需的人力、
支撑软件、开发设备等。
(9) 安全保密要求
需对访问系统或系统信息加以控制吗?
如何隔离用户之间的数据?
用户程序如何与其它程序和操作系统隔离?
系统备份要求?
(10) 软件成本消耗与开发进度需求
开发有规定的时间表吗?
软硬件投资有无限制?
(11) 质量保证
系统的可靠性要求?
系统必须监测和隔离错误吗?
规定系统平均出错时间?
出错后,重启系统允许的时间?
系统变化如何反映到设计中?
维护是否包括对系统的改进?
系统的可移植性?
2.3 需求建模建模的原因:
在建模过程中了解系统
通过抽象降低复杂性
有助于回忆所有的细节
有助于开发小组间的交流
有助于与用户的交流
为系统的维护提供文档需求分析的步骤当前系统目标系统物理模型逻辑模型逻辑模型物理模型模型化 抽象化具体化 实例化怎么做做什么当前系统目标系统需求定义需求分析过程示意学生
(1) 通过对现实环境的调查,
获得当前系统的物理模型学生购书申请购书单发票领书单 书
107
张教务科
206
王会计室
206
李出纳员
303
赵教材科学生购买教材的物理模型需求分析过程示意
(2) 去掉具体模型中的非本质因素,
抽 象 出当前系统的逻辑模型学生购买教材的逻辑模型学生学生购书申请购书单发票领书单 书审查有效性 开发票开领书单 发书需求分析过程示意
(3) 分析当前系统与目标系统的差别,
建立目标系统的逻辑模型计算机售书系统的逻辑模型学生学生购书单 发票 领书单审查并开发票开领书单无效书单分析阶段中常用的模型(逻辑模型)
数据流图( DFD)?
实体 ― 联系图( ERD )?
类图?
实例图?
时序图?
状态图?
协作图?
事件列表?
数据流定义?
数据元素定义?
……