软件工程 Software Engineering

Slides:



Advertisements
Similar presentations
三级偏软考点. 第一章必考点 1. 计算机的进位数制 (1) 计算机中所有数据是二进制 0,1 表示 (2) 在现实生活中人们普遍使用十进制 如何把十进制转换成计算机所识别的二 进制?整数是除 2 取余法,小数是乘 2 取 整法.
Advertisements

1 计算机软件考试命题模式 计算机软件考试命题模式 张 淑 平 张 淑 平. 2  命题模式内容  组织管理模式 − 命题机构和人员组成 − 命题程序  试卷组成模式.
高校教师、高级项目经理 任铄 QQ : 第一章 操作系统引论 1.1 操作系统的目标和作用 1.2 操作系统的发展过程 1.3 操作系统的基本特性 1.4 操作系统的主要功能 1.5 OS 结构设计.
软件工程 Software Engeering
ASP .NET 程序设计(C#版) 第二版 机械工业出版社同名教材 配套电子教案
——Windows98与Office2000(第二版) 林卓然编著 中山大学出版社
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
初级会计电算化 (用友T3) 制作人:张爱红.
实用操作系统概念 张惠娟 副教授 1.
UI(用户界面)集训班 Illustrator 高级班.
会计学专业基础课堂之 基础会计(初级会计) 安徽财经大学会计学院.
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
Oracle数据库 Oracle 子程序.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
计算机基础知识 丁家营镇九年制学校 徐中先.
程序的形式验证 - 简介 中国科学院软件研究所 张文辉 1.
《数据库原理及应用》课程介绍 信息工程学院 孙俊国
                                                                                                                                                                
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
嵌入式系统课程简介 宋健建 南京大学软件学院 2004/02/10.
SVN的基本概念 柳峰
面向对象建模技术 软件工程系 林 琳.
R in Enterprise Environment 企业环境中的R
第 3 章 基本概念.
软件工程 主讲:饶国政 天 津 大 学.
存储系统.
SOA – Experiment 3: Web Services Composition Challenge
项目管理 Project Management
管理信息结构SMI.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
数 控 技 术 华中科技大学机械科学与工程学院.
Windows网络操作系统管理 ——Windows Server 2008 R2.
数据挖掘工具性能比较.
PaPaPa项目架构 By:Listen 我在这.
本节我们结合AD5724驱动时序给大家介绍一下状态机在实际工程中的使用。
Windows 7 的系统设置.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
实验1 信息系统分析与设计工具安装.
三:基于Eclipse的集成开发环境搭建与使用
程序设计工具实习 Software Program Tool
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
何勉 新浪微博: Scrum框架及其背后的原则 原始图片 何勉 新浪微博:
新一代安全网上银行 小组成员:杨志明 王晶 任毅 刘建中 关昊 刘超.
1.3 计算机软件系统 计算机系统组成:计算机硬件和计算机软件 计算机软件分两大类:系统软件和应用软件 系统软件: 应用软件
解决变化问题的自底向上 流程建模方法 严志民 徐玮.
C语言程序设计 主讲教师:陆幼利.
微机系统的组成.
VisComposer 2019/4/17.
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
企业文化内涵体系 持续循环 企业标志 品牌力:…… 服务力:…… 品牌力/服务力 潜规则是…… 1、品质 2、战略 1、价值 2、绩效
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
Harvard ManageMentor®
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
iSIGHT 基本培训 使用 Excel的栅栏问题
数据集的抽取式摘要 程龚, 徐丹云.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
机械设备的完整性和可靠性管理 Maintenance integrity & reliability.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
第二节 C语言的特点.
HULUO Finance and Economics College
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
1.概述 软件的概念 软件特征 什么是项目 什么是项目管理,项目管理的特征,涉及的知识域 项目阶段,项目生命周期
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
学习数据结构的意义 (C语言版) 《数据结构》在线开放课程 主讲人:李刚
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
入侵检测技术 大连理工大学软件学院 毕玲.
实验六、COM类型病毒分析实验 实验开发教师: 刘乃琦 谌黔燕.
IT 方法 INTOSAI IT 审计培训.
Presentation transcript:

软件工程 Software Engineering 国防科技大学计算机学院 2004.07 2019/4/26 国防科技大学计算机学院

前言 软件和软件工程在信息化社会中的地位和作用 2019/4/26 国防科技大学计算机学院

八十年代初科学家的预言(1/2) Osborne 1979 将迎来” 新的工业革命” Toffler 1980 微电子的发展是人类历史上的”第三次浪潮” 80年代初 美国商业周刊杂志在头版刊登大标题: “软件:新的驱动力” 当时人们还没有意识到他们的预见是多么的正确。 2019/4/26 国防科技大学计算机学院

八十年代初科学家的预言(2/2) Naisbitt 1982 人类社会将“从工业社会向信息社会转变” Feigenbaum 1983 计算机控制的信息和知识将成为20世纪表现能力的焦点 Stoll 1989 网络和软件产生的“电子社会”是实现全球知识交流的关键。 2019/4/26 国防科技大学计算机学院

二十年后的现实 1. 计算机的发展与普及 2. 计算机软件的发展与普及 3. 计算机网络的发展与普及 2019/4/26 国防科技大学计算机学院

观察与思考 因为普及了计算机、软件和 网络… 迎来了信息化社会和知识经济。 2019/4/26 国防科技大学计算机学院

软件在信息化社会中的地位和作用 软件与经济 软件与政治 软件与军事 软件与文化 软件与教育 软件与法律道德 2019/4/26 国防科技大学计算机学院

结论 软件是信息化社会和知识经济的基础,它渗透到人们生活、工作的所有领域,并迅速的改变着人们的生活和工作方式,改变着社会的产业结构和面貌。 人们对软件的依靠越来越密切,社会需要大量的丰富多彩的软件,并随着社会的发展不断更新、充实和提高。 2019/4/26 国防科技大学计算机学院

教材 2019/4/26 国防科技大学计算机学院

教材和参考书 2019/4/26 国防科技大学计算机学院

第一章 软件与软件工程 软件与软件工程的概念 软件生存周期 软件开发模型 软件工程工具及环境 软件工程组织度量 2019/4/26 第一章 软件与软件工程 软件与软件工程的概念 软件生存周期 软件开发模型 软件工程工具及环境 软件工程组织度量 2019/4/26 国防科技大学计算机学院

1.1 软件 软件的概念; 软件的特点; 软件的分类; 软件的发展; 软件危机。 第一章 软件与软件工程 2019/4/26 第一章 软件与软件工程 1.1 软件 软件的概念; 软件的特点; 软件的分类; 软件的发展; 软件危机。 2019/4/26 国防科技大学计算机学院

1.1软件 1.1.1 软件的概念 软件是什么? 2019/4/26 国防科技大学计算机学院

软件的概念 软件是计算机系统的重要组成部分; 软件是逻辑产品,需要计算机硬件和系统软件的支撑; 软件是计算机控制系统的指挥中枢; 1.1软件 软件的概念 软件是计算机系统的重要组成部分; 软件是逻辑产品,需要计算机硬件和系统软件的支撑; 软件是计算机控制系统的指挥中枢; 软件是信息转换器,它能对信息进行加工、处理或变换; 软件是工具,在人们的生活、工作、休闲,在社会的经济、军事、政治、文化、科学技术、教育中发挥具大作用; 2019/4/26 国防科技大学计算机学院

软件的概念 计算机世界的软件 软件是能够完成预定功能和性能,并对相应数据进行加工的程序和描述程序及其操作的文档。 软件 = 程序+数据+文档 1.1软件 软件的概念 计算机世界的软件 软件是能够完成预定功能和性能,并对相应数据进行加工的程序和描述程序及其操作的文档。 软件 = 程序+数据+文档 程序 = 算法+数据结构 2019/4/26 国防科技大学计算机学院

1.1.2 软件的特点 软件开发与传统的产品生产存在本质差别; 软件是逻辑产品,而不是物理产品; 软件不会磨损; 1.1软件 1.1.2 软件的特点 软件开发与传统的产品生产存在本质差别; 软件是逻辑产品,而不是物理产品; 软件不会磨损; 2019/4/26 国防科技大学计算机学院

1.1软件 软件的描述(1/3) 软件由程序、数据、文档 组成。 2019/4/26 国防科技大学计算机学院

软件的描述(2/3) 程序设计语言 面向机器 汇编语言、机器语言等 面向过程 Fortran, Pascal, C等 1.1软件 软件的描述(2/3) 程序设计语言 面向机器 汇编语言、机器语言等 面向过程 Fortran, Pascal, C等 面向对象 C++, Java等 面向问题 结构化查询语言SQL等 2019/4/26 国防科技大学计算机学院

软件的描述(3/3) 数据 用程序设计语言要求的数据结构表示 文档 规范 准确 清晰 简洁 无歧义 自然语言 结构化英语 图表 1.1软件 规范 准确 清晰 简洁 无歧义 自然语言 结构化英语 图表 2019/4/26 国防科技大学计算机学院

1.1.3 软件分类 系统软件 实时软件 商务软件 工程和科学计算软件 嵌入式软件 人工智能软件 个人计算机软件 1.1软件 1.1.3 软件分类 系统软件 实时软件 商务软件 工程和科学计算软件 嵌入式软件 人工智能软件 个人计算机软件 2019/4/26 国防科技大学计算机学院

1.1软件 1.1.4 软件的发展 软件发展的四个阶段 软件发展存在的问题 2019/4/26 国防科技大学计算机学院

1)软件发展的四个阶段 1950---1965 没有系统的软件开发方法和管理机制、自定义软件、批处理、有限分布。 1965---1975 1.1软件 1)软件发展的四个阶段 1950---1965 没有系统的软件开发方法和管理机制、自定义软件、批处理、有限分布。 1965---1975 产生人机交互的新概念、新技术软件产品、多用户、实时、数据库。 2019/4/26 国防科技大学计算机学院

