软件工程-原理、方法与应用.ppt

上传人:eastlab115 文档编号:389396 上传时间:2018-10-14 格式:PPT 页数:51 大小:189KB
下载 相关 举报
软件工程-原理、方法与应用.ppt_第1页
第1页 / 共51页
软件工程-原理、方法与应用.ppt_第2页
第2页 / 共51页
软件工程-原理、方法与应用.ppt_第3页
第3页 / 共51页
软件工程-原理、方法与应用.ppt_第4页
第4页 / 共51页
软件工程-原理、方法与应用.ppt_第5页
第5页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、软件工程- 原理、方法与应用,哈尔滨理工大学计算机学院计算机系,2,教材与参考书,教材 软件工程原理、方法与应用史济民 高等教育出版社 参考书 软件工程张海藩 人民邮电出版社,3,引言 课程介绍,为什么要学习软件工程 软件工程的主要内容 本书讲授主要内容 软件工程的课程特点,4,为什么要学习软件工程,软件工程是计算机学科中一个年轻并且充满活力的研究领域。自20世纪60年代末期,人们为克服“软件危机”在这一领域做了大量工作,逐渐形成了系统的软件开发理论、技术和方法,它们在软件开发实践中发挥了重要作用。今天,现代科学技术将人类带入了信息社会,计算机软件扮演着十分重要的角色,软件工程已成为信息社会高

2、技术竞争的关键领域之一。软件工程是指导计算机软件开发与维护的工程学科,它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以便经济地开发出高质量的软件并有效地维护它。,5,几点误解 认为软件开发不外乎就是编程,没必要学软件工程 认为软件工程都是些死板的原则和规范,内容抽象,技术性不强,没有值得学的东西。 认为软件工程只是规定软件开发的一些过程、工具和技术方法,只要把它们记住就行,没有值得深入学习的内容。,6,软件工程的主要内容,方法与技术:软件开发方法主要讨论软件开发的各种方法及其工作模型。同时讨论具体实现的技术; 工具

3、及环境:软件工具为软件工程方法提供了支持,研究计算机辅助软件工程CASE,建立软件工程环境; 管理技术:软件工程管理是指对软件工程全过程的控制和管理,包括计划安排、成本估算、项目管理和软件质量管理; 标准与规范:软件工程标准化与规范化,使得各层工作有章可循,以保证软件生产率和软件质量的提高。,7,本书讲授主要内容,概述 软件开发模型 软件需求分析 软件设计概述 传统设计方法 面向对象设计方法 统一建模语言UML,编码和语言选择 软件测试 软件复用 软件维护 软件项目计划 软件工程管理 软件质量管理 软件工程环境,8,软件工程的课程特点,学科理论及其知识应用的多维性 浓厚的方法学色彩 实践性、指

4、导性强 工程化,9,学科理论及其知识应用的多维性,软件工程是集工程科学、计算机科学、数学和管理科学等理论和知识于一身,并将其应用到软件开发实践的一门学科。 工程科学:制定规范、设计模型、评估成本及确定权衡; 计算机科学和数学:构造模型与算法; 管理科学:计划、资源、质量和成本的管理因此,支持软件工程的基础学科理论及其知识的运用是多方面的。从这一意义上说,软件工程也是综合性、交叉性的学科。,10,浓厚的方法学色彩,作为软件工程的要素之一,软件工程方法学不仅是课程学习的主要内容,而且贯穿到软件开发活动的全过程之中。方法是完成软件开发各项任务的一整套技术的集合,从软件分析、设计、实现、维护到软件项目

5、管理,无处不体现方法的运用。只有当这些方法在实践中不断得到完善和发展时,软件工程才会成为一种普遍使用的规范。目前使用最广泛的软件工程方法学是传统方法学和面向对象方法学,二者特点鲜明,内涵丰富,是软件工程中最具指导性的技术组成部分。,11,实践性、指导性强,软件工程的目标、原则和方法都是从软件开发的实践中总结出来并不断发展而形成的,它们对软件开发有着广泛和现实的指导意义。软件开发过程中的问题都会在软件工程中给予讨论和解决,许多原则和方法甚至是非常具体和易于操作的。因此,软件工程是一门实践性和指导性很强的工程应用学科。,12,工程化,普通工程学的知识在软件工程中得到充分的体现,象工程规划、模型设计

