• 软件=科学+技术+工程, 软件的成败, 软件开发的首要任务


    • 科学
      指的是数据结构和算法, 计算理论 - 理论层面
    • 技术
      主要包括: 编程语言, 操作系统等等具体的技术 - 技术层面 
    • 工程
      包括: 软件架构, 开发文档, 项目管理, 各种测试等等 - 管理层面

    语录:

    1. 软件总有bug, 没有人知道会在什么地方; 软件总是会变化的, 但谁也不知道哪些地方会变化 
    2. 没有人能够一次性写出没有bug的代码
    3. 写程序就是一个不停改错的过程. 那么, 首先, 在写程序之前, 必须要有一个判断对错的标准和手段, 这就是 测试.
    4. 错误总是存在的, 重要的是出错时能够找到它, 特别是在客户现场那种没有调试器的环境下. 有时, 只有唯一的手段: 日志.
    5. 修改时不要覆盖原来的功能, 因为大部分情况下, 客户想既要有新的功能, 也想保留原来的功能
    6. 要得到输出, 你的代码不仅需要输入, 还需要依赖其他组件. 所以测试时, 不仅要变换输入, 还要变换依赖.

    软件的成败的标准:

    1. Correct&Stable 是否满足功能性能等需求并运行稳定
    2. Easy to use 用户体验  
    3. Bugs are fixed quickly 如果出错, 是否能够快速找到错误根源
    4. Smoothly upgrade 平滑升级

    软件开发的主要任务:

    1. 正确性. 现实是: 没有谁能够写出一次性正确的代码. 代码总存在或多或少的问题. 所以, 一旦出了问题怎么办?
      1. 保证需求理解的正确性, 手段有: 需求文档, Prototype, 用户的测试用例等
      2. 保证需求实现的正确性, 手段有: 单元测试
      3. 保证已知的错误/异常得到正确处理
      4. 保证运行时出现的bug能够得到快速解决, 手段有: Logging
    2. 可扩展性. 没有不修改的代码.
      1. 如何保证代码修改的正确性?
      2. 客户机上的软件如何升级?

    软件的组成部分

    Input Output
    Dependencies MY CODE

    如何测试我们的代码是否正确?

    • 确定Input和Output
    • 确定Dependencies
  • 相关阅读:
    hadoop的运行模式
    集群之间配置 SSH无密码登录
    NameNode故障处理方法
    HDFS的HA(高可用)
    DataNode的工作机制
    NameNode和SecondaryNameNode的工作机制
    HDFS读写数据流程
    Linux软件包管理
    DNS服务之二:Bind97服务安装配置
    ssl协议、openssl及创建私有CA
  • 原文地址:https://www.cnblogs.com/mrfangzheng/p/1503745.html
Copyright © 2020-2023  润新知