软件发展的四个阶段 (2/2) 1973---1988 微处理器的出现并广泛应用 分布式系统、嵌入智能、低成本硬件、消费者的影响。 1.1软件 软件发展的四个阶段 (2/2) 1973---1988 微处理器的出现并广泛应用 分布式系统、嵌入智能、低成本硬件、消费者的影响。 1986---2000 广域和局域网络迅速普及 强大的桌面系统、面向对象技术、专家系统、人工智能、神经网络、并行计算、网络计算机。 2019/4/26 国防科技大学计算机学院

2) 软件发展存在的问题 (1/2) 软件开发能力不能满足人们的需要。 社会对软件的依赖程度加大,人们普遍关注软件的安全和可靠性。 1.1软件 2) 软件发展存在的问题 (1/2) 软件开发能力不能满足人们的需要。 社会对软件的依赖程度加大,人们普遍关注软件的安全和可靠性。 建造高可靠性、高质量软件的任务任重路远。 2019/4/26 国防科技大学计算机学院

软件发展存在的问题 (2/2) 若干年前开发的应用软件经过几十次修改已无人认识它的内部结构,己经不可维护。 1.1软件 软件发展存在的问题 (2/2) 若干年前开发的应用软件经过几十次修改已无人认识它的内部结构,己经不可维护。 由于经济原因,嵌入式系统存在许多怪现象,企业不愿意投入资源再生产,而采取打补丁+时髦界面的方法。 2019/4/26 国防科技大学计算机学院

