软件工程概述

上传人:206****923 文档编号:56983860 上传时间:2018-10-17 格式:PPT 页数:47 大小:655KB
返回 下载 相关 举报
软件工程概述_第1页
第1页 / 共47页
软件工程概述_第2页
第2页 / 共47页
软件工程概述_第3页
第3页 / 共47页
软件工程概述_第4页
第4页 / 共47页
软件工程概述_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《软件工程概述》由会员分享,可在线阅读,更多相关《软件工程概述(47页珍藏版)》请在金锄头文库上搜索。

1、2018/10/17,软件工程,西安文理学院 徐东升,Software Engineering,本课程的特点 学习的主要内容 培养目标 教学安排 主要参考书目 考核方式,课程简介,1、是一门很重要的专业课,学习内容比较多; 2、属“工程”学科; 3、是一门需不断完善的、发展的、可创新的学科。2011年3月8日由国务院学位委员会、中华人民共和国教育部联合发出“关于印发学位授予和人才培养学科目录(2011年)的通知” (学位201111号),通知中将将软件工程由原来的二级学科新列为一级学科(学科代码为0835),原来软件工程学科是计算机科学与技术一级学科下面的二级学科。,返回,一、课程特点,1、软

2、件工程的基本概念及软件危机 2、软件生存周期及软件开发模型 3、软件计划(问题定义及可行性研究) 4、软件分析(需求分析) 5、软件系统设计 6、软件测试 7、软件维护 8、面向对象软件工程 9、软件项目管理,返回,二、 学习主要内容,通过本课程的学习,消除错误的认识,学习软件工程基本理论,掌握软件开发全过程中的各重要阶段的任务及相关描述方法,使学生能真正的从中了解软件开发的整个过程。为了让学生真正得以实践,结合实际软件开发项目,让学生从问题定义开始,经过可行性研究、需求分析、概要设计、详细设计、编码直到最后要对自己开发的软件还要进行测试,这样一个软件开发过程,从而使学生掌握软件开发的基本技能

3、,具备软件工程师的基本素质。产生两个转变 转变对软件的认识 程序-上升-系统 转变思维定式 程序员-上升-系统工程师(系统分析员),三、培养目标,1、见附件 2、答疑时间:待定地点:明德楼D座0413,四、教学安排,2018/10/17,动脑:动脑分析实际问题!动手:动手撰写文档、编写程序!,学好本课程的关键,1、主要参考书目:软件工程 张海藩 编著 清华大学出版社 2、其他参考书目:软件工程与实践贾铁军、甘泉主编 清华大学出版社实用软件工程 赵池龙、杨林 主编 电子工业出版社实用软件工程 郑人杰主编 清华大学出版社,返回,五、参考教材,1、课程性质:考试课 2、考核方式:考试(60) 综合设

4、计(20) 平时(20),返回,六、考核方式,2018/10/17,第一章 软件工程概述,水利工程,建筑工程,机械工程, ,软件工程,本章将对软件的地位和作用、软件的特点、软件的发展、软件的 危机以及软件工程学科的形成、软件生命周期及软件过程(或叫软件开 发模型)等方面的问题和基本概念进行介绍。,传统工程,新兴工程,气象工程,生物工程,2018/10/17,1.1 软件的概念与特点,1、软件,software,soft+ware,软制品 (软体),软件是计算机系统中与硬件相互依存的另一部分。它包括程序、数据及其相关文档的完整集合。其中相关文档分为面向用户的文档和面向开发者的文档。,固件(Fir

5、mware)就是写入EROM或EPROM(可编程只读存储器)中的程序,通俗的理解就是“固化的软件”,更简单的说,固件就是BIOS的软件,但又与普通软件完全不同,它是固化在集成电路内部的程序代码,负责控制和协调集成电路的功能。,2018/10/17,2、软件特点,. 软件是一种逻辑实体,而不是具体的物理实体,. 软件的生产与硬件不同 ,无明显制造过程,. 在软件的运行和使用期间,没有硬件那样的机械 磨损,老化问题,磨合调整,磨损用坏,修改点,实际曲线,理想曲线,2018/10/17,定制的且本身是复杂的(逻辑结构复杂,解决问题复杂, 相当多的软件都涉及到社会因素)开发与运行受制于计算机硬件,有依

