软件工程详细知识点(上)

一、软件工程概述

1、软件与软件危机

软件=程序+数据+文档

1、软件危机的主要表现

  1. 软件不能满足用户需求
  2. 软件开发成本严重超标,开发周期大大超过规定日期
  3. 软件质量难以保证,可靠性差
  4. 软件难以维护
  5. 软件开发速度跟不上计算机发展速度

2、软件危机产生的原因

一方面与软件本身的抽象性和复杂性有关,这是客观原因
另一方面与软件开发和维护过程中使用的技术和方法有关,这是主管原因
根本原因是软件开发过程不成熟
,具体表现为:

  1. 忽视软件开发前期的调研和需求分析工作
  2. 缺乏软件开发的经验和有关软件开发数据的积累,使得开发的计划很难制定
  3. 开发过程缺乏统一的规范化的方法论指导
  4. 忽视与用户开发成员间的及时有效的沟通
  5. 文档资料不规范或不准确。导致开发者失去工作的基础,管理者失去管理的依据。
  6. 没有完善的质量保证体系

3、软件危机的解决途径

  1. 使用好的软件开发技术方法
  2. 使用好的软件开发工具提高软件生产率
  3. 有良好的组织严密的管理,各方面人员相互配合共同完成任务

2、软件工程

软件工程定义为:应用计算机科学理论和技术以及工程管理的原则和方法按预算和进度,实现满足用户要求的软件产品的定义、开发、发布和维护的工程或进行研究的学科

软件工程目的:在经费的预算范围内,按期交付出用户满意的,质量合格的软件产品
1、软件工程基本原理

  1. 用分阶段的软件生存周期计划进行严格的质量管理
  2. 坚持进行阶段评审
  3. 实行严格的产品控制
  4. 采用现代程序设计技术
  5. 软件工程结果应能清楚的审查
  6. 开发小组人员应该少而精
  7. 承认不断改进软件工程实践的必要性

软件工程的三要素是方法工具过程

2、软件生命周期
生命周期的定义:软件产品或软件系统从设计、投入使用到被淘汰的全过程称为软件的生命周期

软件生命周期各阶段(任务、产生的文档、参与的人员)

  1. 问题定义和可行性研究
    问题定义文档:问题定义报告
    可行性研究文档:可行性研究报告
    参加的人员:系统分析员、项目负责人和高级程序员

  2. 需求分析
    文档:软件需求说明书
    参加的人员:用户、项目负责人和系统分析员

  3. 软件设计
    概要设计文档:总体设计说明书
    参加的人员:系统分析员和高级程序员
    详细设计文档:详细设计说明书
    参加的人员:高级程序员和程序员

  4. 编码
    文档:源程序清单
    参加的人员:高级程序员和程序员

  5. 软件测试
    文档:软件测试计划和软件测试报告
    参加的人员:系统分析员和高级程序员

  6. 运行与维护
    持续时间最长的阶段

请添加图片描述

3、软件开发模型

1、瀑布模型
犹如瀑布流水,自上而下、逐级下落
特点:

  1. 阶段间具有顺序性依赖性。前一段结束后才能开始后一阶段的工作,前一阶段的输出是后一阶段的输入
  2. 推迟实现观点,尽可能推迟程序的物理实现
  3. 强调质量保证观点。每个阶段必须完成规定的文档,每个阶段结束前完成文档审查,以便及早改正错误。
  4. 瀑布模型是一种文档驱动的模型

优点:

  1. 原理简单,容易掌握
  2. 各阶段间都有验证确认环节,以便进行质量管理
  3. 主要用于支持结构化算法

缺点:

  1. 缺乏灵活性,不能适应用户需求的变化
  2. 缺乏演化性,返回上一级的开发需要付出十分昂贵的代价
  3. 瀑布模型是线性的软件开发模型,回溯性很差

适用场合

  1. 适用于软件需求比较明确或很少变化,并且开发人员可以一次性获取全部需求的场合
  2. 适用于开发技术比较成熟、工程管理比较严格的场合
  3. 一般用于低风险的项目,适用于开发人员具有丰富经验,对软件应用领域很熟悉的场合

