软件工程基本概念与原理.ppt
《软件工程基本概念与原理.ppt》由会员分享,可在线阅读,更多相关《软件工程基本概念与原理.ppt(86页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程初级教程主讲主讲:林风人林风人邮件邮件电话电话1/86一、课程的性质、任务o“软件工程软件工程”是专业核心基础课程,它是研究是专业核心基础课程,它是研究软件软件开发开发和和软件管理软件管理的一门工程科学。的一门工程科学。o它的主要任务是掌握支持软件它的主要任务是掌握支持软件开发开发和和管理管理的理论、的理论、方法、技术、标准以及计算机辅助软件工程的工具方法、技术、标准以及计算机辅助软件工程的工具(VisioVisio或或RoseRose)环境等知识;使学生具有软件开发环境等知识;使学生具有软件开发能力能力(包括熟练进行程序设计语言的结构化编码与(包括熟练进行程序设计语言的结构化编码与可
2、视化设计能力可视化设计能力;UML;UML的阅读和建模能力;培养用软的阅读和建模能力;培养用软件工程化及项目化的思想处理解决问题的能力等)件工程化及项目化的思想处理解决问题的能力等)。2/86概括说:软件开发能力最关键的步骤有三步:3/86二、通过学习应能达到如下目标:1.1.接受一种思想。掌握软件工程的基本原理、概念与方法接受一种思想。掌握软件工程的基本原理、概念与方法-主要包主要包括软件系统的可行性研究、需求分析、概要设计、详细设计、编码、括软件系统的可行性研究、需求分析、概要设计、详细设计、编码、测试、维护、面向对象、项目管理等方面的基本知识与方法。测试、维护、面向对象、项目管理等方面的
3、基本知识与方法。2.2.掌握软件工程中的一些基本技术方法,如数据流图、数据字典、结掌握软件工程中的一些基本技术方法,如数据流图、数据字典、结构分析方法,面向对象分析方法、集成测试方法、项目管理的基本构分析方法,面向对象分析方法、集成测试方法、项目管理的基本方法等。方法等。3.3.结合模拟案例,要求学生从实际中掌握从面向过程到面向对象思想结合模拟案例,要求学生从实际中掌握从面向过程到面向对象思想理论的基本方法和技巧。掌握软件开发文档的组织编写等。理论的基本方法和技巧。掌握软件开发文档的组织编写等。4.4.掌握一种工具。学期末能用掌握一种工具。学期末能用VisioVisio或或RoseRose软件
4、完成大作业的设计(画软件完成大作业的设计(画各种软件工程图)(指定或自找题目)各种软件工程图)(指定或自找题目)5.5.把目前或以后要学的程序设计知识(把目前或以后要学的程序设计知识(C C、JavaJava、VC+VC+、C#C#、ASP.NETASP.NET)提高到一定理论高度认识。)提高到一定理论高度认识。小提示:小提示:学会思想比掌握一种工具更为重要。学会思想比掌握一种工具更为重要。4/86“现在大家都已认识到,如果有哪个现在大家都已认识到,如果有哪个项目不遵循软件工程原则必定会受到实项目不遵循软件工程原则必定会受到实践的惩罚。践的惩罚。”“软件工程课是我们参加工作以后最软件工程课是我
5、们参加工作以后最能直接应用的一门专业课。能直接应用的一门专业课。”一位刚毕业参加工作的计算一位刚毕业参加工作的计算机专业学生机专业学生三、体会:5/86目目 录录第1章 软件工程的基本概念与原理 第2章 软件开发过程 第3章 软件项目管理 第4章 可行性分析与初步计划第5章 需求分析第6章 总体设计第7章 详细设计第8章 软件实现第9章 软件维护第10章 从结构化到面向对象 第11章 面向对象的需求获取第12章 面向对象的分析与设计第13章 面向对象的测试6/86第1章 软件工程的基本概念与原理7/86先接受2个正确观点1、“开发软件不等于编写程序”开发软件应该完成的工作远远多于编写程序应该完
6、成的工作。设计算法(即完成指定功能的步骤),然后用程序设计语言(例如:C语言)表达该算法。而开发软件并非就是编写程序,事实上编写程序仅仅是开发软件所应完成的工作的一部分,而且只占一小部分。为了开发出一个符合用户需要、质量合格的软件,软件工程师必须首先弄清楚用户面临的问题是什么,也就是要明确软件的“主攻”方向;接下来应该进行可行性研究方案,分析用户面临的问题是否有行得通的解决方案。为避免浪费资源,仅在该软件的开发是可行的前提下,才进行实质性的开发工作;8/86先接受2个正确观点然后应该进行需求分析工作,通过与用户的反复交流,搞清楚用户对该软件的具体需求,这些需求是进行软件设计的依据;在编写程序之
7、前需要先进行设计。通常,大型软件的设计工作又分成两个阶段进行,先进行总体设计(又称为概要设计),再进行详细设计;编写程序实质上是把设计结果翻译成用某种程序设计语言书写的程序;程序编写出来之后,还需要经过严格的测试过程(需要的工作量通常占软件开发全部工作量的40%50%),软件确实符合用户需求而且质量合格,才能交付给用户使用。9/86先接受2个正确观点2、“错误做法会导致软件危机”。开发软件不等于编写程序。但是,迄今为止,仍然有不少人错误地认为开发软件就是编写程序,或者认为开发软件主要就是编写程序。人们之所以有错误的认识并在开发软件时采用了错误的做法,主要可归因于在计算机系统发展的早期阶段“开发
8、软件”的个体化特点。所谓软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。10/861.1 软件工程学科的诞生1.1.1 软件的特点o1.1.2 软件生产的发展o1.1.3 软件危机o1.1.4 软件工程的诞生11/861.1.1 软件的特点o软件的概念:n20世纪60年代提出的,(软件=程序+文档)n程序是指令的集合;n文档有关程序功能、设计、编程使用的文字或图形资料。o软件产品的特殊性:n软件与硬件构成完整的计算机系统;n软件产品与硬件产品的主要区别包括:o逻辑产品、无形、脑力劳动的
9、结果,以程序和文档的形式体现,保存在特殊介质上,被计算机执行才能体现出它的功能和作用o软件生产成本集中在研制阶段;o软件不会被用坏、不存在磨损和消耗,但会过时;o是脑力创造的结果,还未完全摆脱手工开发方式,大部分是”定做”;o软件生产与维护费用不断增加;12/861.1.1 软件的特点软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。程序是按事先设计的功能和性能要求执行的指令序列。计算机程序包括源程序和目标程序。数据是使程序能正常操纵信息的数据结构(即数据的组织形式)。文档是与程序开发,维护和使用有关的图文材料。13/861.1.1 软件的特点 面向过程的程
10、序=算法+数据结构 面向对象的程序=对象+消息 面向构件的程序=构件+构架 软件=程序+数据+文档 14/86软件的维护曲线修改点图1-3 实际的软件故障曲线图故障率时间由于副作用造成故障率的提高15/861.1 软件工程的产生o1.1.1 软件的特点1.1.2 软件生产的发展o1.1.3 软件危机o1.1.4 软件工程16/861.1.2 软件生产的发展oo软件生产经历了三个阶段:软件生产经历了三个阶段:软件生产经历了三个阶段:软件生产经历了三个阶段:17/86程序设计时代(46年-56年)n个体手工方式;n低级语言、编程效率低、难,编程是聪明人的事;n追求编程技巧和程序运行效率;n代码不规
11、范,不易读,不易维护;n只重视编码,不重视设计和文档;n硬件资源紧缺;18/86程序系统时代(56年-68年)n作坊式小团队开发;n出现高级语言,编程效率有所提高;n追求写代码技巧,但提出了结构化程序设计方法;n软件复杂性增加,需求增加,但软件开发方法和软件项目管理技术跟不上,开发速度慢,与计算机硬件发展速度拉大距离;n软件数量猛增,但质量差,可维护性差,维护成本急剧增加;n上述矛盾越来越显著,最终导致了软件危机;19/86软件工程时代(68年以后)n软件工程学科诞生,引入了“工程化”思想;n结构化和面向对象的方法成熟;n使用数据库、开发工具、开发环境、网络、分布式技术开发软件;n软件开发技术
12、有了很大进步,但没有突破性,软件价格不断上升,没有完全摆脱软件危机;20/86计算机软件发展的三个时期及特点程序设计程序设计程序系统程序系统软件工程软件工程现现代代软软件件工工程程软软件件的的范范畴畴程序程序程序及说明书程序及说明书产品软件产品软件(项目软件)(项目软件)项目工程项目工程主主要要程程序序设计语言设计语言汇编及机器语言汇编及机器语言高级语言高级语言高高级级语语言言系系统统、程序设计语言程序设计语言面向对象可面向对象可视化设计语言视化设计语言软软件件工工作作范围范围程序编写程序编写包括设计和测试包括设计和测试软件生存期软件生存期整个软件生整个软件生存期存期需求者需求者程序设计者本人
13、程序设计者本人少数用户少数用户市场用户市场用户面向所有用面向所有用户户21/86计算机软件发展的三个时期及特点22/861.1 软件工程的产生o1.1.1 软件的特点o1.1.2 软件生产的发展1.1.3 软件危机o1.1.4 软件工程诞生23/861.1.3 软件危机软件危机的产生o软件危机的表现o软件危机的原因24/861.软件危机的产生o软件生产的第二个阶段,硬件生产成本下降、效率提高、性能提高,激发了软件需求;o软件复杂性要求提高、生产效率低,与硬件生产进一步拉开距离;o软件质量差,难维护,成本急剧增加;o软件项目成功率低;上述矛盾的进一步激化,瀑发了软件危机25/861.1.3 软件
14、危机o软件危机的产生o软件危机的表现o爆发软件危机的原因26/862.软件危机的表现o(1)经费超预算,项目一再拖延;o(2)开发的软件不能满足用户要求;o(3)软件可维护性差;o(4)软件可靠性差;27/863.软件危机产生的原因o(1)软件规划越来越大;o(2)软件开发管理困难且复杂;o(3)软件开发费用不断增加;o(4)软件开发技术落后;o(5)软件生产方式落后;o(6)软件开发工具落后;28/861.1 软件工程的产生o1.1.1 软件的特点o1.1.2 软件生产的发展o1.1.3 软件危机1.1.4 软件工程的诞生29/861.1.4 软件工程诞生o软件危机促使软件工程学科诞生;o借
15、鉴硬件生产的“工程化”思想,1968年,北大西洋公约组织提出了“软件工程”的概念,主张“用工程化思想来开发软件”。30/86第1章 软件工程的基本概念与原理p1.1 软件工程的产生1.2 软件工程的基本概念与原理1.软件工程的定义、性质n2.软件工程关注的主要问题n3.软件工程的目标n4.软件的生命周期n5.软件工程的基本原理31/86软件工程定义、性质o软件工程是用科学知识、技术、原理来定义、开发、维护软件的一门学科。o概括地说,软件工程是指导软件开发和维护的一门工程学科。o软件工程学科的根本要求:采用工程的概念、原理、技术和方法来开发与维护软件,把好的管理技术和开发技术方法结合起来,追求可
16、靠性、可维护性、满足用户需求、高的开发效率。o用工程学科中的观点进行费用估算、进度控制、制定计划和方案;用管理科学中的方法和原理进行软件生产过程的管理;用数学的方法建立软件开发中的各种模型和算法。32/86软件工程关注的关键问题(1)关注于大型程序的构造(2)中心课题是控制复杂性(3)软件需求经常变化(4)开发软件的效率非常重要(5)有效的沟通是合作开发软件的关键33/86(1)软件工程关注于大型程序的构造u“大”与“小”的分界线并不十分清晰。通常把一个人在较短时间内写出的程序称为小型程序,而把多人合作用时半年以上才写出的程序称为大型程序。u传统的程序设计技术和工具是支持小型程序设计的,不能简
17、单地把这些技术和工具用于开发大型程序。34/86(2)软件工程中心课题是控制复杂性u通常,软件所解决的问题十分复杂,以致于不能把问题放在一起试途一步解决。人们不得不把问题分解,使得分解出的每个部分是直观、明了、可理解的,而且各部分之间保持简单的联系。用这种方法并不能降低问题的整体复杂性,但是却可使它变成容易解决。u注意,许多软件的复杂性主要不是由问题的内在复杂性造成的,而是由必须处理的大量细节,让人看上去觉得很复杂。u结论:分解的手法,是控制复杂性的主要手段控制复杂性的有效方法是分解:面向过程的方法,是按功能分解;面向对象的方法,是按责任分解。35/86(3)软件需求经常变化o绝大多数软件都模
18、拟了现实世界的某一部分。现实绝大多数软件都模拟了现实世界的某一部分。现实世界不断变化,人们对其认识也有偏差,这就造成世界不断变化,人们对其认识也有偏差,这就造成了软件需求经常变化的特性。了软件需求经常变化的特性。o这种变化不仅存在于开发过程中和也存在交付使用这种变化不仅存在于开发过程中和也存在交付使用以后。前者要求在开发过程中,应能灵活调整设计以后。前者要求在开发过程中,应能灵活调整设计方案,后者要求软件应具有可维护性。方案,后者要求软件应具有可维护性。需求变更是软件开发活动与生俱来的特性,不可避免。变更不是坏事,但它是软件开发面临的最大挑战。软件工程追求的是、封装变更,灵活设计,应对变更,通
19、过好的设计方法,使变更对原有设计方案和已有代码影响最小。36/86(4)开发软件的效率非常重要o随着社会经济和文化的发展,网络及各类开发与应用平台的不断翻新,计算机硬件性能的不断提高,社会对软件的数量、规模和复杂性不断提高,软件的需求供不应求的现象依然日益严重。o因此,寻求开发与维护软件的更好、更有效的方法和工具,依然是软件工程的一个重要课题。o不断提高软件开发效率非常重要规范的开发过程好的开发环境和工具、提高软件复用是软件工程提高效率的有效办法。37/86(5)和谐地合作是开发软件的关键o软件处理的问题日益复杂和庞大,软件开发往往是多人协同工作的成果,明确的责任划分和有效的互通信团队成员协作
20、的关键。o事实上仅有上述规定还不够,每个人还必须严格地按规定行事。为了迫使团队成员遵守规定,应该运用标准和规程。通常,可以用工具来支持这些标准和规程。总之,纪律是成功地完成软件开发项目的一个关键。团队合作是必须的,使用有效的工具,进行有效的沟通是关键38/86软件工程的性质o综合性、交叉性学科o涉及计算机科学、工程科学、管理科学、数学等领域。39/861.2 软件工程的基本概念和原理o1.软件工程的定义、性质o2.软件工程面临的主要问题o3.软件工程的目标o4.软件的生命周期o5.软件工程的基本原理40/86软件工程面临的问题o需求问题o质量问题(可靠性可维护性可移植性等)o生产效率(重用是为
21、了提高效率)o费用41/861.2 软件工程的基本概念o1.软件工程的定义、性质o2.软件工程面临的主要问题3.软件工程的目标o4.软件的生命周期o5.软件工程的基本原理42/86软件工程的目标o运用工程化思想组织与管理软件项目,采用科学的管理方法、开发方法及工具,提高软件开发效率,保证软件质量,提高软件的可靠性和可维护性,在合理的工期内生产出能够满足用户需求的软件产品。43/861.2 软件工程的基本概念o1.软件工程的定义、性质o2.软件工程面临的主要问题o3.软件工程的目标4.软件的生命周期o5.软件工程的基本原理44/864.软件生命周期理论o软件生存周期的 定义 o软件生命周期阶段的
22、 划分 o软件生命周期阶段划分的 原则 软件生命周期是软件工程学的一个重要概念。引入软件生存周期概念,对于软件项目管理、进度控制有重要意义。在软件开发过程中,为了使软件项目容易控制和管理,把整个生命周期划分为若干阶段。划分阶段时,遵循“低耦合、高内聚”的原则。45/86软件生存周期的定义o软件生命周期(Software Life Cycle)是从软件开发需求被提出,启动可行性分析开始,经历软件开发过程,直到软件被开发出来、投入使用,最终被淘汰为止的整个时间。o生存周期理论,把整个生存周期划分为若干阶段,使得每个阶段有明确的任务,把规模大、活动多、管理复杂的软件开发活动变得容易控制和管理。46/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 基本概念 原理
限制150内