6、赖性至今尚未完全摆脱手工的开发方式软件的成本相当昂贵,软件技术的发展落后于需求,硬、软件成本比例的变化,年份,成本%,软件,硬件,2018/10/17,3、软件的分类,(1) 按软件的功能进行划分,2018/10/17,支撑软件,2018/10/17,(2)按软件的规模进行划分,2018/10/17,(3)按软件服务对象划分,(4)按软件工作方式划分实时软件:收到请求中断后立即响应分时软件:按时间片响应多个联机用户交互式:一问一答式批处理软件:一批数据一次性地处理,(5)按使用的频度划分一次使用:比如验证需求、采集数据的软件,如人口普查软件,火箭发射软件等。频繁使用:,(6)按软件失效的影响划

7、分高可靠性:军事、金融 一般可靠性:,4、软件的发展(伴随着计算机硬件系统4个不同的发展阶段而发展),计算机软件发展的4个阶段,2018/10/17,程序,3、软件的演变(即从传统软件开发到现代软件开发),软件,软件产品,传统软件开发,现代软件开发,软件危机:计算机软件的开发和维护过程中所遇到的一系列严重问题。(正常、不正常运行软件都具有这种问题),1.2.1 软件危机的介绍,1.2 软件危机,IBM 公司研发初期的OS/360,共约100万条指令,花费了5000个人年;经费达数亿美元,而结果却令人沮丧,错误多达2000 个以上,系统根本无法正常运行。OS/360 系统的负责人Brooks 这

8、样描述开发过程的困难和混乱:“像巨兽在泥潭中垂死挣扎,挣扎得越猛,泥浆沾得越多陷入更深,最后没有一个野兽能够逃脱淹没在泥潭中的命运” 。,案例1-1,1)对软件开发成本和进度的估计常常很不准确; 2)用户对完成的软件系统不满意的现象经常发生; 3)软件产品的质量往往靠不住;,软件危机的典型表现:,4)软件常常是不可维护的; 5)软件通常没有适当的文档资料; 6)软件成本在计算机系统总成本中所占的比例逐年上升; 7)软件开发生产率提高的速度跟不上计算机应用的发展趋势。,1.2.2 产生软件危机的原因,1)软件本身特点造成; 2)软件开发与维护的方法不正确。,主要表现:(a)忽视软件需求分析;(b

9、)认为软件开发就是写程序并使之运行;(c)轻视软件维护;,在软件开发的不同阶段进行修改需要付出的代价很不相同:,1)技术方法。推广使用在实践中总结出来的开发软件的成功技术和方法,并研究探索更有效的技术和方法; 2)开发工具。开发和使用更好的软件工具; 3)组织管理。良好的组织管理措施。,1.2.3 解决软件危机的途径,为了解决软件危机产生的问题,软件工程与方法学逐渐形成,然后出现了两个相互相承又各有侧重的学科:1)软件工程学:主要应用工程的方法和技术研究软件开发与维护的方法、工具和管理的一门交叉学科。2)程序设计方法学:主要应用数学的方法研究程序的性质以及程序设计的理论和方法的学科。,1.3

