Welcome to Software Construction

之前总听到老师、师兄谈到构建、重构之类的词语,一直认为“构建”就是“编码”。读完了第一章,才对“构建”有了进一步的认识。构建活动主要关注于编码与调试,但也包含详细设计、单元测试、集成测试以及其他一些活动。

构建不是机械化的,它需要可观的创造力和判断力。一个不那么完美的软件的开发,也许缺少需求分析、架构设计与系统测试,但一定不会缺少构建活动。

Metaphors for a Richer Understanding of Software Development

这一章作者启发我们运用隐喻的方式来更好地理解软件构建的过程。我的理解是,隐喻,在这里指建模,它没有绝对的正确与错误之分,而只有贴切与不贴切之分。

对于软件构建来说,“努力创造真正的原创成果”的开发效率,往往低于专注于重用以往项目的一些设计思想、代码以及测试用例的开发效率。软件开发并不像写信或写作一样只需肆意凭借灵感来实现原创,它更需要的是仔细的规划和设计。

增量式开发,并不是在别人的基础上开发,而是先搭建一个骨架,以支撑起未来将要开发的一个个部分。

将软件架构的过程比喻成建造房屋,真的很巧妙。就像建一栋房子一样,在动手之前,你必须做好精心的设计,只有这样,才不会浪费时间去修正那些本可以避免的错误。

Measure Twice, Cut Once: Upstream Prerequisites

俗话说:良好的开端是成功的一半。项目的成败很大程度上取决于前期的准备工作。联系到我们自己的团队项目,前期的需求分析、项目规划、任务分配等都是为了减少后期的压力与风险,使项目在未来能够尽可能平稳地进行。

“发现错误的时间要尽可能接近引入该错误的时间。”这句话令我很有共鸣。因为在开发过程中错误会像滚雪球一样,如果不在早期及时修复,雪球就会越滚越大。

在做需求分析之前,我们要从客户的角度弄清楚我们要解决的问题到底是什么。在团队项目中,老师一直在强调市场调研的重要性,鼓励我们更明确地找到用户的痛点。这就关乎需求分析的重要性。可是很少有需求是稳定不变的,“尽早把哪些是最关键的需求要素和架构要素确定下来”对我们的团队项目有一定的启发意义。也许我们最开始的调研的覆盖面并不完备,所以我们一开始先确定了我们的项目的最基本、最迫切的功能,留有余地去应对未来的需求变更。

“架构的先决条件”这一节我还不能完全理解。目前的理解是,架构是更细节的设计,需要去思考程序的组织结构,包括各个模块的功能、类的使用、数据库的结构与内容等。还有用户界面设计、代码安全性、容错性、健壮性等的考虑都是架构的组成部分。希望在推进团队项目的过程中,结合实践对架构理解的更深入一些。

转载于:https://www.cnblogs.com/Esther-SE/p/8721337.html

【读书笔记】——《代码大全》(一)相关推荐

  1. mysql数据库权威指南_MySQL_MySQL权威指南读书笔记(三),第二章:MYSQL数据库里面的数 - phpStudy...

    MySQL权威指南读书笔记(三) 第二章:MYSQL数据库里面的数据 用想用好MYSQL,就必须透彻理解MYSQL是如何看待和处理数据的.本章主要讨论了两个问题:一是SQL所能处理的数据值的类型:二是 ...

  2. MongoDB权威指南读书笔记——CRUD

    插入并保存文档 插入是向MongoDB中添加数据的基本方法.可以使用Insert方法向目标集合插入一个文档:db.foo.insert({"bar" : "baz&quo ...

  3. HTTP权威指南读书笔记

    <<HTTP权威指南>>读书笔记 第一部分:Web的基础 第1章:HTTP概述 主要内容 1.什么是HTTP 2.HTTP的基本组件 HTTP HTTP:HTTP(Hypert ...

  4. HTML5权威指南----读书笔记

    <!DOCTYPE html> <html> <head><meta name = 'keywords' content="HTML5权威指南--- ...

  5. 计算机网络和http权威指南 读书笔记

    计算机网络笔记 网络层 网络层向上提供无连接的,尽最大努力交付的数据报服务 网络层不提供数据质量承诺 物理层使用的中间设备叫转发器repeater 数据链路层叫网桥bridge 网络层叫路由器rout ...

  6. MapReduce总结 + 相关Hadoop权威指南读书笔记(未完......欢迎补充,互相学习)

    文章目录 MapReduce概述 MapReduce优缺点 MapReduce核心思想 MapReduce进程 MapReduce编程规范 WordCount 案例实操 本地测试 集群测试 Hadoo ...

  7. android开发读书笔记,android开发权威指南读书笔记

    第17章 Fragment 1.在res目录下增加 layout-sw600dp 目录,用于存放7英寸及以上尺寸屏幕的布局文件.10英寸以上平板用 sw720dp.如果是更小的屏幕,如 480*800 ...

  8. java性能权威指南中文_Java性能权威指南读书笔记--之一

    JIT(即时编译) 解释型代码:程序可移植,相同的代码在任何有适当解释器的机器上,都能运行,但是速度慢. 编译型代码:速度快,电视不同CPU平台的代码无法兼容. java则是使用java的编译器先将其 ...

  9. javascript权威指南读书笔记之二——词法结构

    本章讲述的内容,用通俗的语言来说,就是应该注意的地方,这些也许和我们所学的其他语言类似,也许完全不同,比如一开始就介绍说javascript程序中的每个字符都是用两个字节表示的,但有些程序设计者习惯于 ...

  10. HTTP权威指南读书笔记(一)HTTP概述、URL和资源及报文详解

    一.HTTP概述 1.WEB客户端和服务器. 2.资源:资源可以是各种格式的静态文件,也可以是应用程序. 3.媒体类型 4.URI:统一资源标识符 URL:统一资源定位符. URL的第一部分称为方案: ...

最新文章

  1. PHP executable not found. Install PHP 7 and add it to your PATH or set the php.executablePath settin
  2. 零基础入门学习Python(13)-字符串
  3. python 调试 cyberbrain 教程
  4. DBCP2配置详细说明(中文翻译)
  5. python 表格格式输出_利用python对excel中一列的时间数据更改格式操作
  6. 转:IDEA 创建类注释模板和方法注释模板
  7. java学习(167):生产者消费者问题
  8. SO_REUSEADDR SO_REUSEPORT 解析
  9. 微软认知服务开发实践(1) - 牛津计划简介
  10. 整理的一些常用的CSS HACK
  11. EF CodeFirst下的自动迁移
  12. java map操作_Java HashMap的基本操作
  13. With(ReadPast)就不会被阻塞吗?
  14. 吴恩达深度学习——深度学习概论
  15. poj 3071 Football 概率dp
  16. VUE依赖ol版本问题:geotiff.js Unexpected token
  17. 全球单片机的主要厂商和主要型号介绍
  18. 在android系统中制作系统签名jks
  19. 2008年希赛软考学院招生
  20. 【Axure原型分享】移动端可视化案例模板

热门文章

  1. 剪映调整视频比例6:7
  2. Java处理带小数的数字
  3. matlab怎么画极轴,matplotlib常见图表绘制——极坐标图-雷达图、极轴图
  4. 管理员已阻止你运行此应用有关详细信息请与管理员联系,怎么办,WIN10
  5. 【数据构造】手机号码并发生成
  6. 2003安装集成SP2补丁+无人值守
  7. Office2010 整合 SP2補丁
  8. 医学影像MRI,CT和X-ray概述
  9. qq连接代码生成总结
  10. jdk配置环境变量中path、classpath路径