敏捷软件开发 - 原则、模式与实践

敏捷软件开发——原则、模式与实践 Robert C.Martin 学习笔记 阅读详情

起源

《敏捷软件开发 - 原则、模式与实践》是我接触到的第一本系统介绍软件设计的书籍,深刻影响了个人的软件开发习惯。它并不难懂,我一直推荐给身边的各个层次的程序员学习。

可对于一本接近500页的图书,很多人还是望而却步。一直都想写个关于这本书的速读,使更多的人了解它。但是最近又重新学习了一遍发现它之所以有价值不仅仅在于书中总结的原则和模式,更在于它提供的如何运用这些原则、模式的实践例子。忽略了大量例子的速读文章,也丢失了原书最重要的部分。最后,决定写一篇原书要点的总结,后来发现即使只是记录要点,也需要多篇文章才能表述清楚。这就有了这个系列文章。

最后强调,本系列仅适合于新读者快速了解原书概要,以及老读者重温原书要点。对于新读者,强烈建议购买原书仔细学习。

京东购买地址
当当购买地址

系列

敏捷开发

敏捷软件开发 - 原则、模式与实践 —— 敏捷开发(一)

敏捷软件开发 - 原则、模式与实践 —— 敏捷开发(二)

敏捷设计

敏捷软件开发 - 原则、模式与实践 —— 敏捷设计(一)设计的臭味

系统设计原则

敏捷软件开发 - 原则、模式与实践 —— 敏捷设计(二)单一责任原则

敏捷软件开发 - 原则、模式与实践 —— 敏捷设计(三)开放-封闭原则

敏捷软件开发 - 原则、模式与实践 —— 敏捷设计(四)里氏替换原则

敏捷软件开发 - 原则、模式与实践 —— 敏捷设计(五)依赖倒置原则

敏捷软件开发 - 原则、模式与实践 —— 敏捷设计(六)接口隔离原则

包设计原则

敏捷软件开发 - 原则、模式与实践 —— 敏捷设计(七)包的内聚性原则

敏捷软件开发 - 原则、模式与实践 —— 敏捷设计(八)包的耦合性原则

设计模式

敏捷软件开发 - 原则、模式与实践 —— 设计模式(一)COMMAND模式和ACTIVE OBJECT模式

敏捷软件开发 - 原则、模式与实践 —— 设计模式(二)TEMPLATE METHOD模式和STRATEGY模式

敏捷软件开发 - 原则、模式与实践 —— 设计模式(三)FACADE模式和MEDIATOR模式

敏捷软件开发 - 原则、模式与实践 —— 设计模式(四)SINGLETON模式和MONOSTATE模式

敏捷软件开发 - 原则、模式与实践 —— 设计模式(五)NULL OBJECT模式

敏捷软件开发 - 原则、模式与实践 —— 设计模式(六)FACTORY模式

敏捷软件开发 - 原则、模式与实践 —— 设计模式(七)COMPOSITE模式

敏捷软件开发 - 原则、模式与实践 —— 设计模式(八)OBSERVER模式

敏捷软件开发 - 原则、模式与实践 —— 设计模式(九)ABSTRACT SERVER模式、ADAPTER模式和BRIDGE模式

敏捷软件开发 - 原则、模式与实践 —— 设计模式(十)PROXY模式和STAIRWAY TO HEAVEN模式

敏捷软件开发 - 原则、模式与实践 —— 设计模式(十一)VISITOR模式

敏捷软件开发 - 原则、模式与实践 —— 设计模式(十二)STATE模式

敏捷软件开发 - 原则、模式与实践 —— 敏捷开发(一) 本文对应原书第1章和第2章。 敏捷软件开发宣言 个体和交互 胜过 过程和工具 可以工作的软件 胜过 面面俱到的文档 客户合作 胜过 合同谈判 响应变化 胜过 遵循规则 敏捷开发原则 我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意 即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势 经常性的交付可以工作的软件,交付的间隔可以从几周到几个月... 阅读详情

相关推荐

敏捷软件开发:原则、模式与实践实战

本文还有配套的精品资源,点击获取 简介:敏捷软件开发是一种以人为本、迭代、逐步交付的开发方式,强调适应变化和持续改进。本课程设计项目经过测试,旨在帮助学生掌握敏捷开发的原则、模式和实践。学生将通过实践任务,提升在Scrum、极限编程、精益开发等敏捷模式方面的能力,并在迭代开发、用户故事、持续集成等实践中,提升团队协作和软件质量。 1. 敏捷软件开发简介 敏捷软件...

