zoukankan      html  css  js  c++  java
  • 软件=科学+技术+工程, 软件的成败, 软件开发的首要任务

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

    语录:

    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
  • 相关阅读:
    什么叫继承?
    两类交换元素使序列有序 求最少交换次数的题
    如何理解汉诺塔
    求给出第 K个 N位二进制数,该二进制数不得有相邻的“1”
    7/26 CSU-ACM2018暑期训练3-递归&递推-选讲
    平面分割
    递推算法之平面分割问题总结
    UTC时间
    7/25 CSU-ACM2018暑假集训比赛1
    洛谷 P1824 进击的奶牛【二分答案/类似青蛙过河】
  • 原文地址:https://www.cnblogs.com/mrfangzheng/p/1503745.html
Copyright © 2011-2022 走看看