2023年-软件工程笔记.docx
《2023年-软件工程笔记.docx》由会员分享,可在线阅读,更多相关《2023年-软件工程笔记.docx(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程概论1、软件危机1)、软件工程的目的:倡导以工程的原理、原则和方法进行软件开发,以解决当时出现的软 件危机。2)、软件危机:指在计算机软件开发和维护过程中所遇到的一系列问题。A、如何开发软件以满足对软件日益增长的需求。B、如何维护数量不断增长的已有软件。3)、软件危机的主要表现形式A、软件开发成本高,研制进度无法准确估计,用户不满意。B、软件产品的可靠性得不到保证。C、软件产品难以维护。D、软件发展跟不上硬件的发展和用户的要求,硬件成本逐年下降,软件成本越来越昂贵。2、软件工程概念1)、软件:计算机系统中的程序及其文档。程序是计算任务的处理对象和处理规则的描述; 文档是为了便于理解程序
2、所需的阐明性资料。细言之,软件有三层含义: A、个体含义:即指计算机系统中的程序及其文档。B、整体含义:即指在特定计算机系统中所有上述个体含义下的软件的总称。C、学科含义:即指在研究、开发、维护以及使用前述含义下的软件所涉及的理论、方法、 技术所构成的学科。2)、工程:将理论和所学的知识应用于实践的科学。3)、软件工程:应用计算机科学、数学及管理科学等原理,开发软件的工程。它借鉴传统工 程的原则、方法,以提高质量,降低成本为目的。其中,计算机科学、数学用于构造模型与 算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、 质量、成本等管理。3、软件工程框架(参见附图
3、软件工程框架示意图)1)、软件工程目标:生产具有正确性、可用性和开销合宜的产品。A、正确性:是指软件产品达到预期功能的程度。B、可用性:是指软件基本结构、实现以及文档为用户可用的程度。C、开销合宜:是指软件开发、运行的整个开销满足用户要求的程度。2)、软件开发活动:生产一个最终满足需求且达到工程目标的软件产品所需要的活动。软件 开发的基本活动包括:需求、设计、实现、确认、和支持。A、需求:就是定义问题。B、设计:在需求的基础上,给出被建系统的软件设计方案。C、实现:在软件设计的基础上,编码被建系统软件体系结构中的每一模块或构件。D、确认:需求复审、设计复审及程序测试。E、支持:为系统的运行提供
4、纠错性维护和完善性维护。3)、软件工程原则:围绕软件开发,提出了以下基本原则。A、选取适宜的开发范型:在系统设计中,经常需要权衡软件需求、硬件需求以及其它因素 之间的相互制约和影响,适应需求的易变性。选用适宜的开发范型,以保证软件开发的可持 续性,并使最终的软件产品满足客户的要求。B、采用好的设计方法:在软件设计中,通常需要考虑软件的模块化、信息隐蔽、局部化、9、软件方法学:是以软件方法为研究对象的学科。主要涉及指导软件设计的原理和原则, 以及基于这些原理、原则的方法和技术。狭义的软件方法学也指某种特定的软件设计指导原 则和方法体系。面向对象方法1、构造模块的四种基本观点1)、以过程或函数为基
5、点,使每一模块实现一项功能;2)、以一个数据结构为基点,使每一模块实现该数据结构上的操作功能;3)、以事件驱动为基点,使每一模块识别一个事件并对该事件作出响应;4)、以问题域中的一个成分为基点,使每一模块对应现实世界中的一个事物。2、用况图1)、概述:就是由参与者、用况以及它们之间的关系所构成的图。作用:主要用来明确需求; 用来辅助分析;用来辅助设计,特别是用户界面的设计;用来指导测试。2)、概念A、系统边界:一个系统所包含的所有系统成分与系统以外各种事物的分界线。B、参与者:在系统边界以外,与系统进行交互的事物-人员、设备、外系统。一个参与者定 义了一组功能上密切相关的角色,当一个事物与系统
6、交互时,该事物可以扮演这样的角色。 C、用况:对参与者使用系统的一项功能时所进行的交互过程的描述。3)、关系A、参与者之间的关系泛化(继承):如果一组参与者具有共同的性质,可以把这些性质抽取出来放在另一个参 与者中,它们再从中继承。B、用况之间的关系泛化(继承):子用况继承父用况的行为和含义;子用况可以增加或覆盖父用况的行为; 子用况可以出现在父用况出现的任何位置。扩展:从用况A到用况B的扩展关系是指,用况B的实例是可以被用况A指定的行为扩 充(服从于在扩展中指定的特定条件),行为被插入到由B中的扩展点定义的位置。包含:从用况A到用况B的包含关系表明,用况A的一个实例也包含了用况B所指定的 行
7、为,在用况A中定义的位置包含该行为。扩展与包含的异同同:都是不完整的;都离不开基本用况;都可实现为子程序。异:方向不同;1对多选包含关系;多对1选扩展;包含处理一般的情况;扩展处理特殊的 情况。C、参与者与用况之间的关系关联:连接参与者与用况之间的线段,表示参与者实例与用况实例之间的交互。4)、实例(参见用况图实例)3、类图1)、概述:类图用以表示模型的静态结构,即表示静态元素及其之间各种静态关系。为了控 制信息组织的复杂性,可以把类图组织成包,但这并不表示对构成模型的基本元素的划分。 2)、概念A、类:是具有相同结构、行为和关系的一组对象的描述符。B、属性:是一些有着确定值的、用于描述对象状
8、态信息的数据。C、服务:为了完成某一任务,一个对象所提供的、并体现其责任的操作。D、对象:在系统分析和系统构造中,对象是对客观世界事物的一种抽象,是由数据(属性) 和其上操作(行为)组成的封装体,是类的一个实例。对象的特点:自治性,对象具有一定 的独立计算能力;封闭性,对象具有信息隐蔽的能力;通信性,对象具有与其他对象通信的 能力。E、接口:是指描述类中提供给另一个类使用的一组操作。总结:上述五个概念围绕一个问题,即如何描述客观事物,对象展开的:如何抽象对象的结 构:属性,操作;如何描述一组具有相似性质的对象:类;如何抽象并描述在特定环境中 对象的功能:接口。F、关联:把对一组具有相同结构特性
9、、行为特性和语义的链的描述称为关联。G、聚合:是一种特殊的关联,表示整体类和部分类之间的整体-部分关系,其中的整体类 称为聚集。H、组合:是一种关联,是聚合的一种形式,其部分和整体之间具有很强的属于关系,并 且他们的生存期是一致的。这种聚集称为组成。I、链:是对象引用的元组(列表),是关联的一个实例。J、泛化:是一般元素(父亲)和特殊元素(儿子)之间的一种分类关系,其中特殊元素的 结构完全与一般元素一致,并附加了一些信息。K、依赖:一个依赖规约了两个模型元素(或两个模型元素集合)之间的一种语义关系,即: 对目标元素的改变可能需要改变该依赖中的源元素。总结:给出了表达客观事物之间关系的基本概念:
10、链;给出了关联的语义;还给出了一些特 定的关联(分类),主要包括:二元关联与N元关联、聚合与组合、泛化、依赖。L、包:模型元素的一个分组。M、访问依赖:目标包的内容可以被客户包引用,或被递归嵌套在客户包中的其它包引用。N、引入依赖:一个引入依赖获得访问,并将目标名字空间中的那些具有合适可见性的名字 引入到客户包(即对它们的引用可不需要一个路径名)。总结:包是控制文档组织复杂性的机制;包也可以作为模块化、构件化机制;包之间(在 包的层次上)存在两种依赖:访问和引入。0、注释:是一个符号项,用以表示某一语义元素的一些文本信息。3)、表示法A、类(参见类的表示法)B、属性:可见性名称多重性:类型表达
11、式=初始值性质串。C、服务:可见性名字(参数列表):返回类型表达式性质字符串。D、对象(参见对象的表示法)E、接口(参见接口的表示法)F、关联二元关联(参见二元关联的表示法)N元关联(参见N元关联的表示法)G、聚合(参见聚合的表示法)H、组合(参见组合的表示法)I、链(参见链的表示法)J、泛化(参见泛化的表示法)K、依赖(参见依赖的表示法)L、包(参见包的表示法)4、顺序图1)、概述:是一种表达对象间交互的图,由一组对象(参与者)以及其间顺序发送的消息组 成。2)、概念和表示法A、对象生命线:在顺序图中,对象生命线表示扮演特定角色的对象。对象生命线表示为 垂直虚线。B、激活(控制焦点):表示一
12、个对象直接或者通过从属例程执行一个行为的时期。它既表 示了行为执行的持续时间,也表示了活动和它的调用者之间的控制关系。用一个窄长的矩形 表示激活(活化)。C、消息:是两个对象间的通讯,这样的通讯用于传输将产生的动作所需要的信息。一个消 息会引起一个被调用的操作,产生一个信号,或者引起一个对象被创建或者被消除。在顺序 图中,把消息表示为从一个对象生命线到另一个对象生命线的一个水平实线箭头。D、转换时间:消息可以指定几个不同的时间(例如,发出时间和接受时间)。这些时间可 以用在约束表达式中。用户可以按需要为特定的目的给出时间表达,如elapsedTime (占用 时间)和startExecutio
13、nTime (开始执行时间)。可以在约束中使用这些表达式,以给消息指 派有效的具体时间约束。可以赋予消息一个名字。把时间约束写成为一个基于消息名字的表 达式。例如,如果消息的名字是stim ,用stim.sendTime()表示发送时间,用stim.receiveTime ()表达接收时间。可以把时间约束表示在与箭头对齐的图的左边上,也可以通过把布尔表 达式(可能包括时间表达式)放在括号中表示约束。3)、实例(参见顺序图实例)5、状态图1)、概述:通过描述对事件实例接收的响应,状态图描述了具有动态行为能力的实体之行为。 通常用状态图描述类的行为,也可以用它描述其它模型实体(如用况、参与者、子系
14、统、操 作或方法)的行为。2)、概念与表示法A、状态:一个状态是对象(类)生命期的一个阶段,在该阶段中该对象要满足一些特定的 条件,并可从事特定的活动。把一个状态表示成一个四角均为圆角的矩形。B、事件:是指可以引发状态转换的所发生的事情。事件有信号事件、调用事件、时间事件、 条件事件。C、转换:是两个状态之间的关系,表示当一个特定事件出现时,如果满足一定的条件,对 象就从第一个状态进入第二个状态,并执行一定的动作。把转换表示成从源状态出发并在目 标状态上终止的带箭头的实线。3)、举例(参见状态图实例)6、面对对象方法1)、派别A、方法驱动的方法:在给出符号体系的基础上,明确规定进行的步骤,并在
15、每一步中 给出“实现策略。如Coad-Yourdon方法。B、模型驱动的方法:给出模型化概念,即符号体系以及目标模型;而不明确规定实现目 标的步骤,但给出一些必要的指导。如的OSA方法和J.Rumbaugh的OMT 方法。2)、同结构化方法的比较A、结构化方法:强调过程抽象和模块化,将现实世界映射为数据流和加工,加工之间通过 数据流进行通信,数据作为被动的实体被主动地操作所加工,是以过程(或操作)为中心来 构造系统和设计程序的。B、面向对象方法:把世界看成是独立对象的集合,对象将数据和操作封装在一起,提供有 限的接口,其内部的实现细节、数据结构及对它们的操作是外部不可见的。能较好的适应复 杂大
16、系统不断发展和变化的要求。优点:更好的刻画问题域,减少映射误差,控制变化性, 便于同用户交流,消除或减少了软件开发各个阶段的鸿沟,便于复用。7、Coad-Yourdon 方法1)、概述:该方法认为,人类在认识和理解现实世界的过程中,普遍运用着下面三个构造法 则:区分对象及其属性;区分整体对象及其组成部分;不同对象类的形成及区分。2)、00A:利用五个层次和活动定义和记录系统行为,输入和输出。A、发现类及对象:描述如何发现类及对象。从应用领域开始识别类及对象,形成整个应用 的基础,然后,据此分析系统的责任。两层矩形表示类及对象:内层矩形表示类,分为三部 分,类名、属性名、服务名,外层矩形表示该类
17、的对象。B、识别结构:该阶段分为两个步骤。第一,识别一般/特殊结构,该结构捕获了识别出的类 的层次结构;第二,识别整体/部分结构,该结构用来表示一个对象如何成为另一个对象的 一部分,以及多个对象如何组装成更大的对象。C、定义主题:主题由一组类及对象组成,用于将类及对象模型划分为更大的单位,便于理 解。精炼主题可以从问题域和接口复杂性入手。D、定义属性:其中包括定义类的实例(对象)之间的实例连接。可以从四方面标识属性: 原子概念,规范化,标识机制,保持一个可导出的属性。E、定义服务:其中包括定义对象之间的消息连接。总结:在面向对象分析阶段,经过五个层次的活动后的结果是一个分成五个层次的问题域 模
18、型,包括主题、类及对象、结构、属性和服务五个层次,由类及对象图表示。五个层次活 动的顺序并不重要。3)、00D:面向对象设计模型需要进一步区分以下四个部分。A、问题域部分(PDC):面向对象分析的结果直接放入该部分。B、人机交互部分(HIC):这部分的活动包括对用户分类,描述人机交互的脚本,设计命令 层次结构,设计详细的交互,生成用户界面的原型,定义HIC类。C、任务管理部分(TMC):这部分的活动包括识别任务(进程)、任务所提供的服务、任务 的优先级、进程是事件驱动还是时钟驱动、以及任务与其它进程和外界如何通信。D、数据管理部分(DMC):这一部分依赖于存储技术,是文件系统,还是关系数据库管
19、理 系统,还是面向对象数据库管理系统。8、OSA方法1)、OSA模型A、对象关系模型:对象、关系、对象类、关系集合、约束。B、对象行为模型:状态、触发与转换、动作。C、对象相互作用模型。2)、特殊的关系集合A、一般关系(is a):一个对象类中的每一个对象是另一对象类的一个对象。B、聚合关系(is part of):由一些称之为成分的对象构成称之为聚合的对象。C、联合关系(is member of):该关系用于生成一个由对象构成的集合,并把该集合看作是 一个对象。9、UML1)、UML简介:UML是一种通用的可视化建模语言,用于对软件进行描述、可视化处理、 构造和建立软件系统的文档。UML融合
20、了许多面向对象开发方法的基本概念和优点,具有 一致的图形表示法和语义,同时也出现了许多UML工具,能够很好地支持软件开发,例如 UML的开发工具Rational Rose提供了面向对象的分析和设计(OOA和00D)到面向对 象编程(OOP)的平滑过渡机制,完整地体现了面向对象的软件工程思想。2)、UML的静态建模机制和动态建模机制:静态结构定义了系统中重要对象的属性和操作 以及这些对象之间的相互关系;动态行为定义了对象的时间特性和对象为完成目标任务而相 互进行通信的机制。UML定义了 9种图用于系统建模,分为两类:静态结构图和动态行 为图。A、静态结构图:可用于对系统的静态方面进行可视化、详述
21、、构造和文档化。可以把系统 的静态方面看作是对系统的相对稳定的骨架的表示,它由类、接口、协作、构件和节点等事 物的布局组成。结构图包括:类图(Class diagram)描述系统中类的静态结构,它定义了系统中类的内部结构以及类之间 的联系,用来捕获信息和事件中的对象;对象图(Object diagram)是类的实例化图;构件 图(Component diagram)描述程序代码的物理结构;部署图(Deployment diagram)描述系 统中软、硬件的物理体系结构,用于捕获系统硬件和软件构件的部署关系。B、动态行为图:用于对系统的动态方面进行可视化、详述、构造和文档化。可以把系统的 动态方
22、面看作是对系统变化部分的表示,它由诸如随时间变化的信息流和在网络上构件的 物理运动之类的事物组成。行为图包括:用例图(Use Case diagram)从用户的角度描述系统的功能,并指出各功能的执行者,说明 执行者与提供的用例之间的某种联系;顺序图(Sequence diagram)描述几个对象之间的动 作协作关系;协作图(Collaboration diagram)从另一个角度展示对象之间的动作协作关系。 它可以和顺序图相互转换。在Rational Rose中可以由顺序图生成协作图;状态图(State diagram)描述一类对象具有的所有可能的状态以及状态转移关系;活动图(Active d
23、iagram) 描述系统中各种活动的执行顺序。10、RUP (参见RUP示意图)1)、概述:RUP,即Rational统一过程,是一种适应UML的软件生命周期方法,是一个通 用的过程框架,可用于各种不同类型的软件系统、各种不同的应用领域、各种不同类型的组 织、各种不同的功能级别以及各种不同的项目规模。它是Use Case驱动的、以体系结构为 中心的、迭代、增量的开发。2)、阶段:初始、细化、构造、移交。3)、核心工作流:捕获需求、分析、设计、实现、测试。软件测试1、软件测试1)、软件产品与其他产品不同,其最大的成本是检测软件错误、修正错误的成本,以及为了 发现这些错误所进行的设计测试程序和运行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 软件工程 笔记
限制150内