ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:554.46KB ,
资源ID:28051210      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28051210.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(软件工程专题.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

软件工程专题.docx

1、软件工程专题软件工程专题1、软件工程知识1.1概述软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。其目的是提高软件生产率、提高软件质量、减低软件成本。软件工程是1968年在德国的NATO会议上提出的,希望用工程化的原则和方法来克服软件危机;而软件危机就是软件开发和维护过程中的各种问题,由于软件开发阶段缺乏好的方法的指导和好的工具的辅助,而且缺少有关的文档,使得大量的软件难以维护。软件生命周期是指由软件定义、软件开发和软件维护等阶段组成的全过程,反映软件生存期内各种工作得组织以及各个阶段如何衔接。下表归纳了软件生存周期各个阶段的任务、参与人员和产生文档

2、。常见的软件开发模型有瀑布模型、演化模型、螺旋模型和喷泉模型等。软件由计算机程序、数据及文档组成,同时与硬件、数据库人、过程等共同构成计算机系统。软件工程包括三个要素:方法、工具和过程。主要的软件开发方法有以下几种方法:生命周期法:命周期法认为:每一个软件系统都有一定的生命周期。软件的生命周期是指一个软件系统从其提出、调查到分析、设计和有效使用,直至被淘汰或取代的整个期间。软件生命周期法就是按软件生命周期的各个阶段划分任务,按一定的规则和步骤,有效地进行软件开发的方法。通常一个软件系统的生命周期可分为五个阶段:准备阶段、分析阶段、设计阶段、实施阶段、运行与维护阶段原型法:原型法是先根据用户的最

3、主要要求,开发出能实现系统最基本功能的一个原型,再根据用户对原型使用与评价的意见,反复修改完善原型,直到等到用户满意的最终系统为止。原型法分4个阶段:确定用户需求;设计原型;使用、评价原型;修改、完善原型。1.2软件分析软件开发模型:瀑布模型;演化模型(原型法);螺旋模型;喷泉模型(迭代和无间隙);软件成本模型;可行性分析的任务是从技术上、经济上、使用上、法律上分析需解决的问题是否存在可行的解。需求分析是软件生存周期中相当重要的一个阶段。需求分析主要是确定待开发软件的功能、性能、数据、界面等要求。具体有以下几点: 确定软件系统的综合要求 分析软件系统的数据要求 导出系统的逻辑模型 修正项目开发

4、计划 如有必要,可开发一个原型系统需求分析的基本原则是能够表达和理解问题的信息域和功能域;以层次化的方式进行分解和不断细化;要给出系统的逻辑视图和物理视图;描述软件需求的方法:功能层次模型:一般来讲就是系统的功能图,模块分布图等描述整个系统的功能的分布和功能的层次结构;数据流模型:就是以数据流为着眼点的分析方法得到的模型,主要通过数据在整个系统的流动情况来确定系统的主要功能主线和流程;控制流模型:通过了解和界定系统中控制线,通过控制流的走向和控制的对象来确定系统的功能分布和控制与被控制的关系;结构化分析(SA)方法是一种面向数据流的需求分析方法,它适用于分析大型数据处理系统。结构化分析方法的基

5、本思想是自顶向下逐层分解,这样做可以把一个大问题分解成若干个小问题,经过多次逐层分解,每个最底层的问题都是足够简单、容易解决的,这个过程就是分解的过程。结构化方法的分析结果由数据流图DFD、数据词典和加工逻辑说明几个部分组成。其中,DFD的基本成分有数据流、加工、文件和源/宿。 画数据流图的基本步骤:自外向内、自顶向下、逐层细化、完善求精; 数据流图的父图与子图要平衡,即输入和输出的数据流一致; 数据流图中的每个加工至少有一个输入数据流和一个输出数据流; 局部的数据存储不画出来,只有当局部数据存储作为某些数据加工之间的数据接口才画出,这有利于信息隐蔽; 画数据流的时候不画控制流,两者的区别就是

6、控制流中没有数据; 一个加工的数据流与输出流不应该同名; 允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出流向两个不同的加工; 保持数据守恒:一个加工的所有输出数据必须能从该加工的所有的输入流中获得; 在整套数据流图中,每个文件都必须既有读文件的数据流也有写文件的数据流;软件开发过程中的软件工程原则(8个): 抽象;自顶向下、逐层细化; 信息隐蔽和数据封装; 模块化;局部化; 确定性;一致性和标准化; 完备性和可验证性;软件工程基本原理(7个): 按软件生存周期分阶段指定计划并认真实施; 坚持进行阶段评审; 坚持严格的产品控制; 使用现代程序设计技术; 明确责任,使得工作

7、结果能够得到清楚的审查; 用人少而精;不断改进开发过程;1.3软件设计软件设计原则:软件设计的原则对提高软件的设计质量有很大的帮助。抽象抽象是指忽视一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。过程抽象和数据抽象是常用的两种主要抽象手段。模块化模块化是指将一个待开发的软件分解成若干个小的简单的部分模块,每个模块可独立地开发、测试、最后组装成完整的软件。这是一种复杂问题的“分而治之”的原则。模块是指执行某一特定任务的数据结构和程序代码。一个模块有它的外部特征和内部特征。信息隐蔽信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,

8、定义每一个模块时尽可能少地显露其内部的处理。信息隐蔽原则对提高软件的可修改性、可测试性和可移植性都有重要的作用。模块独立模块独立是指每个模块完成一个相对独立的子功能,并且与其他模块之间的联系简单。衡量模块独立程度的度量标准有两个:耦合和内聚。耦合是指模块之间联系的紧密程度。耦合度越高则模块的独立性越差。按耦合度从低到高依次有7种耦合方式。非直接耦合(独立运行)数据耦合(用参数表传递简单数据) 标记耦合(传递数据结构或者一部分) 控制耦合(传递的信息包括控制模块的信息)外部耦合(模块与软件之外的环境有关) 公共耦合(多个模块引用同一全局的数据区)内容耦合(访问内部数据,代码重叠或者多个入口)内聚

9、是指模块内部各元素之间联系的紧密程度内聚度越低模块的独立性越差。按内聚度从低到高依次有7种内聚种类。偶然内聚(模块完成的多个任务,任务之间的关系松散) 逻辑内聚(模块完成逻辑相关的一组任务)瞬时内聚(模块的所有任务必须在同一时间间隔内执行)过程内聚(模块的处理元素相关而且按照特定的次序执行)通信内聚(模块的所有元素集中在一个数据结构区域上)顺序内聚(模块的处理元素相关,必须顺序执行)功能内聚(模块完成单一的功能,各个部分协调工作,而且不可缺少)模块分解原则:满足信息隐蔽;尽量内聚度高,模块间偶合度低; 模块大小在(50-100语句); 模块调用深度不能过大;模块的扇入(直接调用该模块)应尽量大

10、,扇出(直接调用下级模块数)不宜过大; 设计单入口和单出口的模块; 模块的作用域应在控制域之内:作用域:受模块内一个判定影响的所有的模块的集合;控制域:该模块本身和被该模块直接或间接调用的所有的模块的集合;模块的功能应是可以预测的,相同输入得到相同输出结构化设计方法结构化设计(SD)方法是一种面向数据流的设计方法,它可以与SA方法衔接。结构化设计采用结构图(SC)来描述程序的结构。其基本成分有模块、调用和输入/输出数据。结构图:条件调用循环调用在需求分析阶段用SA方法产生了数据流图(DFD)。面向数据流的设计可以方便的将DFD转换成程序结构图。DFD从系统的输入数据流到系统的输出数据流的一连串

11、连续变换形成一条信息流。DFD的信息流大体可分为两种类型:变换流和事务流。与之对应的也存在两种分析,变换分析和事务分析。变换分析是从变换流型的DFD导出程序结构图,而事务分析则是从事务流行型的DFD导出程序结构图。SD方法的具体设计步骤为: 复查并精化数据流图 确定DFD的信息流类型根据信息流类型分别将变换流或事务流转换成程序结构图根据软件设计的原则对程序结构图作改进结构化程序设计结构化程序(SP)设计采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。结构化程序设计的描述工具主要有图形描述工具、语言描述工具和表格描述工具。常用的图形描述工具有程序流程图、盒图(NS图)和问题分析图(PAD

12、)。典型的语言描述工具是PDL(programdesignlanguage)。典型的表格描述工具是判定表和判定树。面向数据结构的Jackson方法也十分常用:Jackson方法是以数据结构为设计基础,设计目标是得出对程序处理过程的描述,其设计过程是从描绘数据结构的Jackson图推导出描绘程序结构的Jackson图。这种方法最适合于详细设计阶段使用。Jackson方法的具体设计步骤为:分析并确定输入和输出的数据的逻辑结构,并用Jackson图表示 找出输入数据结构与输出数据结构间有对应关系的数据单元 从描述数据结构的Jackson图导出描述程序结构的Jackson图软件编码:根据详细设计说明书

13、编写程序,为开发项目选择程序设计语言需要考虑的因素有应用领域、算法和计算的复杂性、软件运行环境、用户需求、数据结构和开发人员的水平。软件的设计质量与程序设计语言的技术性能无关,但在程序设计转向程序代码时,转化的质量受语言性能的影响。好的程序应该具有模块化结构,系统应该有较高的模块独立性。从应用领域看,COBOL适合商业领域;FORTRAN适合科学计算;PROLOG和LISP适合人工智能领域;SMALLTALK、C+、JAVA是面向对象语言;C是开发系统的程序设计语言;1.4软件测试对源程序最基本的质量要求是正确性和可靠性,此外还很注重软件的易使用性、易维护性和易移植性。软件测试的工作量约占软件

14、开发总工作量的40%以上,其目的是尽可能多的发现软件产品(主要是指程序)中的错误和缺陷。软件测试是自底向上,逐步集成的过程,低一级测试为上一级测试准备条件;测试的关键是测试用例的设计,其方法可分为两类。白盒测试:白盒测试是根据程序的内部逻辑来设计测试用例,常用的技术是逻辑覆盖,即考察用例测试数据运行被测程序时对程序逻辑的覆盖程度。主要的覆盖标准有6种:I.语句覆盖指选择足够的测试用例,使被测语句的每个语句至少执行一次。II.判定覆盖指选择足够的测试用例,使每个判定的所有可能结果至少出现一次。III.条件覆盖指选择足够的测试用例,使判定中的每个条件的所有可能结果至少出现一次。IV.判定/条件覆盖

15、指选择足够的测试用例,使判定中的每个条件的所有可能结果至少出现一次,并且每个判定中条件结果的所有可能组合也至少出现一次。V.条件组合覆盖指选择足够的测试用例,使每个判定中条件结果的所有可能组合至少出现一次。VI.路径覆盖指选择足够的测试用例,使流程图中的每条路径至少经过一次。黑盒测试:黑盒测试时根据规格说明所规定的功能来设计测试用例,它不考虑程序的内部结构和处理过程。常用的黑盒测试技术有: 等价类划分 边值划分 错误猜测软件测试的主要步骤有单元测试、集成测试和确认测试。单元测试:主要用来发现编码和详细设计中产生的错误,一般在编码阶段,采用白盒测试。集成测试(也称组装测试):主要用来发现设计阶段

16、产生的错误,是对各模块组装而成的程序进行测试,主要检查模块间的接口和通信,采用黑盒测试。集成测试按集成方式又可分成非渐增式集成和渐增式集成,而渐增式集成又可分成自顶向下集成和自底向上集成。确认测试:检查软件的功能、性能和其他特征是否与用户需求一致,它以需求规格说明书作测试为依据,采用黑盒测试Alpha测试是在开发者的现场由客户来实施的,从用户角度和环境下进行;Beta测试是在开发者不在现场下测试,由软件最终用户实施;使用各种测试方法的综合策略: 在任何情况下都必须使用边界值分析方法,用这种方法设计出测试用例发现程序错误的能力最强; 必要时用等价类划分方法补充一些测试用例; 用错误推测法再追加一

17、些测试用例 对照程序逻辑,检查已有测试用例的逻辑覆盖程度 如果程序的功能说明中含有输入条件的组合情况,则选用因果图法1.5软件开发工具与环境(CASE)用来辅助软件开发、运行、维护、管理和支持等过程中的活动的软件称为软件工具,通常也称为CASE(计算机辅助软件工程)工具。整个软件开发过程要使用很多开发工具,其中包括分析工具、设计工具、编程工具、测试工具、维护工具等等。软件开发工具是指支持软件产品开发的软件系统,它由软件工具集和环境集成机智构成。工具集包括支持软件开发相关过程、活动、任务的软件工具;环境集成机智为工具集成和软件开发、维护和管理提供统一的支持。软件开发环境是把一组相关的工具集成在环

18、境中,提供数据集成、控制集成和界面集成等机制。其中: 数据集成机制:提供统一的数据模式和数据接口规范,需要相互协同的工具通过这种统一的规范交换数据。数据集成可由共享文件、共享数据结构或共享信息库等不同的层次; 控制集成机制:支持各工具或各开发活动之间的通信、切换、调度和协同工作,并且支持软件开发过程的描述、执行和转接;通常消息传送的方式实现控制的集成。界面集成机制使这些工具具有统一的界面风格,从而为软件开发、维护、管理等过程的各项活动提供连续的、一致的全方位支持。集成型软件开发环境由工具集和环境集成机制组成,这种环境应该具有开放性和可剪裁性;环境集成机制的核心是环境数据库。1.6软件维护和软件

19、管理软件开发项目管理基础知识(时间管理、成本管理、质量管理、人力资源管理、风险管理等)及其常用管理工具软件维护阶段是指从软件交付使用到软件被淘汰为止的整个时期,它是在软件交付使用后,为了改正软件中隐藏的错误,或者为了使软件适应新的环境,或者为了扩充和完善软件的功能或性能而修改软件的过程。根据引起软件维护的原因,软件维护通常可分成改正性维护、适应性维护、完善性维护、预防性维护。软件管理工作涉及到软件开发工作的方方面面,其直接对象包括人、财、物,简单地说,人就是指软件开发人员,财就是指项目经费,物就是指软件项目。也许还没有关于这方面的专门理论,但在工商管理领域已经有十分成熟的管理学理论,他山之石,

20、可以攻玉,所以我们完全可以引进到软件项目方面的管理。作为软件管理人员,应该站在高处来俯瞰整个项目,如果有不识庐山真面目的感觉就不太好了。有了俯瞰全局的意识这一前提,采用适当的管理技术,项目开展就容易罗。软件项目的管理工作可以分位四个方面:软件项目的计划、软件项目的组织、软件项目的领导和软件项目的控制.1.7面向对象技术1.7.1面向对象的基本概念面向对象(object-oriented,OO)方法是以客观世界中的对象为中心,其分析和设计思想符合人们的思维方式,分析和设计的结果与客观世界的实际比较接近,容易被人们所接受。下面列举几个面向对象设计方法中的重要术语,它们构成面向对象的程序设计语言的核

21、心。对象(Object)对象是和有数据及可对这些数据施加的操作结合在一起所构成的独立单位的总称。一个对象通常可由对象名、属性和操作三部分组成。对象的划分判定标准:1、子对象之间独立性要高,即耦合度尽量达到最低,(理想的情况是达到组件化的程度);2、子对象相对其他划分方法,更易于处理。所以对于复杂的大系统,一般都要经过多次的尝试,以尽量能找到较优的划分方案。对于比较简单的系统,E-R转换也能的到较为满意的划分。实例(Instance)实例是由某个特定类所描述的一个对象。类(Class)类是一组具有相同属性和相同操作的对象的集合。类是面向对象的程序设计语言提供的可再用软件成分。方法(Method)

22、对象所能执行的操作称为方法。方法是类中定义的函数,描述对象执行操作的算法。消息(Message)消息是要求某个对象执行类中定义的某个操作的规格说明。一个消息通常包括接受对象名、调用的操作名和适当的参数(如有必要)。主要特点:封装性封装性是一种信息隐蔽技术,它使系统分析员能够清晰地标明他们所提供的服务界面,用户和应用程序员则只看得见对象提供的操作功能(即封装面上的信息),看不到其中的数据或操作代码细节。多态性多态性是指同一个操作作用于不同的对象可以有不同的解释,产生不同的执行结果。继承性继承是指在某个类的层次关联中,不同的类共享属性和操作的一种机制。一个父类可以有多个子类。父类描述了这些子类的公

23、共属性和操作,子类中还可以定义其自己的属性和操作。如果一个子类只有唯一的一个父类,这种继承称为单一继承。如果一个子类有多个父类,可以从多个父类中继承特性,这种继承称为多重继承。分布式对象DistributedObject在发布实施角度上看,对象可分为三种:本地对象,远地对象,虚拟对象。本地对象LocalObject:指分布在同一个系统中的对象,互称为本地对象远地对象RemoteObject:指分布在不同系统中的对象(同一个群体系统)。虚拟对象VirtualObject:不同于本地和远地对象,虚拟对象不属于真实的对象,而是一个虚设的类型。真正的操作不在虚拟对象本身,只是远地对象在本地的映射。本地

24、和远地对象是相互的关系。而虚拟对象只是一种映射,用于关联本地和远地对象,起到分布和负载均衡的作用。面向对象数据库技术:是面向对象技术和数据库技术的有机的结合,它有着关系数据库没有的优点。面向对象数据库(OODB)+关系数据库(RDB)对象关系数据库(ORDB)面向对象的特征:类和继承性,对象及对象标识、封装性、信息/实现隐蔽、状态保持,消息,多态性,一般性。 面向对象技术的出现正是弥补了前述关系模型的固有局限性。 对象数据模型是有很强的描述复杂对象的能力,能包含更多的数据语义信息。 面向对象方法可很方便的表示嵌套对象,因而很容易表达层次数据,这点与RDB形成鲜明的对比,RDB强迫用户用多个关系

25、的元组表达层次数据。 面向对象方法可方便的构造各种类型、而RDB不提供增加用户定义数据类型的手段。1.7.2面向对象的分析方法面向对象的系统分析设计,看起来其实也很简单,步骤大概如下:(1)从项目开始,进行步骤(2)。(2)对系统进行分析,如果它在一定的要求下可解决,则停止分析,进行设计;如果它在一定的要求下不可解决,则对它进行划分。(3)步骤(2)如果有分析结果,则对其中每一个子对象,进行步骤(2)。边界条件(也即上面提到的“一定要求”,对象划分的原则): 子对象之间独立性要高,即耦合度尽量达到最低,(理想的情况是达到组件化的程度); 子对象相对其他划分方法,更易于处理(如实现,维护等)。当

26、前常见的面向对象的方法很多,下面简单介绍三种:PeterCoard和EdwardYourdon的OOA和OOD方法OOA(面向对象分析)模型由5个层次和5个活动组成:5个层次:主题层、对象类层、结构层、属性层、服务层5个活动:标识对象类、标识结构、定义主题、定义属性、定义服务在这种方法中定义两种对象类之间的结构:分类结构反映了一般与特殊的关系组装结构反映了对象之间整体与部分的关系OOA中的5个层次和5个活动继续贯穿在OOD(面向对象设计)过程中。OOD模型由4个部分,即: 问题域 人机交互 任务管理 数据管理Booth的OOD方法Booth认为软件开发是一个螺旋上升的过程。在螺旋上升的每个周期

27、中,有4个步骤: 标识类和对象 确定它们的含义 标识它们之间的关系说明每一个类的界面和实现OMT方法OMT(对象建模技术)定义了3种模型: 对象模型描述系统中对象的静态结构、对象之间的关系、对象的属性、对象的操作。它为动态模型和功能模型提供了基本的框架。用对象图表示。 动态模型:描述与时间和操作顺序有关的系统特征激发事件、事件序列、确定事件先后关系的状态以及事件和状态的组织。用状态图表示。 功能模型:描述与值的变换有关的系统特征功能、映射、约束和函数依赖。用数据流图表示。OMT方法有4个步骤分析:这是OMT方法的第一步,其目的是建立可理解的现实世界模型。系统设计:确定整个系统的体系结构,形成求

28、解问题和建立解答的高层次策略。对象设计:在分析的基础上,对象设计阶段建立基于分析模型的设计模型,考虑实现的细节。实现:将对象设计阶段开发的对象类及其关系转换成特定的程序设计语言、数据库或硬件的实现。1.7.3面向对象设计方法面向对象的类设计相关原则:1.开闭原则(theOpenClosedPrincipleOCP)一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。因此在进行面向对象设计时要尽量考虑接口封装机制、抽象机制和多态技术。该原则同样适合于非面向对象设计的方法,是软件工程设计方法的重要原则之一。2.替换原则(theLiskovSubstitutionPrincipleLSP)子类应当可以替换父类并出现在父类能够出现的任何地方。这个原则是Liskov于1987年提出的设计原则。它同样可以从BertrandMeyer的DBC(DesignbyContract)的概念推出。3.依赖原则(theDependencyInversionPrincipleDIP)在进行业务设计时,与特定业务有关的依赖关系应该尽量依赖接口和抽象类,而不是依赖于具体类。具体类只负责相关业务的实现,修改具体类不影响与特定业务有关的依赖关系。为此,我们在进行业务设计时,应尽量在

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1