2、快速原型模型
特点:
主要用于挖掘需求,或是进行某种技术或开发方法的可行性研究,是开发人员为了快速而准确获得用户需求而经常采用的方法。
优点:

  1. 增强了开发者与用户之间的交流,有助于满足用户的真实需求
  2. 用户可以及早得到有用的产品,及早发现问题,随时纠正错误
  3. 可减少技术、应用风险,降低开发费用,缩短开发时间

缺点:

  1. 缺乏丰富而强有力的软件工具和开发环境
  2. 对设计人员的水平及开发环境要求较高
  3. 在重复改变原型的过程中,程序员会厌倦
  4. 难以做到彻底测试,更新文档较困难

适用场合

  1. 预先不能确切定义需求的软件系统,或需求多变的系统
  2. 开发人员对设计方案没信心或对将要采用的技术手段不熟悉或把握不大
  3. 快速原型模型可作为单独的过程模型使用,也常被作为一种方法或实现技术应用于其他的过程模型

3、增量模型
把软件产品作为一系列增量构件来设计、编码、集成和测试,在项目软件开发过程中,以一系列的增量方式来逐步开发系统。
增量开发:按一定的时间间隔开发部分软件
增量提交:先提交部分软件给用户试用,听取用户意见,在提交另一部分软件让用户试用,反复多次,直到全部提交
特点:

  1. 分段的线性模型,是一种非整体的开发模型
  2. 增量开发是按一定的时间间隔开发部分软件
  3. 增量提交是先提交部分软件给用户试用,听取用户意见,在提交另一部分软件让用户试用,反复多次,直到全部提交
  4. 增量模型开发方式可以在软件开发部分阶段采用,也可以在全部开发阶段采用

优点:

  1. 渐增模型是瀑布模型的一个变体,可以看作重复执行的多个瀑布模型,具有瀑布模型的所有优点,此外,还有以下优点:
  2. 可分批次提交软件产品,方便用户及时了解软件开发进展情况,及早发现问题。
  3. 组件为单位进行开发,降低了软件开发风险。
  4. 开发顺序灵活。优先级最高的服务首先交付。

缺点:

  1. 由于对整个软件系统的需求没有一个完整的定义,会给总体设计带来麻烦。
  2. 在把每个新的增量构件集成到现有软件结构中时.必须不破坏原来已开发出的产品。
  3. 软件的体系结构必须是开放的,即向现有产品中加入新构件的过程必须简单、方便。每次增量开发的产品都应当是可测试的、可扩充的。

适用场合

  1. 软件产品可以分批次地进行交付
  2. 待开发的软件系统能够被模块化
  3. 软件开发人员对应用领域不熟悉﹑难以一次性地进行系统开发时。
  4. 项目管理人员把握全局的水平较高。
  5. 对软件需求把握不准确、设计方案有一定风险的软件项目。

4、喷泉模型
特点:

  1. 各阶段相互重叠,反映了软件过程的并行性。
  2. 以分析为基础,资源消耗呈塔形,在分析阶段消耗资源最多。
  3. 反映了软件过程迭代的自然特性,从高层返回低层无资源消耗。
  4. 强调增量开发,依据分析一点、设计一点的原则,不要求一个阶段的彻底完成,整个过程是一个迭代的逐步提炼的过程
  5. 喷泉模型是对象驱动过程,对象是所有活动作用的主体,也是项目管理的基本内容

喷泉模型适用于面向对象的软件开发

5、螺旋模型
螺旋模型是在结合瀑布模型和快速原型模型基础上演化而成的,并且加入了风险分析
整个过程的实现按照,制定计划,风险分析,工程实施,客户评估

开发模型主要特点适用场合
瀑布模型线性模型,整体开发模型,文档驱动型模型需求明确的中,小型软件开发
快速模型用户参与较早,通过迭代完成用户需求,应用快速开发工具需求模糊的小型软件开发
增量模型每次迭代完成一个增量,面向对象开发容易分块的大型软件开发
喷泉模型具有迭代和无间隙特性,各开发阶段无明显边界面向对象软件开发
螺旋模型典型迭代模型,是风险驱动型模型,面向对象开发风险较大的大型软件开发模型

