落公的小站

vuePress-theme-reco 落公    2020 - 2021
落公的小站 落公的小站

Choose mode

  • dark
  • auto
  • light
首页
指北
分类
  • 其它
  • IT
  • 想法
标签
时间轴
关于我
网站导航 (opens new window)
GitHub (opens new window)
author-avatar

落公

24

文章

13

标签

首页
指北
分类
  • 其它
  • IT
  • 想法
标签
时间轴
关于我
网站导航 (opens new window)
GitHub (opens new window)
  • 落公指北
  • 基础

  • 后端

  • 考试

软件工程

vuePress-theme-reco 落公    2020 - 2021

软件工程

落公 2020-11-01 软考笔记

# 软件工程

# 软件开发模型

模型
瀑布模型 迭代模型/迭代开发方法
演化模型 快速应用开发
增量模型 构件组装模型/基于构件的开发方法
螺旋模型 统一过程/统一开发方法
快速原型模型 敏捷开发方法
喷泉模型 模型驱动的开发方法
V模型 基于架构的开发方法

# 瀑布模型(SDLC)

瀑布模型

瀑布模型缺陷在于,软件需求分析阶段需求不明确。瀑布模型适合于需求分析已经很完善的情况,但是目前的软件开发流程期间都会存在需求变更的情况。

总结:适用于需求明确的情况,或二次开发的情况。

# 其他经典模型

其他经典模型

  • 原型法

    快速开发项目的原型,跟需求方演示项目预期的效果,且讨论需要优化的地方。这种方法客户可以直观的了解到项目完成后的样子。要点:快速构建一个简易的系统,项目的雏形,在此之上与客户需求进行磨合。

  • 演化模型

    由原型模型改进后得到。

# 增量模型与螺旋模型

# V 模型

测试计划在需求分析阶段进行设计。

总结:该模型强调测试,让测试贯穿开发的始终,快速的发现问题。

# 喷泉模型

  • 迭代
  • 无间障

# RAD模型

结合了瀑布模型和构建化开发

RAD模型一般指快速应用开发。

  • 业务建模
  • 数据建模
  • 过程建模
  • 应用生产
  • 测试与交付

# 构建组装模型(CBSD)

构建组装模型

一个项目可以划分为很多构件组成,只需要将每一个构件设计开发的没有问题那么整体基本也无问题。

构件的标准有:

  • COM/DCOM标准
  • CORBA标准
  • Java Beans/EJB标准

# 敏捷开发方法

敏捷开发方法

适用于小项目。

# 信息系统开发方法

  • 结构化法
    • 用户至上
    • 严格区分工作阶段,每阶段有任务与成果
    • 强调系统开发过程的整体性和全局性
    • 系统开发过程工程化,文档资料标准化
    • 自顶向下,逐步分解(求精)
  • 原型法
    • 适用于需求不明确的开发
    • 包括抛弃式原型和演化式原型
  • 面向对象方法
    • 更好的复用性
    • 关键在于建立一个全面、合理、统一的模型
    • 分析、设计、实现三个阶段,界限不明确
  • 面向服务方法
    • SO方法有三个主要的抽象级别:操作、服务、业务流程
    • SOAD分为三个层次:基础设计层(底层服务构件)、应用结构层(服务之间的接口和服务级协定)和业务组织层(业务流程建模和服务流程编排)
    • 服务建模:分为服务发现、服务规约和服务实现三个阶段

# 需求开发

# 需求分类与需求获取

需求分类与需求获取

# 结构化设计

# 基本原则

  • 概要设计和详细设计

    • 自顶向下、逐步求精
    • 信息隐蔽
    • 模块独立(高内聚、低耦合、复杂度)
  • 保持模块的大小适中

  • 尽可能减少调用的深度

  • 多扇入,少扇出

  • 单入口,单出口

  • 模块的作用域应该在模块之内

  • 功能应该是可预测的

# 内聚与耦合

内聚类型 描述
功能内聚 完成一个单一功能,各个部分协同工作,缺一不可
顺序内聚 处理元素相关,而且必须顺序执行
通信内聚 所有处理元素集中在一个数据结构的区域上
过程内聚 处理元素相关,而且必须按特定的次序执行
瞬时内聚(时间内聚) 所包含的任务必须在同一时间间隔内执行
逻辑内聚 完成逻辑上相关的一组任务
偶然内聚(巧合内聚) 完成一组没有关系或松散关系的任务
耦合类型 描述
非直接耦合 两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的
数据耦合 一组模块借助参数表传递简单数据
标记耦合 一组模块通过参数表传递记录信息(数据结构)
控制耦合 模块之间传递的信息中包含用于控制模块内部逻辑的信息
外部耦合 一组模块都访问同一全局简单变量,而且不是通过参数表传递该全局变量的信息
公共耦合 多个模块都访问同一个公共数据环境
内部耦合 一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口

# 系统结构/模块结构

# 软件测试

# 测试原则与类型

  • 尽早、不断的进行测试
  • 程序员避免测试自己设计的程序
  • 既要选择有效、合理的数据,也要选择无效、不合理的数据
  • 修改后应进行回归测试
  • 尚未发现的错误数量与该程序已发现错误数成正比

动态测试

  • 黑盒测试法
  • 白盒测试法
  • 灰盒测试法

静态测试

  • 桌前检查
  • 代码走查
  • 代码审查

# 测试用例设计

测试用例设计

# 测试阶段

测试阶段

# McCabe复杂度

计算有向图G的环路复杂度公式为:V(G) =m-n+2

说明:其中V(G)是有向图G中的环路个数,m是G中的有向弧数,n是G中的节点数。

# 系统运行与维护

软件维护是生命周期的一个完整部分,可以将软件维护定义为需要提供软件支持的全部活动,这些活动包括在交付前完成的活动,以及交付后完成的活动。交付前完成的活动包括交付后运行的计划和维护计划等;交付后的活动包括软件修改、培训、帮助资料等。

  • 可维护性

    • 易分析性
    • 易改变性
    • 稳定性
    • 易测试性
  • 维护类型

    • 改正性维护

    • 适应性维护

    • 完善性维护

    • 预防性维护

# 软件过程改进

# CMMI

CMMI

# 项目管理

  • 范围管理
  • 时间管理
  • 成本管理
  • 质量管理
  • 人力资源管理
  • 沟通管理
  • 风险管理
  • 采购管理
  • 整体管理

# 时间管理

Gantt图、PERT图

# 风险管理

风险是指“损失或伤害的可能性”

  • 项目风险
  • 技术风险
  • 商业风险

风险曝光度=概率*损失值

根据风险曝光度来判断哪个风险应该重点管控。