# 案例专题
# 案例主题1:软件工程
1. 需求分析
2. 面向对象设计
# 数据流图DFD答题技巧
- 补充实体
- 补充存储
- 补充数据流
- 补充加工名
# UML图
- 静态图(结构图)
- 类图
- 动态图(行为图)
- 用例图
- 顺序图:强调时间顺序
- 通信图:协作图,强调消息收发关系,而不突出时间顺序
- 状态图:状态转换变迁
- 活动图:类似程序流程图,并行行为
# UML关系
依赖关系:一个事物发生影响另一个关系
泛化关系:特殊/一般关系
关联关系
- 聚合关系:整体与部门生命周期不通。eg:汽车和轮子
- 组合关系:整体与部分生命周期相同。eg:公司和部门
实现关系:接口与类的关系
# 类的三种类型&每种类型的主要职责
- 实体类
- 控制类
- 边界类
# 案例主题2:架构设计
1. 软件架构风格
2. 质量属性与架构评估
3. Web架构综合考查
# 软件架构风格
- 数据流风格:
- 批处理:大量整体数据、无需用户交互
- 管道过滤器:流式数据、弱用户交互
- 调用/返回风格:
- 主程序/子程序
- 面向对象
- 层次结构
- 独立构件风格:
- 进程通信
- 事件驱动系统(隐式调用):windows图形界面、断点回调
- 虚拟机风格:
- 解释器:适用于需要“自定义规则”的场合
- 规则系统:适用于专家系统
- 仓库风格:
- 数据库系统、
- 黑板系统:语音识别、知识推理、模式识别、知识推理
- 超文本系统
# 质量属性
- 性能
- 可用性
- 可修改性
- 安全性
# 架构评估
- 敏感点
- 权衡点
- 风险点
- 非风险
# 负载均衡
- 硬件:F5
- 软件:LVS、Nginx、HAproxy
# session共享机制
- 携带session的cookie
- 服务器同步session
- 将session存入redis
# 有状态与无状态
- 无状态是指对单次请求对处理,不依赖其他请求
- 有状态是指自身保存一些数据
# web相关技术
- 持久化技术-ORM:Hibernate、Mybatis、
- 数据库主从分离:主库写、从库写、一主多从
- 常用缓存:MemCache、Redis、Squid
- Redis集群分片方式:客户端分片、中间件实现分片、客户端服务端协作分片
- Redis分布式存储方式:主从模式、哨兵模式、集群模式
- Redis数据分片方案:范围分片、哈希分片、一致性哈希分片
- Redis持久化技术:RDB-快照思想、AOF-日志思想
- Redis常用问题:缓存雪崩、缓存穿透、缓存预热
# 案例主题3:数据库设计
1. 规范化与反规范化
2. 分布式数据库
3. NoSQL
4. 内存数据库
5. 其他数据库扩展知识
# 视图的优点
- 视图能简化用户的操作
- 视图机制可以使用户以不同的方式查询同一数据
- 视图对数据库重构提供了一定程度的逻辑独立性
- 视图可以对机密的数据提供安全保护
# 反规范化
反规范化优点:提高统计、查询效率
反规范化缺点:增加了数据冗余,浪费存储空间,增、删、改操作的效率降低,可能导致数据不一致,可能产生添加、修改、删除异常
- 增加派生性冗余列
- 增加冗余列
- 重新组表
- 分割表
# 案例主题4:其他
1. 时间管理与成本管理
2. 系统安全性
3. 系统可靠性