1.1.5 软件危机 1.软件危机的表现 硬件发展超过软件,硬件潜能没有充分发挥。 软件产业的发展长期滞后,与硬件发展不协调。 1.1软件 1.1.5 软件危机 1.软件危机的表现 硬件发展超过软件,硬件潜能没有充分发挥。 软件产业的发展长期滞后,与硬件发展不协调。 2019/4/26 国防科技大学计算机学院

软件危机 软件开发成本过高 软件质量得不到保证 软件开发效率低 难以控制开发进度,工作量估计困难 1.1软件 软件危机 软件开发成本过高 软件质量得不到保证 软件开发效率低 难以控制开发进度,工作量估计困难 软件不能满足社会发展的需求,成为社会、经济发展的制约因素 2019/4/26 国防科技大学计算机学院

1.1软件 程序规模、工作量与成本的关系 2019/4/26 国防科技大学计算机学院

2. 软件危机原因 软件的规模加大、复杂性提高、性能增强 软件是逻辑产品, 尚未完全认识其本质和特点 1.1软件 2. 软件危机原因 软件的规模加大、复杂性提高、性能增强 软件是逻辑产品, 尚未完全认识其本质和特点 缺乏有效的、系统的开发、维护大型软件项目的技术手段和管理方法 2019/4/26 国防科技大学计算机学院

软件危机原因 用户对软件需求的描述和软件开发人员对需求的理解往往存在差异,用户经常要求修改需求,开发人员很难适应 1.1软件 软件危机原因 用户对软件需求的描述和软件开发人员对需求的理解往往存在差异,用户经常要求修改需求,开发人员很难适应 软件开发的技术人员和管理人员缺乏软件工程化的素质和要求,对工程化的开销认识不足 ……… 2019/4/26 国防科技大学计算机学院

3.软件危机仍在继续 ---影响软件质量的糊涂认识(1/3) 1.1软件 3.软件危机仍在继续 ---影响软件质量的糊涂认识(1/3) 在项目的初始阶段对系统若明若暗就开始写程序 认为软件是灵活的容易修改,对软件需求的改变不以为然 程序调试成功标志着工作的结束 2019/4/26 国防科技大学计算机学院

软件危机仍在继续 ---影响软件质量的糊涂认识 (2/3) 1.1软件 软件危机仍在继续 ---影响软件质量的糊涂认识 (2/3) 程序运行前无法评价程序的质量 一个软件项目给客户提交的主要是程序,而软件文档则认为可有可无、可多可少等等。 虽然发布了软件标准和规范,但在实践中执行需要额外的开销,划不来 2019/4/26 国防科技大学计算机学院

软件危机仍在继续 ---影响软件质量的糊涂认识(3/3) 软件危机仍在继续 ---影响软件质量的糊涂认识(3/3) 1.1软件 虽然开发了许多软件工具,但很多开发者对使用这些工具兴趣不大 为了开发软件人们不惜用重金购买最新型号的主机和工作站而不愿意购买软件工具 在软件开发过程中,进度迟后就增派更多的程序员突击,赶进度 ……… 2019/4/26 国防科技大学计算机学院

1.2 软件工程的概念 1968年 NATO 计算机科学会议 软件危机-->根源-->解决途径 软件工程 第一章 软件与软件工程 第一章 软件与软件工程 1.2 软件工程的概念 1968年 NATO 计算机科学会议 软件危机-->根源-->解决途径 软件工程 2019/4/26 国防科技大学计算机学院

1.2.1. 软件工程的定义 (1/3) 为了经济的获得可靠的,在实际机器上高效运行的软件,而建立和使用的好的工程原则。 1.2软件工程的概念 1.2.1. 软件工程的定义 (1/3) 软件工程 Fritz Bauer[nau69] 为了经济的获得可靠的,在实际机器上高效运行的软件,而建立和使用的好的工程原则。 2019/4/26 国防科技大学计算机学院

软件工程的定义 (2/3) 软件工程是运用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术和管理的方法。 软件工程 [ 教材] 1.2软件工程的概念 软件工程的定义 (2/3) 软件工程 [ 教材] 软件工程是运用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术和管理的方法。 2019/4/26 国防科技大学计算机学院

软件工程的定义 (3/3) (1)将系统的、规范的、可度量的方法应用于软件的开发、运行和维护的过程; (2) 上述方法的研究。 1.2软件工程的概念 软件工程的定义 (3/3) 软件工程[IEE93] (1)将系统的、规范的、可度量的方法应用于软件的开发、运行和维护的过程; (2) 上述方法的研究。 2019/4/26 国防科技大学计算机学院

软件工程三要素 过程、方法和工具(1/5) 质量是软件工程的生命线,软件工程以质量保证为基础。 1.2软件工程的概念 软件工程三要素 过程、方法和工具(1/5) 质量是软件工程的生命线,软件工程以质量保证为基础。 质量管理促进了过程的改进,创造了许多行之有效的软件开发方法和工具。 2019/4/26 国防科技大学计算机学院

软件工程三要素 过程、方法和工具(2/5) 软件工程釆用层次化的方法,每个层次都包括过程、方法、工具三要素。 1.2软件工程的概念 软件工程三要素 过程、方法和工具(2/5) 软件工程釆用层次化的方法,每个层次都包括过程、方法、工具三要素。 方法支撑过程和工具、过程和工具促进方法学的研究。 2019/4/26 国防科技大学计算机学院

