zoukankan      html  css  js  c++  java
  • 代码大全2阅读笔记2

    3.4 需求的先决条件 Requirements Prerequisite

    需求详细描述软件系统应该做什么。

    • 为什么要有正式的需求。明确的需求有助于:
      • 确保是用户(而不是程序员)驾驭系统的功能
      • 避免争论
      • 减少开始编程开发后的系统变更情况
    • 稳定需求的神话:稳定的需求是软件开发的圣杯(最高目标,渺茫希望),平均需求会有25%的变化
    • 在构建期间处理需求变更:
      • 使用需求核对表来评估需求的质量
      • 确保每个人都知道需求变更的代价
      • 建立一套变更控制程序
      • 使用能适应变更的开发方法
      • 放弃这个项目
      • 注意项目的商业案例

    核对表:

    • 针对功能需求
    • 针对非功能需求(质量需求)
    • 需求的质量
    • 需求的完备性

    3.5 架构的先决条件 Architecture Prerequisite

    软件架构是软件设计的高层部分,是用于支撑更细节的设计的框架。

    架构的典型组成部分:

    1. 程序组织 Program Organization
      1. 系统架构首先要以概括的形式对有关系统做一个综述
      2. 选择最终组织结构的理由
      3. 主要构造块,各个块的功能和责任,之间的同行规则
    2. 主要的类 Major Classes
      1. 应指出每个主要的类的责任,如何与其他类交互
      2. 包含对类的继承体系、状态转换、对象持久化等的描述
    3. 数据设计 Data Design:描述所用到的主要文件和数据表的设计
    4. 业务规则 Business Rules:如果架构依赖于特定的业务规则,就应详细描述这些规则,并描述对系统设计的影响
    5. 用于界面设计 User Interface Design:详细定义Web页面格式、GUI、命令行接口等主要元素
    6. 资源管理 Resource Management:描述一份管理稀缺资源的计划(数据库连接、线程、句柄...)
    7. 安全性 Security:描述实现设计层面和代码层面的安全性的方法
    8. 性能 Performance:性能目标(速度、内存、成本和之间的优先顺序)
    9. 可伸缩性 Scalability:指系统增长以满足未来需求的能力(用户数、数据库记录数)
    10. 互用性 Interoperability:预计这个系统会与其他软件或硬件共享数据或资源
    11. 国际化/本地化 Internationlization/Localization
    12. 输入输出 Input/Output
    13. 错误处理 Error Processing:棘手,90%的代码处理异常,10%处理常规情况
      1. 纠正还是仅检测?
      2. 检测是主动的还是被动的?
      3. 如何传播错误?
      4. 处理有什么约定?
      5. 如何处理异常exceptions?
      6. 在什么层次上处理错误?
      7. 每个类在验证输入数据的有效性方面需要负何种责任?
      8. 用内置的还是自己建立一套?
    14. 容错性 Fault Tolerance:详细定义所期望的容错种类,增强系统的可靠性
    15. 架构的可行性 Architectural Feasibility:各种能力、性能目标、有限的资源...
    16. 过度工程 Overengineering:通常架构详细描述的系统会比需求更健壮
    17. 关于“买”还是“造”的决策 Buy-vs.-Build Decisions:说明自己定制的组件应该在哪些方面胜过现成的
    18. 关于复用的决策 Reuse Decisions:二次开发
    19. 变更策略 ChangeStrategy:让架构足够灵活,能够适应可能出现的变化
    20. 架构的总体质量 General Architectural Quality:整体,看上去自然而非拼凑

    3.6 花费在前期准备上的时间长度 Amount of Time to Spend on Upstream Prerequisites

    在需求、架构及其他前期计划方面投入:

    • 10%~20% 工作量
    • 20%~30% 时间

     

  • 相关阅读:
    常用正则表达大全
    Vue 中Bus使用
    js 获取图片url的Blob值并预览
    npm install 插件 --save与 --save -dev的区别
    layui 事件监听触发
    微信小程序之回到顶部的两种方式
    HTML 命名规范!
    SpringMvc 集成支付宝沙盒测试
    Linux 的 tomcat 自起服务
    Linux 安装 tomcat8 详细步骤
  • 原文地址:https://www.cnblogs.com/Lhxxx/p/14941094.html
Copyright © 2011-2022 走看看