您现在的位置是:首页 >其他 >【软件工程】期末复习总结(通俗易懂,学不会来打我)网站首页其他

【软件工程】期末复习总结(通俗易懂,学不会来打我)

王同学要努力 2024-06-15 18:01:02
简介【软件工程】期末复习总结(通俗易懂,学不会来打我)

【软件工程】期末复习总结(通俗易懂,学不会来打我)

第一章

1.1 软件工程的发展历程

1.1.1 软件危机(日子没法过了)

软件危机(Software Crisis)是指在计算机软件开发、运行、维护和管理过程中所遇到的一系列严重问题。(木星危机,太阳氦闪危机)
1)软件开发进度和成本难以控制(不能科学估算)
2)软件开发难以满足用户的需求(不是要什么给什么)
3)软件质量难以保证(降落伞打不开的宇航员)
4)软件产品难以维护(维护成本不断上升,维护难度不断增加

1.1.2 软件危机出现的原因

产生软件危机的主要原因有:
(1)软件开发缺乏正确的理论指导;软件本身属性、需要有限条件多人分工高质量产出
(2)软件人员与用户缺乏充分交流;了解但难以描述需求、知识背景有别、曲解需求
(3)对软件开发过程缺乏整体认识;经验未沉淀总结、忽视文档管理、不重视测试…(重实现)
(4)软件产品缺乏有效一致的质量评价标准。

1.2 软件工程的概念

1.2.1 软件工程的定义

软件工程是把系统的、规范的、可度量的途径应用于软件开发、运行和维护的全过程,以及对上述方法的研究。(IEEE-1993)(整体、有规范、各个过程可以度量)

软件工程三要素:方法、工具、过程

1.3 软件与软件过程

1.3.1 软件和软件的组成

软件是计算机中与硬件相互依存的另一部分,它包括程序、数据以及相关文档

软件=程序+数据+文档+知识

软件自身的特点

  • 逻辑实体而非物理实体
  • 智力产品,生成过程主要集中在研发上
  • 永不磨损,会蜕化直至被放弃使用
  • 软件开发远未达到软件工程目标提及的产业化生产
  • 软件规模和内容越来越复杂

在这里插入图片描述

1.3 软件与软件过程

生命周期是从需求开始到软件不再使用的全阶段
在这里插入图片描述

1.4 软件过程模型

在这里插入图片描述
在这里插入图片描述
1.阶段间具有顺序性和依赖性。
2.推迟实现的观点。
3.每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。
传统的瀑布模型过于理想化。事实上,人在工作过程中不可能不犯错误。
在设计阶段可能发生规格说明文档中的错误。
而设计上的缺陷或错误可能在实现过程中显现出来。
在综合测试阶段将发现需求分析、设计或编码阶段的许多错误。

在这里插入图片描述
在这里插入图片描述

1.4.3 增量模型

在这里插入图片描述
在这里插入图片描述

1.4.4 螺旋模型 (Spiral Model)

软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越复杂,承担该项目所冒的风险也越大。

在这里插入图片描述

1.4.5 敏捷模型 (Spiral Model)

在这里插入图片描述
在这里插入图片描述

??1.4.9 软件过程模型的比较(敲黑板)

在这里插入图片描述

第二章

2.1 软件需求的基本概念

在这里插入图片描述

2.2可行性分析的内容

在这里插入图片描述

  • 经济可行性研究: 联想董事长说过:没钱赚的事我们不干,有钱赚但是投不起钱的事不干,有钱干也投的起钱但没有可靠的人选这样的事也不敢
  • 操作可行性研究: 通过对用户流程的操作分析,既能城区需求中的模糊概念,又能明确需求中功能间的相互关系

2.3需求分析的内容

在这里插入图片描述

2.4需求工程的过程

在这里插入图片描述
看看即可
在这里插入图片描述

2.4需求获取技术

在这里插入图片描述

  • 个别会谈和小组会议:参与人员有分析员、用户、系统领域专家。开会前拟定谈话提纲和会谈内容。
  • 问卷调查:面向用例的场景分析:实际观察用户的实际操作过程,分析员能体验用户在工作中遇到的不便和困难
  • 快速原型法:让用户尽早的接触系统,指出不足并给出意见

2.5结构化需求分析与建模

在这里插入图片描述
在这里插入图片描述

2.5.1面向数据的数据建模

在这里插入图片描述

3.1.1 软件设计与软件需求

在这里插入图片描述

3.1.2 软件设计的任务

在这里插入图片描述

3.2.3 客户端/服务器模式的分布式结构

在这里插入图片描述

3.3 模块化设计

在这里插入图片描述

3.3.4 模块独立性

高内聚低耦合
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.1结构化设计方法概述

在这里插入图片描述

面向数据流的设计过程

在这里插入图片描述

第五章

5.1技术特性

在这里插入图片描述

5.2 程序设计风格

在这里插入图片描述
在这里插入图片描述

5.3 什么是软件测试?

在这里插入图片描述
IEEE对软件测试的定义:使用人工或自动手段来运行或测试被测试软件的过程,其目的在于检验它是否满足规定的需求并弄清预期结果与实际结果之间的差别。

5.4 软件测试基础-术语解释

在这里插入图片描述

5.5 测试用例的重要性

5.6 软件测试原则

在这里插入图片描述
在这里插入图片描述

5.7 测试过程

在这里插入图片描述
在这里插入图片描述

5.8 软件测试技术分类

在这里插入图片描述

5.9 白盒测试

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

(一)、逻辑覆盖

在这里插入图片描述

(二)、语句覆盖

在这里插入图片描述

(三)、分支覆盖

在这里插入图片描述

(四)、条件覆盖

在这里插入图片描述

(五)、条件组合覆盖

在这里插入图片描述

(六)、路径覆盖

在这里插入图片描述

6.0 黑盒测试

在这里插入图片描述

6.1边界值分析

边界值分析法是对等价分类技术的补充,即在一个等价类中不是任选一个元素作为此等价类的代表进行测试,而是选择此等价类边界上的值。

首先确定边界情况。通常输入或输出等价类的边界就是应该着重测试的边界情况。

选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值。
在这里插入图片描述
实践表明:大多数故障往往发生在输入定义域或输出值域的边界上,而不是在其内部 因此,针对各种边界情况设计测试用例,通常会取得很好的测试效果。

6.2软件测试策略

在这里插入图片描述

6.2.1集成测试策略

在这里插入图片描述

6.2.2渐增式集成

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6.3驱动模块与桩模块

驱动模块:用以模拟被测模块的上级模块,在集成测试中接受测试数据,把相关的数据传送给被测模块,启动被测模块并打印出相应的结果。

在这里插入图片描述
桩模块:用以模拟被测模块工作过程中所调用的模块,它由被测模块调用,以便于检验被测模块与其下级模块的接口。

单元测试、集成测试与系统测试

在这里插入图片描述

第七章

7.1 UML的产生

在这里插入图片描述

???7.4.1 用例图(出大题)P57-61出大题

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第八章 面向对象的特点

对面向对象分析(OOA) 阶段的描述,体现了信息域对问题域的直接映射,符合人们认识客观世界的思维方式,利于用户的理解和沟通,避免因分析员的误解而造成后续的错误。
在这里插入图片描述

8.1面向对象的特点

在这里插入图片描述
在这里插入图片描述

8.2两种开发方法建模对比

在这里插入图片描述

2.建立功能模型–建模过程

用文字信息详细描述用例的内容,它是对用例的有益补充。

3.建立静态模型-建立静态模型的过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第九章 项目风险管理

软件风险概念:风险不同于软件工程过程中的其它事件,它有其自身的特点:

⑴ 可能性。项目风险是将来要发生的事情。虽然可以采取措施避免或减低风险发生所导致的损失,但完全消除项目风险是不太可能的

⑵ 偶然性。首先,软件项目,特别是有较强领域特征的软件应用项目,是一次特定的开发过程,其产生的风险属于个别事件,有很大的不确定性。其次,软件开发的智力活动产生的风险难以预料和控制,并且人员受环境、心理、任务等因素的影响较大,更增加风险发生的偶然性。 疫情、核心骨干打球崴脚了。

⑶ 复杂性。软件项目各部分间的非线性关系,其复杂度远远超过由少数几人就能掌握的程度,需要通过有效的技术分解和团队式管理才能胜任。

⑷ 需求的变动。需求的不断变化,导致软件项目过程的不断变化,风险平衡状态的出现是动态而短暂的,但其造成的后果可能是严重的,甚至是灾难性的。

??? 最后的最后

(一)、UML题目练习

某教育公司决定开发一个管理所有客户信息的交互式网络系统。系统的功能如下:
(1)浏览客户信息:任何使用Internet的网络用户都可以浏览公司所有的客户信息(包括 姓名、住址、电话号码等)。

(2)登录:公司授予每个客户一个帐号。拥有授权帐号的客户,可以使用系统提供的页面 设置个人密码,并使用该帐号和密码向系统注册。

(3)修改个人信息:客户向系统注册后,可以发送电子邮件或者使用系统提供的页面,对个人 信息进行修改。

(4)删除客户信息:只有公司的管理人员才能删除不再接受公司服务的客户的信息。 系统采用面向对象方法进行开发。

【问题1】
在需求分析阶段,采用UML的用例图描述系统功能需求,如下图所示。请指出图中的A、B、 C和D分别是哪个用例?

在这里插入图片描述
【问题2】类的关联关系中关联的直线两端标明重数,例如:例如,图中的类网络用户和客户信息表,网络用户端的“0…*”表示:一个客户信息表的实例可以与0个或多个网络用户的实例相关联。 请指出图中(1)到(4)处的值分别为多少?

在这里插入图片描述
【问题3】类通常不会单独存在,因此当对系统建模时,不仅要识别出类,还必须对类之间的相互关系建模。在本题中,提供了三种关系:泛化关系、聚合关系、关联关系。请分别说明这三种关系的含义,并说明关联关系和聚合关系之间的主要区别。

泛化关系:也可以视为继承,表示类与类(或者接口与接口) 之间的父子关系。
关联关系:是类和类之间最常见的关系。即一个类的对象和另外一个类有联系。关联表示类与类之间的连接,它使一个类知道另一个类的属性和方法。
聚合关系:聚合是整体与部分的关系,但个体有独立的生命周期。

关联关系和聚合关系之间的主要区别:聚合是一种特殊的关联,它表示整体/部分关系。

(二)、面向对象的特点

  1. 对面向对象分析(OOA)阶段的描述,体现了信息域对问题域的直接映射,符合人们认识客观世界的思维方式,利于用户的理解和沟通,避免因分析员的误解而造成后续的错误。
  2. 对软件系统分析、设计和实现综合考虑,使用前后一致的UML图形模型元素,确保了软件系统的开发过程在方法、工具上的一致性和连续性。
  3. 将面向对象分析、设计、编程有机结合在一起,各阶段间没有明显界线,实现从分析到实现的自然过渡,有利于增加系统的稳定性。
  4. 面向对象具有良好的重用性特征,确保了软件质量和可靠性。

(三)、面向对象分析

面向对象分析(Object-Oriented Analysis,OOA)是以对象为基础,以面向对象方法学为指导,分析用户需求,并最终建立问题域模型的过程。

OOA模型由3类独立模型构成:功能模型、静态模型和动态模型。

在这里插入图片描述

(四)、建立模型(3类模型)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(五)、面向对象模型和结构化模型的对比

在这里插入图片描述

(六)、面向对象设计

在这里插入图片描述

(七)、小题检测

在这里插入图片描述

(八)、面向对象设计原则和目标

面向对象设计原则
在这里插入图片描述
面向对象设计目标
在这里插入图片描述
在这里插入图片描述

祝大家顺利通过考试,加油加油加油!!!

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。