[读书报告]构建之法(一)

今天我阅读了邹欣老师的《构建之法》从前言到正文的第66页,一些思考和体会如下:

1.前言

从前言可以看出邹欣老师对软件工程课的定位和对这本书作为教材的评价还是很高的。从前言可以知道这本书是邹欣老师结合了在一些高校的软件工程授课经验和自己的心得体验,写出的一本强调通过动手实践学习软件工程的教材。

2.给任课老师和助教的建议

这部分可以看书邹欣老师对同学们的要求很高,预期每个学生需要每周花费8个小时在这门课上。我个人而言,在个人项目和团队项目中每周花费的时间要超过8个小时。在团队项目中如果算上开会讨论等事务的时间,也是超过八个小时的。而在团队项目中,写代码的时间则不是很稳定,有的周超过8个小时,有的周则不够。

面对软件学院老师的抱怨,邹欣老师提出的问题的解决方法是先让同学们维护已有的程序再逐步增量开发的方式。我觉得这种想法很好。当时黄金点游戏我们组得到了第二顺位,挑选项目的优先级还是很高的。当时怀着对已有项目的天真的认可,包括我们的所有顺位靠前的组都选择了对已有项目的迭代开发。但事实证明我们真的是too young to naive,因为拿到手的程序根本不是一个完整的程序,何谈迭代开发?这从很大程度上打消了我的热情,是我有了很强的抵触心理。

邹欣老师对于师生关系的论述罗杰老师在上课也讲到了。教练/学员模型确实很吸引人,但是在实际的开发过程中,我觉得是学员们在独立战斗,从老师那里能够得到的帮助极其有限。

关于邹欣老师给出的1/N打分法和团队贡献分的机制,我觉得前者太残酷而后者太理想化。可能还是社会本来就很现实而作为学生的我还太naive。

3.第一章

第一章主要将了一些概念性的东西。比较重要的可能是几个公式。

一个是我们很早就知道的公式:

程序=算法+数据结构

另外两个我认为是书提醒我们要额外注意的:

软件=程序+软件工程

软件企业=软件+商业模式

对于这三个公式,我有些自己的想法:

程序对人与人关系的涉及最少,软件和软件企业对人和人与人关系的探寻则是越来越多。

看来人还是最根本的。比如邹欣老师在书中提到,很多软件功能相似,但用户体验将他们拉开了巨大的差距。

看来博弈归根到底是人与人的博弈。

4.第二章

第二章讲个人技术和流程,比较实践性的内容包括单元测试和效能分析。

邹欣老师列出的对比大四学生和工作三年的软件工程师在个人项目耗时的对比很有意思。

最明显的对比是SDE比学生多60%的时间在需求分析和测试上而少1/3的时间在编码上。这现实了职业化有一个突出的特点就是规范化。

5.第三章

这一章讲软件工程师的成长,我想每一个学生都会很关心这个话题,我当然也不例外。这一章依然印证了职业化的突出特点是规范化。要成为一个优秀的软件工程师,很多东西不能够再用大概、差不多这种词去描述,而应该用真实记录下来的数据说话。而真实的项目是能力提升的必由之路。

邹欣老师提到的魔方的例子使我印象很深刻。怎么提高技能,邹欣老师给出的答案一针见血:通过不断的练习,把那些低层次的问题都解决了,变成不用经大脑的自动操作,然后才有时间和脑力来解决较高层次的问题。事实上,这种模式正式中学时代的模式:所有的知识点都已经到了滚瓜烂熟的接近本能的程度,然后才能在应付各种题目的过程中天马行空随意施展。

但这可能也是我和我身边的很多同学们面临的最大的问题。又想提起大二下的面向对象课了。面向对象课确实讲了面向对象的思想,也写了很多的代码。但更多的时候我们是在纠结于代码的细节而不是面向对象。能用指定的java语言写出基本满足功能的程序交了作业就已经很纠结了,谁有功夫去管什么对象不对象呢。

现在的软工课,也是这种感觉。这学期的另外一门大作业,数据库,也是这样。

所以虽然编译的课程设计最难,但是做起来最舒服。因为只要想通了,就能写出来,你不会问自己:我的这个设想需要的一些东西语言支持不支持,因为你很清楚,这种语言能做什么,怎么做。

我们确实学了很多语言,必修有c,选修有c++,java,c#,ruby,但用的熟练的确实有限。

可能是我们的努力还不够吧。

时间: 2024-10-13 11:34:12

[读书报告]构建之法(一)的相关文章

[读书报告]构建之法(三)

今天读了<构建之法>的第八章. 第八章讲需求分析.需求分析有以下几个步骤: 1.获取和引导需求 找到软件的利益相关者,了解和挖掘他们对软件的需求,引导他们表达出对软件的需求. 2.分析和定义需求 对从各个方面获取的需求进行规整,定义需求的内涵,从各个角度将需求量化. 3.验证需求 通过分析报告.用户调查等形式向利益相关者验证团队对需求的认知. 4.在软件产品的生命周期中管理需求 在软件的声明周期中不断对需求进行重新审核并作出调整 需求分为以下几个方面: 1.对产品功能性的需求 要求产品必须实现

[读书报告]构建之法(八)