软件工程三要素 过程、方法和工具 将系统的、规范的、可量化的方法运用到软件工程的始终,渗透到软件工程的过程、方法和工具中。 软件工程 工具 1.2软件工程的概念 软件工程三要素 过程、方法和工具 将系统的、规范的、可量化的方法运用到软件工程的始终,渗透到软件工程的过程、方法和工具中。 软件工程 工具 方法 过程 2019/4/26 国防科技大学计算机学院

软件工程三要素 过程、方法和工具(3/5) 软件工程的过程 过程贯穿软件开发的各个环节,各环节之 间建立里程碑; 1.2软件工程的概念 软件工程三要素 过程、方法和工具(3/5) 软件工程的过程 过程贯穿软件开发的各个环节,各环节之 间建立里程碑; 管理者在软件工程过程中对软件开发的质量、进度、成本进行评估、管理和控制; 技术人员采用相应的方法和工具生成软件工程产品(模型、文档、数据、报告、表格等)。 2019/4/26 国防科技大学计算机学院

软件工程三要素 过程、方法和工具(4/5) 软件工程的方法 1.2软件工程的概念 软件工程三要素 过程、方法和工具(4/5) 软件工程的方法 软件工程方法是完成软件工程项目的技术手段。它支持项目计划和估算、系统和软件需求分析、设计、编程、测试和维护。 软件工程方法依赖一组原则,它贯穿软件工程的各个环节。 软件工程方法分两类:传统方法和面向对象方法 2019/4/26 国防科技大学计算机学院

软件工程三要素 过程、方法和工具 (5/5) 软件工程工具 它为软件工程的过程和方法提供自动化或半自动化的工具支持。 1.2软件工程的概念 软件工程三要素 过程、方法和工具 (5/5) 软件工程工具 它为软件工程的过程和方法提供自动化或半自动化的工具支持。 将若干工具集成起来,与软件工程数据库和计算机系统构成一个支持软件开发的系统称“计算机辅助软件工程(CASE)”,系统中某一工具的信息加工结果可以作为另一工具的输入。 集成的软件工程工具再加上人的因素构成了软件工程环境。 2019/4/26 国防科技大学计算机学院

软件开发方法和软件工具 结构化分析方法 结构化程序设计语言 面向对象分折方法 面向对象程序设计语言 1.2软件工程的概念 2019/4/26 国防科技大学计算机学院

3. 软件和软件开发过程 软件过程和软件产品密切相关。 1.2软件工程的概念 3. 软件和软件开发过程 软件过程和软件产品密切相关。 大型软件项目没有良好的软件开发过程,不可能建造出用户满意的优质产品;反之,一个好的软件产品隐含着良好的软件开发过程。 计算机软件领域产品和过程不断交替创新,促进软件工程的进步和发展。 2019/4/26 国防科技大学计算机学院

1.2.2 软件工程目标 (1/6) 在给定成本、进度的前提下,开发出具有 可修改性、 有效性 、 可靠性、 可适应性、 1.2软件工程的概念 1.2.2 软件工程目标 (1/6) 在给定成本、进度的前提下,开发出具有 可修改性、 有效性 、 可靠性、 可适应性、 可追踪性 、 可移植性、 可互操作性 并满足用户需求的软件产品。 2019/4/26 国防科技大学计算机学院

软件工程目标 (2/6) 容许对系统进行修改而不增加原系统的复杂性,它支持软件的调试与维护。 有效性 能有效地利用计算机的时间和空间资源 1.2软件工程的概念 软件工程目标 (2/6) 有效性 能有效地利用计算机的时间和空间资源 可修改性 容许对系统进行修改而不增加原系统的复杂性,它支持软件的调试与维护。 2019/4/26 国防科技大学计算机学院

软件工程目标 (3/6) 可靠性 具有能够防止因概念、设计和结构等方面的不完善而造成的系统失效,具有挽回因操作不当造成软件系统失效的能力 1.2软件工程的概念 软件工程目标 (3/6) 可靠性 具有能够防止因概念、设计和结构等方面的不完善而造成的系统失效,具有挽回因操作不当造成软件系统失效的能力 可理解性 系统具有清晰的结构,能直接反映软件 需求。 2019/4/26 国防科技大学计算机学院

软件工程目标 (4/6) 便于对软件增加新功能、改进性能、修改错误、移植 软件易于被再次使用 可维护性 可重用性 1.2软件工程的概念 软件工程目标 (4/6) 可维护性 便于对软件增加新功能、改进性能、修改错误、移植 可重用性 软件易于被再次使用 2019/4/26 国防科技大学计算机学院

软件工程目标 (5/6) 对软件进行正向和反向追踪的能力 可适应性 采用流行的程序设计语言、运行环境、标准的术语和格式。 可追踪性 1.2软件工程的概念 软件工程目标 (5/6) 可适应性 采用流行的程序设计语言、运行环境、标准的术语和格式。 可追踪性 对软件进行正向和反向追踪的能力 2019/4/26 国防科技大学计算机学院

软件工程目标 (6/6) 从一个环境搬迁到另一个环境 多个软件要素相互通讯协同完成任务的 能力 可移植性 可互操作性 1.2软件工程的概念 软件工程目标 (6/6) 可移植性 从一个环境搬迁到另一个环境 可互操作性 多个软件要素相互通讯协同完成任务的 能力 2019/4/26 国防科技大学计算机学院

1.2.3 软件工程原则 (1/6) 在软件开发过程中,为了达到软件开发目标,必须遵循下列原则: 抽象 模块化 信息隐藏 局部化 1.2软件工程的概念 1.2.3 软件工程原则 (1/6) 在软件开发过程中,为了达到软件开发目标,必须遵循下列原则: 抽象 模块化 信息隐藏 局部化 一致性 完全性 可验证性 2019/4/26 国防科技大学计算机学院

