软件工程(速成笔记)

第一章 软件工程概论

第一节 软件

1、软件定义

包括程序、数据、文档

2、软件特点

抽象、无明显制造过程、无备件、手工制作、成本昂贵

第二节 软件生存周期及软件开发模型

1、软件生存周期

①需求分析:描述软件的功能、性能、限制、接口、有效性需求,用需求规格说明书表达

②软件设计:技术核心,把确定的需求转换成相应的体系结构,分成总体设计和详细设计

③编码:把软件设计成代码

④测试:保证软件质量的重要手段,在设计测试用例的基础上检验软件

2、软件生存周期模型

①瀑布模型

遵循软件生存期的划分,各阶段自上而下、顺序展开

②演化模型

先做试验开发,探索可行性,弄清软件需求,再获得满意的软件

演化模型在克服瀑布模型缺点、减少由于软件需求不明给开发工作带来风险

③螺旋模型

结合瀑布与演化模型,加入风险分析,螺旋模型沿着螺线旋转,四个象限表达了四种活动:

1.制定计划:确定软件目标,选定实施方案

2.风险分析:分析所选方案,识别和消除风险

3.实施工程:实施软件开发

4.客户评估:评价开发工作,提出修正建议

第二章 可行性研究与需求分析

第一节 可行性研究

1、可行性研究的任务

用极少的代价在最短时间内决定软件能否开发成功

经济(成本和盈利)技术、法律、运行(运行方式)

2、可行性研究的步骤和工具

步骤

①确定系统的规模和目标

②分析现有系统,设计新系统的高层系统模型

③评审系统模型

④设计和评价新系统的实现方案

⑤制定行动方案

⑥拟定开发计划

⑦编制可行性报告

工具:系统流程图

第二节 结构化分析方法

1、定义

面向数据处理的软件开发方法,核心思想是自顶向下、逐层分解

2、主要建模工具

①实体关系图ERD

静态数据结构

②状态迁移图

对象在其生命周期内经历的状态序列

③数据流图DFD

系统中数据的流动、处理、存储情况

④数据字典

对数据流图中所有数据元素进行精确严格的定义

第三章 软件设计

第一节 软件设计的分类

①概要设计:将软件需求转换为软件结构和数据结构,编写概要设计说明书

②详细设计:细化软件结构,得到软件的详细算法和数据结构,编写详细设计文档

第二节 软件设计的概念

1、耦合性

模块间连接紧密,联系多,则耦合度高,以下是七种耦合方式(独立性渐降)

①非直接耦合

模块间互不联系,通过主模块的控制和调用实现联系

②数据耦合

模块间通过参数传递基本类型的数据

③特征耦合

模块间通过参数传递复杂的数据结构

④控制耦合

模块向另一个模块传递控制信息,控制其内部逻辑

⑤外部耦合

模块通过外部工具相关联

⑥公共耦合

多个模块访问同一个全局数据结构或公共环境

⑦内容耦合

一个模块直接访问另一个模块的内部数据,或者直接跳转到另一个模块的内部

2、内聚性

表示模块内部各元素相结合的紧密程度,以下是七种内聚方式(内聚性渐升)

①偶然内聚

各部分无联系,偶然被放到一起

②逻辑内聚

各部分属于相似的操作,由标志参数控制执行哪个操作

③时间内聚

各部分需要在同一时间段内执行

④过程内聚

各部分按照特定的执行顺序组合到一起,共同完成一个业务流程

⑤通信内聚

各模块在同一个数据集上进行不同的操作

⑥顺序内聚

各模块顺序执行,前一个部分的输出是下一个部分的输入

⑦功能内聚

各模块共同协作,完成一个单一、明确的功能或任务

第三节 结构化设计方法

变换分析

将结构化分析阶段得到的数据流图转换为软件结构图

1.找核心:找到流程图中最核心的处理步骤

2.搭架子:创建一个总控模块,下面加上输入、处理、输出三大模块

3.填细节:把输入、处理、输出分成更具体的模块

第四节 详细设计

1、N-S图(盒图)
2、判定表与判定树

算法包含多重嵌套的条件选择时使用判定表与判定树

