hyw7012

导航

软件工程网络15个人阅读作业2-提出问题

提出问题

Q1:

单元测试必须由最熟悉代码的人(程序的作者)来写。
测试的运行、通过、失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性。
--引用自《构建之法-第二版》

  • 看到第二章个人技术和流程这一块时,里面讲到单元测试对于一个程序能够有完美的开端是必不可少的,特别是阅读到上面所写的这边时,我就产生了疑惑,在我的切身经验中,我一开始写代码的时候,并未能对自己的代码构思产生质疑,而作者提到最好能在设计的时候就写好单元测试,是指说当我完成一部分功能时就应该进行单元测试吗?比如说我之前java的课设就是写的四则运算,就事先考虑了我这个程序要有的功能有什么然后进行编写,到最后才进行测试,那我只能在代码都完成的时候进行调试了。然后我觉得单元测试是应该由程序的作者来写,但是测试的时候可以由他人进行,因为我在自己写的时候会陷入自己的固有思维而有很多误区都没有考虑到。然后是我觉得单元测试是不是可以在开发的过程中适当的随情来减少,如果是一些特别笃定不会有问题产生的地方可不可以省去这个步骤,而不会在这个过程带来繁琐的负担。

Q2:

主治医师模式:首席程序员负责处理主要模块的设计和编码,其他成员从各个角度支持他的工作(后备程序员、系统管理员、工具开发、编程语言专家、业务专家)。
业余剧团模式:团队在每一个项目中,不同的人会挑选不同的角色,在下一个剧目中,这些人也许会换一个完全不同的角色类型,个人在团队中听从一个中央指挥的指导和安排。
交响乐队模式:家伙多,门类齐全,演奏都靠谱,同时看指挥。
--引用自《构建之法-软件团队的模式》

  • 上面讲到了很多种软件团队的合作模式,我从中总结了一个团队合作中特别必要的人员就是总指挥,不管是在主治医师模式还是交响乐队模式,甚至是在官僚模式中都是需要这么一个大佬来掌握全军的进程并随时监督和检查。虽然选择什么样的团队模式都是因人而异还要考虑项目的各个需求,但是我想的是如果能结合上面几种模式,未免不是一种适应性较高的团队模式,这种模式需要一个全能的并且有指导性的大佬,由他来进行团队成员的能力分析和为整个项目做一个整体的规划,然后由其他成员进行配合工作来完成。就比如我们的结对编程也是可以的,总是开始于一个比较有想法的大佬提出,当然在这个过程中成员对此有任何意见都是可以协商的,最后由大家各司其职来完成这个项目。

Q3:

敏捷开发的原则:
1、尽早并持续的交付有价值的软件以满足顾客需求;
...
5、以有进取心的人为项目核心,充分支持信任他们;
...
12、时时总结如何提高团队效率,并付诸行动。
--引用自《构建之法-敏捷流程》

  • 敏捷流程是一系列价值观和方法论的集合,从理论上来看,这个方法论是完美的,但是我比较疑惑的是上面的几点。原则上敏捷的开发说是以有进取心的人为核心,并且要充分的信任他们。有进取心是必然的,若核心都没办法严格苛求那整个团队必然会受其拖怠影响,但是充分的信任他们我不是很赞同,就算是大佬也会有错判之时。还有一点是,原则上提到要时时总结如何提高团队的效率,提出这个的目的是为了跟进团队的质量,在总结以往的正确或是错误经验来进行调整,但是我觉得如何在段时间内最有效的总结出经验才是最可观的,每日的例会总结可能会带来负面的影响,有人因为交差而不符合客观事实的提出问题,不仅浪费时间还有可能使总路线方针偏离。

Q4:

功能的定位和优先级
杀手功能:OCR文字识别技术,可以在屏幕上取词解释,拥有独家权威词典;
外围功能:良好的界面设计,在各个平台上都能运行;
必要需求:单词的短语释义的准确性;
辅助需求:可以做各种皮肤;
功能分析的四个象限可以让我们决定怎么处理不同类型的功能,重要的是,倾斜到可以产生差异化和独特用户价值的地方。
--引用自《构建之法-需求分析》

这里说到对用户的需求分析后重点将软件服务倾斜到可以产生差异化和独特用户价值的地方,这里的差异化是具有别具一格的功能特色和用户体验,这里就是所谓的杀手功能,可是在这之前我认为应该还需要考虑的是需求人群,是学生还是大龄人还是适用于面向全体人群的软件应用。假若这项服务是为了满足用户额外的娱乐,那么应该将重点同时放置于这里所说的辅助需求和杀手功能,就比如绝地求生和荒野行动这两款手游,不一样的用户体验(画质感)和占用的空间大小或者流畅度都会直接影响了市场。

Q5:

分而治之
一个团队项目要在一段时间内完成诸多任务,满足用户的需求,实现团队的目标,同时还希望项目能维持良好的技术架构,从哪里入手?
--引用自《构建之法-WBS》

在构建WBS树时,选择从结果出发构建WBS树,而不是从团队的活动出发是什么用意?WBS树的构建是为了将项目分解成小型块以方便开发团队进行分工还是主要是给产品的接收方或利益相关者看的?我在360百科中查询到说工作包(work package)是WBS的最底层元素,一般的工作包是最小的"可交付成果",因此一个用于项目管理的WBS必须被分解到工作包层次才能够使其成为一个有效的管理工具,这也就是叶子节点了,但是如果叶子节点特别小只需要短时间就可以完成,那可以将上一层结点作为叶子节点吗?

posted on 2018-03-18 12:59  hyw7012  阅读(142)  评论(1编辑  收藏  举报