weixin_36288992的博客 1536

敏捷软件开发:原则、模式和实践

1,敏捷宣言和原则 1.1 敏捷宣言 敏捷联盟在敏捷大会上发布了他们最主要的主张,称之为敏捷宣言。其主要表述如下: 1,个人和交互胜过过程与工具 2,可以工作的软件胜过面面俱到的文档 3,客户合作胜过合同谈判 4,响应变化胜过遵循计划 虽然后者在软件开发中也具有其价值,但敏捷联盟认为,前者比后者更具有价值。这四点构成了敏捷最核心的要素,但我个人认为就这4点而言,最根本的还是“个人和交

Roy的IT笔记 3853

敏捷软件开发:原则、模式与实践详解

Scrum是一种迭代式增量的敏捷软件开发框架,其核心概念包括角色、事件和工件三大组成部分。角色包括产品负责人(Product Owner)、Scrum Master和开发团队(Development Team)三个关键角色。产品负责人负责维护产品待办事项列表(Product Backlog),优先级排序,确保团队的工作和产品目标保持一致。Scrum Master是团队的教练和辅助者,负责移除阻碍团队进展的障碍,确保Scrum过程的顺利执行。开发团队则是自组织和跨功能的,负责实际的开发工作。

weixin_42128315的博客 1571