二、可行性研究

1、可行性分析目的最小的代价、尽可能短的时间、是否有可行解决方案
可行性分析是一个大大简化的系统分析和设计过程。

2、可行性分析的任务

  1. 技术可行性
  2. 经济可行性
  3. 运行可行性
  4. 法律可行性

3、可行性分析的步骤

  1. 审核系统的规模和目标
  2. 分析研究现行系统
  3. 设计新系统的高级逻辑模型
  4. 获得比较可行的方案
  5. 撰写可行性研究报告

4、工具:系统流程图
表述的是什么?描述物理模型

5、项目计划:成本估算的方法有哪些?

  1. 自顶向下估算法
  2. 自底向上估算法
  3. 差别估算法

6、进度安排方法

  1. 甘特图法
      优点:能从时间上整体把握进度,很清晰地表达每一项任务的起始时间与结束时间,且直观简明易于绘制,标名了各任务的计划进度和当前进度,能动态反映软件开发的进展状况。
      缺点:不能显示的描述各任务彼此间的依赖关系,进度计划中的关键阶段不明确。
  2. 工程网络图法
      优点:采用网络图进行进度控制,能够清晰地展现现在和将来完成的工作内容、各项工作单元间的关系。并且可以预先确定各任务的时差。了解关键作业或某一项进度的变化对后续工作和总工期的影响度,便于及时地采取措施或对进度计划进行调整。
      缺点:不能系统地表达每项的起始时间与结束时间,不易于对单项任务的过程进行跟踪。

7、成果:可行性分析报告:包含哪些内容?
1 .投资必要性
2.技术的可行性
3.财务可行性
4.组织可行性
5.经济可行性
6.社会可行性
7.风险因素及对策

三、需求分析

1、需求分析的任务准确地定义新系统的目标,准确地回答系统要必须做什么的问题,并用需求规格说明书规范的形式准确地表达用户的需求

2、需求分析的步骤

  1. 需求获取
  2. 分析建模
  3. 需求描述
  4. 需求验证

(1)需求获取有哪些方法?

  1. 问卷调查
  2. 访谈会议
  3. 市场调查
  4. 实地操作
  5. 建立原型

1、结构化分析及建模(重点掌握)

1、特点:结构化分析方法,是一种面向数据流的分析方法,适用于大型的数据处理系统
2、指导思想:自顶向下,逐步求精
3、描述工具
(1)数据流图
(2)数据字典
(3)结构化语言、判定树和判定表

(1)工具1:数据流图(DFD)
描绘逻辑模型,什么是数据流图?
  数据流图是用于表示系统逻辑模型的一种工具。从数据传递和加工的角度,以图形的方式描述数据在系统中流动和处理的过程

基本符号
在这里插入图片描述

画法(给你需求,让你画数据流图):先找源点、汇点,再找加工(动词),再找数据流(名词)
顶层图、0层图、1层图,父子图之间的平衡必须要注意

(2)工具2:数据字典(DD):4种
数据字典是结构化分析方法中的另一个有力工具,它针对数据流图出现的所有数据元素给出逻辑定义

  1. 数据字典的内容
    (1)数据流条目
    (2)文件条目
    (3)数据项条目
    (4)加工条目
  2. 数据字典中使用的符号
    1)=:被定义为。
    2)+:与。 例如,X=a+b表示x由a和 b组成。
    3)[…│…]:或。例如,X=[a│b]表示x由a或b组成。
    4){…}:重复。例如,X={a}表示x由0个或多个a组成。
    5)m{…}n或{…}nm:重复。例如:X=2{a}5或X={a}52表示x中最少出现2次a,最多出现5次a。5,2为重复次数的上、下限。
    6)(…):可选。例如,x=(a)表示a可在x中出现,也可不出现。
    7)“…”:基本数据元素。例如,x=“a”,表示x是取值为字符a的数据元素。
    8)“··”:连接符。例如,x=1··9,表示x可取1到9中任意一个值。
符号使用案例:
机票 = 姓名 + 日期 + 航班号 + 始发地 + 目的地 + 费用;

