软件工程(速成笔记)
第一章 软件工程概论
第一节 软件
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个活动
