全套课件·《软件工程与实践》1.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《全套课件·《软件工程与实践》1.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程与实践 全套 课件 软件工程 实践
- 资源描述:
-
1、软件工程与实践第1章 软件工程概述1.1 1.1 软件软件1.1.1 1.1.1 软件的定义与特征软件的定义与特征1 1软件的定义软件的定义 程序设计阶段(程序设计阶段(1946194619561956年),年),“软件软件”的含义就是的含义就是“程程序序”。程序系统阶段(程序系统阶段(1956195619681968年)。这个阶段的生产方式是作坊年)。这个阶段的生产方式是作坊式的式的 小集团合作生产,生产工具是高级语言,开发方法仍就小集团合作生产,生产工具是高级语言,开发方法仍就靠个人技巧,但开始提出结构化方法。靠个人技巧,但开始提出结构化方法。该阶段的后期,随着软件需求量、规模及复杂度的增
2、大,生该阶段的后期,随着软件需求量、规模及复杂度的增大,生产作坊的方式已经不能够适应软件生产的需要,出现了所谓的产作坊的方式已经不能够适应软件生产的需要,出现了所谓的“软件危机软件危机”。这个阶段。这个阶段“软件软件”的含义就是的含义就是“程序和使用说明程序和使用说明书书”。软件工程阶段(软件工程阶段(19681968年至今)。此阶段的主要任务是为了克年至今)。此阶段的主要任务是为了克服软件危机,适应软件发展的需要,而在软件生产中采用服软件危机,适应软件发展的需要,而在软件生产中采用“工程工程化的生产化的生产”方式进行开发。这个阶段方式进行开发。这个阶段“软件软件”的含义就是的含义就是“程序、
3、程序、文档、数据文档、数据”。2 2软件的特征软件的特征 有计算机软件就有计算机硬件,二者共同组成计算机系统。有计算机软件就有计算机硬件,二者共同组成计算机系统。软件的特征是:软件的特征是:(1 1)软件是一种逻辑实体。它的存在是保存在一种媒介)软件是一种逻辑实体。它的存在是保存在一种媒介上面,例如:纸张,磁盘,内存,磁带,光盘等。上面,例如:纸张,磁盘,内存,磁带,光盘等。(2 2)软件是绿色产品,没有污染,它的运行不会出现磨)软件是绿色产品,没有污染,它的运行不会出现磨损和对空气、土地等对人体有害的物质。损和对空气、土地等对人体有害的物质。(3 3)软件的研制是一种高智力劳动。计算机软件既
4、是作)软件的研制是一种高智力劳动。计算机软件既是作品,又是工具,是作品性与工具性紧密结合的智力成果。品,又是工具,是作品性与工具性紧密结合的智力成果。(4 4)计算机软件开发工作最大、成本高,但复制容易、)计算机软件开发工作最大、成本高,但复制容易、成本极低。计算机软件是开发者智力劳动的结晶,具有原成本极低。计算机软件是开发者智力劳动的结晶,具有原创性质。创性质。1.1.2 软件系统软件系统 数据通信软件 数据通信软件是指按着网络协议的要求,完成通信功能的软件。网络操作系统 网络操作系统是指能够控制和管理网络资源的软件。网络应用软件(4)网络信息系统 网络信息系统是指以计算机网络为基础开发的信
5、息系统。1.2 软件工程的知识体系 1.3.1 1.3.1 软件工程的产生软件工程的产生 当软件开发技术的进步不能跟上硬件技术的进步,当软件开发技术的进步不能跟上硬件技术的进步,未能满足发展的要求,致软件开发中遇到的问题找不到解未能满足发展的要求,致软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。主要表现为:致了软件危机。主要表现为:经费预算经常突破,完成时间一再拖延;经费预算经常突破,完成时间一再拖延;开发的软件不能满足用户要求;开发的软件不能满足用户要求;开发的软件可维护性差;开发的软件可维护性差
6、;开发的软件可靠性差。造成软件危机的原因是由于软开发的软件可靠性差。造成软件危机的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人件产品本身的特点以及开发软件的方式、方法、技术和人员引起的。员引起的。1.3.2软件工程的定义 美国电气与电子工程师学会美国电气与电子工程师学会IEEEIEEE对软件工程的对软件工程的定义:定义:(1 1)应用系统化的、学科化的、定量的方法来开)应用系统化的、学科化的、定量的方法来开发、运行和维护软件,即,将工程应用到软件;发、运行和维护软件,即,将工程应用到软件;(2 2)对()对(1 1)中的各种方法的研究。)中的各种方法的研究。软件工程是一门研究
7、用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它应用计算机科学、数学及管理科学等原理,采用工程的概念、原理、技术和方法来开发与维护软件,把正确的管理技术和目前最有效的技术与方法结合起来去开发、生产、维护软件,以达到提高质量,降低成本的目的。软件工程的三要素软件工程的三要素 软件工程的方法、工具和过程构成了软件工程软件工程的方法、工具和过程构成了软件工程的三要素。的三要素。(1)软件工程方法。软件工程方法。(2)软件工具。软件工具。(3)软件工程过程。软件工程过程。1.4 软件工程的原则(1)抽象性。(2)信息隐蔽性。(3)模块化。(4)局部化(5)确定性(6)一致性(7)完备性(7
8、)可验证性。1.5 软件工程的目标 软件工程的目标可以用四个字总结:多、快、软件工程的目标可以用四个字总结:多、快、好、省。好、省。“多多”指的是功能齐全;指的是功能齐全;“快快”指的是提高生产率,按照项目计划提指的是提高生产率,按照项目计划提前完成任务;前完成任务;“好好”指的是取得较好软件性能的,满足用户指的是取得较好软件性能的,满足用户需要的高质量软件产品;需要的高质量软件产品;“省省”指的是节省成本。指的是节省成本。1.6 软件工程的基本原理 1 用分阶段的生命周期计划严格管理。2 坚持进行阶段评审 3 实行严格的产品控制。4 采用现代程序设计技术。5结果可审查 6 开发小组的人员应少
9、而精。7 软件实践不断改进。1.7 软件工程思维的培养 1考虑整个项目或者产品的市场前景。2从用户的角度来考虑问题。3从技术的角度考虑问题。4合理进行模块的分割。5人员的组织和调度。6开发过程中文档的编写。7充分考虑实施时可能遇到的问题。再见!第2章 软件生命周期与开发模型 2.1 软件生命周期软件生命周期 软件生存周期一般划分为三个阶段:软件生存周期一般划分为三个阶段:(1)计划时期;)计划时期;(2)开发时期;开发时期;(3)运行与维护时期。运行与维护时期。2.1.1计划时期 这个时期的任务是:这个时期的任务是:(1 1)确定软件开发工程必须完成的总目标;)确定软件开发工程必须完成的总目标
10、;(2 2)确定工程的可行性;)确定工程的可行性;(3 3)导出实现工程目标应该采用的策略及软件)导出实现工程目标应该采用的策略及软件必须具有的功能;必须具有的功能;(4 4)估算完成该项开发工程需要的资源和成本,)估算完成该项开发工程需要的资源和成本,并且制定工程进度表。并且制定工程进度表。可行性研究的步骤一般有如下几个步骤:1关键人员访谈:可行性研究分析人员找到项目干系人中的关键人员,了解如下几方面的内容:(1)项目的规模有多大;(2)项目目标是什么;(3)目前系统的信息来源于何处;(4)目前系统的优点和缺点;(5)目前系统与国内外同类产品的比较,优势和劣势分别是什么。2找出逻辑模型:3找
11、出多种方案。4写出可行性研究报告。5写出需求分析报告。6进行审查。2.1.2 开发时期 一个软件的开发包括四个步骤:一个软件的开发包括四个步骤:(1)需求分析;)需求分析;(2)概要设计;)概要设计;(3)详细设计;)详细设计;(4)编码和测试。这两个过程是)编码和测试。这两个过程是同步进行的。同步进行的。项目的可行性研究 项目立项 项目组的成立 需求分析,解决方案 项目总体设计(概要设计)详细设计(数据库设计等)编码 项目评审 项目评审 项目评审 需求分析报告 概要设计报告 详细设计报告 项目启动通知单 2.1.3 运行与维护时期 软件的维护一般包括改正性维护、适应性维护、完善性维护和预防性
12、维护等四个方面。2.2 软件开发方法综述 2.2.1 2.2.1 结构化方法结构化方法 结构化开发方法是由E.Yourdon 和 L.L.Constantine 提出的,即所谓的SASD 方 法,也可称为面向功能的软件开发方法或面向数据流的软件开发方法。Yourdon方法是80年代 使用最广泛的软件开发方法。它首先用结构化分析(SA)对软件进行需求分析,然后用结构化设计(SD)方法进行总体设计,最后是结构化编程(SP)。它给出了两类典型的软件结构(变换型和事务型)使软件开发的成功率大大提高。2.2.2 面向数据结构的软件开发方法 Jackson方法是最典型的面向数据结构的软件开发方法,Jack
13、son方法把问题分解为可由三种基本结构形式表示的各部分的层次结构。三种基本的结构形式就是顺序、选择和重复。三种数据结构可以进行组合,形成复杂的结构体系。这一方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整的程序结构图。2.2.3 面向问题的分析法(PAM)面向问题的分析法(面向问题的分析法(PAM,Problem Analysis Method)是)是80年代末由日立公司年代末由日立公司提出的一种软件开发方法。提出的一种软件开发方法。它的基本思想它的基本思想是考虑到输入、输出数据结构,指导系统是考虑到输入、输出数据结构,指导系统的分解,在系统分析指导下逐步
14、综的分解,在系统分析指导下逐步综 合。合。这一方法的具体步骤是:从输入、输出这一方法的具体步骤是:从输入、输出数据结构导出基本处理框;分析这些处理数据结构导出基本处理框;分析这些处理框之间的先后关系;按先后关系逐步综合框之间的先后关系;按先后关系逐步综合处理框,直到画出整个系统的处理框,直到画出整个系统的PAD图图2.2.4 面向对象的开发方法 面向对象系统采用了自底向上的归纳、自顶向下的分解的方法,它通过对对象模型的建立,能够真正建立基于用户的需求,而且系统的可维护性大大改善。当前业界关于面向对象建模的标准是UML.2.2.5、原型化方法 产生原型化方法的原因很多,主要随着我们系统开发经验的
15、增多,我们也发现并非所有的需求都能够预先定义而且反复修改是不可避免的。当然能够采用原型化方法是因为开发工具的快速发展,比如用VB,DELPHI等工具我们可以迅速的开发出一个可以让用户看的见、摸的着的系统框架,这样,对于计算机不是很熟悉的用户就可以根据这个样板提出自己的需求。2.2.6 可视化开发方法 可视化开发并不能单独的作为一种开发方法,更加贴切的说可以认为它是一种辅助工具,比如:S-Design,PowerDesigner,PowerBuilder,VB,DELPHI,C+Builder等。再见!2.3 软件开发模型 2.3.1 2.3.1 瀑布模型瀑布模型 将软件生命周期划分为制定计划、
16、需求将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。水,逐级下落。2.3.2 螺旋模型 螺旋模型沿着螺线进行若干次迭代,图螺旋模型沿着螺线进行若干次迭代,图2-52-5中的四个象限代表了以中的四个象限代表了以下活动下活动.螺旋模型沿着螺线旋转,每个螺旋推进的过程都是渐进的实现螺旋模型沿着螺线旋转,每个螺旋推进的过程都是渐进的实现过程,整个过程的实现,按照过程,整个过程的
17、实现,按照”制定计划、风险分析、实施工程和客户制定计划、风险分析、实施工程和客户评估评估”四个步骤循环实施。四个步骤循环实施。(1 1)制定计划:确定软件目标,选定实施方案,弄清项目开发的)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件。定义资源、进度及其他相关项目信息所需要的任务,以调整限制条件。定义资源、进度及其他相关项目信息所需要的任务,以调整项目的目标和改善系统实施的效率。项目的目标和改善系统实施的效率。(2 2)风险分析:分析评估所选方案,考虑如何识别和消除风险。风险分析:分析评估所选方案,考虑如何识别和消除风险。从风险角度分析方案的开发策略,努力排除各种潜在的风险,有
18、时需要从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。基于上述目标,评估技术及管理的风险,以决定启动下一个开发步骤。基于上述目标,评估技术及管理的风险,以决定如何实施项目。如何实施项目。(3 3)实施工程:实施软件开发和验证。包括系统需求分析、概要实施工程:实施软件开发和验证。包括系统需求分析、概要设计、详细设计、编程、单元测试、系统测试和验证测试等项目具体实设计、详细设计、编程、单元测试、系统测试和验证测试等项目具体实施的各种任务。施的
19、各种任务。(4(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。客户评估:评价开发工作,提出修正建议,制定下一步计划。螺旋模型的缺点是:螺旋模型的缺点是:(1)(1)它可能难以使用户它可能难以使用户相信演化方法是可控的;相信演化方法是可控的;(2 2)瀑布模型要求在软件开发的初期就完全确定软)瀑布模型要求在软件开发的初期就完全确定软件的需求,这在很多情况下往往是无法实现的。螺旋模件的需求,这在很多情况下往往是无法实现的。螺旋模型加入了瀑布模型所忽略的风险分析,从而弥补了瀑布型加入了瀑布模型所忽略的风险分析,从而弥补了瀑布模型的不足。模型的不足。螺旋模型也有一定的限制条件,这些限制条件
20、是:螺旋模型也有一定的限制条件,这些限制条件是:1 1)螺旋模型强调风险分析,但要求许多客户接受和)螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发。种模型往往适应于内部的大规模软件开发。2 2)如果执行风险分析将大大影响项目的利润,那如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。规模软件项目。3 3)软件开发人员应该擅长寻找可能的风险,准确软件开发人员应该擅长寻找可
21、能的风险,准确地分析风险,否则将会带来更大的风险。地分析风险,否则将会带来更大的风险。2.3.3 增量模型 增量模型和瀑布模型之间的本质区别是:瀑增量模型和瀑布模型之间的本质区别是:瀑布模型属于整体开发模型,它规定在开始下一个布模型属于整体开发模型,它规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节。阶段的工作之前,必须完成前一阶段的所有细节。而增量模型属于非整体开发模型,它推迟某些而增量模型属于非整体开发模型,它推迟某些阶段或所有阶段中的细节,从而较早的产生工作阶段或所有阶段中的细节,从而较早的产生工作软件。软件。增量模型是在项目的开发过程中以一系列的增增量模型是在项目的开发过程中
22、以一系列的增量方式开发系统。量方式开发系统。增量方式包括增量开发和增量提交。增量方式包括增量开发和增量提交。增量模型也存在以下缺陷:(1)由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。(2)在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。2.3.4 喷泉模型 该模型表明软件刻画活动需要多次重复。例如,在编码之前,(实践之后),再次进行分析和设计,其间添加有关功能,使系统得以演化。同时,该模型还表明
23、活动之间没有明显的间隙,例如在分析和设计之间没有明显的界限。2.3.5 RAD模型RADRAD模型包含如下几个开发阶段模型包含如下几个开发阶段 (1)(1)业务建模:业务活动中的信息流被模型化。通过回答以业务建模:业务活动中的信息流被模型化。通过回答以下问题来实现:什么信息驱动业务流程?生成什么信息?谁生成下问题来实现:什么信息驱动业务流程?生成什么信息?谁生成该信息?该信息流往何处?谁处理它?该信息?该信息流往何处?谁处理它?(2)(2)数据建模:业务建模阶段定义的一部分信息流被细化,数据建模:业务建模阶段定义的一部分信息流被细化,形成一系列支持该业务所需的数据对象。标识出每个对象的属性,形
24、成一系列支持该业务所需的数据对象。标识出每个对象的属性,并定义这些对象间的关系。并定义这些对象间的关系。(3)(3)处理建模:数据建模阶段定义的数据对象变换成要完成处理建模:数据建模阶段定义的数据对象变换成要完成一个业务功能所需的信息流。创建处理描述以便增加、修改、删一个业务功能所需的信息流。创建处理描述以便增加、修改、删除或获取某个数据对象。除或获取某个数据对象。(4)(4)应用生成:应用生成:RADRAD过程不是采用传统的第三代程序设计语过程不是采用传统的第三代程序设计语言来创建软件,而是使用言来创建软件,而是使用4GL4GL技术或软件自动化生成辅助工具,技术或软件自动化生成辅助工具,复用
25、已有的程序构件复用已有的程序构件(如果可能的话)或是创建可复用的构件如果可能的话)或是创建可复用的构件(如如果需要的话果需要的话)。(5)(5)测试及反复:因为测试及反复:因为RADRAD过程强调复用,许多程序构件已过程强调复用,许多程序构件已经是测试过的,这减少了测试时间。但新构件必须测试,所有接经是测试过的,这减少了测试时间。但新构件必须测试,所有接口也必须测到。口也必须测到。RADRAD模型还有一种改进型(见图模型还有一种改进型(见图 2-92-9),将),将”编码编码”从从V V字型的顶点移字型的顶点移到左侧,和单元测试对应,从而构成水平的对应关系。到左侧,和单元测试对应,从而构成水平
展开阅读全文