软考高级-软件系统架构师-02-软件工程(重点)

用工程化的思想做软件

一、软件开发方法(/原则)

  1. 软件开发方法(重点)

    1. 结构化法(面向过程/函数) C

      1. 概念
        1. 用户至上
        2. 严格区分工作阶段,每个阶段有各自的任务和成果
        3. 强调系统开发的整体性和全局性
        4. 系统开发工程化,文档标准化
        5. 自顶向下,逐步分解(求精)
      2. 缺点
        1. 写死,不灵活,修改起来困难;
        2. 而需求是不断变化的,因此出现了面向对象
    2. 原型法 特殊

      1. 需求分析阶段,适用于需求不明确的开发
      2. 做一个原型化的界面呈现给客户,让客户有直观感受并反馈提出自己的详细需求,避免完成后再返工
      3. 包括 抛弃型原型、进化型原型
    3. 面向对象 C++、Java

      1. 复用性好
      2. 建立一个全面、统一、合理的模型
      3. 分析、设计、实现三个阶段没有明确的界限(做前一个阶段时,一并将后一阶段的一部分做完;而结构化方法每一个阶段做完并且评审后才开始下一个阶段,界限很明确)。
    4. 面向服务 (颗粒度比对象大)

      1. SO方法 三个抽象层级
        1. 操作,传统函数、方法。(抽象类)
        2. 服务(模块)
        3. 业务流程,由服务协作完成。(应用程序)
      2. SOAD 三个层次
        1. 基础设计层(底层服务件)
        2. 应用结构层(服务之间的接口和服务级协定)
        3. 业务组织层(业务流程建模和服务流程编排)
      3. 服务建模 三阶段
        1. 服务发现(做什么)
        2. 服务规约(做的过程中遵循的规则约定、参数)
        3. 服务实现(做出来)
  2. 软件开发模型(重点)

    1. 瀑布模型(结构化方法产物,适用于需求明确项目)一阶阶下来像瀑布流水,每个阶段需要进行需求评审,如果评审阶段或者下一阶段发现本阶段有问题不符合要求,需要回退(红色箭头)进行修改。

      1. 定义阶段
        1. 软件计划
        2. 需求分析(论文)
          1. 缺点 不适合需求不明确的项目,因为需求分析一旦错误,所有阶段都错了,再迭代时间、人力成本太高,且失败概率大于九成。
          2. 优化 加一个原型给客户,经过几轮修改反馈得到明确的项目;如果还不明确或者客户喜欢创新,从以下两方面解决
            1. 项目管理,不要制定总价合同,写明迭代的责任方和成本利润
            2. 选择原型模型
          3. 演化出其他模型
            1. 和原型模型演化出
              1. 增量模型
              2. 螺旋模型
      2. 开发阶段
        1. 软件设计
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值