软工网络15我的做业4——alpha阶段我的总结

1、我的总结

在alpha 结束以后, 每位同窗写一篇我的博客, 总结本身的alpha 过程;

请用自我评价表:http://www.cnblogs.com/xinz/p/3852177.html 有比较才会有进步。

类别 具体技能和面试问题 如今的回答(大三下)
语言 最拿手的计算机语言之一,代码量多少? (偏web前端,PC/Mobile App) html,代码量为3000
语言 最拿手的计算机语言之二,代码量多少? (偏后端,数据处理,网站后台,机器学习 C,代码量为4000
软件实现 (阅读代码的能力,实现,单元测试)
一、你有没有在别人代码的基础上改进,你是怎么读懂别人的代码的?
二、你采起了什么办法来保证你的新功能不会影响原来的功能?
三、你在开发中碰到最复杂的bug是什么,你是如何解决的?
四、这个bug出现的缘由是什么,你在未来应该怎么去避免bug再出现?
一、印象中没有,由于很不喜欢看别人的代码,有的是会片断的学习
二、逐字逐句的推敲研究
三、代码上要注意分块隔开,变量上的名称有意义不覆盖,在增长了一个新功能的同时要去检查一下原来的功能受到影响,避免后面堆杂
四、从后端传入的js语言的数据要进行提取并放到框架中,还要保证相同日期的日期显示只显示一条,经过慢慢调试,网上找相似的案例分析解决
五、出现的缘由是对js语言的不了解,对列表数据填充的知识了解不够深刻,未来须要多接触这些语言并结合使用,熟能生巧
软件测试 (测试方法、测试工具、测试实践、代码覆盖率)
一、你如何测试你本身写的代码?
二、你如何测试别人的代码?
三、你掌握了多少种测试工具和方法?
四、你写过测试工具么?
五、你如何对一个网站进行压力测试和效能测试?
六、你如何测试一个软件的人机界面(UX/UI)?
一、编写测试代码进行测试
二、直接运行进行大数据测试
三、微信小程序平台的测试工具,测试方法只会测试代码测试
四、没有啊
五、多人同时访问进行压力测试,效能测试主要看运行的速度和服务器的响应速度
六、主要是经过一个美观和使用操做的状况进行测试的
效能分析 效能分析,效能改进
一、你写过的最复杂的代码是什么?
二、你是如何测量和改进它的效能的,用了什么工具,如何分析的?
一、算法课的结课代码,是一个寻找凸包的程序
二、大数据冲击,当时才不懂什么测试工具呢
需求分析 (需求分析,典型用户,场景,创新)
一、你作过多少个有实际用户的项目,用户最多有多少?
二、你的项目有什么创新的地方?
(哭泣)没有作过实际的项目
行业洞察 一、你最感兴趣的领域是什么?
二、这个领域过去10年经历了哪些创新?
三、你分析过这个领域前10名产品么?请分析一下他们的优劣
四、你要进入这个领域,应该如何创新?
一、最感兴趣的是AR
二、这个领域算是比较新的行业,产品从早教到导航都有涉及
三、没有分析过,可是AR产品在导航方面作的比较通常,比较多的是红包和早教产品
四、创新的话能够考虑在什么方面很好的利用AR这个技术而且投入使用的可能性最大
项目管理 一、你参与过项目管理么?请描述一下两个当下流行的开发方法在你的项目中的具体应用状况
二、请问你如何决定项目中各类任务的优先次序,有什么理论来支持你的作法
三、若是你忽然发现项目不能按时完成,你做为项目领导,有什么办法?
没有参加过项目管理
软件设计 一、你作过架构设计,模块化设计,接口设计么?
二、请说明一下你为什么是这样设计
三、你比较过什么不一样的设计方式,你的设计取得了什么结果?
一、模块化设计
二、模块化设计不只是方便本身对代码的审核和查阅,而且对于纠错也比较容易
三、若是不使用模块化设计,你的代码看起来将会毫无逻辑性可言,杂乱无章,本身都看不下去
质量意识 (代码复审/代码规范/代码质量)
一、你是怎么作代码复审的
二、你加入咱们团队后,能帮咱们提升代码质量么,请具体说怎么提升?
一、主要是经过本身复审和同伴复审
二、能够,经过审核代码的规范性和可行性来提升代码的质量
工具/社区 Software Tools (performance tool, verslon control, work item, TFS)
一、你在各类开发平台(web, linux, PC, mobile, machine learning) 都使用过什么样的工具
二、本身写过什么工具来改进工做效率?
三、给社区贡献过什么工具和代码?
四、 Github有分享代码么?
五、你写的技术博客坚持了多久,读者最多的是哪一篇?
一、不晓得编译环境算不算得上呀
二、没有本身写过工具
三、没有给社区贡献过什么工具和代码
四、没有使用github
五、学习java时写过一学期,再次接触就是此次的软工了,读者最多的一篇不是由于质量好,而是由于提交的早
团队协做 Work with others (协同工做,提供反馈, 说服别人)
一、请描述你在项目中如何说服同伴采用你提出的更好的解决方案,或者你如何听取,了别人的意见,改进了本身的方案?
二、你如何说服懒惰的同伴加紧工做,实现团队的目标?
一、有想法的时候就会提出来,若是你们都以为好就会认同这个idea,不认同的话我会听别人的意见,肯定本身的想法确实存在不够好的地方
二、在团队中咱们是约定好时间一块儿办事的,实在没办法一块儿参与的就会自行安排时间,而且在这个团队中我发现个人同伴都是比我要勤快的
理论素养 你上过什么数学,计算机或其余理论课,请举出具体的例子,说明你学到的理论知识如何帮助你解决实际问题。 数学这门课好像没发如今实际中有什么用处,计算机的课程主要是教你一种编程的思想,这种思想在实际中是能够通用的,很培养人的耐心啊
自我管理 一、整年级你专业排名多少?
二、你从刚入学(大学年级)到如今的排名有变化么?
三、如何解释你的排名的变化?
一、2030左右吧
二、没什么变化啊,都差很少

2、回答问题

咱们在课程开始之初,曾经要求你们针对软件工程提出问题:我的阅读做业2,那么在通过alpha阶段,你们是否对软件工程有了必定的

了解?请结合本身提出的问题进行回答html

Q1:前端

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

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

答:在alpha阶段的开发中,其实咱们并无精力去进行什么单元的测试,咱们直接在微信开发平台里面编写直接调试,而且没有进行什么代码的构思,固然这也是由于在此次的开发中没有用到而已,在以后的项目中我以为代码测试仍是特别有必要的,而且是在你完成一部分功能就进行测试为好,由于那样子才不会对你以后的进程有牵绊。总体的代码须要在一开始就有一个大概的构思,而后进行模块的划分,不要边写边研究,会很乱linux

Q2:git

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

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

答:其实每一个团队都有他们独特的团队模式,全部几乎没有哪种特别固定的什么主治医师模式仍是交响乐队模式能够一以归纳的,而且这个和团队成员之间的协做力、调度力、执行力都有很大的关系github

Q3:web

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

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

答:咱们团队在敏捷开发的原则上能够说是完美的诠释了“以有进取心的人为核心,而且充分的信任他们”这一原则,由于在一个团队中你会发现PM的带动做用是特别强大的,充分的信任是必须作到的,而且不是说一昧的苟同观点,而是对一系列任务的安排都必须严格的按她说的进行,若是有什么问题上须要商量的能够提出来你们一块儿解决算法

Q4:

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

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

答:考虑杀手功能的前提之上自己就是创建在你肯定了用户人群了,肯定一个项目的同时就已经很天然的肯定了这个项目所面向的人群。

Q5:

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

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

答:用意是为了避免让咱们团队在项目开发的过程当中偏离轨道,从结果出发去构建WBS树能更好的创建一个好的出发点。工做包的最小的叶子节点,即便是再细小的任务也应当作为叶子节点。

3、再提问题

同时,你们必定会在实践过程当中产生更多问题, 结合你的读书(教材,博客,参考书), 实践, 再提出关于软件工程的 5 个问题。

Q1:

敏捷流程第三步:冲刺
--引用自《构建之法P107》

  • 在alpha阶段进行七天冲刺时,咱们在开始的第一天将第七天的任务都安排好了,可是咱们发现不少任务的量实现安排过多,致使咱们没有办法对看板进行一个很合理的安排,到后面的燃尽图也是奇奇怪怪的,甚至有的任务由于时间紧迫被删除,想问当遇到这种状况怎么办,如何在一开始就对咱们整个大的流程有一个比较细致合理的安排

Q2:

两人合做:
两个工程师在一块儿,作的最多的事情就是“看代码”
--引用自《构建之法P59》

  • 我以为两我的之间的合做更多的时间是花在了如何安排任务,我想问的是如何安排任务才能尽善尽美,又能考虑各自的擅长之处又不会有任务量的差异

Q3:

-在实际的开发过程当中,我发现课本上不少知识理论和团队理念彷佛都没有用到咱们实际的开发中去,博客是一直进行,也一直在教咱们运用书本,但是好像变成了一种交付式的任务,想问一下这个是否是咱们的课题选的不够很好的将实践与理论相结合?仍是说是咱们的时间不够充足去体会这个过程

Q4:

软件测试:
-引用自《构建之法P270》

  • 测试须要从用户角度出发,那能够不用写规格说明书和测试文档了吗

Q5:

MSF
保持敏捷,预期和适应变化

  • 在alpha阶段中咱们就出现了当质量和功能相互冲突的时候,想把质量完善了,可是局限于这个问题整个团队的进度就会被拉开,这时候能够放弃一些质量来进行功能的继续吗
相关文章
相关标签/搜索