10、软件工程,1.3.1 软件工程的介绍,1968年NATO会议:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。,1993年IEEE:软件工程是(1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程;(2)研究(1)中提到的途径。,1. 软件工程关注于大型程序的构造;2. 软件工程的中心课题是控制复杂性;3. 软件经常变化;4. 开发软件的效率非常重要;5. 和谐地合作是软件开发的关键;6. 软件必须有效地支持它的用户;7. 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。,软件工程的本质特性:,1.3.2 软件

11、工程的基本原理,1. 用分阶段的生命周期计划严格管理; 2. 坚持进行阶段评审; 3. 实行严格的产品控制; 4. 采用现代程序设计技术; 5. 结果能清楚地审查; 6. 开发小组的人员应该少而精; 7. 承认不断改进软件工程实践的必要性。,1.3.3 软件工程方法学通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(Methodology),也称为范型(Paradigm)。软件工程方法学的3要素:方法、工具和过程,2018/10/17,软件工程学,软件开发技术,软件工程管理,软件开发方法学,软件工具,软件工程环境,软件工程管理学,软件经济学,- 软件工程学的范畴,2、 软件工程

12、学,1. 传统方法学也称为生命周期方法学或结构化范型。结构化方法(Structure Method)有:1)结构化设计方法(SD);2)结构化分析方法(SA); 3)结构化分析与设计技术(SADT)4)JACKSON方法5)WARNIER方法,2. 面向对象方法学把数据和对数据的操作紧密结合起来的方法,模拟人类认识世界解决问题的方法和过程。面向对象的方法=对象(属性与服务的封装)+分类+继承+通过消息的通讯,1)适用于实时事物处理系统的有限状态机方法(FSM); 2)适用于并发软件系统的PETRI网方法; 3)以数学概念和理论为基础的形式化方法,如SDC公司的形式化开发方法FDM:(Forma

13、l Development Methodology)IBM公司的维也纳开发方法VDM:(Vienna Development Method ),3. 其他开发方法,1.3 软件生命周期,三个时期八个阶段:软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)三个时期组成,每个时期又进一步划分成若干个阶段。,2018/10/17,特点:上一阶段的变换结果是下一阶段的变换的输入,相邻两个阶段具有因果关系,紧密相联。,需求分析,问题定义,可性行研究,计划 时期,概要设计,详细设计,编 码,测 试,开发 时期,运行与维护,运 行 时 期,软件生存周期模型(瀑布模型 Waterfall Model

14、),1. 问题定义 任务:问题是什么 通过对客户的访问调查,系统分析员扼要地写出关于问题性质、工程目标和工程规模的书面报告。 经过讨论和必要的修改之后这份报告应该得到客户的确认。 结果: 关于系统规模和目标的报告书,2. 可行性研究 任务:有可行的解吗 系统分析员需要进行一次大大压缩和简化了的系统分析和设计过程。 研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。 结果: 系统的高层逻辑模型(数据流图、成本效益分析) 可行性论证报告(立即进行/推迟进行/不能或不值得进行),3. 需求分析 任务:必须做什么 主要是确定目标系统必须具备哪些功能。 系统分析员必须和用户密切配合,充分交

15、流信息,以得出经过用户确认的系统逻辑模型。 结果: 系统的逻辑模型(数据流图、数据字典、简要的算法描述) 用规格说明书准确地记录对目标系统的需求,4. 总体设计 任务:如何解决已提出的问题 设计出实现目标系统的几种可能的方案(低、中、高成本)。 用适当的表达工具描述每种方案,分析优缺点,推荐一个最佳方案,制定出实现最佳方案的详细计划。设计程序的体系结构。 结果: 可能的解法(系统流程图、成本效益分析) 推荐的系统体系结构(层次图或结构图),5. 详细设计 任务:怎样具体实现该系统 详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。 结果: 每个模块的算法和数据结构(程序流程图、PAD

16、图、N-S图等)。,6. 编码和单元测试 任务:得到正确的程序模块 选取一种适当的高级程序设计语言(必要时用汇编语言),把详细设计的结果翻译成用选定的语言书写的程序; 并且仔细测试编写出的每一个模块。 结果: 代码和测试报告,7. 综合测试 任务:得到符合要求的软件 通过集成测试、验收测试、现场测试、平行运行等方法对目标系统进一步测试检验。 通过对软件测试结果的分析可以预测软件的可靠性;反之,根据对软件可靠性的要求,也可以决定测试和调试过程什么时候可以结束。 结果: 测试计划、详细测试方案以及实际测试结果 完整一致的软件配置,8. 软件维护 任务:使系统持久地满足用户的需要 改正性维护,诊断和改正在使用过程中发现的软件错误; 适应性维护,修改软件以适应环境的变化; 完善性维护,根据用户的要求改进或扩充软件; 预防性维护,修改软件为将来的维护活动做准备。 每一项维护活动实质上是经历了一次压缩和简化了的软件定义和开发的全过程。 结果: 完整准确的维护记录,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号