• 软考 - 软件工程


    软件过程基本概述

    基本要素

    • 方法
    • 工具
    • 过程

    软件过程模型

    能力成熟度模型CMM

    在这里插入图片描述

    能力成熟度模型CMMI

    在这里插入图片描述

    在这里插入图片描述

    统一过程UP模型

    针对大型项目

    三大特别

    • 用例和风险驱动
    • 以架构为中心
    • 迭代并且增量

    四个阶段

    • 起始:确认需求和风险评估
    • 精化:核心架构设计
    • 构建:构造产品
    • 移交:测试,交付系统
    软件过程模型(软件开发模型)
    • 瀑布模型SDLC:只适用于需求明确或者二次开发(需求稳定)
    • 原型模型:和瀑布模型相反,针对需求不明确的情况,通过演示和沟通,不适合大型项目!!!
    • 演化(迭代)模型:和原型模型的区别就是,原型个人呢适用于需求不明确用于获取需求!
    • 增量模型:每一次增量版本可作为独立可操作的作品,而原型的构造只是为了演示
    • V模型:增加了很多轮测试,测试贯穿于软件开发的各个阶段

    在这里插入图片描述

    • 螺旋模型:增加了风险分析,适合大型项目
    • 喷泉模型:特点是面向对象,而其他的都是结构化开发的模型

    软件开发方法

    上面的软件过程模型基本都可归属下面四种开发方法中,注意特点:

    • 结构化方法:流程固定,需求明确,自顶向下;以瀑布模型为代表,逐渐淘汰
    • Jackson方法:面向数据结构开发方法,适合小规模项目
    • 原型方法:适合于需求不明确的开发,以原型模型为代表【dkb】
    • 面向对象方法:强调复用,以构建组装模型为代表,逐步流行

    敏捷开发:的基本原则(小公司,中小型项目,去掉不必要的会议和文档)

    • 结对编程:程序员审查代码
    • 自适应开发:开发方法的适应性
    • 水晶方法:每套项目都有不同的策略方法
    • 极限编程XP:无需很多文档,提倡测试先行,将bug率最低
    • 并列争球法SCRUM:迭代增量过程(“冲刺”,一期,二期)

    软件工具与软件开发环境

    逆向工程:根据现有产品逆向推到出其实现技术和逻辑结构的过程,是产品开发完成后进行的,属于软件维护阶段工具

    软件项目管理

    四要素:人员,产品,过程,项目

    软件项目估算

    软件成本估算

    • 自顶向下估算法:从总金额开始分摊
    • 自底向上估算法:从底层估算成本
    • 差别估算法:与以前项目相比
    • 专家估算法:请专家

    软件规模估算

    • COCOMO模型:代码行分析作为其中一种度量估计单位
      • 低级:单纯代码量,静态单变量模型
      • 中级:考虑代码量,硬件,产品,人员等、静态多变量
      • 高级:考虑所有
    • Putnam模型:动态多边量模型
    进度管理【PERT图重点!】
    • Gantt图:横向的时间图,反应时间
    • PERT图:类似于前趋图,反应依赖关系,标注活动运行时间,但无法反应活动之间的并行关系
      • 关键路径(项目总工期):耗时最长的路径
      • 最早开始时间ES:取所有前趋活动最早完成时间EF的最大值(走最长的路)
      • 最早完成时间EF:最早开始时间ES+活动本身时间
      • 最晚完成LF:取后续活动最晚开始的最小值(关键路径-完成该活动的后序活动最小值)
      • 最晚开始时间LS:最晚完成LF-活动本身时间(关键路径-最短的路)
      • 松弛时间:该结点最多可以晚多久开始(关键路径-包含结点活动的最大路径)
      • 习题:https://blog.csdn.net/qqxyy99/article/details/53190013FGDHSA
    软件项目的组织

    组织结构模式:

    • 项目型:项目经理绝对领导
    • 职能型:部门领导为主
    • 矩阵型:二者结合

    程序设计小组组织方式:

    • 主程序员制小组:主程序员全权负责,有备选程序员,适合大型项目

    • 民主制小组:开发人员少,人人平等,适合小型项目

    • 层次式小组:两个层次,组长领导若干高级程序员,高级程序员领导多个普通程序员

    软件质量特性和子特性【牢记】

    在这里插入图片描述

    在这里插入图片描述

    软件评审

    质量两个必要条件:

    • 设计的规格说明书符和用户标准,称为设计质量
    • 程序按照设计规格说明书所规定的情况正确执行,称为程序质量
    软件容错技术

    容错就是软件遇到错误的处理能力,实现容错的手段主要是冗余,包括下面四种冗余技术;

    • 结构冗余:分为静态,动态,混合冗余三种,当错误发生时对错误进行备份处理。
    • 信息冗余:为检错和纠错再书籍上加一段额外的信息,例如校验码原理。
    • 时间冗余:回滚
    • 冗余附加技术:为实现结构、信息和时间冗余技术所需的资源和技术
    软件配置管理

    在这里插入图片描述

    在这里插入图片描述

    软件风险分析

    两个特性:不确定性和损失

    项目分类

    • 项目风险
    • 技术风险
    • 商业风险
    • 市场风险
    • 。。。

    风险管理【常考】

    • 风险识别:识别出项目中的风险,形成一个预测风险表
    • 风险预测:风险可能性和风险后果,因此有 风险曝光率 = 风险可能性 * 风险带来的损失
    • 风险评估:定义风险参照水准,将识别出来的风险评估分类
    • 风险控制:辅助项目组简历处理风险的策略,包括风险避免,风险监控,RMMM计划(风险缓解、监控和管理计划)

    风险的优先级通常是根据**风险暴露(风险影响+风险概率)**设定的

    软件度量

    软件有两种属性

    • 外部属性:面向管理者和用户的可直接测量的属性,一般为性能指标
    • 内部属性:软件本身的属性,如可靠性等,只能
    • 间接测量

    McCabe度量法:【常考】

    又称环路复杂度,假设有向图中有向边数为m,结点数为n,则此有向图的环路复杂度为m-n+2.

  • 相关阅读:
    如何使用 Kubeadm 和 Kubectl 从头开始​​启动 Kubernetes 集群
    [羊城杯 2020]black cat - 文件隐写+RCE(hash_hmac绕过)
    测试1号位的自我修养
    YOLOv5算法改进(18)— 更换激活函数(SiLU、ReLU、ELU、Hardswish、Mish、Softplus等)
    5大LOGO免费在线生成器,从此设计不求人!
    linux下的编译工具——gcc/g++
    【华为OD机试真题 JS】数组二叉树
    K8S安全学习
    设计模型之六大原则(有的地方称之为七大原则)
    智慧城市的应用挑战,昇腾AI给出了新解法
  • 原文地址:https://blog.csdn.net/laity__c/article/details/127870166