软件工程原则 (2/6) 关注事物基本、重要的部分,忽略不相关成分 1.2软件工程的概念 软件工程原则 (2/6) 抽象 关注事物基本、重要的部分,忽略不相关成分 抽象可以使我们的思维聚焦于问题本质,从而简化问题,控制问题复杂度,支持复杂、庞大软件系统的开发 。 2019/4/26 国防科技大学计算机学院

软件工程原则 (3/6) 模块是程序中一个逻辑上相对独立、具有良好的接口定义的编程单位:过程、函数、类、程序包等 1.2软件工程的概念 软件工程原则 (3/6) 模块化 模块是程序中一个逻辑上相对独立、具有良好的接口定义的编程单位:过程、函数、类、程序包等 模块化是,将复杂的系统分解为一个个相对独立的模块来加以实现,有助于抽象和信息隐藏以及表示复杂的系统 2019/4/26 国防科技大学计算机学院

软件工程原则 (4/6) 模块中的软件设计决策信息封装起来的技术,只知道它的功能以及对外的接口,而不知它的内部细节 信息隐藏 1.2软件工程的概念 软件工程原则 (4/6) 信息隐藏 模块中的软件设计决策信息封装起来的技术,只知道它的功能以及对外的接口,而不知它的内部细节 有助于软件开发人员的注意力集中于更高 的抽象层次 2019/4/26 国防科技大学计算机学院

软件工程原则 (5/6) 物理模块内集中逻辑上相互关联的计算资源 确保模块内各成分关系密切而模快之间的关系松散,保证模块具有良好的独立性 1.2软件工程的概念 软件工程原则 (5/6) 局部化 物理模块内集中逻辑上相互关联的计算资源 确保模块内各成分关系密切而模快之间的关系松散,保证模块具有良好的独立性 2019/4/26 国防科技大学计算机学院

软件工程原则 (6/6) 整个软件系统均使用统一的符号、概念和术语 整个软件系统不丢失任何重要的成分,软件完全实现系统所需的功能、行为和性能 1.2软件工程的概念 软件工程原则 (6/6) 一致性 整个软件系统均使用统一的符号、概念和术语 完全性 整个软件系统不丢失任何重要的成分,软件完全实现系统所需的功能、行为和性能 可验证性 软件系统应易于检查、测试和评审 2019/4/26 国防科技大学计算机学院

软件开发目标 在给定成本、进度和满足用户需求的前提下,开发的软件产品应具有 可修改性 有效性 可靠性 适应性 可追踪性 可移植性 可互操作性 1.2软件工程的概念 软件开发目标 在给定成本、进度和满足用户需求的前提下,开发的软件产品应具有 可修改性 有效性 可靠性 适应性 可追踪性 可移植性 可互操作性 2019/4/26 国防科技大学计算机学院

软件开发原则 在软件开发过程中,为了达到软件开发目标,必须遵循下列原则: 抽象 模块化 信息隐藏 局部化 一致性 完全性 可验证性 1.2软件工程的概念 软件开发原则 在软件开发过程中,为了达到软件开发目标,必须遵循下列原则: 抽象 模块化 信息隐藏 局部化 一致性 完全性 可验证性 2019/4/26 国防科技大学计算机学院

第一章 软件与软件工程 1.3 软件生存周期 软件产品从形成概念开始,经过开发、运行(使用)和维护直到退役的全过程称为软件生存周期,包括软件定义、开发、使用和维护三部分。 软件工程的目标和原则贯穿整个软件生存周期。 2019/4/26 国防科技大学计算机学院

软件的定义和开发过程 详细设计 实现 问题定义 可行性研究 需求分析 软件开发 概要设计 详细设计 实现 组装测试 确认测试 可行性研究 1.3软件生存周期 软件的定义和开发过程 可行性研究 需求分析 问题定义 可行性研究 需求分析 软件开发 概要设计 详细设计 实现 组装测试 确认测试 概要设计 详细设计 实现 组装测试 确认测试 2019/4/26 国防科技大学计算机学院

1.3.1 问题定义 1.可行性研究 任务 从技术、经济、市场等方面研究并论证开发该软件系统的可行性 了解用户要求和现实环境 1.3软件生存周期 1.3.1 问题定义 1.可行性研究 任务 了解用户要求和现实环境 从技术、经济、市场等方面研究并论证开发该软件系统的可行性 2019/4/26 国防科技大学计算机学院

可行性研究 (2/3) 技术可行性 当前的软件开发方法和工具能否支持需求的实现; 操作可行性 用户能否在特定的环境下使用这个软件; 1.3软件生存周期 可行性研究 (2/3) 技术可行性 当前的软件开发方法和工具能否支持需求的实现; 操作可行性 用户能否在特定的环境下使用这个软件; 经济可行性 开发和使用、维护这个软件的成本能否被用户所接受。 2019/4/26 国防科技大学计算机学院

可行性研究 (3/3) 可行性论证报告 制定初步项目开发计划 (人员,进度) 阶段性产品 1.3软件生存周期 2019/4/26 可行性研究 (3/3) 阶段性产品 可行性论证报告 制定初步项目开发计划 (人员,进度) 2019/4/26 国防科技大学计算机学院

问题定义 2. 需求分析 任务 功能需求 软件必须要完成的功能; 性能需求 1.3软件生存周期 问题定义 2. 需求分析 任务 确定用户对软件系统的需求: 功能需求 软件必须要完成的功能; 性能需求 软件的安全性、可靠性、可维护性、精度、错误处理、适应性、用户培训等; 运行环境约束 待开发的软件产品必须满足的环境要求 2019/4/26 国防科技大学计算机学院

