




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章概述 软件 已处于信息技术的核心位置 软件产业 已成为信息产业中独立的支柱产业 软件业的发展造就了一个个 童话 软件工厂成为了科技时代的浪尖 自从1968年首次软件工程一词以来 软件工程已成为计算机软件的一个重要分支和研究方向 第1章概述 工程 将理论和所学的知识应用于实践的科学 软件工程 应用计算机科学 数学及管理科学等原理 开发软件的工程 它借鉴传统工程的原则 方法 以提高质量 降低成本为目的 其中 计算机科学 数学用于构造模型与算法 工程科学用于制定规范 设计范型 评估成本及确定权衡 管理科学用于计划 资源 质量 成本等管理 软件工程是一门交叉性学科 软件工程的主要内容 软件工程的基本概念软件开发模型软件开发各阶段的任务 技术 方法软件过程软件工具软件工程管理软件质量保证软件工程环境软件经济学 软件的概念 程序 软件与软件产品独唱 小合唱 合唱 万人大合唱 简单程序较复杂程序软件软件定义 软件 程序 数据 文档程序 按事先设计的功能和性能需求执行的指令序列数据 是程序能正常操纵信息的数据结构文档 与程序开发 维护和使用有关的图文材料 软件的特点 软件是逻辑实体 具有抽象性 软件的形态不可见 必须通过观察 分析 思考 判断来了解其功能 性能和其它特性 软件是人脑思维的产物 其生产过程与硬件不同 开发过程的质量控制及软件产品保护问题 软件的开发和运行受计算机系统限制 软件移植问题 软件的开发技术落后 手工开发方式仍占统治地位 开发效率低 软件的特点 软件的失效率与硬件不同 失效率 时间 硬件失效率曲线 失效率 时间 软件失效率曲线 软件的特点 软件的复杂性越来越高 对软件人员的要求越来越高 出现了软件复杂性与软件技术发展的不适应现象 软件复杂性 差距 软件需求与软件技术发展现状 软件需求 时间 软件技术 软件技术进步落后于需求增长 软件的特点 软件的特点 软件的开发研制成本高 自 年代以来 已大大超过硬件成本 计算机系统软 硬件成本比例的变化情况 硬件 年份 软件 年 年 年 成本 软件的特点 相当多的软件工作涉及社会因素 如机构 体制 管理方式等 包括人的观念及心理 都直接影响软件工作的成败 软件的分类 按功能 按规模 按工作方式 按使用频度 按失效影响 系统软件 支撑软件 应用软件 按服务对象 软件的分类 按功能 按规模 按工作方式 按使用频度 按失效影响 按服务对象 微型软件 小型软件 大型软件 甚大型软件 极大型软件 软件的分类 按功能 按规模 按工作方式 按使用频度 按失效影响 按服务对象 实时处理软件 分时软件 交互式软件 批处理软件 软件的分类 按功能 按规模 按工作方式 按使用频度 按失效影响 按服务对象 产品软件 项目软件 软件的分类 按功能 按规模 按工作方式 按使用频度 按失效影响 按服务对象 使用频度低 使用频度高 软件的分类 按功能 按规模 按工作方式 按使用频度 按失效影响 按服务对象 不良影响 严重影响 软件开发的发展过程 程序设计阶段 50至60年代程序系统阶段 60至70年代软件工程阶段 70年代以后 计算机应用发展 软件数量多规模大 软件成本高质量低 个体化软件开发方法 软件维护困难 软件危机 软件工程 软件危机 定义计算机软件的开发和维护过程所遇到的一系列严重问题 表现对软件开发成本和进度的估算很不准确用户很不满意质量很不可靠没有适当的文档软件成本比重上升供不应求 软件开发生产率跟不上计算机应用迅速深入的趋势 软件危机 原因客观 软件本身特点逻辑部件规模庞大主观 不正确的开发方法忽视需求分析错误认为 软件开发 程序编写轻视软件维护 软件危机 解决途径组织管理工程项目管理方法技术措施软件开发技术与方法软件工具 软件工程 为了解决软件危机 既要有技术措施 方法和工具 又要有必要的组织管理措施 软件工程正是从管理和技术方面研究如何更好地开发和维护计算机软件的学科 定义 软件工程是指导计算机软件开发和维护的工程学科 采用工程的概念 原理 技术和方法来开发和维护软件 把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来 即软件工程 软件工程 软件工程的基本原理 自 软件工程 提出后 专家和学者们陆续提出了100多条关于软件工程的准则或 信条 有专家归纳出了确保开发质量和效率的原理的最小集合 7条基本原理 1 用分阶段的生命周期严格管理 2 坚持进行阶段评审 3 实行严格的产品控制 4 采用现代程序设计技术 5 结果应能清楚地审查 6 开发小组人员应少而精 7 承认不断改进软件工程实践的必要性 软件工程三要素 软件工程三个要素 方法 工具 过程 软件工程三要素 软件工程三个要素 方法 工具 过程 软件工程三要素 软件工程三个要素 方法 工具 过程 方法 工具和过程 软件工程方法为软件开发提供了 如何做 的技术 软件工具为软件工程方法提供了自动的或半自动的软件支撑环境 软件工程过程定义了 方法使用的顺序要求交付的文档资料为保证质量和适应变化所需要的管理软件开发各个阶段完成的里程碑 软件工程的三要素 软件工程项目的基本目标 付出较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用能按时完成开发工作 及时交付使用 软件工程基本原则 抽象采用分层次抽象 自顶向下 逐层细化的办法控制软件开发过程的复杂性 信息隐蔽将模块设计成 黑箱 实现的细节隐藏在模块内部 不让模块的使用者直接访问 这就是信息封装 使用与实现分离的原则 模块化如C语言程序中的函数过程 C 语言程序中的类 模块化有助于信息隐蔽和抽象 有助于表示复杂的系统 局部化要求在一个物理模块内集中逻辑上相互关联的计算机资源 保证模块之间具有松散的耦合 模块内部具有较强的内聚 这有助于控制解的复杂性 确定性软件开发过程中所有概念的表达应是确定的 无歧义性的 规范的 一致性整个软件系统的各个模块应使用一致的概念 符号和术语 程序内部接口应保持一致 软件和硬件 操作系统的接口应保持一致 系统规格说明与系统行为应保持一致 用于形式化规格说明的公理系统应保持一致 软件工程基本原则 完备性软件系统不丢失任何重要成分 可以完全实现系统所要求功能的程度 为了保证系统的完备性 在软件开发和运行过程中需要严格的技术评审 可验证性开发大型的软件系统需要对系统自顶向下 逐层分解 系统分解应遵循系统易于检查 测试 评审的原则 以确保系统的正确性 软件工程基本原则 软件工程过程和软件生命期 软件工程过程 软件工程过程是为获得软件产品 在软件工具支持下由软件人员完成的一系列软件工程活动 软件工程过程内容 软件工程过程特性 软件工程过程和软件生命期 软件工程过程 软件工程过程是为获得软件产品 在软件工具支持下由软件人员完成的一系列软件工程活动 软件工程过程内容 软件工程过程特性 软件工程过程和软件生命期 软件生命期 Lifecycle 一个软件从定义 开发 使用和维护 直到最终被废弃 所经历的生存过程称为软件生存期或叫生命期 生命期的划分 软件生存期模型 瀑布模型 原型模型 螺旋模型 喷泉模型 构件组装模型 统一过程模型 第四代技术 瀑布模型 计划 需求分析 设计 编码 测试 运行 维护 定义阶段 开发阶段 维护阶段 原型模型 原型模型也称快速原型模型 原型模型的基本思想是 软件开发人员在与用户进行需求分析时 以比较小的代价快速建立一个能够反映用户主要需求的原型系统 让用户在计算机上进行操作 在实践过程中提出改进意见 开发人员根据用户的意见 对原型进行补充和完善 然后再由用户试用 评价 提出建议 重复这一过程 直到用户对开发的原型系统满意为止 原型模型 螺旋模型 螺旋模型沿着螺线旋转 在四个象限上分别表达四个方面的活动 即 制定计划 确定软件目标 选定实施方案 弄清项目开发的限制风险分析 分析所选方案 考虑如何识别和消除风险实施工程 实施软件开发客户评估 评价开发工作 提出修正建议 螺旋模型 螺旋模型 特点瀑布模型 快速原型 风险分析迭代过程一个螺旋式周期确定目标 选择方案 选定完成目标的策略风险角度分析该策略启动一个开发阶段评价前一步的结果 计划下一轮的工作 喷泉模型 迭代重复演进无间隙各阶段间无明显界限 喷泉模型 构件组装模型 构件组装模型 特点 面向对象基于构件库融合螺旋模型特征支持软件开发的迭代方法软件重用 统一过程模型 Rational统一过程 RationalUnifiedProcess RUP 是由Rational公司开发的一种软件过程 它的开发过程有如下3个主要特点 是一种用例 Use case 驱动的软件开发过程 是以体系结构 Architecture 为中心的过程 迭代 Iterative 开发与增量 Incremental 开发相结合的过程 第四代技术 第四代技术 4GT 包含了一系列的软件工具 其特点是 能使软件工程师在较高级别上说明软件的某些特征 然后利用工具将开发者的说明自动生成源代码 并且软件被说明级别越高 其建造程序的速度就越快 基于4GT的开发过程如下 像其他范型一样 4GT也是从需求收集这一步开始 制订一个系统的设计策略 应用4GL的生成功能 自动生成所期望的代码 进行测试 完成相关文档 并完成其他软件工程范型中同样要求的所有集成活动 得到最终产品 软件开发方法简述 软件开发方法是指软件开发过程中所应遵循的方法和步骤 局部软件开发方法 针对某些活动的开发方法全局软件开发方法 覆盖开发全过程的方法考虑如下的几个因素 1 对该软件开发方法是否已具有经验 或有已受过训练的人员 2 为软件开发提供的软件硬件资源及可使用的工具的情况 3 该开发方法在计划 组织和管理方面的可行性 4 对开发项目所涉及领域的知识的掌握情况 软件开发方法简述 1 结构化方法结构化方法也称为面向功能的软件开发方法或Yourdon方法 是由E Yourdon和L Constantine提出的 结构化分析方法SA 对软件进行需求分析结构化设计方法SD 进行总体设计和详细设计结构化编程SP特点 按照功能分解的原则 自顶向下 逐步求精 直到实现软件功能为止 该方法简单 实用 软件开发方法简述 1 结构化方法主要问题 1 它以功能分解为基础 而用户的功能是经常改变的 必然导致系统的框架结构不稳定 2 从数据流程图到软件结构图之间的过渡有明显的断层 导致设计回溯到需求有困难 软件开发方法简述 2 面向数据结构的开发方法面向数据结构的软件开发方法有两种 Warnier方法 由J D Warnier提出的结构化数据系统开发方法 DSSD Jackson方法 由M A Jackson提出的Jackson系统开发方法 JSD 面向数据结构的软件开发方法基本思想是 从目标系统的输入 输出数据结构入手 导出程序的基本框架结构 在此基础上 对细节进行设计 得到完整的程序结构图 软件开发方法简述 3 面向对象的方法面向对象方法的优点 1 将现实世界问题向面向对象解空间直接映射 实现对现实世界的直接模拟 2 以数据为中心 而不是基于对功能的分解 使得软件结构相对稳定 软件的重用性 可靠性 可维护等特性都较好 软件开发方法简述 3 面向对象的方法影响较大的面向对象方法有 1 Booch方法 该方法的分析能力较弱 是一种偏重设计的方法 2 OMT方法 通过建立对象模型 动态模型 功能模型 来实现对整个系统分析和设计工作 3 OOSE方法 最大特点是用用例 Use Case 与外部角色的交互来表示系统功能 用例贯穿于整个开发过程 4 Coad Yourdon的面向对象分析和设计方法 即OOA和OOD方法 它是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年环保工程师执业能力考核试题及答案解析
- 2025年海洋渔业专家资格认证测试试题及答案解析
- 2025年国际金融风险管理师专业水平评估试题及答案解析
- 2025年公共关系专家资格考试试题及答案解析
- 2025年安全教育年终考核模拟考试练习模拟题及答案
- 2025年安全生产安全考核题库bi备精良
- 2025年咖啡师初级笔试模拟题库
- 机电机械知识培训心得课件
- 2025年安全员安全责任面试题
- 2025年安全生产年度考核题含答案集
- 标准化管理意识培训课件
- 2025年幼儿教师资格保教知识与能力试题及答案
- (2025年标准)职工转岗协议书
- 湖南省衡阳市祁东县2024-2025学年七年级下学期期末考试英语试卷(含笔试答案无听力音频及袁恩)
- 2025湖南省低空经济发展集团有限公司招聘12人(第二次)笔试参考题库附带答案详解(10套)
- 2025重庆对外建设集团招聘41人笔试参考题库附带答案详解(10套)
- 《无人机飞行控制技术》全套教学课件
- 石油行业较大危险因素辨识与主要防范措施
- 2025年教育管理领导力案例分析试题及答案
- 办公软件培训课件
- 成人氧气吸入疗法-中华护理学会团体标准
评论
0/150
提交评论