软件工程期末复习(二)

简介: 软件工程期末复习(二)

第四章

一、软件测试的目的和重要性

       1. 目的:为了发现和改正错误

       2. 为了发现程序中的错误而执行程序的过程

       3. 好的测试方案使测试很可能发现尚未发现的错误

       4. 成功的测试是发现了未发现的错误的测试

二、软件测试方法分为2种

      1. 静态分析

      2. 动态测试

三、动态测试方法分为:

白盒法:分析程序的内部逻辑结构,注意选择适当的覆盖标准。

黑盒法:不考虑程序内部结构与特性,只根据功能或程序的外部特性设计

四、软件测试的步骤

      单元测试→集成测试→确认测试→系统测试

第五章

一、软件维护

       1.维护种类

       (1)改正性维护

      (2)适应性维护

      (3)完善性维护

      (4)预防性维护

       2. 副作用

       (1)代码副作用

       (2)数据副作用

       (3)文档副作用

       3. 可维护性的度量

       (1)可理解性

       (2)可测试性

       (3)可修改性

       (4)可移植性

第六章

一、面向对象(OO)

       目的是有效地描述和刻画问题领域的信息和行为,以全局的观点来考虑系统中各种对象的联系,考虑系统的完整性和一致性,是对问题域的完整、直接的映射。

二、面向对象的分析(OOA)

       通常建立三个模型:对象模型、动态模型、功能模型

三、面向对象方法学的要素和优点

       1. 四个要素:

       (1)对象

       (2)类

       (3)继承

       (4)消息传递

Ps:实例:有某个特定的类所描述的一个具体对象。

       消息:对象发出的服务请求。

       封装:把对象的属性和方法结合成一个独立的单位,尽可能隐蔽对象的内部细节。

       2. 面向对象=对象+类+继承+用消息通信

       3. 优点:

       (1)与人类习惯的思维方式一致

       (2)稳定性好

       (3)可重用性好

       (4)较易开发大型软件产品

       (5)可维护性好

四、统一建模语言(UML)

    1. 定义:是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,从需求分析到规格,再到构造和配置。

    2. UML语言中的关系

       (1)关联关系

是一种结构化关系,指一种事物与另一种事物有联系。在UML图中用一条实线表示,在关联的两端可以标注关联双方的角色和多重性标记。其中有一对一、一对多和多对多关系。

       (2)聚合关系

          也称为聚集关系,是一种特殊关联关系,描述元素之间部分和整体之间的关系。

       (3)组合关系

表示类之间整体和部分的关系,一种特殊的聚合关系。组合关系中部分和整体具有统一生存期,部分对象只能作为组合对象的一部分与组合对象同时存在。

(4)依赖关系

       两个事物之间的语义关系。如事物A、B,A变化引起B变化,则称B依赖于A。在UML中用一条带有箭头的虚线表示。

(5)泛化关系

                表示一般与特殊的关系。用一条带空心三角箭头的实线表示。

       (6)实现关系

                一个元素实现另一个元素。如类实现接口。带空心三角的虚线。

       3.  UML图有用例图、类图、对象图、状态图、顺序图、活动图、协作图、构件图、部署图9种。

Ps:动态建模只有顺序图、状态图和活动图。

五、用例图

       1. 用例代表某些用户可见的功能,用于实现一个具体的用户目标。定义了系统的功能需求。用例图只写出谁做了什么。

       2. 用例关系

       (1)关联关系

       (2)扩展关系:扩展用例是基础用例的一个相对独立且可选的用例。

       (3)包含关系:如果两个以上的有大量一致的功能;一个用例的功能太多时,可以使用包含关系建立若干个更小的用例;执行基用例时,每次都必须调用被包含用例。

       (4)泛化关系:一个或多个用例是某个一般用例的特殊化时使用泛化。