终点 = [上海 | 北京 | 广州];
航班号 = “CZ9938” ·· “CZ9948”;
  1. 数据字典写实例
  2. 数据字典的实现
    (1)人工方法:人工方法实现时,每一词典条目(每一个数据定义或每一个加工逻辑说明)写在一张卡片上,由专人管理和维护。为了便于搜索,所有卡片按数据名称排序。人工方法的优点是容易实现。
    (2)自动方法:把词典存在计算机中,用计算机对它搜索和维护。现有多种“词典管理程序”,如 PLS/PSA。用计算机管理词典质量高,搜索、维护方便。
    (3)人工和自动混合的方法:在人工过程中可借助正文编写程序、报告生成程序等工具辅助完成。
    不论通过哪种途径实现的数据词典都应尽量做到以下几点:
    (1)没有冗余:主要指数据定义不能重复。在规格说明书的其他组成部分中已出现的信息不能重复。
    (2)查阅方便:通过名称可以方便地查阅数据词典中的每个定义。
    (3)定义的书写方法简单、方便、严谨,而且可读性强
    (4)建议采用卡片形式书写

(3)工具3:加工逻辑说明:(类似与描述算法)

  1. 结构化语言
    结构化语言是在自然语言基础上加上一定的限制语句得到的语言,介于自然语言与程序设计语言之间
  2. 判定表
  3. 判定树

4、成果:需求规格说明书:包含哪些内容?

  • 正文的第一章内容是1.概述,包含
    1.1.编写目的;1.2.术语与定义;1.3.参考资料;三个部分

  • 第二章要给出该项目的标准和规范,在文档的后续内容编写中以及项目开发过程中必须遵照这个标准和规范进行。

  • 第三章应该说明该项目的相关假设、限制和一些依赖条件,在后续系统部署的过程中可以有参考意义。

  • 第四章“功能规格”是重点,重点介绍这个系统的角色,界面设计思路,系统的功能视图和功能点清单,以及系统的需求用例。这个内容必须详细描述,这样才能对后续的开发和测试提供指导意义。

  • 第五章“非功能规格”要对项目的性能、安全、数据的备份恢复等内容解释解释说明,一个项目除了功能完整之外,还要考虑性能、安全等相应的要求。

  • 第六章“附录”,是对软件需求规格说明书的一些补充说明文档,其中的“软件需求跟踪矩阵”是重点,这份文档是对后续需求的完善程度进行了严格的控制。

++软件设计

软件设计分为两个阶段:
(1)概要设计阶段得到系统的总体框架
(2)详细设计阶段明确系统内部的实现细节

四、概要设计

1、概要设计的任务:确定软件系统的组成结构,各模块功能及模块间的联系

  1. 设计软件系统结构
  2. 数据结构及数据库设计
  3. 编写概要设计文档
  4. 评审概要设计文档

2、概要设计的过程:数据库设计是概要设计中的一个任务、测试计划也是概要设计中的一个任务

  1. 选定体系结构
  2. 确定设计方案
  3. 设计软件结构
  4. 数据结构及数据库设计
  5. 制定测试计划
  6. 编写概要设计文档
  7. 概要设计文档评审

3、概要设计的原则:模块独立性的两个标准:耦合和内聚(哪几种,排列顺序)

  1. 模块化
    思想:将整体软件划分成独立命名且可独立访问的模块,不同的模块通常具有不同的功能或职责
  2. 抽象与分解
  3. 信息隐蔽与局部化
  4. 模块独立性
  5. 复用性设计

1、模块独立性

1️⃣耦合性
耦合是模块之间相互连接的紧密程序的度量
模块之间的连接越紧密,联系越多,耦合性就越高,而其模块独立性就越弱

  1. 非直接耦合
    耦合度最弱,模块独立性最强
  2. 数据耦合
    调用模块和被调用模块之间只传递简单的数据项参数
  3. 标记耦合
    传递地址
  4. 控制耦合
    模块之间传递的不是数据,而是控制信息如标志、开关量,一个模块控制了另一个模块的功能
  5. 外部耦合
    一组模块都访问同一全局简单变量,而且不通过参数表传递该全局变量的信息
  6. 公共耦合
    一组模块都访问同一全局数据结构
  7. 内容耦合
    一个模块直接访问另一个模块的内容