需求分析 (2/4) 重要性 软件开发的依据,软件验收的标准 困难 难以说清、 动态变化、 歧义、复杂、 应用软件的需求分析涉及应用领域的知 1.3软件生存周期 需求分析 (2/4) 重要性 软件开发的依据,软件验收的标准 困难 难以说清、 动态变化、 歧义、复杂、 应用软件的需求分析涉及应用领域的知 识和经验。 2019/4/26 国防科技大学计算机学院

需求分析 (3/4) 需求分析过程 需求分析人员必须与用户不断、反复地交流和商讨,使用户需求逐步准确、一致、完全。 方法 1.3软件生存周期 需求分析 (3/4) 需求分析过程 需求分析人员必须与用户不断、反复地交流和商讨,使用户需求逐步准确、一致、完全。 方法 面向数据流的分析方法 面向对象的分析方法 抽象、问题分解、快速原型、多视点等 工具 Rational Rose, WitClass, VisualModel 2019/4/26 国防科技大学计算机学院

需求分析 (4/4) 阶段性产品 软件需求规格说明书SRS 1.3软件生存周期 需求分析 (4/4) 阶段性产品 软件需求规格说明书SRS 用软件需求规格说明语言描述软件系统的功能需求、性能需求、接口需求、设计需求、软件产品的基本结构、采用的开发标准和验收原则等。 用户手册概要。 2019/4/26 国防科技大学计算机学院

1.3软件生存周期 1.3.2 软件开发 1. 概要设计 任务 根据SRS建立目标软件系统的总体结构、设计全局数据库和数据结构,规定设计约束,制定组装测试计划等等。 2019/4/26 国防科技大学计算机学院

概要设计 (2/3) 方法 根据软件需求规格说明书, 自顶向下、逐步求精、 抽象、 模块化、 局部化、信息隐藏 … 1.3软件生存周期 概要设计 (2/3) 方法 根据软件需求规格说明书, 自顶向下、逐步求精、 抽象、 模块化、 局部化、信息隐藏 … 坚持功能模块内部紧耦合,功能模块之间松耦合的原则; 坚持与需求规格说明书的一致性 2019/4/26 国防科技大学计算机学院

概要设计 (3/3) 面向数据流的设计方法 结构图 面向数据流的设计方法 面向对象的设计方法 Rational Rose 阶段性产品 1.3软件生存周期 概要设计 (3/3) 工具 面向数据流的设计方法 结构图 面向数据流的设计方法 面向对象的设计方法 Rational Rose 阶段性产品 概要设计规格说明书 数据库或数据结构设计说明书 集成测试计划。 2019/4/26 国防科技大学计算机学院

2.详细设计 任务 细化概要设计所生成的各个模块, 并详细描述程序模块的内部细节(算法,数据结构等),形成可编程的程序模块,制订单元测试计划 1.3软件生存周期 2.详细设计 任务 细化概要设计所生成的各个模块, 并详细描述程序模块的内部细节(算法,数据结构等),形成可编程的程序模块,制订单元测试计划 阶段新产品 详细设计规格说明书, 单元测试计划 2019/4/26 国防科技大学计算机学院

3. 实现 任务 根据详细设计规格说明书编写源程序,并对程序进行调试、单元测试、系统集成,验证程序与详细设计文档的 一致性 1.3软件生存周期 3. 实现 任务 根据详细设计规格说明书编写源程序,并对程序进行调试、单元测试、系统集成,验证程序与详细设计文档的 一致性 2019/4/26 国防科技大学计算机学院

实现 (2/2) 方法 以详细设计规格说明书为依据、基于某种程序设计语言进行编码 结构化程序设计 面向对象程序设计 工具 1.3软件生存周期 实现 (2/2) 方法 以详细设计规格说明书为依据、基于某种程序设计语言进行编码 结构化程序设计 面向对象程序设计 工具 Visual C++, Visual Java, etc IDE 阶段产品 源程序代码 2019/4/26 国防科技大学计算机学院

4. 组装测试 任务 组装测试应满足概要设计的要求。 途径 测试模块连接的正确性; 测试系统或子系统的I/O; 测试系统的功能和性能。 产品 1.3软件生存周期 4. 组装测试 任务 组装测试应满足概要设计的要求。 途径 测试模块连接的正确性; 测试系统或子系统的I/O; 测试系统的功能和性能。 产品 满足概要设计要求的程序、组装测试报告。 2019/4/26 国防科技大学计算机学院

5. 确认测试 根据软件需求规格说明书,测试软件系统是否满足用户的需求 方法 用户参与,以软件需求规格说明书为依据进行确认测试 工具 1.3软件生存周期 5. 确认测试 任务 根据软件需求规格说明书,测试软件系统是否满足用户的需求 方法 用户参与,以软件需求规格说明书为依据进行确认测试 工具 专用测试工具 阶段性产品 可供用户使用的软件产品(文档,源程序) 2019/4/26 国防科技大学计算机学院

1.3.3 软件的使用、维护和退役 软件的使用 确认测试后的软件安装在用户环境中; 测试通过后移交用户使用; 1.3软件生存周期 1.3.3 软件的使用、维护和退役 软件的使用 确认测试后的软件安装在用户环境中; 测试通过后移交用户使用; 尽量扩大软件发行量发挥更大的社会和经济效益; 软件使用过程中用户要认真收集软件错误,并撰写软件问题报告和软件维护报告 2019/4/26 国防科技大学计算机学院