第四章 面相对象技术

面向对象分析

对象模型技术

①对象模型:描述系统静态结构,包括类和对象,以及他们的属性、操作和联系

②动态模型:描述系统涉及时序和改变的状态

③功能模型:描述系统内部数据的传输和处理

第五章 统一建模语言UML

第一节 UML定义

用于软件系统可视化、详述、构造和文档化的通用建模语言

第二节 UML概述

1、UML的基本构造块

①视图

从某个特定的角度对系统建模元素的抽象,不是一个具体的图形,而是一个观察视角,由一组相关的图构成

可以想象成一本相册,里面收录了从不同角度拍摄的建筑物照片

分为用例、逻辑、实现、进程、部署4种视图

②图

视图的具体表现,是包含特定模型元素的图形

可以想象成相册里的一张具体的照片

分为++++用例++++ 、++++类++++ 、++++对象++++ 、组件、部署5种静态图和状态、++++时序++++ 、协作、++++活动++++4种动态图

③模型元素

在UML各种图中使用的概念,是用标准的图形符号表示

第三节 静态建模

1、用例模型

描述参与者(用户)能用系统做什么

用例: 系统为用户提供的完整功能

关系: 描述谁能用哪个功能,以及功能间如何组合

成果是用例图,展示系统的核心功能范围

2、类和对象模型

描述系统有哪些"模板",以及它们的关系

给系统画一张静态结构图,说明系统由什么组成,不关心如何运行

3、类之间的关系

①关联:一个类作为另一个类的成员变量,它们存在长期、稳定的联系

②聚集:一种特殊的关联关系,强调整体与部分

③泛化:子类基于父类扩展,子类继承父类的特征,并添加新的特征

④依赖:一个类的行为需要用到另一个类的对象

第四节 动态建模

1、状态图

描述一个对象所有可能状态及引起其状态转移的事件

一个状态图包括一系列状态以及状态之间的转移

2、时序图

描述对象间的动态交互,体现对象间消息传递的时序

存在两个轴,水平轴表示不同对象,垂直轴表示时间

对象用一个带垂直虚线的矩形框表示,垂直虚线是对象的生命线,对象间通信通过在对象的生命线间传递消息来表示

3、协作图

用于描述相互协作的对象间的交互关系和链接关系,体现对象间的静态链接关系

4、活动图

显示动作及其结果,既可描述操作的行为,也可描述用例和对象内部的工作过程

第五节 基于UML的统一建模过程---RUP

以用例为驱动、以系统为中心的迭代与增量过程

包括初始、细化、构造、移交4个阶段,每个阶段又分为若干次迭代,每次有一个工作流,包括需求、分析、设计、实现、测试5个活动

相关推荐
muddjsv20 小时前
软件工程:职业全景与前景深度解析
软件工程
明洞日记21 小时前
【图解软考八股034】深入解析 UML:识别标准建模图示
c++·软件工程·软考·uml·面向对象·架构设计
muddjsv21 小时前
软件工程编程语言学习:从入门到工程化的路线与建议
软件工程
宇钶宇夕2 天前
CoDeSys入门实战一起学习(二十八):(ST)三台电机顺起逆停程序详解
运维·学习·自动化·软件工程
学嵌入式的小杨同学2 天前
【Linux 封神之路】进程进阶实战:fork/vfork/exec 函数族 + 作业实现(含僵尸进程解决方案)
linux·开发语言·vscode·嵌入式硬件·vim·软件工程·ux
加密狗复制模拟2 天前
破解加密狗时间限制介绍
安全·软件工程·个人开发
muddjsv2 天前
软件工程核心课程学习规划表(按时间递进)
软件工程
明洞日记3 天前
【软考每日一练030】软件维护:逆向工程与再工程的区别与联系
c++·软件工程·软考·逆向工程
明洞日记3 天前
【软考每日一练026】软件工程深度解析:软件开发方法学的分类与应用实战
c++·ai·系统架构·软件工程·软考
喜欢吃豆3 天前
Ralph 架构深度解析报告:自主代理循环与软件工程的确定性重构
人工智能·重构·架构·大模型·软件工程