尽量使用数据耦合,少用控制耦合,慎用或有控制地使用公共耦合、并限制公共耦合的范围,坚决避免内容耦合

2️⃣内聚性

  1. 偶然内聚
    一个模块内的各成分无实质性的联系,只是偶然地被凑到一起
  2. 逻辑内聚
    模块内部各组成部分的处理动作在逻辑上相似,但功能却彼此不同或无关
    逻辑内聚和偶然内聚一样,都是为了节省空间而把没有联系的元素放在一个模块中,这种模块的内聚很定。逻辑内聚必然会造成模块间的控制耦合
  3. 时间内聚
    将若干个在同一时间段内进行的工作集中在一个模块内,但这些工作彼此无关
  4. 过程内聚
    模块内部包含的各个成分按照某种确定的顺序进行,但所做工作没什么关系
  5. 通信内聚
    模块内所有处理功能都通过公用数据而发生关系。即模块内各个组成部分都适用相同的输入数据或产生相同的输出结果
  6. 顺序内聚
    一个模块中各个组成部分和同一功能密切相关,而且各个组成部分必须顺序执行,通常前一个成分的输出就是后一个成分的输入
  7. 功能内聚
    模块内个各个组成部分全部都为完成同一个功能而存在,共同完成一个单一的功能,并且只能完成一个功能,模块已不可再分

设计的要求:高内聚、低耦合
软件结构优化准则:提高独立性、模块的作用范围和控制范围

  1. 模块功能的完善化
  2. 消除重复功能,改善软件结构
  3. 模块规模应适中
  4. 模块的深度、宽度、扇出和扇入都应适当
  5. 模块的作用范围应在控制范围之内
  6. 力争降低模块接口的复杂程度
  7. 设计单入口、单出口的模块
  8. 模块功能应该可以预测

2、软件结构设计的图形工具

系统结构图:通过数据流图导出系统结构图(怎么画的要了解)

  1. 层次图(H图)
    层次图也称为H图,用于表示软件的层次结构,特别适合于在自顶向下设计时使用
    在这里插入图片描述

  2. IPO图
    IPO图是输入/处理/输出图,其基本形式是三个方框,左边框列出所有的输入数据,中间框列出主要的处理,右边框列出输出数据。三个框中间用的粗箭头指出数据通信情况
    在这里插入图片描述

  3. 结构图(SC图)
    数据流图的类型:
    数据流图两种:变换型数据流图、事务型数据流图,大部分的数据流图都是变换型的,局部有事务型特征

3、结构化设计

结构化设计是将结构化分析得到的数据流图映射成软件结构图(DFD->SC)的一种设计方法
强调模块化、自顶向下逐步求精、信息隐蔽、高内聚低耦合等设计准则

结构化设计的过程:
(1)精化DFD
(2)确定DFD类型
(3)把DFD映射到系统模块化结构,设计模块结构的上层
(4)基于DFD逐步分解高层模块,设计出下层模块
(5)根据模块独立性原理,精化模块结构

5、成果:概要设计说明书:包含哪些内容?

  • 总述:需求或目标(讲一下事情的起源)、环境、局限;
  • 总体设计:从全局的角度说一下
    组织结构、功能、处理流程、有哪些模块、模块间的关系,运行环境等。(输出图:系统结构图,系统流程图,数据流程图)
  • 外部接口:总体说明外部用户、软、硬件接口(可用资源);
  • 模块设计:每个模块“做什么”、简要说明“怎么做”(输入、输出、处理逻辑、与其它模块或系统的接口),处在什么逻辑位置、物理位置。

五、详细设计

1、任务:确定每一个模块所使用的算法、块内数据结构和接口细节

  1. 算法设计
  2. 数据结构设计
  3. 确定模块接口细节
  4. 测试用例设计
  5. 数据库物理设计
  6. 数据代码设计
  7. 其他设计
  8. 编写详细设计说明书并进行评审

