现代软件工程教学.pptx

上传人:莉*** 文档编号:87437458 上传时间:2023-04-16 格式:PPTX 页数:45 大小:560.72KB
返回 下载 相关 举报
现代软件工程教学.pptx_第1页
第1页 / 共45页
现代软件工程教学.pptx_第2页
第2页 / 共45页
点击查看更多>>
资源描述

《现代软件工程教学.pptx》由会员分享,可在线阅读,更多相关《现代软件工程教学.pptx(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、从软件到软件工程:进入一个新的境界-1生命周期:软件工程的基本思路-2技术与方法:软件工程的基本过程-3软件企业的现代软件工程实践-4第一章 现代软件工程概述第1页/共45页第一部分 现代软件工程的基本概念第三章软件工程的技术与方法面向过程的分析和设计方法-3.1面向数据的分析和设计方法-3.2面向对象的分析和设计方法-3.3软件工程的工具和环境-3.4第2页/共45页软件开发方法是软件工程的一个组成部分,在软件工程早期,是软件工程的核心内容软件开发方法主要指:开发步骤(每一步相应的目标、要求和结果)开发工具和技术(采用的分析和设计工具和技术)开发的结果与形式(使用的文档和符号)开发过程和方案

2、的评价标准软件开发方法的提出和逐步完善,是软件从作坊到“工程化”生产的重要转变传统软件工程经历了以下一些开发方法的演变:面向过程的分析和设计方法面向数据的分析和设计方法面向对象的分析和设计方法第3页/共45页3.1面向过程的分析和设计方法结构化程序的特征:l控制结构仅由顺序、选择和重复(或称为迭代)等结构复合而成;l可以自底向上地逐步抽象,最终抽象成一个函数型结点;l每个结点(控制流程图中的一个结点)都有单一入口与单一的出口,从出口到入口,都存在一条经过该结点的路径。所以,结构化程序的编写,是抽象问题的逐步展开过程,结构化程序的阅读,是问题的逐步抽象的过程 l结构化程序设计倡导的原则:l遵行结

3、构化程序设计的约定;l保持良好的程序书写风格;l按照一定的书写格式(如:缩进、排列、注解等)。第4页/共45页结构化分析与设计的来源:结构化程序设计结构化程序设计的一个直接的研究结果,是要开发“模块化(函数过程)”的系统,从而导致面向过程的系统分析、设计方法的产生。模块化系统设计:模块化的主要思想,是对整个系统进行分解,分解成若干功能独立、能分别设计、编程和测试的模块,程序员可分工完成;开发一个模块,并不需要知道其他模块的内部结构和编程细节;模块之间的接口应尽量简洁、明确,模块应尽可能彼此隔离。对模块的要求:具有相对独立性,对系统的修改可限制在对个别模块的修改上,而不会影响系统的其他模块、也不

4、会影响系统的质量;具有可读性,每个模块的含义、职责是明确的、接口关系是清晰的、从而降低了系统的复杂性,阅读和理解都比较方便;具有易验证性,每个模块的正确实现,可以保证系统的正确。模块化程序设计研究“内聚与偶合度”问题,有7种内聚和7种偶合。3.1面向过程的分析和设计方法第5页/共45页程序的模块化,很自然的导致对系统结构的结构化要求:l系统结构是指:系统内各组成要素之间的相互联系、相互作用的框架。l结构化方法就是:强调系统结构的合理性。l结构化设计方法的原则是:l分解和抽样;l模块的独立性;l信息屏蔽等。l针对系统不同阶段,结构化方法有:l结构化设计l结构化编程l结构化测试等3.1面向过程的分

5、析和设计方法第6页/共45页Parnas方法最早的软件开发方法是由D.Parnas在1972年提出的。由于当时软件在可维护性和可靠性方面存在着严重问题,因此Parnas提出的方法是针对这两个问题的。首先,Parnas提出了信息隐蔽原则:在概要设计时列出将来可能发生变化的因素,并在模块划分时将这些因素放到个别模块的内部。这样,在将来由于这些因素变化而需修改软件时,只需修改这些个别的模块,其它模块不受影响。信息隐蔽技术不仅提高了软件的可维护性,而且也避免了错误的蔓延,改善了软件的可靠性。Yourdon方法 1978年,E.Yourdon和L.L.Constan-tine提出了结构化方法,即SASD

6、方法,也可称为面向功能的软件开发方法或面向数据流的软件开发方法。1979年TomDeMarco对此方法作了进一步的完善。Yourdon方法是80年代使用最广泛的软件开发方法。它首先用结构化分析(SA)对软件进行需求分析,然后用结构化设计(SD)方法进行总体设计,最后是结构化编程(SP)。这一方法不仅开发步骤明确,SA、SD、SP相辅相成,一气呵成,而且给出了两类典型的软件结构(变换型和事务型),便于参照,使软件开发的成功率大大提高,从而深受软件开发人员的青睐。3.1面向过程的分析和设计方法第7页/共45页传统软件工程把软件的生命周期定义为6个阶段:问题定义与可行性研究、需求分析、软件设计、编码

7、、测试、运行与维护问题定义与可行性研究是指系统分析员通过对系统实际用户、使用管理部门、相关部门及人员进行的实际调查,搞清楚“问题”的背景、目的是什么?然后,据此提出关于“问题”的性质、工程目标、规模、相关联系等项目的基本情况,进行可行性分析,编制开发计划。在问题定义和分析阶段,结构化分析方法为系统分析人员,给出了一组帮助分析以产生功能规约的原理和技术。这组技术最早是从IBM的输入-加工-输出(IPO)开始、以后发展为层次IPO(HIPO),是80年代最流行的方法。3.1面向过程的分析和设计方法第8页/共45页结构化分析的主要技术有:u数据流图和控制流图技术:层次方框图、Warnier图、IPO

8、图u数据字典u结构化语言PDL(过程设计语言)u判定表和判定树等结构化分析的步骤是:u分析当前情况,做出反映当前物理模型的数据流图;u推导出等价的逻辑模型的数据流图;u设计新的逻辑系统,生成数据字典和基元描述;u建立人机接口界面,提出可供选择的目标系统的物理模型数据流图;u确定各种方案的成本和风险,据此对各种方案进行分析;u选择一种方案;u建立完整的需求规约。3.1面向过程的分析和设计方法第9页/共45页层次化模型结构图3.1面向过程的分析和设计方法第10页/共45页描述工具:结构化英语由简单的陈述句,判断语句,循环语句复合而成。可使用IFENDIF、DO CASEENDCASE、DO WHI

9、LEENDDO等关键字。IF customer does more than$50,000 buesiness THEN IF the customer wasnt in debt to us the last 3 months THEN discount is 15%ELSE(was in debt to us)IF customer has been with us for more than 20 years THEN discount is 10%ELSE(20 year OR less)SO discount is 5%ELSE(customer dose$50,000 OR les

10、s)SO discount is nil3.1面向过程的分析和设计方法第11页/共45页描述工具:决策树用图形方式(树型)描述加工逻辑。通常用来描述根据不同条件及其取值来选择的处理过程。3.1面向过程的分析和设计方法第12页/共45页判断表变量表判断表3.1面向过程的分析和设计方法第13页/共45页算法描述语言方法流程图伪码3.1面向过程的分析和设计方法第14页/共45页软件设计包括概要设计和详细设计二个阶段:在概要设计(总体设计)阶段,开发人员要回答需求分析中获得的系统目标,如何去实现,这个问题。(1)概要设计要体现对需求的完整实现;(2)概要设计要保证与需求的一致性;(3)概要设计能够达到

11、向需求的反向可追踪;(4)概要设计关注对系统结构设计的逻辑性、合理性和可扩展性;传统软件工程提出了很多设计方法,最主要的的面向结构的设计方法结构设计(SD)等。在详细设计阶段,是对概要设计进行细化,回答如何具体实现系统目标的问题。详细设计是面向具体程序编码,重点是编码规范。传统软件工程开发了HIPO(层次图加输入/输出处理)、结构图、PDL(过程设计语言)等工具。3.1面向过程的分析和设计方法第15页/共45页结构化设计给出一组帮助设计人员在模块层次上区分设计质量的原理与技术,它通常与结构化分析衔接起来使用。u结构化设计以数据流图为基础,得到软件模块结构u结构化设计方法适用于变换型和事务型结构

12、的目标系统u在整个设计过程中,从程序的结构出发,利用模块结构图表达程序模块之间的关系u构成模块结构图的主要成分有:u模块u调用和数据(参数)结构化设计的主要步骤是:u评审和细化数据流图u确定数据流图的类型u把数据流图映射到软件模块结构,设计出模块结构的上层u基于数据流图逐步分解高层模块,设计中下层模块u对软件模块结构进行优化,得到更为合理的软件结构u描述模块接口3.1面向过程的分析和设计方法第16页/共45页1.Jackson方法1975年,M.A.Jackson提出了一类至今仍广泛使用的软件开发方法。这一方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整的

13、程序结构图。这一方法对输入、输出数据结构明确的中小型系统特别有效,如商业应用中的文件表格处理。该方法也可与其它方法结合,用于模块的详细设计。Jackson方法有时也称为面向数据结构的软件设计方法。2.Warnier方法1974年,J.D.Warnier提出的软件开发方法与Jackson方法类似。差别有三点:一是它们使用的图形工具不同,分别使用Warnier图和Jackson图;另一个差别是使用的伪码不同;最主要的差别是在构造程序框架时,Warnier方法仅考虑输入数据结构,而Jackson方法不仅考虑输入数据结构,而且还考虑输出数据结构。3.1面向过程的分析和设计方法第17页/共45页面向过程

14、的系统分析和设计的例子业务需求描述:开发一个银行的活期存取款业务的处理系统:储户将填好的存/取款单和存折交给银行工作人员,然后由系统作以下处理;(1)业务分类处理:系统首先根据储户所填的存/取款单,确定本次业务的性质,并将存/取款单和存折交下一步处理;(2)存款处理:系统将存款单上的存款金额分别记录在存折和帐目文件中,并将现金存入现金库;最后将存折还给储户;(3)取款处理:系统将取款单上的取款金额分别记录在存折和帐目文件中,并从现金库提取现金;最后将现金和存折还给储户。要求:绘制该系统的数据流图和软件结构图。第18页/共45页顶层图面向过程的系统分析和设计的例子第19页/共45页一层图面向过程

15、的系统分析和设计的例子第20页/共45页二层图面向过程的系统分析和设计的例子第21页/共45页软件结构图面向过程的系统分析和设计的例子第22页/共45页小结:结构化方法的指导思想:围绕业务抽象和功能分解、以处理功能的实现,来构造软件系统系统是一些功能的相互联系、相互作用而构成的结构化方法的主要内容:结构化分析(SA)结构化设计(SD)结构化程序设计(SP)结构化方法的核心要点:自定向下逐步求精单入/出口评价:优点:简单实用、技术成熟、应用广泛缺点:对大型复杂的项目、不适用,难于解决需求变化、维护复杂的项目、不利于软件复用3.1面向过程的分析和设计方法第23页/共45页从面向过程,转换为面向数据

16、l面向数据的分析和设计方法,是面向结构方法的变形l面向数据的重点,是面向数据结构,而不是数据流l侧重点以分析信息流(信息流指信息内容和信息结构)为主。因此,面向数据的分析是从信息结构进行分析,产生数据结构图,再在此基础上,进行需求分析,导出软件的结构面向数据流的设计方法的基本思路1、变换流2、事务流3、设计过程3.2面向数据的分析和设计方法第24页/共45页数据库系统设计过程需求分析概念数据库设计逻辑数据库设计确定存储哪些数据,建立哪些应用,常用的操作及对象有哪些等对需求分析所得到数据的更高层的抽象描述将概念模型所描述的数据映射为某个特定的DBMS模式数据物理数据库设计第25页/共45页概念数

17、据库设计过程局部E-R模式确定公共实体类型合并两个局部E-R模式检查并消除冲突全全全全局局局局E E E E|R R R R模模模模式式式式设设设设计计计计还有未合并的局部模式?全局E-R模式优化无有第26页/共45页概念数据库设计过程合并实体类型消除冗余属性消除冗余联系全全全全局局局局E E E E|R R R R模模模模式式式式优优优优化化化化全局E-R模式逻辑数据库设计第27页/共45页概念数据库设计过程实例:为医院建E-R图,包括病人和医生,病人有病历记录病人病人医生医生门诊记录门诊记录姓名姓名 保险号保险号 身份证号身份证号治疗治疗姓名姓名专长专长病历病历名称名称日期日期结果结果第2

18、8页/共45页E-R模型向关系模式的转换第29页/共45页E-R模型向关系模式的转换实体 关系属性 关系的属性第30页/共45页3.3面向对象的分析和设计方法一、发展概述面向对象并非是一个新的概念,实际上它已有30多年的历史。寻其根源可追溯到60年代的挪威,当时挪威计算中心的Kristen Nygaard和Ole-Johan Dahl开发了一种称作Simula67的语言。Simula67首次引入了类、协同程序和子类的概念,这很象今天的面向对象语言。70年代中期,Xerox Palo Alto研究中心的研究人员设计了Smalltalk语言,该语言的每个元素都被当作一个对象来实现,其程序设计环境及

19、相关的各个方面都是面向对象的。第31页/共45页但是,面向对象的推广很慢。例如:Samlltalk的成果直到1981年8月因Byte杂志的介绍才为外界所知,许多软件开发人员了解Samlltalk时,都把它看作是一个窗口系统,而不是程序设计技术的一次革命。80年代,C成为很受欢迎的程序设计语言,它不仅可用在微机上,还可用在多种结构的系统和环境中。80年代早期,AT&T贝尔实验室的Bjarne Stroustrup把C语言扩展为支持面向对象程序设计的C+。在C+中,程序员可以在其熟悉的语言环境下学习掌握面向对象的程序设计技术,而不必去探究一种新的语言和环境。3.3面向对象的分析和设计方法第32页/

20、共45页二、研究领域目前国内外关于面向对象的研究领域主要在以下几个方面:1.理论:包括方法、面向对象设计的本质以及语义模型的研究。2.语言:包括现有面向对象的程序设计语言的研究、设计新的面向对象的程序语言,将面向对象的设计思想引入其它语言(如Ada,Prolog,Lisp,C,Pascal,Foxpro等)3.实现:包括体系结构的支撑、编译与解释、其它特殊技术等。4.环境:包括面向对象的软件开发环境的设计与实现。3.3面向对象的分析和设计方法第33页/共45页5.重用:为了实现重用,需要研究对象的规格说明等。6.原型:面向对象的设计方法如何用于实现快速原型。7.应用:将面向对象的设计方法用于商

21、业、教育及科学等实际问题的处理中。8.其它方面:将面向对象的设计方法用到数据库、操作系统、知识工程、人工智能、自然语言处理等其它领域。3.3面向对象的分析和设计方法第34页/共45页三、方法要点:出发点和基本原则是尽可能地模拟人类的思维习惯使问题描述空间与计算机的解空间尽可能保持一致。面向对象方法的要点是:(1)客观世界是由对象组成的、简单对象可以组合成更复杂的对象。(2)所有的对象都可以归为类,每个类都定义了一组数据和方法。数据是对象的静态属性、方法是对象可执行的操作,既类能提供的服务。(3)按照子类、父类的关系,可以把若干个类组成一个层次结构的系统,下层的类具有继承上层类的特性。(4)对象

22、之间只能通过传递信息进行通信。3.3面向对象的分析和设计方法第35页/共45页四、特点:已经形成了面向对象的开发方法:面向对象分析(OOA)面向对象设计(OOD)面向对象程序设计(OOP)软件开发阶段比较模糊。通常在分析、设计与实现阶段进行多次迭代对象与功能相比,更易于被人们理解、接受和掌握定义更稳定、修改更容易主要方法有:Coad/YourdonBoochOMTOOSE90年代提出了UML3.3面向对象的分析和设计方法第36页/共45页面向对象面向对象传统技术传统技术方法过程、函数或子例程实例变量数据消息过程或参数调用类抽象数据类型继承无类似技术调用处于系统控制之下调用处于程序员控制之下面向

23、对象与传统方法的比较第37页/共45页3.4软件工程的工具和环境工具(按功能分):1、软件开发工具需求分析工具设计工具测试工具2、软件维护工具版本控制文档分析逆向工程再工程3、软件管理与支持项目管理开发信息库配置管理软件评价第38页/共45页3.4软件工程的工具和环境按解决的问题分类程序设计环境系统合成环境项目管理环境按现有的软件开发环境的演变趋向分类以语言为中心的环境面向结构的环境工具箱环境基于方法的环境按集成化程度划分第一代第二代第三代第39页/共45页3.4软件工程的工具和环境环境:计算机辅助软件工程(Computer Aided Software Engineering,CASE)CA

24、SE的集成机制包括:数据集成工具间可交换数据界面集成工具具有相同的界面风格和交互方式控制集成工具激活后能控制其他工具的操作过程集成系统嵌入了有关软件过程的知识,根据软件过程模型 辅助用户启动各种软件开发活动平台集成工具运行在相同的硬件/软件操作系统下第40页/共45页3.4软件工程的工具和环境CASE工具的四个发展阶段:80年代软件自动化工具“孤立”发展,重点是自动生成,如:文档自动生成、报表自动生成等;80中期引入系统信息中心库(Repository),孤立的信 息有了交互环境,推动了分析、设计等上游阶段 开发工具的一体化,既:上游工具的集成;80后期应用程序开发和维护自动化工具与项目管理工

25、具 的结合;90年代确定了“统一使用开发支持工具、实现软件开发 全过程的自动化”的目标,展开了全面的攻关:信息一致性:引入“百科全书(Encyclopedia)的概念;结构可视性:图形开发工具软件工程化:引入人工智能(AI)工具第41页/共45页3.4软件工程的工具和环境软件开发环境的参考模型(ECMA,90年初提出):n数据存储服务用于命名和管理实体,建立它们之间的联系,通常由对象管理系统实现;n数据集成服务扩展了数据存储服务,包括:版本管理、配置管理、查询服务、状态控制、数据交换等服务,以适应于软件开发;n任务管理服务完成任务定义、任务执行、事务恢复、事件监视、角色管理以及任务历史信息管理等工作;n信息服务 提供软件工具与软件环境间的通信服务,包括:消息传递、工具注册;n用户界面服务支持用户界面的集成国内CASE的例子北大青鸟:数据集成/界面集成/控制集成今后软件工程的发现:方法学+CASE工具第42页/共45页3.4软件工程的工具和环境计算机辅助开发方法(CIS)第43页/共45页休 息本章结束,谢谢大家!下章介绍:软件企业的现代软件工程实践第44页/共45页感谢您的观看!第45页/共45页

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

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