代码大全读书分享(一)

一、软件构建的概念

1.1 软件构建的活动相关定义

构建(Construction),通常在我们生活理解中,第一印象可能就是房屋的构建。或者又例如小朋友搭积木的那种过程也可称为构建。故构建的通常指的是建设的过程。而软件构建的也就是软件开发的过程。而软件开发,在《代码大全》这种书,作者总结了11个构建过程中涉及到活动。

  • 1).定义问题
  • 2).需求分析
  • 3).规划构建
  • 4).软件架构
  • 5).详细设计
  • 6).编码与调试
  • 7).单元测试
  • 8).继承测试
  • 9).集成
  • 10).系统测试
  • 11).保障维护

而作者通过下面一张图,阐述了本书的侧重的范围:详细设计、编码与调试、单元测试这几块。

图片 1.png

1.2 软件构建为什么重要

  • 1).构建活动是软件开发的主要组成部分

构建活动在整个软件开发活动总时间中所占比例一般在30%至80%之间,所以必然会影响项目的成败

  • 2).构建活动是软件开发中的核心活动
  • 3).把精力集中于构建活动,可以大大提高程序员的生产率
  • 4).构建产物-源代码往往是对软件的唯一精确描述

在很多项目中,程序员可以得到的唯一文档就是源代码本身。需求规格书和设计文档可能会过时,但是源代码是最新的。因此,源代码就必须具有尽可能的高的质量。

  • 5).构建活动是唯一一项确保会完成的工作

二、使用隐喻的方式理解软件构建

软件开发相对于其他学科而言,还是一门很年轻的学科,它还没有完全成熟到拥有一套标准隐喻的程序,因此必然存在许多或者相互补充,或者相互抵制的隐喻,某些隐喻相对好些,而另一些比较糟糕,你对隐喻有多理解,也就决定了你对软件开发有多理解

2.1 常见的隐喻

  • 1).写作代码

在很多项目中,程序员可以得到的唯一文档就是源代码本身。需求规格书和设计文档可能会过时,但是源代码是最新的。因此,源代码就必须具有尽可能的高的质量。

  • 2).培植系统

将创造软件想象成类似播种和耕种的情形。你一次设计的系统的一小部分、写出一段代码、做一点测试,并将成果一点点添加到整个系统

  • 3).系统生长

先做出软件系统的一个尽可能简单,但能运行的版本。后期你再一次一次增加你得功能。目前互联网的公司的产品大都使用此方式进行开发,因为前期投入成本比较低,如果失败了,可以迅速改变策略方向。如果成功了,可以进行围绕核心依次展开拓展开发。

  • 4).建造软件

与系统生长概念相通,但是它提供了更详细的指导。比如前期详尽的调研,准备,软件规划等等。比如要构建大型信息化系统。应该使用此模式

三、软件构建的前期准备

3.1 前期准备的重要性

使用高质量的实践方法是那些能够创造高质量软件的程序员的共性。这些高质量的实践方法在项目的初期、中期、末期都强调质量。

构建活动是软件项目的中间阶段,在你开始构建的时候,项目前期工作已经或多或少为这个项目的成功或失败打下了基础。然而,在构建的过程中,你至少应该能够辨明当时的形式如何,如果你看到失败的乌云已经出现在地平线上时。就退回到项目的前期工作。

3.2 前期准备适用于现代软件项目吗?

在20世纪70年代开始至今的业界数据显示,如果在开始构建活动之前认真地进行适当的准备活动,那项目将会运行的很好。(作者的调研总结结论)

3.3 问题定义的先决条件

在构建软件之前,首先要满足的是一项先决条件,对这个系统要解决的问题做出清楚地陈诉。这时候称为:产品设想、设想陈述、任务陈述或者说产品定义。但是本书,将它称为“问题定义”

如下图,问题定义为后面的软件开发奠定了坚实的基础

2.png

而且问题定义应该用客户的语言来写,而且应该从客户的角度来描述问题。通常不应该用计算机的专业术语叙述。最好的解决方案未必是一个计算机程序。

3.4 需求的先决条件

  • 1).要求一套明确的需求,这点很重要。因为明确的需求有助于确保是与用户驾驭的功能,而不是程序员驾驭的功
    能。因为明确的需求,免得你去猜测用户想要什么功能。

  • 2).明确的需求有助于避免争论,以免产生歧义。

  • 3).明确的需求有助于减少开始编程开发之后的系统变更情况。如果你在编码的过程中发现一个代码上的错误,你只需要修改几行代码,然后继续工作。但是如果你在编码的时候发现一个需求的错误,那你就得改变设计。

  • 4).稳定的需求是软件开发的圣杯。一旦需求稳定,项目就能以有序的、可预测的、平稳的方式,完成从架构到设计到编码到测试等一系列工作。

3.5 如何处理构建期间的需求变更

  • 1).确保每一个都知道需求变更的代价

  • 2).建立一套变更控制程序

  • 3).使用能适应变更的开发方法

  • 4).放弃这个项目

3.6 架构的先决条件

软件架构是软件设计的高层部分,用于支撑更细节的设计的框架。通常会有一份独立的文档描述架构。

好的架构使得构建活动变得更加容易。糟糕的架构则使得构建活动几乎寸步。

3.png

3.7 软件架构的典型

  • 1).程序组织
  • 2).主要类
  • 3).数据设计
  • 4).业务规则设计
  • 5).用户界面设计
  • 6).资源管理
  • 7).安全性
  • 8).性能
  • 9).可伸缩性
  • 10).互用性
  • 11).国际化/本地化
  • 12).IO输入输出的性能考虑
  • 13).错误处理
  • 14).容错性
  • 15).架构可行性

四、总结

这篇主要是前三章关于概念理论的总结与分享。代码相关的在后面的篇幅进行介绍。谢谢,大家可以关注我的个人微信公众:Java从零入门系列,更多干货等你来哦!!!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,680评论 2 59
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,378评论 25 707
  • 回学校的轻轨上,隔着车窗向外俯瞰,人群往来车队徘徊,隔着遥远的距离演绎着他们的故事。车速很快,男男女女车水马龙在透...
    是金丝猴阿阅读 439评论 0 0
  • 作者:七七 都不知道从什么时候开始我们当中的有些人很自觉的选择了以一种“蜗式前进”的行为方式去应付这个颜颜角角的...
    粥七阅读 299评论 0 1
  • 一、高考试坐,深度与环境交流,让人场合一。 熟悉进教室的路线,慢慢走,慢慢感受,好似每天走过,很熟悉很熟悉;进教室...
    芝兰幽香阅读 209评论 0 0