《第1章 软件工程概述PPT课件》由会员分享,可在线阅读,更多相关《第1章 软件工程概述PPT课件(84页珍藏版)》请在金锄头文库上搜索。
1、第1章概述 清华大学出版社 主编贾铁军甘泉副主编俞小怡宋少婷 高等院校计算机与信息类规划教材 软件工程与实践 上海市教育高地暨特色专业建设配套教材 课程安排建议 课程学时及考核课程性质 专业课 必修考试课 学时学分 理论 实践 52 16 共68学时 学分2 5 其中 实验0 5学分 考核办法 上机考与卷面考核相结合 理论与实践相结合 课内与课外相结合 知识素质和能力考核相结合 期中测验占20 期末考试成绩占总成绩的40 平时成绩和实验占总分40 先修课程 计算机网络 网络数据库 操作系统 高等院校计算机与信息类规划教材 目录 第1章概述 教学目标 了解软件工程的产生和发展 掌握软件工程的概念
2、 内容和原理 熟悉软件生存周期及阶段任务 掌握软件开发模型IBM公司研发初期的OS 360 共约100万条指令 花费了5000个人年 经费达数亿美元 而结果却令人沮丧 错误多达2000个以上 系统根本无法正常运行 OS 360系统的负责人Brooks这样描述开发过程的困难和混乱 像巨兽在泥潭中垂死挣扎 挣扎得越猛 泥浆沾得越多陷入更深 最后没有一个野兽能够逃脱淹没在泥潭中的命运 案例1 1 第1章概述 1 1 1软件危机概述软件危机 Softwarecrisis 是指在计算机软件开发 运行 维护和管理过程中所遇到的一系列严重问题 软件危机主要包含两方面的问题 一是开发的软件如何满足社会对软件日
3、益增长的各种需求 二是怎样维护和管不断快速增长的已有软件 1 软件危机产生的原因产生软件危机的主要原因有 1 软件开发规模逐渐变大 复杂度和软件的需求量不断增加 2 没有按照工程化方式运作 开发过程没有统一的标准和准则 规范的指导方法 3 软件需求分析与设计考虑不周 软件开发 维护和管理不到位 4 开发人员与用户或开发人员之间互相的交流沟通不够 文档资料不完备 5 软件测试调试不规范不细致 提交的软件质量不达标 6 忽视软件运行过程中的正常维护和管理 第一章概述 2 软件危机主要表现软件危机主要表现在以下7个方面 1 已完成的软件系统时常出现功能 性能不满意或出现故障等现象 2 软件产品的可靠
4、性和质量安全等方面时常达不到标准 软件产品质量难以保证 甚至在开发过程中就被迫中断 3 软件开发管理差 对成本和进度的估计时常不准确 4 系统时常出现无法维护 升级或更新现象 5 软件开发没有标准 完整 统一规范的文档资料 计算机软件不仅只是程序 还应当有一整套规范的文档资料和售后服务 6 软件开发效率低 无法满足计算机应用迅速发展与提高的实际需要 软件研发成本在计算机系统总成本中所占的比例逐年上升 第一章概述 3 解决软件危机的措施解决软件危机的主要措施有3个方面 1 技术方法 运用软件工程的技术 方法和标准规范 2 开发工具 选用先进高效的软件工具 同时采取切实可行的实施策略 3 组织管理
5、 研发机构需要组织高效 管理制度和标准严格规范 职责明确 质量保证 团结互助 齐心协力 注重文档及服务 第一章概述 1 1 2软件工程的发展过程计算机软件从数值计算到广泛应用于各行各业 软件技术的发展经历了程序设计阶段 程序系统阶段 软件工程阶段和创新完善软件工程4个阶段 其典型技术如表1 1所示 表1 1软件技术各发展阶段的典型技术 1 1软件工程的发展 软件工程 的发展经历了4个重要阶段 1 传统软件工程传统软件工程是指软件工程产生的初期 也称为第一代软件工程 2 对象工程对象工程也称为第二代软件工程 20世纪80年代中到90年代 以Smalltalk为代表的面向对象的程序设计语言相继推出
6、 使面向对象的方法与技术得到快速发展 3 过程工程过程工程也称为第三代软件工程 随着计算机网络等高新技术的出现及信息技术的广泛应用 软件规模和复杂度不断增大 开发时间相应持续增长 开发人员的增加 致使软件工程开发和管理的难度不断增强 1 1软件工程的发展 4 构件工程构件工程也称为第四代软件工程 90起年代 基于构件 Component 的开发方法取得重要进展 软件系统的开发可利用已有的可复用构件组装完成 而无需从头开始构建 从而达到提高效率和质量 降低成本的目的 计算机辅助软件工程简称CASE ComputerAidedSoftwarengineering 将工具和代码生成器进行集成 为很多
7、软件系统提供了可靠的解决方案 专家系统和人工智能软件的应用更加广泛 人工神经网络软件开阔了信息处理的新途径 并行计算 网络技术 虚拟技术 多媒体技术和现代通信技术等新技术新方法改变了人们原有的工作方式 1 1软件工程的发展 课堂讨论 1 上述案例项目的开发过程是否存在软件危机问题 2 从案例项目的组织和管理等方面分析导致该项目失败的主要原因有哪些 3 你认为应当吸取那些教训 采取的主要措施有哪些 1 1软件工程的发展 1 2 1软件的概念及特点1 软件的概念软件 Software 是计算机系统运行的指令 数据和资料的集合 包括指令程序 数据 相关文档和完善的售后服务的完整集合 即 软件 程序
8、数据 文档 服务 其中 程序是按事先按照预定功能性能等要求设计和编写的指令序列 数据是使程序正常处理信息的数据结构及信息表示 文档 Document 是与程序开发 维护和使用有关的技术数据和图文资料 信息系统 InformationSystem 有时也称为软件 是指由一系列相互联系的部件 程序模块 组成的 为实现某个目标对信息进行输入 处理 存储 输出 反馈和控制的集合 分为操作系统 应用系统等 通常实例提到的信息系统主要是指应用系统 即应用软件 1 2软件及软件工程的概念 2 软件的特点在软件的实际研发 运行 维护 管理和使用过程中 需要掌握其特点 1 智能性 软件是人类智能劳动的产物 代替
9、和延伸 2 抽象性 软件属于逻辑实体 无形性和智能性致使软件难以认识和理解 3 人工方式 软件的开发 维护及设置管理等方面目前尚未完全脱离手工方式 4 复杂性和系统性 5 泛域性 软件应用很广泛 在信息化中可服务于各种领域 行业和层面 6 复制性 软件成本相对比较昂贵 计算机软件是人类创造性的特殊产品 7 非损及更新性 软件不存在物理性磨损和老化问题 但可以退化需要更新升级 1 2软件及软件工程的概念 图1 1硬件失效率曲线图1 2软件失效率曲线 1 2软件及软件工程的概念 3 软件的分类 1 按照软件功能划分 2 按照软件规模划分 3 按照软件工作方式划分 4 按照软件服务对象的范围划分 1
10、 2软件及软件工程的概念 1 2 2软件工程的概念1 软件工程的定义按照中国国家标准GB T11457 1995 软件工程术语 的定义 软件工程 SoftwareEngineering 是软件开发 运行 维护和引退的系统方法 计算机科学技术百科全书 中对软件工程的定义是 应用计算机科学 数学及管理科学等原理 开发软件的工程 软件工程借鉴传统工程的原则 方法 以提高质量 降低成本 其中 计算机科学 数学用于构建模型与算法 工程科学用于制定规范 设计范型 paradigm 评估成本及确定权衡 管理科学用于计划 资源 质量 成本等管理 软件工程 工程原理 技术方法 管理技术 1 2软件及软件工程的概
11、念 2 软件工程的特点软件工程学是软件工程化的思想 规范 过程 技术 环境和工具的集成 是将具体的技术和方法结合形成的一个完整体系 软件工程学科的主要特点是实践性和发展性 软件工程的问题来源并应用于实践 最终目的是有效地生产软件产品 其特点体现为 3多 一是多学科 不仅包含有关课题还涉及到计算机科学 工程科学 管理科学 数学等多个学科 二是多目标 不仅关心项目产品及其功能 还有注重质量 成本 进度 性能 可靠性 安全性 通用性 可维护性 有效性和界面等 三是多阶段 软件开发不只是编程 而是由可行性研究 计划立项 需求分析 总体设计 详细设计 编程 测试 运行 维护等阶段构成完整过程 软件工程的
12、目的是在规定的时间和开发经费内 开发出满足用户需求的 高质量的软件产品 其目标是实现软件研发与维护的优质高效和自动化 1 2软件及软件工程的概念 1 2 3软件工程学的主要内容1 软件工程方法软件工程学的主要内容包括软件开发技术和软件工程管理两个方面 软件开发技术包括软件工程方法 软件工具和软件开发环境 软件工程管理学包含软件工程经济学和软件管理学 1 2软件及软件工程的概念 表1 3软件工程学科的主要内容 1 2软件及软件工程的概念 软件工程方法学是研发软件的系统方法 确定软件开发阶段 规定每一阶段的目标 任务 技术 方法 产品 验收等步骤和完成准则 具有方法 工具和过程三个要素 也称软件工
13、程三要素 1 软件工程方法 包括软件开发 如何作 的技术和管理准则及文档等技术方法 2 软件工具 为方法的运用提供自动或半自动的软件支撑工具的集成环境 3 软件工程过程 主要完成任务的工作阶段 工作内容 产品 验收的步骤和完成准则 也有将这一要素确定为 组织管理 实际上改为 过程与管理 更合适 1 2软件及软件工程的概念 目前 常用的软件工程方法主要分为以下7种类型 1 面向功能方法面向功能的软件开发方法也称为结构化方法 主要采用结构化技术 包括结构化分析 结构化设计和结构化实现 按照软件的开发过程 结构和顺序完成开发任务 2 面向数据方法从目标系统输入 输出数据的结构 导出程序框架结构 再补
14、充其他细节 得到完整的程序结构图 此方法也可与其他方法结合 用于模块的详细设计和数据处理等 对输入输出数据结构明确的中小型系统很有效 如商用文件表格处理等 1 2软件及软件工程的概念 3 面向对象方法面向对象方法 Object OrientedMethod OOM 是一种将面向对象的思想应用于软件开发过程中 指导开发活动的系统方法 将对象作为数据和对数据的操作相结合的软件构件 用对象分解取代了传统方法的功能分解 基本思想是 对问题领域进行自然的分割 以更接近人类通常思维的方式建立问题领域的模型 以便对客观的信息实体进行结构和行为的模拟 从而使设计的软件更直接地表现问题的求解过程 面向对象的开发
15、方法以对象作为最基本的元素 是分析和解决问题的核心 OOM的要素是对象 类 继承以及消息通信 可概括为 面向对象 对象 类 继承 消息通信实际上 所有按照这样四个概念设计和实现的软件系统 都可以认为是面向对象的 OOM由OOA 面向对象的分析 OOD 面向对象的设计 和OOP 面向对象的程序设计 三部分组成 1 2软件及软件工程的概念 4 面向问题方法面向问题方法也称问题分析法 ProblemAnalysisMethod PAM 是80年代末由日立公司提出的 是在Yourdon方法 Jackson方法和自底向上的软件开发方法基础上扬长避短改进的 其基本思想是 以输入输出数据结构指导系统的问题分
16、解 经过系统分析逐步综合 5 面向方面的开发方法面向方面的程序设计 Aspect OrientedProgramming AOP 是面向对象系统的扩展 在现有的AOP实现技术中 可通过创建Aspect库或专用Aspect语言实现面向方面的编程 6 基于构件的开发方法基于构件的开发 Component BasedDevelopment CBD 或基于构件的软件工程 Component BasedSoftwareEngineering CBSE 方法是软件开发新范型 1 2软件及软件工程的概念 软件复用 SoftwareReuse 或软件重用是指将已有的软件构件用于构造新的软件系统的过程 软件复用方法采用的复用方式包括 1 复用分析 利用原有的需求分析结果 进一步深入分析比对查找异同及特性等 2 复用结构 主要复用系统模块的功能结构或数据结构等 并进行改进提高 3 复用设计 由于复用受环境影响小 设计结果比源程序的抽象级别高 因此可通过从现有系统中提取全部或不同粒度的设计构件 或独立于具体应用开发设计构件 4 复用程序 包括目标代码和源代码的复用 可通过连接 Link 绑定 Binding