资源预览内容
第1页 / 共67页
第2页 / 共67页
第3页 / 共67页
第4页 / 共67页
第5页 / 共67页
第6页 / 共67页
第7页 / 共67页
第8页 / 共67页
第9页 / 共67页
第10页 / 共67页
亲,该文档总共67页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软件工程导论 (第5版)普通高校本科计算机专业特色教材精选张海藩 编著课时:48教师:韩秀娟地点:5-101 周四-3大节(2-17周) 地点:5-102 周二-1大节(单周)总 目 录第1章 软件工程学概述 第2章 可行性研究 第3章 需求分析 第4章 形式化说明技术 第5章 总体设计 第6章 详细设计 第7章 实现总 目 录第8章 维护 第9章 面向对象方法学引论 第10章 面向对象分析 第11章 面向对象设计 第12章 面向对象实现 第13章 软件项目管理第1章 软件工程学概述1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程 1.5 小结 习题 什么是软件? 开发大型软件系统与以往编制小型 程序有什么区别? 什么是软件生命期模型? 如何进行软件质量的评价? 软件方法和软件工具之间有着什么 联系? 软件生存期的阶段划分(1)可行性研究与计划 (2)需求分析 (3)总体设计 上游 (4)详细设计 (5)实现 (6)集成测试 (7)确认测试 下游 (8)使用和维护 (根据国标计算机软件开发规范)软件定义软件程序文档数据定义真简单!软件 定义 软件是 能够完成预定功能和性能的可执行的指令(计 算机程序); 使得程序能够适当地操作信息的数据结构; 描述程序的操作和使用的文档。 被普遍接受的软件的定义是: 软件(software)是计算机系统中与硬件 (hardware)相互依存的另一部分,它包括程序 (program)、相关数据(data)及其说明文档 (document)。软 件 生 产 的 发 展程序设计时代程序系统时代软件工程时代时间19461956195619681968至今生产 方式个体手工劳动作坊式小集团合 作工程化的生产使用 工具机器、汇编语 言高级语言开发工具开发 方法个人编程技巧个人编程技巧,开 始提出结构化方法使用数据库、网络、 分布式、面向对象技 术等 硬件 特征价格贵,存储容 量小,运行可靠 性差速度、容量及工作 可靠性明显提高, 价格降低向超高速、大容量、 微型化以及网络化方 向发展 软件 特征只有程序设计概念 ,不重视程序设计 方法程序员数量猛增,但 开发人员素质差,开 发技术没有新突破。 软件危机产生。开发技术有很大进步, 但没有突破性进展,没 有完全摆脱软件危机。等于程序加技术 文档完整定义等于程序软件 定义用户编码者计算机用户计算机角色软件分类 按软件功能划分 系统软件:操作系统、数据库管理系统、设备驱 动程序以及通信处理程序等。它是计算机系统必不可少的一个组成部分。 支撑软件:支持软件设计的图形软件包,支持软 件实现的编辑程序、预编译程序等。它是协助用户开 发软件的工具性软件。 应用软件:工程和科学计算软件、嵌入式软件、 计算机辅助设计制造(CADCAM)软件、系统仿真 软件、人工智能软件等 。经费突破 时间一拖再拖 不满足要求 可维护性差例: 美国IBM公司在1963年至1966年开 发的IBM360机的操作系统。这一项目花 了5000人一年的工作量,最多时有1000 人投入开发工作,写出了近100万行源程 序。据统计,这个操作系统每次 发行的新版本都是从前一版本中找出 1000个程序错误而修正的结果。Software Crisis !这个项目负责人F.D.Brooks事后总结了 他在组织开发过程中的沉重教训时说: “正像一只逃亡的野兽落到泥潭中做垂 死的挣扎,越是挣扎,陷得越深。最后无法 逃脱灭顶的灾难,程序设计工作正像这 样一个泥潭,一批批程序员被迫在泥潭 中拼命挣扎,谁也没有料到问题竟会陷 入这样的困境”。关于本项目的经验积 累可以看F.D.Brooks的著作人月神话( UMLChina翻译组 汪颖/译,清华大学出版社 出版)。例:Windows95有1000万行代码Windows2000有5000万行代码, 3000多个工程师,几百个小团队。Exchange2000和 Windows2000开发人员 结构Exchange2000Windows2000项项目经经理25人约约250人开发发人员员140人约约1700人测试测试 人 员员350人约约3200人软件危机:是指在计算机软件的开发和维护过程中所遇到的一 系列严重问题。 包含两方面问题: 1如何开发软件,以满足对软件日益增长的需求; 2如何维护数量不断膨胀的已有软件。1.1.1 软件危机的介绍软件危机的主要特征 软件开发周期大大超过规定 日期; 软件开发成本严重超标; 软件质量难于保证。产生软件危机的原因软件本身特点(客观)逻辑部件:管理和控制软件开发过程相当 困难,较难维护 规模庞大:代码长度不正比程序复杂程度 软件开发与维护的方法不正确(主观 )没有认识到软件的生命周期软件开发不同阶段进行修改需要付出的代价差 别很大软件产品程序每个阶段的文档资料消除软件危机的途径 对计算机软件有一个正确的认识 (软件程序) 技术措施:推广使用在实践中总结出来 的开发软件的成功技术和方法;开发和 使用更好的软件工具等。 管理措施:必须充分认识到软件开发不 是某种个体劳动的神秘技巧,而应该是 一种组织良好、管理严密、各类人员协 同配合、共同完成的工程项目。引入同一变化付出的代价随时间变化的趋势变化出现的时期代 价早 中 后高中低软件工程产生1968年北大西洋公约组织在联邦德国召 开国际会议,讨论软件危机问题,提出 软件工程概念。软件工程的发展历史尽管不长,但也经历 了传统软件工程时代、对象软件工程时代、 过程软件工程时代、构件软件工程时代。目 前的发展趋势,正在这4个时代的基础上,朝 着流水线装配软件工程的方向发展,以迎接 软件发展的4大趋势:流水线生产、网络化、 服务化与全球化。 软件工程目标目的是成功地建造一个大型软件系统,能在 开发成本、开发时间、软件功能、性能等方面达 到预期目标。为了实现其目标,软件工程提出了 工程化的思想。软件工程从管理和技术两方面指导软件开发。工程是对技术(或社会)实体的分析、设计、建造、验证和管理。软件工程是指导计算机软件开发和维护的一 门工程学科。采用工程的概念、原理、技术和方法来 开发与维护软件,把经过时间考验而证明正 确的管理技术和当前能够得到的最好的技术 方法结合起来,以经济地开发出高质量的软 件并有效地维护它,这就是软件工程。1.2 软件工程1.2.1 软件工程的介绍1968年在第一届NATO会议: “软件工程就是为了经济地获得可靠的且能在 实际机器上有效地运行的软件,而建立和使 用完善的工程原理。” 1993年IEEE更全面更具体的定义: “软件工程是: 把系统的、规范的、可度 量的途径应用于软件开发、运行和维护过程 ,也就是把工程应用于软件; 研究中提 到的途径。”软件工程的本质特性: 1.软件工程关注于大型程序的构造 2. 软件工程的中心课题是控制复杂性 3. 软件经常变化 4. 开发软件的效率非常重要 5. 和谐地合作是开发软件的关键 6. 软件必须有效地支持它的用户 7. 在软件工程领域中是由具有一种文化背景 的人替具有另一种文化背景的人1.2.2 软件工程的基本原理1. 用分阶段的生命周期计划严格管理阶段划分为:可行性分析和计划、分析、设计、 编程、测试和运行维护。2. 坚持进行阶段评审大部分错误在编码之前造成(设计错误63,编 码错误37);错误发现越晚,所付代价越高。3.实行严格的产品控制改变需求时,为保证软件各个配置成分的一致性 ,都必须按照严格的规程进行评审,批准后才 能实施修改。4.采用现代程序设计技术:提高软件开发和维护 效率。5 .结果应能清楚地审查:为提高软件开发过程的 可见性,应根据软件开发项目的总目标和完成期 限,规定开发组织的责任和产品标准,使得结果 能清楚地审查。6 .开发小组的人员应少而精:效率高,错误少。 1+1 2 7 .承认不断改进软件工程实践的必要性:不仅要 积极主动采纳新的软件技术,而且要注意不断总 结经验。软件工程包括技术和管理两方面的内容,所谓管理就是通过计划、组织和控制等一系列 活动,合理地配置和使用各种资源,以达到既定目标 的过程。 通常把在软件生命周期全过程中使用的一整套 技术方法的集合称为方法学(methodology), 也称为范型(paradigm)。在软件工程领域中, 这两个术语的含义基本相同。1.2.3 软件工程方法学软件工程 一种层次化技术工具 方法 过程 质量焦点 Software engineering layers软件工程三个要素:方法、工具、过程方法是完成软件开发的各项任务的技术方法 ,回答“怎样做”的问题; 工具是为运用方法而提供的自动的或半自动 的软件工程支撑环境; 过程是为了获得高质量的软件所需要完成的 一系列任务的框架,它规定了完成各项任务 的工作步骤。 目前使用得最广泛的软件工程方法学,分别 是传统方法学和面向对象方法学。软件开发方法好的软件开发方法是克服软件危机的重要途径之一。方法名称优点缺点适合的场合面向过程的 方法简单好 学不适应窗 口界面, 维护困难大型工程计算,实时数据 跟踪处理,各种自动化控 制系统,以及系统软件实 现等领域面向对象的 方法功能强大 易于维护不易掌握互联网络时代,完全由用 户交互控制程序执行过程 的应用软件和系统软件开 发开发方法的新发展:软件复用与基于组件的软件开发、 敏捷开发方法 1. 传统方法学 传统方法学 生命周期方法学 结构化范 型。 采用结构化技术(结构化分析、结构化设计和结 构化实现)来完成软件开发的各项任务,并使用 适当的软件工具或软件工程环境来支持结构化 技术的运用。把软件生命周期的全过程依次划分为若干 个阶段,然后顺序地完成每个阶段的任务。采用生命周期方法学可以大大提高软件开发 的成功率,软件开发的生产率也能明显提高。2. 面向对象方法学当软件规模庞大,或者对软件的需求是 模糊的或会随时间而变化的时候,使用传统 方法学开发软件往往不成功,此外,使用传 统方法学开发出的软件,维护起来仍然很困 难。面向对象方法把数据和行为看成同等重要它是一种以数据为主线,把数据和对数据 的操作紧密地结合起来的方法。概括地说,面向对象方法学具有下述4个要点。 (1)把对象(object)作为融合了数据及在数据上的 操作行为的统一的软件构件。 (2) 把所有对象都划分成类(class)。 (3) 按照父类(或称为基类)与子类(或称为派生类 )的关系,把若干个相关类组成一个层次结 构的系统(也称为类等级)。 (4) 对象彼此间仅能通过发送消息互相联系。1.3软件生存周期(Life cycle) 软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。 软件生存周期通常包括可行性研究和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等活动(GB8567中规定)。软件生命周期由3个时期组成 软件定义:即问题定义、可行性研究和需求分析。 软件开发 总体设计、详细设计、编码和单元测试、 综合测试。 运行维护(也称为软件维护) 1.3 软件生命周期软件生存期的阶段划分 (1)可行性研究与计划 (2)需求分析 (3)总体设计 上游 (4)详细设计 (5)实现 (6)集成测试 (7)确认测试 下游 (8)使用和维护 (根据国标计算机软件开发规范)定义 分析蓝图、图表、库 存、采购单等设计实现产品软件定义时期基本任务:回答 要解决的问题是什么?该问题有 行的通的解决办法吗?若有解决问题的办法,则 需要多少费用、资源、时间? 结束标准:提出关于问题性质、工程目标和规模
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号