构建之法阅读笔记01
从2019年3月10日开始,阅读由微软工程师邹欣老师撰写的《构建之法》第三版,全书共435页。
本篇为阅读笔记第一篇,章节1-8
开篇概论,引出了一个软工人都熟知的名言:程序= 数据结构+算法
随着阅读的深入和建民老师的课程进度,移山程序员带着他的小难题和我们见面了,
就是一个家长写了一个每天出算术题的小程序
随着学校老师新提的不断需求,
扩展到了一个比较大的系统的软件工程的范畴。
然后据此,最后引申到软件系统的整个生命周期,从需求分析到维护,从代码到道德规范,由这个小例子引申到整个软件工程:代码和数据结构是基础,想要往上走,就必须了解软件工程和开发模式。
1.个人开发部分
描述了目前通用的基本课业“图书馆信息系统”的很多问题,并且布置了一个作业,实现一个类似wc.exe(代码行统计)的软件作业。
希望我们按照之前讲的PSP开发流程来记录在完成这个作业的过程中,是如何体会软件工程的各个组成部分的。最后,又指出如何来测试自己所完成作业的质量。
这对于自身的衡量起到了重要的作用.
2.软件工程师的成长
通过不断地学习,扎实自己的基础,使之成为自动行为,在进行高等级的结构练习,明确学什么,怎么学,搞清楚自己的核心竞争力。
书中给了这样一个例子:
(1)给面试者一个打乱颜色的魔方;
(2)要求他把六面还原;
(3)如果还原了,要求他把魔方恢复成面试官最初给他的那个混乱的局面,必须一模一样。
我突然就想到了从做题到出题的成长(笑)
3.结对开发
主要讲述了代码规范,极限编程,结对编程以及代码复审的重要概念。
并且详尽地列出了代码规范的一些要求,以及为什么要进行代码审查,如何进行代码审查。但是实际操作起来还是有些困难。
4.团队开发
描述了几个比较重要的开发流程,
(1)瀑布模型(Waterfall Model)
(2)瀑布模型的各种变形
(3)统一流程(Rational Unified Process, RUP)
(4)渐进交付流程(Evolutionary Delivery),包括MVP和MBP
并介绍了tsp原则,
5.开发模式:敏捷流程
使用敏捷流程来开发一个项目
(1)找出完成产品需要做的事情——Product Backlog
(2)决定当前的冲刺(Sprint)需要解决的事情——Sprint Backlog
(3)冲刺
讲述了流程的操作方法和成功要素。
6.实战中的软件工程
作者介绍了微软用到的的msf方法
MSF的9条基本原则:
(1)推动信息共享与沟通
(2)为共同的远景而工作
(3)充分授权和信任
(4)各司其职,对项目共同负责
(5)交付增量的价值
(6)保持敏捷,预期和适应变化
(7)投资质量
(8)学习所有的经验
(9)与顾客合作
并根据实例具体介绍了流程。
7.需求分析
用户-需求-软件
分而治之
通过用户调研寻找用户需求,考虑利益相关者,通过nabcd模型来确定自己软件的定位。
NABCD是一个有效的方法。
N(Need, 需求)
A, Approach, 方法
B,Benefit, 好处
C,Competitors,竞争
D,Delivery,推广