今天读了<构建之法>的第15章:稳定和发布阶段 Alpha:指集成了主要功能的第一个试用版本. Beat:功能基本完备,稳定性较Alpha版本高,用户可以在实际工作中小范围使用. ZBB:某天的版本把在之前记录的Bug都解决掉 RC:发布候选版本 RTM:最终发布版本 RTW:和RTM类似 会诊小组 软件团队的各个角色代表组成了会诊小组,处理每一个影响产品发布的问题. 决定对每一个Bug采取以下哪一种行动: 1.修复 2.设计本来如此 3.不修复 4.推迟 复杂项目的会诊 第一步:开发者提交惨

[读书报告]构建之法(七)

今天读了<构建之法>的第十四章,这章讲质量保障. 软件质量=程序质量+软件工程质量 程序的质量体现在软件外在功能的质量.衡量程序的质量,基本的判断可以用“是|否”来判定. 软件工程的质量与“快”和“省”相关,主要体现在以下方面: 1.软件开发过程的可见性 2.软件开发过程的风险控制 3.软件内部模块,项目中间阶段的交付质量,项目管理工具的因素 4.软件开发成本的控制 5.内部质量指标的完成情况 衡量软件工程质量的方法——CMMI(能力成熟度模型集成) 一级:初始级.在这一水平上,企业项目的目标

[读书报告]构建之法(四)

今天读了<构建之法>的第10章 这章讲典型用户和场景. 定义典型用户,需要全面考虑.软件系统中有受欢迎的用户,但也有不受欢迎的用户. 典型用户可以包括以下内容: 1.名字 2.年龄 3.收入 4.带便的用户在市场上的比例和重要性 5.使用这个软件的典型场景 6.使用本软件/服务的环境 7.生活/工作情况 8.知识能力层次 9.用户的动机.目的和困难 10.用户的偏好 需要注意:一个软件不是为所有人服务的 有个典型用户之后,还要决定每一个典型用户的目标——使用系统想要达到什么目的.对每一个目标,

[读书报告]构建之法(二)

今天阅读了<构建之法>从67页到139页的部分,思考和体会如下. 1.第四章 这章讲的是两人合作.主要的点有代码规范.极限编程和结对编程,也讲到了与别人交流的一些技巧. 代码是给机器看的,也是给人看的,但我觉得代码更多是给人看的.因为我一直觉得不论何种科学或者技术发展到了什么程度,人都是最根本的.书中对代码规范方面讲的比较细致,形式上的包括我比较熟悉的缩进.括号.分行.命名.注释.大小写等问题和以前没考虑过的行宽.下划线等问题.我在平时写代码时,关于形式上的规范,首先考虑的是风格的一致性和代码

[读书报告]构建之法(五)

今天读了<构建之法>的第十一章和第十二章 第十一章,软件设计与实现主,要讲了以下几个问题: 1.从规格到实现 主要要经历以下阶段: 1.估计开发所需时间 2.写一些原型代码,看看效果 3.写设计文档 4.按照文档写代码 5.对照设计文档和代码指南进行复审 6.创建或更新单元测试 7.进行单元测试 8.得到一个可以的测试版本 9.修复测试人员发现的问题,请同事复审 10.根据代码复审意见修改代码,签入代码 2.开发阶段的日常管理 一个比较重要的问题是实现每日构建. 书中宣称,经调查,成功的公司中

阅读报告--构建之法

软件工程是一门研究用工程化方法构建和维护有效的.实用的和高质量的软件的学科.它涉及程序设计语言.数据库.软件开发工具.系统平台.标准.设计模式等方面.软件工程牵涉的范围很广,对于即将投身IT业的学生而言,软件工程的内容又非常重要.典型的软件有电子邮件.嵌入式系统.人机界面.办公套件.操作系统.编译器.数据库.游戏等.同时,各个行业几乎都有计算机软件的应用,如工业.农业.银行.航空.政府部门等.这些应用促进了经济和社会的发展,也提高了工作效率和生活效率 . 一.软件=程序+软件工程 正如书中所言,

构建之法读书报告

这学期的软工课上接触到了构建之法这本书, 这本书语言轻松愉快,读起来就像读小说一样适合年轻的学生阅读,从中学到知识.所以老师推荐给了我们并让我们写读书报告. 首先拿起这本书,封面简介但不失设计感,引起了我的兴趣.翻开它读起来其中的语言让我非常舒服.第一章概述讲的是什么是软件工程,不用多说,软件工程就是从拿到需求开始的到运营维护一个系统的一系列设计,从需求到架构到实现.第二章,讲的是单个设计人员如何提高自己的技术和单人开发的流程这也是很重要的,开发以人为单位每个人的能力决定了了团队的能力,学习个人

项目管理学习——《构建之法》读书笔记

最近终于有时间来读读书了.买了<构建之法>已经一年多了,这次静下心来读完了,收获很大.现在想起自己在上大学的时候学习软件工程是机械工业出版社出版的一本外国书籍的翻译版本,当时由于对于整个行业没有太大的感触,而这本书又全部由专业术语和定义组成,所以当时的课是相当痛苦.而老师通过的这门课程的方式又由各种理论知识考试为准,所以当时学习感觉相当“鸡肋”. 好的地方: 1,情景式.对话式对白,有趣易读.这点非常喜欢,很多实际中碰到的问题在这里可以重现.比如:每日构建,在实际开发中,就会由于各种原因导致不