6、、项目的组织和管理、质量控制等都已经规范化和标准化。一个软件从设计、生产、实施到维护,经历的就是一个工程项目的执行过程。所以说,掌握软件工程的工程化特点,学会用工程的观点和方法去指导软件开发的实践,是学好软件工程的要领之一。,13,第一章 绪论,本章主要介绍软件的基本概念、软件危机、软件工程学的范畴、传统软件工程和面向对象软件工程以及软件工程的应用。最后对软件工程教学中的常见问题进行了讨论,给出了本书的导读。 重点掌握:学习软件工程的意义,面向对象软件工程和传统软件工程的比较。,14,软件与软件危机 软件工程学的范畴 传统软件工程和面向对象软件工程 软件工程的具体应用,15,1.1 软件与软件

7、危机,软件的定义 软件的特征 软件危机,16,1.1.1 软件的定义,1、软件的飞速发展 体系结构 主机结构-文件服务器结构 客户/服务器系统-服务器/浏览器结构 编码语言 机器代码-汇编代码 高级程序语言-人工智能语言 开发工具 分离的开发工具-集成的可视化开发系统 简单的命令行调试器-方便的多功能的调试器,17,2、软件的发展阶段 程序 程序+文档 软件工程,独唱小合唱合唱万人大合唱| | |简单程序 较复杂程序 软件,18,3、软件定义软件=程序+数据+文档 程序:为了解决某个特定问题而用程序设计语言描述 的适合计算机处理的语句序列 数据:使程序正常执行所需、能正常操纵信息的数据 结构

8、文档:与程序开发、维护和使用有关的图文材料,即 软件开发活动的记录,19,软件与硬件的对比,软件开发不同于硬件设计 软件更依赖于人,成本很难估算,占产品成本的大部分; 硬件设计与人的关系相对小一些,成本占产品成本的一小部分。 软件生产不同于硬件制造 软件成为产品后,制造只是简单的拷贝; 硬件的制造是一个复杂的过程,仍可能引入质量问题。 软件维护不同于硬件维修,20,1.1.2 软件的特征,软件是一种逻辑实体,不是具体的物理实体; 软件产品的生产主要是研制; 软件具有“复杂性”,其开发和运行常受到计算机系统的限制,有些软件甚至依赖于硬件的配置; 软件成本昂贵,其开发方式目前尚未完全摆脱手工生产方

9、式; 软件不存在磨损和老化问题,但存在退化问题。 软件通常是针对特定的应用而设计的,需要花费大量的资源进行项目规划与需求分析,开发周期较长,成本和进度很难估计。,21,1.1.3 软件危机,软件开发的发展过程,计算机应用发展,22,定义 计算机软件的开发和维护过程所遇到的一系列严重问题。 表现 对软件开发成本和进度的估算很不准确; 用户很不满意; 质量很不可靠; 没有适当的文档; 软件产品难以维护; 供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势。,23,软件危机产生原因,客观:软件本身特点 逻辑部件 规模庞大 维护费用急剧上升 生产技术进步缓慢 主观:不正确的开发方法 忽视需求分析

10、错误认为:软件开发=程序编写 轻视软件维护,24,维护软件的代价是巨大的:修改程序困难,抽调大量人员,影响其他软件开发等。越晚发现错误,改正的成本就越高(因此强调重视需求)。,25,硬件/软件成本变化趋势,100%,1955,1970,1985,26,软件技术进步落后于需求增长,27,1.2 软件工程学的范畴,软件开发方法学 软件工具 软件工程环境 软件工程管理,28,软件工程的几个定义,1983年IEEE:软件工程是开发、运行、维护和修复软件的系统方法。 Fairly:软件工程学是为了在成本限额以内完成开发和修改软件产品所需要的系统生产和维护技术及管理学科。 Fritz Bauer:软件工程

11、是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用的完善的工程化原则。 1993年IEEE:软件工程是把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;研究中的提到的途径。,29,软件工程的中心思想,把软件当作一种工业产品,要求“采用工程化的原理与方法对软件进行计划、开发和维护”。,30,软件工程学包含的主要内容,软件开发技术 软件开发方法学 软件工具 软件工程环境 软件工程管理 软件管理学 软件经济学 软件度量学,31,1.2.1 软件开发方法学,软件的发展 程序-软件-软件产品软件开发方法的发展 早期:无统一方法可循 20世纪6

