• 软件工程的精髓


    1. 理解问题(沟通和分析)。

    回答几个简单问题:

    谁将从问题的解决中获益?也就是说,谁是利益相关者?

    有哪些是未知的?哪些数据、功能、特征和行为是解决问题必需的?

    问题可以划分吗?是否可以描述为更小、更容易理解的问题?

    问题可以图形化描述吗?可以建立分析模型吗?

    2. 计划解决方案(建模和软件设计)。

    在编码之前,稍稍慢下来做一点点设计:

    以前曾经见过类似问题吗?在潜在的解决方案中,是否可以识别一些模式?是否已经有软件实现了所需要的数据、功能、特征和行为?

    类似问题是否解决过?如果是,解决方案所包含元素是否可以复用?

    可以定义子问题吗?如果可以,子问题是否已有解决方案?

    能用一种可以很快实现的方式来描述解决方案吗?能构建出设计模型吗?

    3. 实施计划(代码生成)。

    前面所创建的设计勾画了所要构建的系统的路线图。也许存在没有想到的路径,也可能在实施过程中会发现更好的解决路径,但是这个计划可以保证在实施过程中不至于迷失方向。需要考虑的问题是:

    解决方案和计划一致吗?源码是否可追溯到设计模型?

    解决方案的每个组成部分是否可以证明正确?设计和代码是否经过评审?或者更好的算法是否经过正确性证明?

    4. 检查结果的正确性(测试和质量保证)。

    你不能保证你的解决方案是最完美的,但是你可以保证设计足够的测试来发现尽可能多的错误。为此,需回答:

    能否测试解决方案的每个部分?是否实现了合理的测试策略?

    解决方案是否产生了与所要求的数据、功能、特征和行为一致的结果?是否按照项目共同利益者的需求进行了确认?

  • 相关阅读:
    ThreadLocal用法
    Spring Cloud Alibaba 使用RestTemplate进行服务消费
    Spring Cloud Alibaba 使用Nacos作为配置管理中心
    Spring Cloud Alibaba 使用Nacos作为服务注册中心
    Spring Cloud Alibaba 介绍及工程准备
    Redission 支持GsonCodec
    Maven Archetype快速构建项目
    拜占庭将军问题
    Paxos算法详解
    Paxos、Raft分布式一致性算法应用场景(转载)
  • 原文地址:https://www.cnblogs.com/kelite/p/3033029.html
Copyright © 2020-2023  润新知