3. 用例图包含:

       (1)参与者(actor)/执行者/角色:系统功能的使用者和维护者、其他系统、硬件设备、甚至是时钟。可以用泛化关系来描述多个参与者之间的公共行为。用一个小人表示。

       (2)用例(use case):必须是由某一个参与者触发而产生的活动,即每个用例至少涉及一个参与者。每个参与者必须至少涉及一个用例。用椭圆表示。

      (3)通信联系:执行者和用例之间交换信息。用线段连接。

       4. 表示:

       (1)关联(参与者和用例之间),实线箭头。


       (2)包含(用例与用例之间),虚线箭头,上面写“《include》”,包含指向被包含。(必须)

       (3)扩展(用例与用例之间),虚线箭头,上面写“《extend》”,扩展指向被扩展。(可以有)

       (4)泛化(参与者之间),实线箭头,表示发出的事物“is a”被指向的事物。

2.2.png

六、类图

       1. 描述类与类之间的静态关系。类图表示系统或领域中的实体及实体之间的关联,由表示类的类框和表示类之间如何关联的连线所组成。包的作用是把各种相关的建模元素组织在一起,形成一个整体。

       2. 属性的可见性就是可访问性,分为:

       (1)公有的(publiic):用+表示

       (2)私有的(private):用-表示

       (3)保护的(protected):用#表示

       3. 类的相互关系

       (1)聚合关系:整体和部分的关系。部分对象可同时参与多个整体对象的构成,称为共享聚集。关键词:“包含”、“组成”、“分为”。且在整体类旁边画空心菱形,用实线连接部分类。

       (2)组合关系:整体和部分的关系,部分和整体具有统一生存期。如果部分类完全隶属于整体类,部分与整体共存亡,则称该聚聚为符合聚集,简称组成。用实心菱形(在整体这边画)。

       (3)泛化关系(继承):表示一般与特殊的关系。空心箭头的实线,从子类指向父类。


2.2.png

七、对象图

       1. 对象是类的实例(类可以实例化,接口不行;接口可以多继承,没有定义),因此对象图可以看做类图的实例,能帮助人们理解比较复杂的类图。

八、状态图

       1. 建立类或对象的动态行为模型。状态图重点在于描述状态的控制流。

       2. 状态图画的是某一个对象的状态,不是整个的。

       3. 状态转换是指两个状态之间的关系,它描述了对象从一个状态进入另一个状态的情况,并执行了所包含的动作。

       4. 符号及表示:

       (1)椭圆或圆角矩形:状态

       (2)箭头:状态转移

       (3)事件(写在箭头旁边):引起状态转换的原因

       (4)条件(跟在事件后面括号):状态转换的条件

       (5)实心圆:初始状态

       (6)内部实心的同心圆:最终状态


2.3.png

九、交互图的两种形式:顺序图(时序图)和协作图

       1. 顺序图:

 (1)描述对象之间动态交互的情况,着重表示对象间消息传递的时间顺序。

       (2)对象用矩形框表示,框内标对象名。顺序图方向有从上到下和水平方向两种。箭头上写事件。

       (3)横轴表示参与交互的对象,纵轴表示时间。

                对象:行为的执行者,而不是类象。

                生命线:是一个时间线,表示对象存在的时间段

       2. 协作图:

       (1)描述组成系统的各个成分之间如何协作来实现系统的交互行为。

       (2)强调发送和接收消息的对象之间的组织。

       (3)包含对象、链、消息。

Ps:区别在于前者描述时间顺序,后者描述对象之间的关系。两者语义等价,可以转换形式且不丢失任何信息。

2.4.png

十、活动图

       1. 建模用例的工作流,理解业务处理过程、描述复杂过程的算法。

       2. 活动,动作,转移、决策、同步条、业务对象、起始状态、终止状态

       3. 是状态图的一种特殊情况。不需指明任何事件,只要动作被执行,活动图中的状态就自动开始转换。

       4. 泳道:活动图中的区域划分。每一个泳道代表一个责任区域,一个泳道中包括一组相关活动。

2.5.png