2、工具(较重要):程序流程图、N-S图、PAD图(画法,给你一个算法,你能画图)
每种图有优缺点:程序流程图在描述程序结构、嵌套关系、层次结构上不容易表示,不太支持逐步求精,简单、清晰、直观

图形工具:程序流程图、N-S图、PAD图
表格工具:判定表
语言工具:过程设计语言(PDL)

1️⃣程序流程图

  1. 处理框也可以表示输入/输出操作
  2. 在不至于混淆的情况下,从上到下、从左到右的箭头可以省略
  3. 预定义的处理可定义函数和子程序
    在这里插入图片描述
  4. 连接点用于从一张流程图到另一张流程图的转接

顺序结构:
选择结构:
多分支选择结构:
当循环结构
直到循环结构:

优点:直观清晰、易于使用
缺点:①控制流程的流向可以任意画,容易造成非结构化的程序结构
②流程图不能反映逐步求精的过程,往往反映的是最后的结果
③不易表示数据结构

2️⃣N-S图
(1)顺序结构:在方框内从上到下安排任务,任务之间以横线分开,一个任务框内可以是一条语句或多条相关语句
(2)选择结构:
(3)循环结构

在这里插入图片描述
N-S图特点
①每一个特定控制结构的作用域都很明确,能够清晰判别
②绘制时需遵守结构化程序设计要求,不能够任意转移控制
③易于确定局部数据和全局数据的作用域
④易于表示嵌套结构的模块化得层次结构

3️⃣PAD图
优点
(1)结构清晰,易读易画
(2)使用PAD图设计出的程序必然是结构化程序
(3)PAD图容易转换成高级语言源程序
(4)支持自顶向下、逐步求精的设计方法

在这里插入图片描述
4️⃣PDL图
特点:
(1)关键字具有固定的语法格式,可以提供结构化控制语句、数据和模块说明
(2)处理部分的描述采用自然语言,便于理解
(3)可以说明简单数据结构和复杂数据结构
(4)可以完成模块定义和调用的说明,并能完成各种接口的描述
(5)PDL描述与程序结构相似,容易自动生成程序

(1)数据说明:PDL 程序中指明数据名的类型及作用域.其形式为: 
end <子程序名> <PDL 语句指各种 PDL 构造> 
(3)分程序结构 
begin <分程序名> <PDL 语句> 
end <分程序名> 
(4)顺序结构 
选择型 
if <条件> then 
<PDL 语句> 
else 
<PDL 语句> 

end if 
if <条件> then 
<PDL 语句> 
else if <条件> then 
<PDL 语句> 
else 
<PDL 语句> 
end if 
WHILE 循环 
loop while <条件> 
<PDL 语句> 
end loop 
UNTIL 型循环 
loop until <条件> 
<PDL 语句> 
end loop 
CASE 型 
Case <选择句子> of 
<标号>{, <标号}: ><PDL 语言> 
[default]: [<PDL 语句>] 
end case 
(5)输入/输出结构 print read display 

3、成果:详细设计说明书

  • 引言,包含: 编写目的,背景,参考资料,术语定义及说明
  • 设计概述,包含:任务和目标,需求概述,运行环境概述, 条件与限制,详细设计方法和工具
  • 系统详细需求分析,包含:详细需求分析,详细系统运行环境及限制条件分析接口需求分析
  • 总体方案确认,包含: 系统总体结构确认, 系统详细界面划分
  • 系统详细设计,包含:
    系统结构设计及子系统划分,系统功能模块详细设计(采用HIPO图进行功能分解与模块描述,用IPO或结构图描述各模块的组成结构、算法、模块间的接口关系,以及需求、功能和模块三者之间的交叉参照关系),系统界面详细设计

六、面向对象概念和Rose建模技术

1、统一建模语言UML

统一建模语言是用一组专用的符号描述软件模型的语言

  1. UML的组成
    基本构造块、规则和共用机制
  2. UML的基本构造块包括3部分:事物、关系和图
  3. UML的事物
    包括结构事物、行为事物、分组事物和注释事物
  4. UML的关系
    (1)关联
    (2)泛化
    (3)依赖
    (4)实现
    (5)聚集
    (6)组合

