第一章
第一节
- 软件危机特征,表现:软件产品质量低劣,软件生产率低下
- 软件工程的目标:以较少的投资获取高质量的软件
- 软件工程分为两大类技术:软件开发技术,软件管理技术
第二节
- 软件包括程序和文档
- 软件按功能划分:系统软件、支持软件、应用软件
-
软件的生命周期 (时期阶段输出)屏幕捕获_2022_05_16_14_03_36_904
- 软件工程三要素:方法,工具,过程
第三节
-
软件开发模型(软件过程模型)
-
瀑布模型(结构化)(记住输出)
屏幕捕获_2022_05_16_14_08_29_560优点:比较容易管理
缺点:不适用于需求不明确的情况
-
增量模型,非整体开发模型
优点:比较灵活
缺点:容易盲目乐观和无限循环
-
原型模型是循环模型(解答题)
适用于前沿的开发,可能导致忽略一些功能
螺旋模型是瀑布模型和增量模型的结合,加入了风险分析,适用于大型开发,风险度高的软件开发
喷泉模型,面向对象
智能模型(结构化)
-
第四节
- 结构化开发方法:
- 结构化程序设计方法 SP (structured program)
- 结构化设计方法 SD(structured design)
- 结构化分析方法 SA(structured analysis)
- 面向对象的开发:
- OOA (Object-Oriented Analysis)面向对象的分析
- OOD (Object-Oriented Design) 面向对象的设计
- OOP (Object-Oriented Program) 面向对象的程序设计
- 敏捷软件开发:以人为核心
作业判断题10RCP,RSP划掉不看
第二章
第一节
-
软件需求的困难:
- 应用领域的广泛性
- 非功能性需求建模技术的缺乏
- 沟通上的困难
-
软件需求的分类
image-20220517092959362划分为两类是用户需求和系统需求
三类是功能需求、非功能需求和领域需求
第二节
-
需求工程的过程(图重要):
image-20220517093215061
第三节
- 软件需求难以获取的原因
- 缺乏领域知识
- 存在默认的知识
- 存在多个知识源
- 客户可能的偏见
- 需求抽取的方法(和特点):
- 面谈法:简要而直接,简单的需求获取技术。
- 问卷调查法: 是对面谈法的补充
- 需求专题讨论会(最有效,最有力):有利于培养高效团队
- 原型化方法:对于试验性、探索性的项目效果好,强调开发人员与用户的不断交互
- 面向用例的方法:从用户角度来观察和分析系统应该具有的功能
第四节
-
画dfd图(数据流图)(大题)
用文字写出:实体,处理,数据存储,数据流
再去画图,方便给分
SA法(结构化分析方法)的基本思想:分解和抽象
-
SA法的描述方法有哪些:
- DFD图(最重要)
- 数据词典
- 结构化语言,判定表和判定树
-
数据流图基本符号
image-20220517094918931 -
面向对象的分析方法,Use case图画法
- 识别执行者
- 识别用例
- 识别用例和用例的关系
第四章
- 需求验证的内容
- 有效性检查
- 一致性检查
- 完备性检查
- 可验证性检查
- 需求管理最重要的是需求变更管理
第五节
DFD图例子,参考ppt2.5。DFD图要求顶层和一层
-
DFD图的基本原则
- 数据守恒和数据封闭原则
- 加工分解原则
- 子图和父图平衡
- 合理使用文件
-
数据词典条目
- 数据流条目
- 文件条目
- 数据项条目
- 加工条目
-
如何画use case 模型
image-20220517100123269
作业
- 加工小说明针对dfd
- 判定表可以描述组合条件
- dfd图需求分析阶段
第三章
第二节 软件体系结构设计
以下优缺点了解
- 仓库模型:利于大数据的共享(最大的特点)
- 优点:
- 数据由一个子系统产生,并且被其他一些子系统共享
- 共享数据能得到有效的管理,各子系统之间不需要通过复杂的机制来传递共享数据。
- 一个子系统不必关心其他的子系统是如何使用它产生的数据的。
- 所有的子系统都拥有一致的基于中央数据仓库的数据视图。
- 缺点:
- 各子系统必须有一致的数据视图
- 一个子系统发生了改变,它产生的数据结构也可能发生改变。为了其他共享的目的,数据翻译系统会被用到。但这种翻译的代价是很高的
- 中央数据仓库和各子系统拥有的数据库必须有相同的关于备份、安全、访问控制和恢复的策略
- 集中式的控制使数据和子系统的分布变得非常困难甚至成为不可能。
- 优点:
- 层次模型:如SOA网络7层模型,tcp/ip 4层模型
- 适合增量的软件开发
- 分布式模型 C/S B/S
- 优点
- 资源共享
- 开放性高
- 可伸缩性好
- 容错能力强
- 透明性高
- 缺点
- 复杂性
- 安全性(难以保证)
- 可管理性(困难)
- 不可预知性,主要指系统的响应时间
- 优点
- 云计算模型:
- 三种服务模式:软件即服务(SaaS),平台即服务(PaaS),基础架构即服务(IaaS)
- 部署模型
- 公有云
- 私有云
- 混合云
- 雾计算适用于大数据共享
- 模块
- 划分:目的是将系统分而治之,不是越细越好
- 特点,划分原则:低耦合(数据耦合),高内聚(功能内聚)
第三节
- OOA
- OOD
- OOP
第四节
- 详细设计描述工具中常用的描述方法工具:
- 程序流程图
- N-S图
- PAD图
- PDL语言
- 判定表,判定树
第五节
- 用户界面设计的任务
- 建立用户模型
- 建立任务模型
- 确定用户界面类型
- 用户界面设计的原则(判断题,不背,了解)
- 争取保持一致性。
- 满足普遍可用性的需求。
- 提供信息反馈。
- 设计对话框已产生结束信息。
- 预防错误。
- 允许动作回退。
- 支持内部控制点。
- 减轻短期记忆负担。
- 不要用颜色表示信息
第六节
- MVC:
- M:模型
- V:视图
- C:控制器
第四章
第一节
- OOA,OOD,OOP以对象为中心构造系统
第二节
- UML:统一建模语言
第三节
- use case模型:
- 确定执行者:人、硬件、系统
- 确定用例:功能
- 用例之间的关系,extend ,include
- 可以看ppt后面的例子,练一练画图
第四节 静态模型
-
类之间的关系:
-
关联关系
- 常规关联
- 多元关联
- 有序关联
- 受限关联
- 或关联
- 关联类
-
聚集关系(会区分)
- 共享聚集:松散的,空心菱形表示
- 组合聚集:紧密的聚集,实心菱形表示
-
泛化关系
-
例子记住:
image-20220517111758079overlapping,disjoin 有交集/无交集
complete/incomplete 完全泛化/不完全泛化
-
-
-
包图
UML包又称为子系统
-
包与包之间的关系
-
依赖关系
image-20220517112221278 -
泛化关系:表示通用包和专用包的关系(不叫父包和子包)
image-20220517112230923
-
第五节 动态建模(重要)
-
消息
- 简单消息
- 同步消息
- 异步消息
-
状态图
-
状态
初态
终态
中间状态
-
复合状态
image-20220517112626289
-
事件(了解)
- 某条件为真
- 收到来自外部对象的信号
- 收到来自外部对象的某个操作中的员工调用
- 状态迁移上的时间表达式
-
例子:
image-20220517193331229image-20220517193359453
-
-
顺序图
虚线表示生命线(或时间轴)
矩形表示被激活
-
例子:
image-20220517193518307
-
活动图
-
同步线
image-20220517192400453 -
泳道(用于区分对象)
image-20220517192334142
-
-
合作图
阿拉伯数字有先后顺序
字母没有先后顺序
-
例:
image-20220517195822205
以上四种图要会画
第六节
- 实现模型
- 构件图:逻辑结构
- 配置图:物理结构
总结
- UML静态建模:
- 用例图
- 类图
- 对象图
- 包图
- 构件图
- 配置图
- 动态建模:
- 状态图
- 顺序图
- 合作图
- 活动图
第五章
第一节
- 区分语言
- 低级语言:包括机器语言和汇编语言
- 高级语言:其他
- 语言选择准则(了解)(能说2-3点)
- 项目的应用领域、
- 算法和计算复杂性
- 算法和计算复杂性
- 性能因素
- 数据结构的复杂性
- 软件开发人员的知识水平以及心理因素
第六节
- 软件复用不是代码复用
- 软件复用包括:测试信息的复用,分析结果的复用,测试结果的复用,代码的复用
- 可复用构建标准(记)
- 功能上的独立性与完整性
- 较高的通用性
- 较高的灵活性
- 严格的质量保障
- 较高的标准化程度
第六章 软件测试
第一节
- 软件测试的基本原则
- 尽量不由程序设计者进行测试
- 关键是注重测试用例的选择
- 充分注意测试中的群集现象
- 软件测试方法分类:静态分析,动态测试
- 静态分析
- 桌前检查
- 代码会审
- 步行检查
- 调用图
- 数据流分析图
- 动态测试方法
- 白盒法:分析内部逻辑结构
- 黑盒法:分析外部特性(功能)
第二节 白盒法
-
白盒法测试用例选择覆盖标准由弱到强为:
语句覆盖,判定覆盖,条件覆盖,判定条件覆盖,条件组合覆盖
条件覆盖包含语句覆盖,不包含判定覆盖
条件组合覆盖包含所有的
会选择测试用例(见ppt)
第三节 黑盒法
-
黑盒法包括
- 等价分类法
- 边值分析法
- 错误推测法
- 因果图法
-
等价分类法
- 关键是划分等价类
- 一个测试用例可能覆盖多个有效等价类
- 一个测试用例只能覆盖一个无效等价类
-
边值分析法
记住四个例子:
image-20220517202643567 -
因果图法,会画
image-20220517203131343image-20220517203147640image-20220517203159103image-20220517202856646
第四节 软件测试的策略
- 软件测试的策略包括:
- 单元测试
- 集成测试
- 确认测试
- 系统测试
- 单元测试
- 模块
- 驱动模块:模拟主查询
- 桩模块:子程序
- 白盒法主要用在单元测试,其他测试以黑盒法为主
- 模块
-
测试是由开发机构和用户完成的
-
测试是用户完成的
第六节 面向对象的测试
- <u>面向对象的测试特点主要反应在测试对象和内容的不同</u>
- 面向对象的测试的特点:
- 可以在没有代码的情况下进行测试,全周期的,需求和设计也是可以测试的
- 面向对象的测试策略(注意和[软件测试策略](# 第四节 软件测试的策略)的区别)
- 模型测 试
- 类测试
- 交互测试
- 系统测试
- 验收和发布测试
第七章 软件维护
第一节
- 运维的四种类型
- 完善性维护(最重要)
- 纠错性维护
- 适应性维护
- 预防性维护
- 维护的副作用
- 修改代码的副作用
- 修改数据的副作用
- 修改文档的副作用
第四节
- 软件可维护性包括(了解)
- 可理解性
- 可靠性:正确执行的概率
- 可测试性
- 可修改性
- 可移植性
- 效率
- 可使用性:易于使用(和可靠性区分)
第五节
- 逆向工程抽取包括
- 过程抽取
- 界面抽取
- 数据抽取
- 抽取是逆向工程的核心
第八章 软件项目管理
第二节
- 进度计划的工具(记)
- 进度表
- 甘特图
- 时标网状图
- PERT和CPM
- 其中时标网状图和PERT和CPM包含任务之间的逻辑依赖关系
第三节
- cocomo模型
- 基本的cocomo模型
- 中间的cocomo模型:进一步考虑了15种影响软件工作量的因素
- 详细的cocomo模型
第四节 人力资源(这一章重要)
-
团队成员3类
- 事业型
- 自我实现型
- 交际性
- 增强团队凝聚力的方法
- 拥有内部标准
- 成员更紧密地工作在一起
- 成员能了解彼此的工作
- 能做到无私编程:程序是团队而非个人财产
- 人员配备的原则:
- 重质量
- 重培训
- 阶梯提升
- 选择评价人员的条件(了解即可,会选)
- 应用领域经验
- 开发经验
- 教育背景
- 适应能力
- 沟通能力
- 工作态度
- 个性、
- 团队成员的去留(了解,会选)
- 尊重个人选择
- 满足成员合理的个人需求
- 满足成员的社会需求
- 加大团队建设的力度
- 要有剜肉剔骨的决心(去重团队负能量)
第五节 风险管理
-
风险分类
项目风险
技术风险
商业风险
第六节 质量保证
-
软件质量因素(了解)
image-20220518200301902 -
度量方法(划出来)
- 精确度量
- 全面度量
- 简易度量
第七节 配置管理
- CRF(Change Request Form) :变更提案表
- CCB(Change Control Board): 变更控制委员会
第九章
第一节
- CMM(Capability Maturity Model For Software): 软件能力成熟度模型
- CMM主要用于(主要功能):
- 软件过程评估SPA(Software Process Assessment)
- 软件过程改进SPI(Software Process Improvement)
- 软件能力评价SCE(Software Capability Evaluation)
- 软件过程的成熟度等级(要求会分级)(按照关键字分类)
- 初始级(不稳定)
- 可重复级
- 已定义级(组织标准)
- 已管理级(指令目标,追求高质量)
- 优化级(持续改善)
第二节 CMM结构
- 三个层次:
- 关键过程域
- 公共特性
- 关键实践
题型总结
- 单项
- 多选
- 填空
- 判断
- 简答
- 综合(DFD,用例图,动态建模4图,白盒测试)
补:会画:DFD图、判定表和判定树





















