《软件工程模型与方法 01、软件工程概述.ppt》由会员分享,可在线阅读,更多相关《软件工程模型与方法 01、软件工程概述.ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件工程模型与方法 Models&Methods of SE第一章 软件工程概述肖丁肖丁 2本章内容本章内容u1.1 计算机软件u1.2 软件的发展和软件危机u1.3 软件工程u1.4 通信软件工程u1.5 软件工程知识体系31.1 计算机软件计算机软件u本节内容u1.1.1 软件的定义u1.1.2 软件的特点u1.1.3 软件的分类4引言引言uHello World u纸牌、挖地雷u文本编辑器Notepad/viWinword/WPSu图书馆信息管理系统/办公自动化系统u财务软件金蝶/用友u电信运营支撑系统计费系统、帐务系统呼叫处理/7号信令/网络管理系统u操作系统Dos/Windows/U
2、nix/Linuxu数据库管理系统问题:你们能实现么?在多长时间内能实现?采用什么样的技术实现?51.1.1 软件的定义软件的定义uIEEE定义:软件是计算机程序、规程以及运行计算机系统所需要的文档和数据。uWirth中指出:在结构化程序设计:程序算法数据结构在软件工程中:软件程序文档。u另一种对软件的公认解释是:软件是包括程序、数据及其相关文档的完整集合。程序是按照事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文材料。61.1.2 软件的特点软件的特点u软件是一种逻辑实体,具有抽象性。u软件开发过程中没有明显的制造过程。u不
3、存在机械磨损和老化问题,但存在软件退化问题。u软件的开发和运行受到计算机系统的约束和限制。u软件的开发至今未完全摆脱手工艺的开发方式。u软件是复杂的。实际需求的复杂性程序逻辑的复杂性u软件研制成本高,软件成本所占比例逐年增加。u软件投入运行时还涉及到许多社会因素。71.1.3 软件的分类软件的分类u根据软件服务对象的范围不同:通用软件:操作系统、数据库等;定制软件:企业ERP、卫星控制系统等;u根据软件完成功能所处的层次不同:系统软件中间件软件应用软件81.1.3 软件的分类软件的分类u系统软件:指能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效地工作的软件。操作
4、系统数据库管理系统设备驱动程序通信处理程序等。91.1.3 软件的分类软件的分类u中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,将注意力集中在自己的业务上,不必再为程序的移植而重复工作,从而大大减少了技术上的负担。u中间件软件:为了解决分布异构系统的集成问题而开发的软件,处于操作系统软件与用户的应用软件的中间,具有标准的接口和协议。101.1.3 软件的分类软件的分类u应用软件:在特定领域内开发,为特定目的服务的一类软件。商业数据处理软件工程与科学计算软件计算机辅助设计制造软件系统仿真软件智能产品嵌入软件医疗、制药软件事务管理、办公自动化软件计算机辅助教学软件计
5、算机网络软件111.1.3 软件的分类软件的分类u按照软件的规模:类别类别参加人员参加人员数数开发周期开发周期产品规模(产品规模(LOC)微型微型114周周0.5k小型小型116月月1k2k中型中型2512年年5k50k大型大型52023年年50k100k甚大型甚大型100100045年年1M(=1000k)极大型极大型20005000510年年1M10M121.1.3 软件的分类软件的分类u按软件工作方式不同:实时处理软件:电话交换系统/股票行情交易系统/网络游戏分时软件:操作系统交互式软件:MIS系统/网络聊天u按照支撑应用开发的工具类型可以将其划分为:支持软件开发过程的工具:Visual
6、 Studio/Eclipse支持软件维护过程的工具:Clear quest/Clear Case支持软件管理过程和支持过程的工具:Project/ROSE131.2 软件的发展和软件危机软件的发展和软件危机u本节内容u1.2.1 软件发展阶段u1.2.2 软件危机u1.2.3 软件危机的解决途径141.2.1 软件发展阶段软件发展阶段u程序设计阶段:20世纪50至60年代u程序系统阶段:20世纪60至70年代u软件工程阶段:20世纪70至90年代u现代软件工程阶段:20世纪90年代至今151.2.1 软件发展阶段软件发展阶段阶段段程序程序设计程序系程序系统(现代)代)软件工程件工程特点特点软
7、件所指程序程序及说明书程序、文档和数据程序设计语言汇编及机器语言高级语言软件语言软件工作范围程序编写包括设计和测试软件生存期需求者程序设计本人少数用户市场用户开发软件的组织个人开发小组开发小组及大中型软件开发机构软件规模小型中小型大中小型决定质量的因素个人程序技术小组技术水平管理水平开发技术和手段子程序/程序库结构化程序设计数据库、开发工具、开发环境、工程化开发方法、标准和规范、网络及分布式开发、面向对象技术、软件复用维护责任者程序设计者开发小组专职维护人员硬件特征价格高/存储容量小工作可靠性差降价、速度、容量及工作可靠性明显提高向超高速、大容量、微型化及网络化发展软件特征完全不受重视软件技术
8、的发展不能满足需求,出现软件危机开发技术有进步,但未获突破性进展,价高,未摆脱软件危机161.2.2 软件危机软件危机u20世纪60年代后,随着计算机软件应用领域增多,软件规模不断扩大,软件系统功能多,逻辑复杂,不断扩充,从而导致许多系统开发出现了不良的后果:系统存在大量错误,可用性和可靠性差;系统无法增加新功能,难于维护;系统无法按照计划时间完成;最严重的彻底失败。171.2.2 软件危机软件危机u所谓软件危机(Software Crisis)就是计算机软件在开发和维护过程中所遇到的一系列严重问题,具体表现在:软件开发成本难以估算,无法制定合理的开发计划;用户的需求无法确切表达;软件质量存在
9、问题;软件的可维护性差;缺乏文档资料;软件成本难以控制;181.2.3 软件危机的解决途径软件危机的解决途径u产生软件危机的原因:软件系统本身的复杂性;软件开发的方法和技术不合理;u程序设计方法学讨论程序的性质、程序设计的理论和方法u软件工程方法1968年提出运用工程化原则和方法组织软件开发工作,去解决软件危机191.3 软件工程软件工程u本节内容u1.3.1 软件工程定义u1.3.2 软件工程要素u1.3.3 软件工程的目标和原则u1.3.4 软件工程基本原理201.3.1 软件工程定义软件工程定义u1968年10月,Fritz Bauer首次提出了“软件工程”的概念:软件工程是为了经济地获
10、得能够在实际机器上高效运行的可靠软件而建立和使用的一系列好的工程化原则。uBoehm的软件工程定义:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。211.3.1 软件工程定义软件工程定义uFairley认为:软件工程学是为在成本限额以内按时完成开发和修改软件产品所需的系统生产和维护的技术和管理的学科。uIEEE计算机学会将“软件工程”定义为:应用系统化的、规范化的、定量的方法来开发、运行和维护软件,即:将工程应用到软件;对中各种方法的研究。221.3.2 软件工程要素软件工程要素u软件工程三要素:方法、工具和过程。方法:提供了“如何做”的技术工具:
11、提供了自动或半自动的软件支撑环境 过程:将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的 231.3.3 软件工程的目标和原则软件工程的目标和原则u软件工程的目标可概括为:生产具有正确性、可用性以及开销适宜的软件产品。u软件工程的最终目的是摆脱手工生产软件的状况,逐步实现软件研制和维护的自动化。241.3.3 软件工程的目标和原则软件工程的目标和原则u软件工程研究的内容:软件开发技术软件开发方法学开发过程模型开发工具软件工程环境 软件工程管理软件管理学软件工程经济学软件心理学等内容 251.3.3 软件工程的目标和原则软件工程的目标和原则u使用软件工程开发软件系统的过程
12、中,要坚持四项基本原则:选取适宜的开发模型;采用合适的设计方法;提供高质量的工程支持;重视开发过程的管理;261.3.4 软件工程管理的基本原理软件工程管理的基本原理u用分阶段的生命周期计划严格管理 u坚持进行阶段评审 u实行严格的产品控制 u采用现代程序设计技术 u结果应能清楚地审查 u开发小组的人员应少而精 u承认不断改进软件工程实践的必要性 271.3.5 软件工程开发的一般原理软件工程开发的一般原理u抽象:抽取事物最基本的特性和行为,忽略非本质细节。u信息隐藏:要求访问与实现分离,将实现细节隐藏,使模块访问接口尽量简单。u模块化:有助于信息隐藏和抽象,有助于表示复杂的系统。u局部化:要
13、求在一个模块内集中逻辑上相互关联的计算资源,保证模块间具有松散的耦合关系,这有助于控制问题的复杂性。u确定性:软件开发过程中所有概念的表达应是确定的、无歧义性的、规范的。u一致性:整个软件系统(包括程序、文档和数据)的各个模块应使用一致的概念、符号和术语。u完备性:软件系统不丢失任何重要成分,可以完全实现系统所要求功能的程度。u可验证性:系统分解应遵循系统易于检查、测试、评审的原则,以确保系统的正确性。281.4 通信软件工程通信软件工程u本节内容u1.4.1 通信系统u1.4.2 通信软件u1.4.3 通信软件工程291.4.1 通信系统通信系统u通信系统的定义:是信息或其表示方式的时/空转
14、移。u通信系统基本组成:具有广泛的内涵,并有多个层次。301.4.2 通信网的组成通信网的组成u通信网硬件包括:用户终端设备 传输设备 交换设备u通信网软件:是通信网为所必需的一整套协议、标准,包括网路结构、信令方式、协议和接口、网络管理、技术体制标准等,是通信网实现通信服务和运行支撑的重要组成部分。311.4.3 通信网的功能通信网的功能u通信网系统是一个大网络分布式控制系统,具有以下三个基本功能:基本的传输和交换功能:要求高实时性和可靠性,信息交换主要进行通信链路汇聚、网路选择、物理编址、路由分析等。业务控制功能:在物理通信网上为用户提供电信业务的服务功能,如:语音服务、数据服务、增值业务
15、服务、智能网业务服务等。网路管理功能:网路管理是为保证在所有情况下,为使网路得到最大程度的利用,而对通信网路进行监视、测量,必要时有效地控制业务量的工作。321.4.4 通信软件和特点通信软件和特点u凡是用来实现两个或多个实体(计算机、电信终端、交换设备等)之间相互通信的软件都可称为通信软件。电信软件:电话交换软件、移动通信软件、智能网软件等;计算机网络软件:网络协议软件、网络应用软件;u通信软件具有以下几个特点:实时性强生命周期长、维护升级频繁并发性强结果可预期跨系统通信离散性331.4.5 通信软件类型通信软件类型u电信软件类型341.4.6 通信软件工程通信软件工程u通信软件工程就是将软
16、件工程知识应用于通信领域,结合通信软件的特点并遵循软件工程的三要素以实现:通信软件工程过程;通信软件的开发方法;通信软件的开发工具:分析阶段采用UML来表达软件的功能需求和信息需求;用MSC图描述系统与外部环境的交互以及内部对象之间的信息交互;在系统设计阶段采用SDL来形式化描述系统设计;实时软件开发工具:Telelogic Tau 351.5 软件工程知识体系软件工程知识体系u本节内容u1.5.1 软件工程知识体系指南简介u1.5.2 软件工程知识体系知识域361.5.1 软件工程知识体系软件工程知识体系uSWEBOK是IEEE计算机学会的职业实践委员会(Professional Practices Committee)主持的一个项目,目的:促进世界范围内对软件工程的一致观点;阐明软件工程相对其它学科(如计算机科学、项目管理、计算机工程和数学等)的位置,并确立它们的分界;刻画软件工程学科的内容;提供使用知识体系的主题;为开发课程表和个人认证与许可材料提供一个基础;371.5.2 软件工程知识体系知识域软件工程知识体系知识域381.5.2 软件工程知识体系知识域软件工程知识体系知识域