《敏捷软件开发(原则、模式与实践)》前三章笔记

 《敏捷软件开发(原则、模式与实践)》(美)Robert C.Martin 著        邓辉 译        孟岩 审笔记笔记摘录:Eleven第一部分 敏捷开发第1章 敏捷实践        教堂尖顶上的风标,即使由钢铁制成,如果不懂得顺应风势的艺术,一样会被暴风立即摧毁。                                                ——海因里希.海涅(

Eleven's Blog 1875

敏捷软件开发原则、模式与实践.pdf

敏捷开发的经典书 内容简介 在这本书中,享誉全球的软件开发专家和软件工程大师Robert C.Martin将向您展示如何解决软件开发人员、项目经理及软件项目领导们所面临的最棘手的问题。这本综合性、实用性的敏捷开发和极限编程方面的指南,是由敏捷开发的创始人之一所撰写的。   ·讲述在预算和实践要求下,软件开发人员和项目经理如何使用敏捷开发完成项目。   ·使用真实案例讲解如何用极限编程来设计、测试、重构和结对编程。   ·包含了极具价值的可多次使用的C++和JAVA源代码   ·重点讲述了如何使用UML和设计模式解决面向客户系统的问题

敏捷软件开发-原则、模式与实践.pdf

本书讲授了一些原则、模式以及实践,它们可以帮助软件开发人员在追求美的程序、设计以及团队的道路上迈出第一步。本书探索了基本的设计原则,软件设计结构的通用模式以及有利于团队融为一个有机整体的一系列实践。本书包含了许多代码,仔细研读这些代码是学习本书所教授的原则、模式及时间的最有效方法

《敏捷软件开发:原则、模式与实践》

/*免责声明:全部内容都属于是段友分享,我只是属于整理。**/ /*写在前边,个人觉得****弄一个积分下载,就是在自掘坟墓。表面上看起来是可以为个人赚积分,实际砍掉分享交流的一个途径。对我就是没有积分,我就是这么理直气壮。所以每次需要东西的时候,网上一艘,全都是积分下载,虽然有的只是1分,但是不好意思我真的没有,我觉得不想分享别分享啊。到了这里,我把我有的就分享出来,我在博客上专门...

Angus 3463

OpenCode:终端开源AI编程助手,多模型接入与实战指南

AI编程助手正在从IDE侧边栏走向终端环境。其核心原理是让模型直接读取项目文件、执行命令、查看报错,形成从诊断到修复的完整闭环,从而解决传统插件上下文割裂的问题。技术价值在于开源透明、模型无关,既可接入OpenAI等云端服务,也能通过Ollama连接本地模型,兼顾数据安全与离线场景。在工程实践中,它适用于长时间驻留项目、自动修Bug、团队统一AI工具链等需求。OpenCode正是这样一款终端AI助手,支持灵活配置第三方API密钥,提供免费档与Go套餐,并通过Skills技能系统让模型遵循标准操作流程。同时,

weixin_28745821的博客 326

敏捷软件开发原则、模式与实践

敏捷软件开发原则、模式与实践 去发现同类优质开源项目:https://gitcode.com/ 《敏捷软件开发原则、模式与实践.pdf》是一本深入浅出地介绍敏捷开发与极限编程的实用指南,由全球知名的软件开发专家和软件工程大师Robert C.Martin撰写。 书籍简介 本书主要面向软件开发人员、项目经理及软件项目领导者,旨在帮助他们解决在软件开发过程中遇到的最复杂、最困难的问题。作者以亲身实践经...

gitblog_06775的博客 365

手把手教你用Qt5打造二次元游戏启动器(附鸣潮同款UI源码)

本文详细介绍了如何使用Qt5框架从零开始构建一个功能完整、UI风格贴近《鸣潮》的二次元游戏启动器。教程涵盖无边框窗口、动态背景、自定义控件绘制、多线程资源加载以及下载管理等核心模块的实现,并提供了可运行的源码参考,帮助C++开发者和Qt爱好者深入掌握现代桌面应用开发技术。

weixin_29291863的博客 264

【电击防护篇】电击防护技术详解:从人体效应到接地系统全解析

本文系统讲解了电击防护的关键知识,包括电流对人体的影响(如30mA是心室颤动阈值)、人体电阻特性(700Ω-6100Ω)以及电气接触防护措施。重点分析了TT、TN和IT三大接地系统的结构特点与应用场景,强调TN-S系统最安全,IT系统供电连续性最佳。详细介绍了漏电保护器(RCD)的工作原理与选型指南,建议人身防护选用30mA高灵敏度RCD。文章通过对比表总结三大系统的安全性、成本及适用场景,为电气安全设计提供实用参考。

2301_81299416的博客 1742

敏捷软件开发、模式、原则与实践摘录

敏捷软件开发、模式、原则与实践摘录 敏捷开发遵循的原则: 我们最优先要做的是通过尽早的,持续的交付有价值的软件来满足客户满意。 即使到了开发后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。 经常性地交付可以工作的软件,交付的间隔可以从几星期到几个月。时间间隔越短越好。 在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。 围绕被激励起来的个体来构建项目。给他们提供所

胡杰的专栏 1683

MATLAB去雾算法实战:5种经典方法对比+1种改进方案(附完整源码)

本文详细对比了MATLAB中5种经典去雾算法(包括暗通道先验、多尺度Retinex等)的实现效果,并提出一种创新的自适应融合改进方案。通过完整的源码展示和性能对比,帮助开发者掌握图像去雾的核心技术,提升计算机视觉应用中的图像质量。特别针对去雾算法中的光晕效应问题,给出了工程实践中的优化技巧。

weixin_26801149的博客 412

《敏捷软件开发-原则、模式与实践》资源下载介绍

《敏捷软件开发-原则、模式与实践》资源下载介绍 去发现同类优质开源项目:https://gitcode.com/ 《敏捷软件开发-原则、模式与实践.pdf》是专为软件开发人员打造的一本实用性书籍。本书从敏捷软件开发的角度出发,深入讲解了软件开发过程中的关键原则、模式与实践。 书中首先探讨了基本的设计原则,帮助读者理解软件开发中的核心思想。随后,介绍了软件设计结构的通用模式,使读者能够更好地掌握软件...

gitblog_06776的博客 391

各种AI的调试日记——辅助工作篇

记录使用各种AI(语言大模型)的心得和总结

m0_73056986的博客 1391

基于CNN对抗嵌入的图像隐写——CNN-Based Adversarial Embedding for Image Steganography

CNN-Based Adversarial Embedding for Image Steganography https://ieeexplore.ieee.org/abstract/document/8603808 这篇论文发表在TIFS( IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY),TIFS是网络与信息安全领域的国际两大顶级期刊之一,中国计算机学会(CCF)推荐的A类期刊,SCI一区TOP期刊,目前影响因子有7多了。 1 概

weixin_48654804的博客 2279

敏捷软件开发原则模式与实践资源下载介绍:一本实用的软件开发指南

敏捷软件开发原则模式与实践资源下载介绍:一本实用的软件开发指南 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在当今快速变化的软件开发领域,敏捷开发已成为提升项目效率与质量的重要方法。《敏捷软件开发-原则、模式与实践.pdf》作为专为软件开发人员设计的资源,旨在帮助读者深入理解敏捷开发的精髓,并通过系统的原则、模式和实践,提高软件开发的能力和效率。 项目技术分析 本书...

gitblog_06789的博客 890

ESP-SR实战:从零搭建智能语音唤醒与命令识别系统

本文详细介绍了如何利用乐鑫ESP-SR框架,从零开始搭建一个完整的离线智能语音交互系统。内容涵盖硬件选型(推荐ESP32-S3与数字麦克风)、开发环境配置(ESP-IDF与ESP-ADF),并深入解析了AFE声学前端、WakeNet唤醒词检测和MultiNet命令词识别三大核心模块的工作原理与实战配置。通过具体的代码示例和调试技巧,指导开发者快速实现高识别率的语音唤醒与命令控制功能。

weixin_29161785的博客 301

敏捷软件开发原则模式与实践:一本提升开发效率的实用指南

敏捷软件开发原则模式与实践:一本提升开发效率的实用指南 去发现同类优质开源项目:https://gitcode.com/ 随着科技的快速发展,软件开发领域也在不断变革。敏捷软件开发原则模式与实践,成为当前软件开发中的重要理念。本文将为您介绍一本深入浅出地讲解敏捷开发与极限编程的实用指南——《敏捷软件开发原则、模式与实践》。 项目介绍 《敏捷软件开发原则、模式与实践.pdf》是由全球知名的软件开发专...

gitblog_06760的博客 316

SAP 行业扫盲系列之一:SAP 从业者的分类

本文简单介绍了 SAP 从业者的分类,限于笔者狭隘的视角,可能存在遗漏或者不恰当的地方,希望大家在评论区指出。 那些在知乎咨询上向我提问关于进入 SAP 行业建议的朋友们,也请大家提问时注明自己想具体从事 SAP 行业哪一类的工作,这样才能得到更让你们满意的回复。感谢阅读。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1589

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

敏捷软件开发:原则、模式与实践(全).part1

敏捷软件开发:原则、模式与实践(全).part1

otzippo的专栏 193

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

敏捷软件开发 - 原则、模式与实践 —— 敏捷设计(一)设计的臭味

设计的臭味 僵化性 僵化性是指难以对软件进行改动,即使是最简单的改动。如果单一的改动会导致有依赖关系的模块中的连锁改动,那么设计就是僵化的。必须要改动的模块越多,设计就越僵化。 脆弱性 脆弱性是指,在进行一个改动时,程序的许多地方就可能出现问题。常常是,出现新问题的地方与改动的地方并没有概念上的关联。 牢固性 牢固性是指,设计中包含了对其他系统有用的部分,但是要把这些部分从系统中分离出...

feifeilb的博客 486

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

软件开发的本质 --《敏捷软件开发:原则、模式与实践》

注: Robert C. Martin先生是一位软件开发领域世界级的大师,也是我最喜爱的技术作家之一。他的文章总能直指问题要害,给出最有效、最实际、最贴切的解决方案。他的网站www.objectmentor.com上的文章是我的最爱,篇篇必读,每一篇总能给我一种茅塞顿开的感觉。很早我就知道Uncle Bob要写一本关于敏捷开发的书,我就一直关注着这本书,期待着这一天的到来,因为我知道这次Uncle

hoping的专栏 2370

敏捷软件开发(原则、模式与实践

关键字: 敏捷 软件 开发 原则 模式 实践 《敏捷软件开发(原则、模式与实践)》(美)Robert C.Martin 著        邓辉 译        孟岩 审笔记笔记摘录:Eleven第一部分 敏捷开发第1章 敏捷实践        教堂尖顶上的风标,即使由钢铁制成,如果不懂得顺应风势的艺术,一样会被暴风立即摧毁。                                 ...

topMan'blog 512

搞到Bob大叔的《敏捷软件开发 原则、模式与实践》

Bob大叔的书太经典了,拜读过大名鼎鼎的《企业应用架构模式》和《重构》,感觉相当经典,今天找到《敏捷软件开发 原则、模式与实践》,抽空好好品味一下。...

fuliang 502
上一篇: 敏捷软件开发 - 原则、模式与实践 —— 敏捷开发(二)
下一篇: 敏捷软件开发 - 原则、模式与实践 —— 敏捷设计(一)设计的臭味
feifeilb
博客等级 码龄22年 22粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值