您的位置:首页 > 编程语言

代码大全_第一部分: 打好基础

2016-03-29 09:20 253 查看
第1章: 欢迎进入软件构建的世界

   简而言之, 构建就是跟编码有关的事情, 包括编码与调试, 测试的全部和需求分析, 设计, 架构的部分.

第2章: 用隐喻来更充分地理解软件开发

    文中的隐喻一词意指建模(model), 比如地心说模型和日心说模型. 好的模型可以更生动第说明一件事情的基本要素, 更能指引人们去发现新的特性.

    历史上对软件构建提出的模型如下:

 写信: Writing:
编程就像写信, 拿笔重头到尾写完投递.
没有体现规划: 想到什么就写什么
没有体现团队合作: 写信是个人行为
没有体现维护: 信写完不会改

 种植: Growing
编程像种庄稼, 每次完成一个步骤: 设计, 编码, 测试对应播种,施肥, 收获
没能体现软件开发的复杂性, 例如开发/测试很可能交替进行
没能体现设计的重要性
种庄稼靠天吃饭, 人的作用远远小于软件开发中的

 积累: Accretion
编程就像培养牡蛎: 养好牡蛎(架构), 然后牡蛎不断添加微量的碳酸钙, 最后形成珍珠. 意指软件开发是一个不断积累的过程
为敏捷开发理论奠定了基础
我认为没能体现架构设计的复杂性

 建造: Building
编程就像建造一个工程(房子, 大楼 或 核电站), 先要做精心的设计, 再实施建造
这是到目前为止最科学的建模
两者在规划设计, 团队合作等都有共同特点
都会利用现成的组件: 洗衣机, 冰箱 vs 数据库, 高级语言
规模大的时候都需要定制一些组件
设计很重要, 但并不是要事无巨细: 设计房屋时并不需要考虑以后刷什么颜色的漆
后期修改都成本巨大, 人力和时间成本往往比材料本身要高
开发流程随工程规模会显著变化: 建一个狗棚和建一个核电站的流程完全不同

其他
不同的模型往往并不排斥, 旧的模型并不是完全没用: 就像物理学中爱因斯坦的相对论比经典牛顿力学更科学, 但大部分工程问题还是通过牛顿力学求解的. 同样, 在软件开发中, 比如基于牡蛎养殖(Accretion)模型的敏捷开发方法也在大规模应用.

第3章: 三思而后行: 前期准备
原则性问题:

修复缺陷的时间越接近引入缺陷的时间(越早), 修复成本越低, 所以前期工作(需求和架构)很重要
前期工作的详尽程度应该取决于项目的规模和特点
很难有不变的需求, 但可以尽量控制

需求:

功能性需求:
应该包括输入输出, 精度, 取值范围, 频率, 格式等
包括对外接口和通信协议
应该指定数据

质量需求:
响应时间, 吞吐量, 传输率等
安全级别
可靠性, 错误处理
内存/磁盘等资源的限制
如何定义项目的成功和失败?

需求的质量:
用用户的语言书写, 而不是计算机名词. 只提需求, 不涉及设计
互不冲突
足够清晰, 毫无背景的团队也能理解
可测试
对可能的改动有所预期

架构:

尽量包含其他可选方案, 以及选择的理由
主要的类
数据设计
界面
资源管理
 如连接, 线程, 句柄等

性能: 
 提供调研数据, 说明为什么可以达到预期的性能
关键部分的算法和数据结构

可扩展性
当数据/请求增长时的处理方案

技术可行性
错误处理和容错

第4章: 关键的构建决策
这章很虚, 基本没啥内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: