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