项目 | 内容 |
---|---|
这个做业属于哪一个课程 | 2019春季计算机学院软件工程(罗杰) |
这个做业的要求在哪里 | 做业要求 |
软件工程第一次阅读html
问题1:关于如何权衡高层次的科研和工程基础。前端
我认为二者是能够兼顾的,以前因为基础知识的欠缺,作不少学术方面的工做都很吃力,如今通过两个学年的学习,计算机方面的综合素质也获得了锻炼。在接触实验室的过程当中,发现不少领域都须要从头开始学起,特别也须要学习一些基础的数学知识,有些在本科也是涉及不到的,的确如书中所说,要把底层的问题解决后再去解决高层次的问题。在学有余力的时候应当多去实验室接触科研,也能提早知道本身适合哪方面的研究。编程
问题2:对结对编程的质疑,是否真的能提升编程效率?小程序
通过本身的实际操做,结对编程是能够提升效率的。在团队项目中,我和另外一个队友写后端,因为咱们两我的刚开始接触ruby这门语言,在实际操做中很是不熟练,咱们采起告终对编程的方式,两我的的思惟能力都提升了不少,能及时发现对方的错误,或者在某个方面提出更好的实现方法。虽然最后写出来的代码被大佬否认了。即便是不多时间量的结对编程,也能从对方身上学习到一些提升编程效率的方法。后端
在阅读相关论文"Case study: using pair programming in development of a complex module."后,论文提出告终对编程须要知足的条件:微信小程序
一、结对成员必须在一些编程观念上达成一致ruby
二、结对成员之间必须保持良好的交流,愿意相互合做服务器
三、结对成员技术知识必须具备可比性。若是一个经验丰富的成员和一个没有经验的成员一块儿工做,他们能够创建良好的指导关系,但他们不一样的经验水平不利于有成效的结对编程。微信
问题3:关于敏捷流程中的Backlog如何制定和评估?框架
在咱们的团队项目中,Backlog的制定和评估由PM来完成,咱们在产品的三个阶段都制定了详细的须要完成的功能需求。alpha阶段,咱们遵循mvp原则,咱们alpha版本的目标即是以较高的质量实现最核心的社团展现相关功能。尽管alpha版本的功能与某些组相比略显简单,可是咱们功能的完成度更高,从结果来看,咱们的作法是正确的。Gamma阶段咱们仍有不少能够实现的功能(以前版本功能的拓展,社联但愿咱们支持的功能,社团管理人员但愿咱们支持的功能,通常用户但愿咱们支持的功能),咱们最终综合实现成本、收益分析、后续维护问题以及用户需求调研进行了筛选决定了gamma阶段实现的功能。锻炼了软工的需求分析能力。
问题4:在创新中为何一些先行者会最后在竞争中被淘汰呢?
一件产品是否能在竞争中赢得胜利实际上是有诸多方面的缘由的。先行者可以抢占必定的先机,但若是后续的运营跟不上,极可能被后来者赶超。
咱们的小程序也借鉴了以前南京大学的社团小程序,发现他们学校也有两个这样的小程序,而那个先行者运营的并无很好,最终被取代了,后来的社团小程序和学校官方进行合做,用户活跃度明显高出不少。有效的竞争策略加上公司资源的合理配置和使用可以加强一个公司的竞争力。
问题5:关于沉没成本,如何砍掉功能?
在Gamma阶段咱们的团队项目有一个爬取公众号连接的功能没有作出来,这个功能以前问过从前的开发人员也发现实现的难度很大,并且通过咱们的讨论后,发现该功能也并非那么必要,可让社团负责人本身上传连接。
这个功能实际上在前两个阶段都一直在摸索,但没有找到合适的解决方法,能够说在这件事情上花了一些沉没成本,但若是咱们一直守着沉没成本不放,只会给继续增长投入的成本而没有任何收益。因此在砍掉新功能的时候要考虑沉没成本,也不能过度迷恋沉没成本。
从决策的角度看,以往发生的费用只是形成当前状态的某个因素,当前决策所要考虑的是将来可能发生的费用及所带来的收益,而不考虑以往发生的费用。
人们在决定是否去作一件事情的时候,不只是看这件事对本身有没有好处,并且也看过去是否是已经在这件事情上有过投入。可是这些不可回收的支出其实对将来的效益并无改善。
新的问题:
关于团队中的角色转换和转会,究竟有没有这方面的须要呢?咱们团队进行了角色的转换,但你们都须要花费很长的时间进行新知识的学习,是否是下降了效率呢?
需求分析是开发人员通过深刻细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而肯定系统必须作什么的过程。
咱们在每一个阶段都会进行用户需求的调研,发放问卷等,开组会进行详细的需求分析,每一个组员表达本身的见解,而且由PM撰写需求分析文档。
在后续阶段也进行了需求文档的维护和更新,使得团队成员对需求的理解更加深刻。
咱们团队由PM进行了产品的原型设计,把设计稿交给前端进行详细的设计。把ui设计和前端进行了分离,设计出来的产品也更加美观。
学习了ruby on rails的开发框架,学会使用orm模型框架的后台。
同时也参与了一些前端的工做,在接口设计部分向大佬学习了不少经验,注意一些接口的命名规范等。咱们广泛使用的是RESTful的接口命名规范,方便先后端进行通讯。
在ruby on rails中,我学会了单元测试的一些框架,并用此找出了代码中的不少bug。也在ruby mine ide中学会使用了代码覆盖率的插件。同时我也对服务器进行了压力测试,使用了ab测试工具。
因为微信小程序是腾讯的平台,有诸多方面的限制,咱们实现一些小程序的功能,例如跳转到公众号的连接,主动推送微信消息给用户,就须要认证成为企业小程序,还有审核等问题须要花费不少时间,这些都须要提早进行规划。
软件维护是软件生存周期的最后一个阶段,是在软件交付使用后,为了改正错误或知足新的须要而修改软件的过程。软件维护工做的目标是:不断地、持续地改进、扩充、完善软件系统,以提升系统运行效率,并尽可能延长系统的使用寿命,为用户创造更大的价值。
咱们在发布以后也及时收集用户的反馈,发现了一些bug并及时修复。
经过软件工程这门课,我有机会接触一个项目的完整开发,也速成了一门新的语言。
在alpha和beta阶段中,我负责的是后端的开发工做,咱们组有一位有开发经验的同窗。在一开始我和另外一位同窗没有ruby的开发经验,还处于学习阶段。在随后的开发工做中,咱们三个也一直在磨合,因为本身的开发经验不足,致使不少地方的代码写的很丑,不符合规范,也没有使用最好的实现方法,被大佬指正出来并进行改正。有时候问题没有及时反馈,会致使后面大规模的返工,下降了开发效率。在这个过程当中也明白了团队合做的重要性,团队成员要如何在项目中分工等。
在gamma阶段中,我开始学习前端的开发,实现了两个页面的制做,获取formid等功能,对先后端的交互也有了更深一步的了解。
在这门课真的收获了不少,而且遇到了一群靠谱的队友和特别负责的PM芬姐,在这里也感谢个人队友们和老师助教,但愿软工愈来愈好。