第1章:软工概述课件_第1页
第1章:软工概述课件_第2页
第1章:软工概述课件_第3页
第1章:软工概述课件_第4页
第1章:软工概述课件_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章:软工概述软件工程(SoftwareEngineering)第1章:软件工程学概述1.1软件危机60年代中期以前:通用硬件相当普遍,软件却是为某个具体的应用而编写的。

60年代中到70年代中:软件作坊。软件危机:计算机软件的开发和维护过程中所遇到的一系列严重问题。(正常、不正常运行软件都具有这种问题)1.1.1软件危机的介绍1)对软件开发成本和进度的估计常常很不准确;2)用户对完成的软件系统不满意的现象经常发生;3)软件产品的质量往往靠不住;软件危机的典型表现:4)软件常常是不可维护的;5)软件通常没有适当的文档资料;6)软件成本在计算机系统总成本中所占的比例逐年上升;7)软件开发生产率提高的速度跟不上计算机应用的发展趋势。1.1.2产生软件危机的原因1)软件本身特点造成;2)软件开发与维护的方法不正确。主要表现:(a)忽视软件需求分析;(b)认为软件开发就是写程序并使之运行;(c)轻视软件维护;在软件开发的不同阶段进行修改需要付出的代价很不相同:高中低早期中期后期软件开发时期代价引入同一修改的代价随时间变化的趋势1)推广使用在实践中总结出来的开发软件的成功技术和方法,并研究探索更有效的技术和方法;2)开发和使用更好的软件工具;3)良好的组织管理措施。

1.1.3解决软件危机的途径为了解决软件危机产生的问题,软件工程与方法学逐渐形成,然后出现了两个相互相承又各有侧重的学科:1)软件工程学:主要应用工程的方法和技术研究软件开发与维护的方法、工具和管理的一门交叉学科。2)程序设计方法学:主要应用数学的方法研究程序的性质以及程序设计的理论和方法的学科。

1.2软件工程1.2.1软件工程的介绍1968年NATO会议:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。1993年IEEE:软件工程是(1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程;(2)研究(1)中提到的途径。1.软件工程关注于大型程序的构造;

2.软件工程的中心课题是控制复杂性;

3.软件经常变化;

4.开发软件的效率非常重要;

5.和谐地合作是软件开发的关键;

6.软件必须有效地支持它的用户;

7.在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。软件工程的本质特性:1.2.2软件工程的基本原理1.用分阶段的生命周期计划严格管理;2.坚持进行阶段评审;3.实行严格的产品控制;4.采用现代程序设计技术;5.结果能清楚地审查;6.开发小组的人员应该少而精;7.承认不断改进软件工程实践的必要性。1.2.3软件工程方法学

通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(Methodology),也称为范型(Paradigm)。软件工程方法学的3要素:方法、工具和过程1.传统方法学也称为生命周期方法学或结构化范型。结构化方法(StructureMethod)有:1)结构化设计方法(SD);2)结构化分析方法(SA);

3)结构化分析与设计技术(SADT)4)JACKSON方法5)WARNIER方法1975年,M.A.Jackson提出了一类至今仍广泛使用的软件开发方法。这一方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整的程序结构图。这一方法对输入、输出数据结构明确的中小型系统特别有效,如商业应用中的文件表格处理。该方法也可与其它方法结合,用于模块的详细设计。

Jackson方法有时也称为面向数据结构的结构化软件设计方法。

Warnier程序设计方法另一种面向数据结构的设计方法,又称为逻辑地构造程序的方法,简称LCP(LogicalConstructionofPrograms)方法。Warnier方法的原理和Jackson方法类似,也是从数据结构出发设计程序,但是这种方法的逻辑更严格。Warnier图在Warnier方法中使用的一种专用表达工具。差别有三点:一是它们使用的图形工具不同,分别使用Warnier图和Jackson图;另一个差别是使用的伪码不同;最主要的差别是在构造程序框架时,Warnier方法仅考虑输入数据结构,而Jackson方法不仅考虑输入数据结构,而且还考虑输出数据结构。

2.面向对象方法学把数据和对数据的操作紧密结合起来的方法,模拟人类认识世界解决问题的方法和过程。

面向对象的方法=对象(属性与服务的封装)+分类+继承+通过消息的通讯1)适用于实时事物处理系统的有限状态机方法(FSM);2)适用于并发软件系统的PETRI网方法;3)以数学概念和理论为基础的形式化方法,如

SDC公司的形式化开发方法FDM:(FormalDevelopmentMethodology)IBM公司的维也纳开发方法VDM:

(ViennaDevelopmentMethod)

3.其他开发方法

1.3软件生命周期软件生命周期:指软件从提出到最终被淘汰的这个存在期。软件生命周期组成:

1)软件定义;

A.问题定义B.可行性研究C.需求分析

2)软件开发;

D.总体设计E.详细设计

F.编码和单元测试G.综合测试

3)运行维护。1.问题定义;2.可行性研究;3.需求分析;4.总体设计(概要设计);5.详细设计;6.编码与单元测试;7.综合测试;8.维护。软件生命周期各个阶段:1.4软件过程软件过程:为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件过程(ISO9000):使用资源将输入转化为输出的活动所构成的系统。输入:如软件需求输出:如软件产品1.4.1瀑布模型1.阶段间具有顺序性和依赖性2.推迟实现的观点3.质量保证的观点优点:采用规范的方法;严格规定每个阶段提交的文档;要求每个阶段交出的产品必须经过验证。1.4.2快速原型模型优点:不带反馈环,基本上是线性顺序进行。1.4.3增量模型优点:能较短时间内提交可完成部分工作的产品;可以使用户有充裕的时间学习和适应新产品。一种风险更大的增量模型:1.4.4螺旋模型可把它看作在每个阶段之前都增加风险分析的快速原型模型。1.4.5喷泉模型典型的面向对象软件开发过程模型之一。1.4.6Rational统一过程1.RUP软件开发经验(1)迭代式开发(2)管理需求(3)使用基于构件的体系结构(4)可视化建模(5)贯穿于开发过程的软件质量验证(6)控制软件变更1.4.7敏捷过程与极限编程1.敏捷过程具有高效、快速响应变化的开发过程。(1)个体和交互胜过过程和工具;(2)可以工作的软件胜过面面俱到的文档;(3)客户合作胜过合同谈判;(4)响应变化胜过遵循计划。2.极限编程敏捷过程中最著名的一种,指把好的开发实践运用到极致,多应用于软件需求模糊的场合。1.4.8微软过程1.微软过程准则2.微软软件生命周期(1)规划阶段(2)设计阶段(3)开发阶段(4)稳定阶段(5)发布阶段3.微软过程模型1.5问题定义阶段问题定义就是要确定为用户建立什么样的软件系统,软件叫什么样的名称等等。“问题”是指软件最基本的问题,如:

软件的总体目标什么?有什么用途?

为那些

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论