十一、构件图

1.描述软件构件之间的相互依赖关系。

2.构件的类型:


(1)源构件:实现类的源代码文件

(2)二进制构件:一个对象代码文件、一个静态库文件或一个动态库文件

(3)可执行构件:一个可执行的程序文件,是链接所有二进制构件所得到的结果


(1)构件之间才有依赖、提供关系,节点间只有关联关系。

(2)实线表示服务的提供,虚线表示服务的依赖。接口:从代表构件的大矩形边框画出一条线,另一端为小空心圆,接口名字写在空心圆旁边。接口表示构建对外提供的服务。

(3)包含元素:组件、接口、关系


Ps:先写名称后写类型,不要被名字迷惑。如ServerHostMachine中,ServerHost是名字,Machine是类型。

十二、部署图(配置图)

1.用来描述系统所需的处理器和设备的拓扑结构

2.包含元素:节点、组件、关系。

3.一般一个系统只有一个部署图。

相关文章
|
存储
二叉树的存储结构
二叉树的存储结构
782 0
|
算法 程序员 Go
[软件工程导论(第六版)]第6章 详细设计(复习笔记)
[软件工程导论(第六版)]第6章 详细设计(复习笔记)
|
消息中间件 SQL 存储
超详细的RabbitMQ入门,看这篇就够了!
RabbitMQ入门,看这篇就够了
221939 69
|
测试技术 数据库 uml
【软件工程与UML】第2章 用例图、用例文档、活动图 -- 系统的功能需求建模
【软件工程与UML】第2章 用例图、用例文档、活动图 -- 系统的功能需求建模
1335 0
【软件工程与UML】第2章 用例图、用例文档、活动图 -- 系统的功能需求建模
|
存储 Prometheus 监控
程序开发中的监控和日志分析
监控和日志分析在软件开发中至关重要,它们帮助实时了解应用状态、及时发现并解决问题。监控确保系统稳定运行,优化性能和资源;日志分析则助于追踪问题根源、监测用户行为并提供安全审计。利用如Prometheus、ELK Stack等工具可实现高效监控与日志管理,从而优化应用性能和用户体验。
553 2
|
数据建模 测试技术 uml
【软件工程】期末复习总结(通俗易懂,学不会来打我)
【软件工程】期末复习总结(通俗易懂,学不会来打我)
|
SQL 关系型数据库 MySQL
MySQL实现并发控制的过程
数据库系统到底是怎么进行并发访问控制的?本文以 MySQL 8.0.35 代码为例,尝试对 MySQL 中的并发访问控制进行整体介绍。
|
前端开发 JavaScript 开发工具
2024年前端开发的十大必备技巧
本文概述了2024年前端开发的十大关键技能,包括现代JavaScript、CSS Grid/Flexbox布局、主流框架精通、Web性能优化、Git版本控制、调试技巧、Web可访问性、现代构建工具使用、PWA开发及持续学习,旨在助力开发者提升Web开发质量和用户体验。
|
存储 关系型数据库 MySQL
Mysql全面总结
本文全面总结了MySQL的相关知识,涵盖思维导图、架构、存储引擎、数据类型、索引、查询、事务、锁机制、调优、分区与分表分库、主从复制及其他问题。MySQL采用插件式存储引擎架构,支持多种存储引擎,如InnoDB和MyISAM,每种引擎具备不同的特性。文章详细介绍了InnoDB和MyISAM的对比,包括事务支持、行级锁定、索引类型等。此外,还探讨了MySQL的查询优化、性能调优、主从复制等内容,适合数据库开发者和运维人员阅读。如涉及版权问题,请联系作者删除。
Mysql全面总结
|
Java 数据库连接 数据库
后端框架的学习----mybatis框架(6、日志)
这篇文章介绍了如何在MyBatis框架中使用日志功能,包括配置MyBatis的日志实现、使用log4j作为日志工具,以及如何通过配置文件控制日志级别和输出格式。