1.3软件生存周期 软件的使用、维护和退役 软件的维护 软件工作环境不断变化,软件也必然跟着变化,软件必须不断进化以满足客户的需求变化,这是软件产品最根本的特性。 软件维护占用软件开发60%以上的工作量。 正确性维护; 扩充性维护; 适应性维护。 软件产品的新版本 2019/4/26 国防科技大学计算机学院

1.3软件生存周期 软件的使用、维护和退役 软件的退役 终止软件运行。 2019/4/26 国防科技大学计算机学院

1.3软件生存周期 软件定义开发与测试的关系 2019/4/26 国防科技大学计算机学院

1.4 软件开发模型 软件开发模型是软件开发全过程、软件开发活动以及它们之间关系的的结构框架 软件项目的管理提供里程碑和进度表 第一章 软件与软件工程 1.4 软件开发模型 软件开发模型是软件开发全过程、软件开发活动以及它们之间关系的的结构框架 软件项目的管理提供里程碑和进度表 为软件开发提供原则和方法 2019/4/26 国防科技大学计算机学院

软件开发模型 三类软件开发模型 1. 以软件需求完全确定为前提的瀑布模型 1.4软件开发模型 软件开发模型 三类软件开发模型 1. 以软件需求完全确定为前提的瀑布模型 2. 在软件开发初期只能提供基本需求所采用的渐进式开发模型如原型模型、螺旋模型 3. 以形式化开发方法为基础的变换模型 2019/4/26 国防科技大学计算机学院

1.4.1 瀑布模型 (1/4) 主要思想 软件开发过程与软件生命周期是一致的 相邻二阶段之间存在因果关系 需对阶段性产品进行评审 1.4软件开发模型 1.4.1 瀑布模型 (1/4) 主要思想 软件开发过程与软件生命周期是一致的 相邻二阶段之间存在因果关系 需对阶段性产品进行评审 2019/4/26 国防科技大学计算机学院

1.4软件开发模型 瀑布模型 (2/4) 2019/4/26 国防科技大学计算机学院

瀑布模型的优点(3/4) 软件生命周期模型,使软件开发过程可以在分析、设计、编码、测试和维护的框架下进行; 1.4软件开发模型 瀑布模型的优点(3/4) 软件生命周期模型,使软件开发过程可以在分析、设计、编码、测试和维护的框架下进行; 软件开发过程具有系统性、可控性,克服了软件开发的随意性 。 2019/4/26 国防科技大学计算机学院

瀑布模型的缺点(4/4) 项目开始阶段用户很难精确的提出产品需求,由于技术进步,用户对系统深入的理解,修改需求十分普遍。 1.4软件开发模型 瀑布模型的缺点(4/4) 项目开始阶段用户很难精确的提出产品需求,由于技术进步,用户对系统深入的理解,修改需求十分普遍。 项目开发晚期才能得到程序的运行版本,这时修改软件需求和开发中的错误代价很大。 采用线性模型组织项目开发经常发生开发小组人员“堵塞状态”,特别是项目的开始和结束。 2019/4/26 国防科技大学计算机学院

1.4.2 快速原型模型 用户/客户给出软件产品的一般需求 开发小组和用户共同定义软件总体目标,标识已知需求 1.4软件开发模型 1.4.2 快速原型模型 用户/客户给出软件产品的一般需求 开发小组和用户共同定义软件总体目标,标识已知需求 对界面、功能、人机交互方式等,进行设计并建造原型 2019/4/26 国防科技大学计算机学院

快速原型模型 强调“快速”,釆用基于构件的软件开发方法,尽量缩短软件开发周期,不宜釆用过多的新技术 用户/客户对原型进行评估 1.4软件开发模型 快速原型模型 强调“快速”,釆用基于构件的软件开发方法,尽量缩短软件开发周期,不宜釆用过多的新技术 用户/客户对原型进行评估 修改需求、更新设计、完善原型直至确定需求。 2019/4/26 国防科技大学计算机学院

1.4软件开发模型 原型模型示意图 2019/4/26 国防科技大学计算机学院

RAD模型的开发过程(1/3) 业务建模 数据建模 过程建模 应用生成 测试修正 业务建模 1.4软件开发模型 RAD模型的开发过程(1/3) 业务建模 按照下列问题建立业务功能的信息流模型:什么信息驱动业务流程?生成什么信息?谁生成该信息?该信息流往何处?谁处理它? 数据建模 精化信息流,形成一组支持该业务所需的数据对象。标识出每个对象的特征(称为属性),并定义这些对象间的关系。 业务建模 数据建模 过程建模 应用生成 测试修正 2019/4/26 国防科技大学计算机学院

RAD模型的开发过程(2/3) 业务建模 数据建模 过程建模 应用生成 测试修正 过程建模 1.4软件开发模型 RAD模型的开发过程(2/3) 过程建模 对定义的数据对象进行变换,实现一个业务功能所需的信息流。 创建过程描述以增加、修改、删除或检索一个数据对象。 业务建模 数据建模 过程建模 应用生成 测试修正 2019/4/26 国防科技大学计算机学院

RAD模型的开发过程(3/3) 业务建模 数据建模 处理建模 应用生成 测试修正 应用生成 1.4软件开发模型 RAD模型的开发过程(3/3) 应用生成 采用第四代技术创建软件、重用已有的程序构件或创建可重用的构件。使用自动化工具辅助软件建造。 测试修正 RAD过程强调重用,许多程序构件已经过测试,但所有新构件和接口必须测试。 业务建模 数据建模 处理建模 应用生成 测试修正 2019/4/26 国防科技大学计算机学院

