20162320刘先润大二《程序设计与数据结构》第二周学习总结

《构建之法》第7-9章节PPT学习总结

  • 微软解决方案框架(Microsoft Solution Framework,MSF),是微软公司通过吸取各部门积累的业务经验并随着时代更新的软件开发方法。其主要原则有9点:推动信息共享与沟通、为共同的远景而工作、 充分授权和信任、各司其职,对项目共同负责(不仅要完成本职工作,更要对项目负责)、重视商业价值、保持敏捷,预期变化、投资质量(投资的效率,时期并要求长期)、学习所有的经验(要坚持总结和分享)、与顾客合作(从用户角度出发)
  • 用户调研(User Study),A/B测试,通过态度、行为、定性、定量来规范调研的尺度。
  • 需求分析

软件需求

将需求进行分类、清楚软件产品的利益相关者、获取用户需求(用户调研)、竞争性需求分析的框架、功能的定位和优先级、目标估计和决心、找出估计后面的假设、最后分而治之

经验公式

工程师的经验公式实际时间花费主要取决于两个因素—对 某件事的估计时间X,以及他做过类似开发工作的次数N。 Y = X ± X ÷ N

  • 提案,评估和WBS

NABC model

N--need需求、Approach--做法、Benefit--好处、Competitors--竞争、Delivery--推广方式

评估

目标(根据实际的需求来定)、决心(它承诺在特定日期交付预定义的功能,作为特定的质量级别)、估计(单个任务花费的人力、时间)

WBS – Work Break Down

分而治之,顶层(产品)→中层(功能)-用户视角→较低级别(功能实现)-团队透视图(PM,test)→最低级别(模块)-开发透视图

  • 风险管理。第一步:确认风险、根据不同的来源对风险进行分类;第二步:分析和优先级划分;第三步:计划和管理风险
    应对风险的方法:进一步研究、接受、 规避、转移、 降低、制定应急计划
  • 项目经理(PM),PM负责除产品开发和测试之外的所有事情,包括正确地做产品和正确地做流程。
    PM的作用:收集需求、设计用户界面,编写规范、协调市场、文档、测试、定位、带领团队达成决策
    注:项目经理是和大家平等工作,并且做具体工作,和其他团员一起形成决议,只管事不管人的,和领导型经理是不一样的。

《构建之法》学习中提出的有价值的思考问题

  • 问题1:在第7章,关于做用户调研,书中举了一个例子,Bowman是谷歌的视觉设计主管,谷歌的一个团队不能在两个蓝色之间做出决定,所以他们在每一个蓝色之间测试41个阴影,看看哪一个表现更好。他最近就边界是否应该是3, 4,或5像素宽进行了辩论,并要求证明他的情况。我已经厌倦了辩论这种微小的设计决策,《论语》云:“如切如磋,如琢如磨。”做事要求精益求精,在进行用户调研的过程中,为什么不能调研细微到毫厘,即做调研做过头?或者说如何确定做用户调研的界限,究竟哪种调研才算是做过头呢?比如当我做用户调研时,我努力朝着最精确的方向去做,但我是否已经做过头了呢?
  • 问题2:第9章中,“一个团队成熟的标记,就是对风险的管理”,在《构建之法》中如是说,几乎每个优秀的团队都会有自己独特的一套风险应对措施。关于如何应对风险,首先就应该确立态度,书上给了三种不同的态度,通过查阅百度百科,我了解到风险态度是一个专业名词,总共分为三种态度,引用该知识点如下:
  风险厌恶是一个人接受一个有不确定的收益的交易时相对于接受另外一个更保险但是也可能具有更低期望收益的交易的不情愿程度。
  风险中性是相对于风险偏好和风险厌恶的概念,风险中性的投资者对自己承担的风险并不要求风险补偿。我们把每个人都是风险中性的世界称之为风险中性世界(Risk-Neutral World)。
  风险偏好是指人们在实现其目标的过程中愿意接受的风险的数量。

如上三种态度是一个从保守到开放的过程,这三种态度中任何一种都有其存在的理由,是不是风险中性一定是最好的选择呢,或者是求稳发育还是冒险一搏呢?

  • 问题3:第9章关于项目经理PM,提到Project Manager 和Program Manager的一个区别是一个团队可以有很多Program Manager,并且是和团队其他成员进行决议。我提出一个疑问如果一个团队中存在多个PM,他们针对一个项目形成了多个决议,这种窘况该如何解决呢?还有就是既然每个团队成员都可能当上PM,而这个职位又没有实际权力,这对团队的帮助作用真的大吗?我认为这设些带有少许管理权力的职位例如小组长效果会比较好,因为小组长是能力佼佼者,本身又能管事和管一定范围内的人,不就提高了小团队效率吗?
  • 问题4:project manager和program manager有一个区别在于前者管事也管人,后者只管事不管人,并且符合PM能力要求的程序员都有机会成为PM。倘若一个程序员能力很强,但是并不会管理和领导,像这样领导力较弱的PM和能力不是特别强但领导力出众的程序员相比,谁能更加胜任这一职位呢?所以PM需要有很强的领导力吗?

上周考试错题总结

  • 错题1:
if (a > b) then
 print a
else
 print n
end if

解答:O(1),所有的if子句只包含一个操作。我原来写的O(n),我以为上限是n就直接填了O(n)。

  • 错题2:
Determine the order of the following pseudocode fragment.  
j = 1
for i = 1 to n
 j = j * 2 
next i
for k = 1 to j
 x = x + 1
next k

解答:O(2n) ,第一个循环的2n值被计算并存储在j中,因此第二个循环执行2n次。说实话,这个题是题目看错了,我把 j = j * 2 看成了j²。

代码托管

本周学习《构建之法》,代码只练习了课上的代码。

其他(感悟、思考等,可选)

6个人1本书不够看

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 188 1/1 25 算法分析
第二周 70/258 1/2 15/40 《构建之法》7-9章
第三周
  • 计划学习时间:15小时

  • 实际学习时间:15小时

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

原文地址:https://www.cnblogs.com/lxrlxr/p/7530367.html