在这里插入图片描述

  1. UML的图
类型图名功能建模类别
用例图用例图描述系统实现的功能,并指出各功能的操作者
静态图类图描述类、类的特性以及类之间的联系
静态图对象图描述对象的特征以及对象之间的联系
静态图包图非正式图,描述系统的层次结构,其内容可以是一个类图或另一个包图
实现图组件图描述组件的组成与连接
实现图配置图描述系统运行环境的配置情况静态建模
交互图时序图描述对象之间的动态交互,强调对象间消息传递的时间顺序
交互图协作图描述对象之间的交互,强调上下级关系
行为图状态图描述一个特定对象所有可能的状态以及状态转移的事件
行为图活动图描述满足用例要求所要进行的活动以及对象状态改变的结构动态建模

2、静态建模

1、用例图
1、 用例图包括:
(1)用例,椭圆表示
(2)参与者,小人表示
(3)关系,包含和扩展关系
在这里插入图片描述
2、用例间的关系
包含:指一个用例作为另一个用例必须的部分被使用
扩展:指一个用例扩展了另一个用例的功能,但这个扩充功能不是必须的
在这里插入图片描述

在这里插入图片描述
2、类图
1、类的表示
组成:类名、属性和方法
在这里插入图片描述
2、类中属性的可见性
(1)公有(+)
(2)私有(-)
(3)保护(#)
3、类之间的关系
(1)关联:类之间存在某种关联
如:

(2)泛化:继承关系
在这里插入图片描述

(3)依赖:描述的是一个类使用了另一个类
在这里插入图片描述

(4)实现:类和接口之间个关系

(5)聚集(聚合):类与类之间是整体与部分的关系
在这里插入图片描述
(6)组合(复合聚集或组成):整体不存在,部分也不存在
在这里插入图片描述

3、对象图
4、包图
包与包之间关系:依赖关系、泛化关系和细化关系
5、组件图
包含:组件、接口和依赖关系
6、时序图
描述对象间的动态交互关系,着重表现对象消息传递的时间顺序
要素:对象、消息、生命线
7、协作图
对象图的扩展,着重体检交互对象间的静态连接关系,侧重说明那些对象之间有消息传递
8、状态图
描述单个对象状态的变化情况
有初态、终态和中态
在这里插入图片描述

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
软件工程是一门研究和应用如何以系统化的、规范的、可靠的、高效的方式开发和维护软件的学科。CSDN(全称中国软件开发网)是中国最大的技术社区之一,提供诸多软件工程知识点的学习和交流平台。 在CSDN上,我们可以找到很多与软件工程相关的知识点,以下是其中一些重要的内容: 1. 软件开发生命周期:介绍软件从需求分析、设计、实现、测试、部署到维护的过程,帮助开发人员全面了解软件开发的各个阶段和相应的方法和工具。 2. 软件设计原则:讲解软件设计中的重要原则,如单一职责原则、开闭原则、依赖倒置原则等,以提高软件的可维护性、可扩展性和可复用性。 3. 软件架构模式:介绍常见的软件架构模式,如分层架构、微服务架构、事件驱动架构等,帮助开发人员选择适合的架构模式来满足系统的需求。 4. 软件测试技术:介绍软件测试的基本方法和技术,包括单元测试、集成测试、系统测试和性能测试等,以确保软件质量和稳定性。 5. 软件项目管理:讲解项目管理的方法和工具,如敏捷开发、SCRUM、Kanban等,以帮助团队高效地规划、执行和交付软件项目。 6. 软件质量保证:探讨提高软件质量的方法,包括代码审查、自动化测试、持续集成等,以确保软件的可靠性、安全性和性能。 除了以上知识点,CSDN上还有大量涉及各种编程语言、开发框架、数据库、云计算和人工智能等方面的文章、教程和实战项目,可以帮助开发人员不断学习和进步。 总之,CSDN作为一个开发者社区,为广大软件工程师提供了一个共享与学习的平台,通过拥抱CSDN,我们可以不断积累软件工程方面的知识和经验,提升自己的技术水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微笑伴你而行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值