强调了文档化标准化,把结构化的各种方法和特点表现得淋漓尽致
改进瀑布模型:添加回溯阶段
瀑布模型容易存在问题的根本原因:需求阶段无法完全把控
适用场景:需求明确或二次开发
原型模型:在项目开发初期构造一个简易系统,可以是界面,也可以有功能,针对需求不明确的情况
原型法往往只用于需求分析阶段
把原型通过很多的演化和调整形成最终产品,为演化模型
螺旋模型有原型、演化、瀑布的特征
原型的思想和瀑布模型的思想得到增量模型,例如先把核心做出来,然后一部分一部分进行所有的内容
体现出阶段的对应关系,希望提早发现问题
喷泉模型最大的特点是面向对象
瀑布模型和构件化开发模型组合形成的模型
把软件开发中的各个模块考虑做成构件,再把构件进行组装,极大提高了软件开发的复用性,缩短开发时间,减少成本,提高可靠性
敏捷开发方法不是一个模型,而是一组模型
内聚类型 | 描述 |
---|---|
功能内聚 | 完成一个单一功能,各个部分协同工作,缺一不可 |
顺序内聚 | 处理元素相关,而且必须顺序执行 |
通信内聚 | 所有处理元素集中在一个数据结构的区域上 |
过程内聚 | 处理元素相关,而且必须按特定的次序执行 |
瞬时内聚(时间内聚) | 所包含的任务必须在同一时间间隔内执行 |
逻辑内聚 | 完成逻辑上相关的一组任务 |
偶然内聚(巧合内聚) | 完成一组没有关系或松散关系的任务 |
耦合类型 | 描述 |
---|---|
非直接耦合 | 两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的 |
数据耦合 | 一组模块借助参数表传递简单数据 |
标记耦合 | 一组模块通过参数表传递记录信息(数据结构) |
控制耦合 | 模块之间传递的信息中包含用于控制模块内部逻辑的信息 |
外部耦合 | 一组模块都访问同一全局简单变量,而且不是通过参数表传递该全局变量的信息 |
公共耦合 | 多个模块都访问同一个公共数据环境 |
内容耦合 | 一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口 |
单元测试后进行集成测试,确认测试和系统测试的顺序是不确定的
计算有向图G的环路复杂度公式为:
V(G)是有向图G中的环路个数,m是G中的有向弧数(边),n是G中的节点数(点)
将语句抽象为环路,对于分叉的地方,可以抽象为节点,也可以不抽象为节点,不影响环路复杂度的结果计算
软件维护是生命周期的一个完整部分。
可以将软件维护定义为需要提供软件支持的全部活动,这些活动包括在交付前完成的活动,以及交付后完成的活动。交付前完成的活动包括交付后运行的计划和维护计划等;交付后的活动包括软件修改、培训、帮助资料等
可维护性:
维护类型:
衡量开发商改善软件的能力
CMMI从2级开始,1级为混乱级,是不需要评的
十大知识领域:
01 项目整合管理
整合管理是指为确保项目中各项工作,能够有机地协调和配合而展开的,综合性和全局性的项目管理工作和过程。包括项目集成计划的制订、项目集成计划的实施和项目变动总体控制等。
02 项目范围管理
范围管理是指为完成项目目标,对项目的工作内容进行控制的管理过程,包括范围的界定、范围的规划和范围的调整等。
03 项目进度管理
进度管理是指为确保项目按时完成的一系列管理过程,包括具体活动的界定,如活动排序、时间估计、进度安排及时间控制等。
04 项目成本管理
成本管理是指为保证完成项目的实际成本不超过预算成本的管理过程,包括资源的配置、成本的预算及成本的控制等。
05 项目质量管理
质量管理是指为确保项目达到客户规定的质量要求所实施的一系列管理措施,包括质量规划、质量控制和质量保证等。
06 项目资源管理
项目资源管理包括识别、获取和管理所需资源以成功完成项目的各个过程,这些过程有助于确保 项目经理和项目团队在正确的时间和地点使用正确的资源。
07 项目沟通管理
沟通管理是指为确保项目信息的合理收集和传输所实施的一系列措施,包括沟通规划、信息传输和进度报告等。
08 项目风险管理
风险管理涉及项目可能遇到的各种不确定因素,包括风险识别、风险评估和风险控制等。
09 项目采购管理
采购管理是指为从项目实施组织之外获得所需要的资源或服务而采取的一系列管理措施。
10 项目相关方管理
相关方管理是指对项目相关方及其需求和期望进行识别和分析,并通过沟通上的管理来满足需要、解决问题的过程。
风险管理:损失或损害的可能性
关心未来、关心变化、关心选择
分类:项目风险、技术风险、商业风险
风险曝光度(Risk Exposure):出现风险的概率×风险可能造成的损失
设计模式名称 | 简要说明 |
---|---|
Abstract Factory 抽象工厂模式 | 提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类 |
Builder 构建器模式 | 将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示 |
Factory Method 工厂方法模式 | 定义一个创建对象的接口,但由子类决定需要实例化哪一个类。工厂方法使得子类实例化的过程推迟 |
Prototype 原型模式 | 用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象 |
Singleton 单例模式 | 保证一个类只有一个实例,并提供一个访问它的全局访问点 |
设计模式名称 | 简要说明 | 速记关键字 |
---|---|---|
Adapter 适配器模式 | 将一个类的接口转换成用户希望得到的另一种接口。它使原本不相容的接口得以协同工作 | 转换接口 |
Bridge 桥接模式 | 将类的抽象部分和它的实现部分分离开来,使它们可以独立地变化 | 继承树拆分 |
Composite 组合模式 | 将对象组合成树形结构以表示“整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性 | 树形目录结构 |
Decorator 装饰模式 | 动态地给一个对象添加一些额外的职责。它提供了用子类扩展功能的一个灵活的替代,比派生一个子类更加灵活 | 附加职责 |
Facade 外观模式 | 定义一个高层接口,为子系统中的一组接口提供一个一致的外观,从而简化了该子系统的使用 | 对外统一接口 |
Flyweight 享元模式 | 提供支持大量细粒度对象共享的有效方法 | |
Proxy 代理模式 | 为其他对象提供一种代理以控制这个对象的访问 |
设计模式名称 | 简要说明 | 速记关键字 |
---|---|---|
Chain of Responsibility 职责链模式 | 通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一个对象处理这个请求 | 传递职责 |
Command 命令模式 | 将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作 | 日志记录,可撤销 |
Interpreter 解释器模式 | 给定一种语言,定义它的文法表示,并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子 | |
Iterator 迭代器模式 | 提供一种方法来顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示 | |
Mediator 中介者模式 | 用一个中介对象来封装一系列的对象交互。它使各对象不需要显式地相互调用,从而达到低耦合,还可以独立地改变对象间的交互 | 不直接引用 |
Memento 备忘录模式 | 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将该对象恢复到原先保存的状态 | |
Observer 观察者模式 | 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新 | |
State 状态模式 | 允许一个对象在其内部状态改变时改变它的行为 | 状态变成类 |
Strategy 策略模式 | 定义一系列算法,把它们一个个封装起来,并且使它们之间可互相替换,从而让算法可以独立于使用它的用户而变化 | 多方案切换 |
Template Method 模板方法模式 | 定义一个操作中的算法股价,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义算法的某些特定步骤 | |
Visitor 访问者模式 | 表示一个作用于某对象结构中的各元素的操作,使得在不改变各元素的类的前提下定义作用域这些元素的新操作 |
需求分析阶段用到的工具
必考题,15分
分层数据流图
转换的基本原则:实体和联系分别转换成关系,属性则转换成相应关系的属性
例:学生表转成关系模式,学号、姓名等属性需要转换,往往容易忽视掉联系中的属性,如班级号
包含关系:登记外借信息会使用用户登录
扩展关系:查询是基本用例,延伸出来修改
包含和扩展的区别在于是否必需
多重度:
1
:表示一个集合中的一个对象对应另一个集合中一个对象0..*
:表示一个集合中的一个对象对应另一个集合中的0个或多个对象(可以不对应)1..*
:表示一个集合中的一个对象对应另一个集合中的一个或多个对象(至少对应一个)*
:表示一个集合中的一个对象对应另一个集合中的多个对象关系:依赖、泛化(类)、关联(组合、聚合)、实现(接口)
聚合:菱形块所在的位置为聚合后
表现出了处理事务时的时间顺序
考查的核心放在消息上,例如补全消息
表现整个处理流程的基本情况、分支的状态
带泳道的活动图:
表现状态的变迁,也属于动态图
又称为协作图,是顺序图的另一种表达方式
也可以把顺序图和通信图统称为交互图
顺序图强调时间顺序
本文作者:Morales
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 License 许可协议。转载请注明出处!