译者序
Robert Martin作序
Bertrand Meyer作序
Richard Soley作序
前言
致谢
第一部分 内核思想解释
第1章 简要介绍如何使用内核
1.1 为什么开发优秀软件具有很大的挑战性
1.2 认识软件工程的本质:内核
1.3 应用内核处理特定挑战:一个例子
1.3.1 进入问题的要点
1.3.2 处理挑战
1.4 学习如何使用内核处理开发挑战
第2章 关于内核的一些更多的细节
2.1 如何使用内核处理特定挑战:一个例子
2.2 阿尔法介绍
2.3 阿尔法使用状态帮助团队取得进展
2.4 更多关于内核的内容
第3章 纵览完整的内核
3.1 内核的组织结构
3.2 对于进展和演变是本质的事物:阿尔法
3.3 对于做什么是本质的事情:活动空间
3.4 所需的本质功能:能力
3.5 更多关于内核的内容
第4章 利用卡片使内核阿尔法变得具体
4.1 使用卡片帮助处理特定挑战:一个例子
4.2 使内核活跃起来
第5章 通过实践了解更多有关内核的细节
5.1 使实践变得清晰
5.2 实践的明确程度
5.3 从实践中构建方法
5.4 学习方法和实践
第6章 内核可以为你做什么
6.1 开发卓越软件
6.2 成长
6.3 学习
6.4 演进
延伸阅读
第二部分 使用内核运行一次迭代
第7章 使用内核运行迭代:计划-执行-检查-调整
7.1 使用的术语
7.2 计划-执行-检查-调整
7.3 设定场景
7.4 下几章的重点
第8章 计划一次迭代
8.1 用阿尔法状态指导计划
8.1.1 确定当前的进展
8.1.2 确定下一步工作目标
8.1.3 确定如何完成目标
8.2 确定当前状态
8.3 确定下一个状态
8.4 确定如何达到下一组状态
8.5 内核如何帮助你进行迭代计划
第9章 执行和检查迭代
9.1 使用内核执行和检查迭代
9.2 执行和检查我们故事中的迭代
9.3 内核如何帮助你执行和检查迭代
第10章 调整工作方式
10.1 使用内核调整工作方式
10.2 调整我们故事中的工作方式
10.3 内核如何帮助你调整工作方式
10.3.1 明确工作方式
10.3.2 改进工作方式
第11章 使用明确的需求项状态运行一次迭代
11.1 使用明确的需求项完成工作
11.2 计划我们故事中的迭代
11.3 进行我们故事中的另一次迭代
11.4 调整我们故事中的工作方式
11.5 讨论
延伸阅读
第三部分 使用内核运行一个软件开发工作
第12章 运行一个软件开发工作:从想法到运营
12.1 我们故事中的人物和他们一路上所面临的挑战
12.2 了解组织环境
第13章 创建业务案例
13.1 准备开始我们的故事
13.2 了解机会和涉众
13.3 了解解决方案
13.4 准备工作
13.5 制定一个概要计划
13.6 建立时间进度表
13.7 内核如何帮助你开始
13.7.1 拥抱你的涉众
13.7.2 指导开发
13.7.3 预先计划
第14章 开发系统
14.1 构建骨架系统--让它能工作
14.2 涉众参与
14.3 开始开发
14.4 建立一个各方都认可的工作方式
14.5 使骨架系统可用--让系统工作得更好
14.6 保持涉众参与
14.7 演化一个可用的系统
14.8 找到一个好的工作方式
14.9 演进为可部署的解决方案--结束工作
14.10 通过验收
14.11 准备交付
14.12 完成!完成开发工作
14.13 内核如何帮助你开发卓越的软件
第15章 运营软件
15.1 设置场景
15.2 上线--成功地部署系统
15.3 部署系统
15.4 两个团队之间的移交
15.5 支持系统直到其退役
15.6 我们的故事结束
延伸阅读
第四部分 利用内核来规模化开发
第16章 规模化意味着什么
第17章 细化内核来提供更多细节
17.1 对于缺乏经验的成员将"实践"变得精确
17.2 实例:需求获取的实践
17.3 实例:验收测试的实践
17.4 了解实践是如何协同工作的
17.5 "明确的实践"的价值
第18章 拓展内核来适配不同类型软件开发
18.1 商定需要使用的实践
18.2 适应你的开发生命周期
18.3 在开发过程中增量式地建立一个方法
18.4 大型组织中的方法
18.5 让团队控制他们的方法
第19章 向上规模化内核来适用大型复杂软件开发
19.1 大型软件开发的例子
19.2 利用阿尔法来组织工作
19.3 利用阿尔法进行可视化开发
19.4 利用阿尔法来协调开发团队
19.5 让团队成员参与内核的规模化
延伸阅读
第五部分 内核如何改变你在工作中运用方法的方式
第20章 考虑与不考虑方法
20.1 不停地思考方法
20.2 做比说强
第21章 敏捷运用方法
21.1 是整个团队而不是小部分人拥有方法
21.2 关注于方法使用胜过综合方法描述
21.3 不断演化团队的方法而不是保持方法固定不变
第六部分 真正新在哪
第22章 重建方法
22.1 并不缺少方法,缺少的是基础--内核
22.2 内核重视实践性
22.3 内核是可付诸实施的、可扩展的
第23章 在方法上应用关注点分离原则
23.1 将内核从实践中分离
23.2 将阿尔法从工作产品中分离
23.3 将本质从细节中分离
第24章 关键区分
24.1 方法上的创新
24.2 方便软件开发团队和专业人员的实用工具
第七部分 结语
第25章 这并不是终点
第26章 ……,但是现在可能是序幕的结束
第27章 愿景实现之时
27.1 对于软件专业人员
27.2 对于产业界
27.3 对于学术界
27.4 令人激动的未来
延伸阅读
附录
附录A 概念和符号
附录B 本书所涉及内容相比内核的差异
B.1 内核和本书都包含的内容
B.2 内核不包含但本书包含的内容
B.3 内核包含但本书不包含的内容
附录C 参考文献
C.1 SEMAT工作文献
C.2 SEMAT:其他文档和参考文献
C.3 其他参考文献
作者介绍
业内人士对本书的评价
索引
[书目20150303]软件工程的本质:运用SEMAT内核
时间: 2024-10-09 00:31:53
[书目20150303]软件工程的本质:运用SEMAT内核的相关文章
软件工程的本质是管理复杂性
为什么软件工程的本质是管理复杂性 软件工程是软件的形成过程,除了概念本身,涉及到了工具和人.主要是how,如何形成软件,如果使用技术,人又如何.软件工程的本质是复杂性对软件工程而言,不可避免的东西是(需求)变化:而软件是的本质是概念和概念之间的关系,这个本质类似什么,类似于中子会影响原子裂变.所以,这导致了软件的复杂性爆炸. 这也是为什么<人月神话>作者在论述到这个本质和变化的时候说:"如果这是事实,那么终究没有银弹". 这里且不去论证他这个论断是否正确,但是的确反应了人月
读《大道至简-软件工程实践者的思想》有感
囫囵吞枣地读完,总是看的走神,里面有许多术语看不懂.的确,这本书是该读许多遍,每一次都会有新的体会的.而对于初学者,至少从这本书中该获得学习编程的大方向.想着要写1000字的读后感,我又折回来看了每一章,每一章都该有所收获.作为一个初学者,许多东西看到的都很表面,也会有错误的地方,还请多多包涵. 第一章是编程的精义,作者周爱民将编程和古代愚公移山的故事结合起来,巧妙地告诉我们自古以来我们就有这种思想.而编程能不能学会,是很多初学者都会问到的问题,编程重在逻辑,作者也明确告诉了我们,除了先天智障和
Linux内核源码分析方法
一.内核源码之我见 Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次.如果想透析Linux,深入操作系统的本质,阅读内核源码是最有效的途径.我们都知道,想成为优秀的程序员,需要大量的实践和代码的编写.编程固然重要,但是往往只编程的人很容易把自己局限在自己的知识领域内.如果要扩展自己知识的广度,我们需要多接触其他人编写的代码,尤其是水平比我们更高的人编写的代码.通过这种途径,我们可以跳出自己知识圈的束缚,进入他人的知识圈,了解更多甚至我们一
项目之软件工程(我专业四年都未曾知道这四个字的含义,几句话便懂了)
软件工程的本质 一级标题 控制 质量 二级标题 成本 扩展 高内聚低耦合 效率 控制: 成本:企业要求的是以最快的速度完成可正常运行的软件 需要多少人力做 多长时间能做好 -----控制好成本利润更多 扩展: 用户要求修改原先的某个功能,怪用户之前怎么不计划好 用户今添个功能 用户明删个功能 把项目分成几个模块,把人力划分完成对应的一个模块,然后这个人边抽烟边说那个人没做完我这不知道怎么做,那个人说我还在等他呢,也去抽根烟 这几个人做完了要把几个模块合在一起串行检测,出了个错你怪我,我怪你
Linux内核源代码分析方法
Linux内核源代码分析方法 一.内核源代码之我见 Linux内核代码的庞大令不少人"望而生畏",也正由于如此,使得人们对Linux的了解仅处于泛泛的层次.假设想透析Linux,深入操作系统的本质,阅读内核源代码是最有效的途径.我们都知道,想成为优秀的程序猿,须要大量的实践和代码的编写.编程固然重要,可是往往仅仅编程的人非常easy把自己局限在自己的知识领域内.假设要扩展自己知识的广度,我们须要多接触其它人编写的代码,尤其是水平比我们更高的人编写的代码.通过这样的途径,我们能够跳出
阅读笔记-软件工程的银弹
(最近看了两篇关于“银弹”的文章,做一点笔记,其中,英文基本上是引用原文) 一.No Silver Bullet: Essence and Accidents of Software Engineering 这篇是Fred Brooks在1987年所发表的一篇关于软件工程的经典论文. (链接:http://www.cs.umd.edu/class/spring2003/cmsc838p/General/NoSilverBullet.html) 所谓“银弹”,按我对这篇文章的理解,或许是一个可以让
快速通读《现代软件工程——构建之法》后的五点疑惑
通读过<现代软件工程--构建之法>这本书后,感觉确如老师所言,这本书不同于以往那些课本的呆板,更显轻松有趣,一个个例子很生动形象,促使我们能更加容易的理解那些原本晦涩难懂的概念.定义. 下面是我在阅读过程中遇到的几个问题: 1.第一章主要讲软件工程,那么软件工程的本质问题是什么?书中讲了软件开发过程的难题.特性,说那些非本质.临时的特性不能决定软件工程的本质问题,那本质问题究竟是什么? 2.第三章软件工程师的成长过程中描述了软件工程师的思维误区,那怎样才能避免或减少思维误区的发生? 3.程序员
【转】JSP总结
day1 JSP 定义: 1)Java Server Page, Java EE 组件,本质上是 Servlet. 2)运行在 Web Container.接收 Http Request,生成 Http Response(默认协议是 Http 请求和响应) 3)JSP 使得我们能够分离页面的静态 HTML 和动态部分——我们需要的技术. 4)使页面可以混和html代码.Java代码以及JSP标签:允许访问组件 Servlet的缺陷(JSP出现的原因):
Linux下的编程实战【转】
一篇比较不错的文章, 降到了 makefile make , gcc编译器,GDB调试器, Linux文件系统,Linux文件API,.C语言库函数(C库函数的文件操作实际上是独立于具体的操作系统平台的),进程控制与进程通信编程 1.Linux进程 Linux进程在内存中包含三部分数据:代码段.堆栈段和数据段.代码段存放了程序的代码.代码段可以为机器中运行同一程序的数个 进程共享.堆栈段存放的是子程序(函数)的返回地址.子程序的参数及程序的局部变量.而数据段则存放程序的全局变量.常数以及动态数