12、0年代:结构化程序设计 20世纪80年代:面向对象程序设计,32,1.2.2 软件工具,定义帮助开发软件的软件 举例 编辑程序; 编译程序 连接程序, 计算机操作系统,33,1.2.3 软件工程环境,定义方法与工具相结合,再加上配套的软、硬件支持就形成环境。,34,1.2.4 软件工程管理,目的 为了按照进度及预算完成软件开发计划,实现预期的经济和社会效益。 内容 包括成本估算、进度安排、人员组织和质量保证及管理学、度量学和经济学等学科。,35,1.3 传统软件工程和面向对象软件工程,程序设计方法的两次飞跃 面向对象程序设计的优势 两类软件工程范例的简单比较,36,1.3.1 程序设计的两次飞

13、跃,结构化程序设计 程序=数据结构+算法 程序风格为“清晰第一,效率第二”,提高易读性和可靠性 认为程序由一组被动的数据和一组能动的过程所构成 面向对象程序设计 程序 = 对象 + 消息 保证了解空间与问题空间的一致性,37,1.3.2 面向对象程序设计的优势,可以有效地降低软件的复杂性,简化程序的开发; 使因修改程序而引发软件故障的机会大大减少,令大型软件的维护更快、更简单。,38,面向过程的编码语言,面向对象的编码语言,39,1.3.3两类软件工程范型的简单比较,传统软件工程 软件分析 总体设计 详细设计 面向过程的编码 测试 面向对象软件工程 软件分析与对象抽取对象详细设计面向对象的编码

14、测试,40,1.4 软件工程的应用,软件工程指导中小型软件 软件工程指导大型软件 软件工程的成就 软件工程的局限,41,软件规模分类表,42,软件工程指导中小型软件,极小程序一般不需要正式的分析和详细的设计文档,也不需要范围广泛的测试计划,但做一点系统设计和分析,会有效提高程序质量和减少返工. 在开发小程序时,应贯彻软件工程中的技术标准和表达方法,按标准编写文档,并系统的进行复审。但对正规程度要求不是很严格。 中规模程序的编写过程中,对制定软件计划、编制文档、进行阶段复审等方面,正规化的需求都比较高。,43,软件工程指导大型软件,所有大型以上软件的生产必须从头到尾坚持软件工程的方法,严格遵守标

15、准文档格式和正规的复审制度。,44,1.5 本书导读,传统软件工程与现代软件工程的关系 软件工程原理与软件工程方法的关系 软件工程技术与软件工程管理的关系 形式化方法与非形式化方法的关系 小程序设计与大程序设计的关系,45,传统软件工程与现代软件工程的关系,面向对象软件工程已成为软件开发的主流范型,但传统软件工程的地位仍很重要 原因 在软件公司中仍要使用传统软件工程 两类软件工程范型存在许多共同点,46,软件工程原理与软件工程方法的关系,前者蕴含了许多与各阶段活动有关的指导思想 清晰第一,效率第二 设计先于编码 使程序适合于问题 开发伴随复用,开发为了复用 后者包括了在开发与维护实践中采用的各

16、种实用方法。,47,软件工程技术与软件工程管理的关系,技术与管理是软件生产中缺一不可的两个方面。 没有管理技术不能充分发挥作用。,48,形式化方法与非形式化方法的关系,形式化方法是基于数学的开发技术,主要采用数学的方法来描述系统的性质。如程序变换、程序验证 非形式化方法主要运用文本、图、表和符号描述系统的模型。如结构化设计、UML语言等,49,小程序设计与大程序设计的关系,小程序设计是大程序设计的基础,二者都需要软件工程的指导。 “Why(计划)-What(分析)-How(实现)”开发过程。,50,本章小结,随着程序设计从结构化发展到面向对象程序设计,软件工程也由传统的软件工程演变为面向对象的软件工程,现正向更新一代的基于构件的软件工程迈进。本章提出了5个需要认识的观点,希望大家能够认真体会。,51,下课了。,休息一会儿。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学课件 > 大学教育

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1