软考-中级数据库系统分析师-05 系统开发和运行知识
2023-05-14
软件生存周期
- 可行性分析与项目开发计划
- 需求分析
- 概要设计(包括设计总体数据结构和数据库结构)
- 详细设计
- 编码
- 单元测试
- 综合测试(最基本的测试是集成测试和验收测试)
- 维护阶段
软件生存周期模型
- 瀑布模型:线性顺序,适用于需求明确的项目
- 增量模型:融合了瀑布模型+原型实现,将需求分段为一系列增量产品,强调每一个增量均发布一个可操作的产品
- 演化模型:事先不能完整定义需求的软件开发,根据反馈进行改进,获得原型的新版本。重复这一过程,最终得到令用户满意的软件产品
- 螺旋模型:结合瀑布+演化。加入了两种模型均忽略的风险分析。每个螺旋周期大致和瀑布模型相符合。适合庞大、复杂且具有高风险的系统
- 喷泉模型:适用于面对对象的开发方法。以用户需求为动力,具有迭代性和无间隙性
典型的软件开发方法
- 结构化开发:自顶向下、逐层分解、模块化设计,基本原则是功能的分解与抽象。不适合较大规模的项目,适合数据处理领域的问题
- 原型化开发:快速建立一个系统模型展示给用户,在此基础上与用户交流,不太适合大型系统
- 面向对象开发:按照人类思维方法解决问题,更好的复用性,缩短开发周期
- 敏捷方法:灵活性,尽可能早地、持续地交付,可以支持用户后期增加或改变需求
软件项目管理
- 成本估算
- 风险分析
- 进度管理
- Gantt图(甘特图)
- 项目计划评审技术图(PERT)
人员管理
- 主程序员组:有主程序员
- 无主程序员组:相互平等
- 层次式程序员组:层次负责
沟通路径
面向对象分析方法
基本概念
- 对象:基本运行时的实体,包括属性和行为
- 消息:对象之间进行通信的一种构造
- 类
- 继承
- 多态:不同的对象收到同一消息可以产生不同的结果
- 动态绑定和静态绑定:编译时进行为静态绑定,运行时进行为动态绑定
UML
- 类图:类、接口、协作、它们之间的关系
- 对象图:实例
- 用例图:用例
- 序列图:以时间顺序组织的
- 通信图:强调时序,强调对象之间的组织结构
- 状态图:描述一个状态机,关注动态视图
- 活动图:一个活动到另一个活动的流程
- 构件图:一组构件之间,静态实现视图
- 部署图:运行时的处理节点以及其中的构件配置,与构件图相关
系统设计
概要设计
- 设计总体结构
- 数据结构和数据库设计
- 编写概要设计文档
- 评审
详细设计
- 每个模块的算法设计
- 模块内的数据结构设计
- 数据库的物理设计,确定物理结构
- 其他设计
- 编写详细设计说明书
- 评审
系统设计的基本原理
- 抽象
- 模块化
- 信息隐蔽
- 模块独立
模块独立
- 耦合性:模块之间联系的紧密程度。耦合性越高,模块的独立性越差
- 无直接耦合
- 数据耦合:之间有调用关系,传递的是简单的数据值
- 标记耦合:传递的是数据结构,如记录名、文件名
- 控制耦合:传递的是控制变量
- 公共耦合:通过一个公共数据环境相互作用
- 内容耦合:耦合性最高,直接使用另一个模块的内部数据,或通过非正常入口进入另一个模块内部
- 内聚性:模块内部各元素之间联系紧密程度。内聚度越低,模块独立性越差
- 偶然内聚
- 逻辑内聚:执行几个逻辑相似的功能
- 时间内聚:同时执行的动作组合在一起
- 通信内聚:所有处理元素在同一个数据结构上,或使用相同的输入输出数据
- 顺序内聚:相关且必须顺序执行,前一功能元素输出是下一元素的输入
- 功能内聚:最强的内聚,所有元素共同完成一个功能,缺一不可
系统测试基础知识
成功的测试是发现了至今尚未发现的错误的测试。目的是以最少的人力和时间发现潜在的各种错误和缺陷。
- 单元测试:模块测试
- 集成测试:检查模块之间,模块和已集成的软件之间
- 确认测试:验证是否与用户需求一致
- 系统测试:对象是完整的、集成的计算机系统
- 回归测试:软件变更后,变更的和原有功能的正确性
- 验收测试:客户为主
软件测试方法
- 黑盒测试:功能测试,常见方法:等价类划分、边界值分析、错误推测、因果图
- 白盒测试:结构测试,主要用于单元测试。常用技术:逻辑覆盖、循环覆盖、基本路径测试
系统维护
-
评价指标
- 可理解性
- 可测试性
- 可修改性
-
正确性维护
-
适应性维护:适应环境变化(技术和需求变化)
-
完善性维护:扩充功能、改善性能
-
预防性维护:改进可靠性、可维护性
数据流图(DFD)
面向数据流来建模,是对功能建模,而不是对数据建模。包括:
- 数据流:表示数据的流向
- 加工:描述输入数据流到输出数据流之间的变换
- 数据存储:表示存储的数据
- 外部实体
注意:
- 画数据流,不要画控制流
- 每条数据流的输入或输出是加工
- 一个加工的输出和输入数据流不能同名,即使组成成分相同
- 保持父图与子图的平衡
- 每个加工必须既有输入数据流,又有输出数据流