原型模型的优点 原型模型支持软件需求开发,帮助用户和开发人员理解需求,是软件需求工程的关键。 它产生的正式需求文挡,是软件开发的基础。 1.4软件开发模型 原型模型的优点 原型模型支持软件需求开发,帮助用户和开发人员理解需求,是软件需求工程的关键。 它产生的正式需求文挡,是软件开发的基础。 如果开发的原型是可运行的,它的若干高质量的程序片段和开发工具可用于工作程序的开发。 原型的开发和评审是系统分析员和用户/客户共同参予的迭代过程,每个迭代循环都是线性过程。 2019/4/26 国防科技大学计算机学院

原型模型的缺点 对于大型软件项目,原型模型需要足够的人力资源以建立足够的原型组。 1.4软件开发模型 原型模型的缺点 对于大型软件项目,原型模型需要足够的人力资源以建立足够的原型组。 原型模型要求开发者和客户在一段时间内共同完成原型系统的开发,如果任何一方没有实现承诺,会导致原型开发的失败。 如果系统难以模块化,建造原型所需构件就有问题;如果高性能是一个指标,原型模型也可能不奏效。 原型模型不适合采用很多新技术的项目 2019/4/26 国防科技大学计算机学院

原型模型的应用 建造原型定义系统需求 一旦原型通过评审,达到预期目的后,应以确定的软件需求为目标进行软件开发,以便保证软件质量和可维护性; 1.4软件开发模型 原型模型的应用 建造原型定义系统需求 一旦原型通过评审,达到预期目的后,应以确定的软件需求为目标进行软件开发,以便保证软件质量和可维护性; 建造原型为客户提供初始的版本 2019/4/26 国防科技大学计算机学院

1.4.3 螺旋模型 Boehm在1988年提出 螺旋模型 == 线性模型十迭代.原型十系统化 螺旋模型适用于计算机软件整个生命周期 1.4软件开发模型 1.4.3 螺旋模型 Boehm在1988年提出 螺旋模型 == 线性模型十迭代.原型十系统化 螺旋模型适用于计算机软件整个生命周期 2019/4/26 国防科技大学计算机学院

螺旋模型的结构 软件过程的Boehm螺旋模型(@1998 IEEE) 1.4软件开发模型 螺旋模型的结构 软件过程的Boehm螺旋模型(@1998 IEEE) 2019/4/26 国防科技大学计算机学院

螺旋模型的使用 软件工程项目从螺旋中心开始启动,沿顺时针方向前进。 第一圈 产生产品规格说明; 第二圈 产生一个用于开发的原型; 1.4软件开发模型 螺旋模型的使用 软件工程项目从螺旋中心开始启动,沿顺时针方向前进。 第一圈 产生产品规格说明; 第二圈 产生一个用于开发的原型; 第三圈 产生软件产品的初始版本; 第四圈 产生软件产品比较完善的新版本 ……。 2019/4/26 国防科技大学计算机学院

螺旋模型的优点 符合人们认识现实世界和软件开发的客覌规律; 支持软件整个生命周期; 保持瀑布模型的系统性、阶段性; 1.4软件开发模型 螺旋模型的优点 符合人们认识现实世界和软件开发的客覌规律; 支持软件整个生命周期; 保持瀑布模型的系统性、阶段性; 利用原型评估降低开发风险; 开发者和用户共同参予软件开发,尽早发现软件中的错误; 不断推出和完善软件版本,有助于需求变化,获取用户需求,加强对需求的理解。 2019/4/26 国防科技大学计算机学院

1.4.4 基于四代技术的模型 四代语言 R.Ross 1981年提出 基于大型数据库管理系统开发的程序设计语言,称为四代语言4GL 1.4软件开发模型 1.4.4 基于四代技术的模型 四代语言 R.Ross 1981年提出 基于大型数据库管理系统开发的程序设计语言,称为四代语言4GL 以四代语言4GL为核心的软件开发技术称为四代技术4GT 4GT工具能将软件规格说明自动转换成程序代码。 2019/4/26 国防科技大学计算机学院

小结 软件工程是,采用系统的、規范的和可度量的方法支持软件开发、运行和维护的过程; 第一章 软件与软件工程 小结 软件工程是,采用系统的、規范的和可度量的方法支持软件开发、运行和维护的过程; 软件工程的目标是,在给定成本、进度的前提下开发出高质量的、满足用户需求的软件产品。 过程、方法、工具的研究和应用是软件工程学科的核心; 2019/4/26 国防科技大学计算机学院

小结 软件工程是一门工程学科,涉及软件生产的各个方面; 过程、方法和工具构成了软件工程的全部内容; 软件产品由开发的程序及相关文档构成; 第一章 软件与软件工程 小结 软件工程是一门工程学科,涉及软件生产的各个方面; 过程、方法和工具构成了软件工程的全部内容; 软件产品由开发的程序及相关文档构成; 软件产品的基本属性是可维护性、可依赖性、有效性、可用性; 软件过程由开发软件产品的一系列活动组成。基本的活动有:软件描述、开发、有效性验证和进化; 2019/4/26 国防科技大学计算机学院

小结 软件工程方法是软件生产的组织方式,包括对软件过程的建议、使用的标记法、进行系统描述的规律和设计指南; 第一章 软件与软件工程 小结 软件工程方法是软件生产的组织方式,包括对软件过程的建议、使用的标记法、进行系统描述的规律和设计指南; CASE工具是一些软件系统,支持软件过程的常规活动,如编辑设计图表、检查图表的连贯性、跟踪已经运行的程序测试等; 软件工程人员对软件工程这一职业和社会负有责任,不应该只关心技术问题; 职业协会颁布的行为准则规定了协会成员应该遵守的一系列行为标准。 2019/4/26 国防科技大学计算机学院

谢谢 2019/4/26 国防科技大学计算机学院