项目 内容
这个作业属于哪个课程 北航软工
这个作业的要求在哪里 提问回顾与个人总结
我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力
这个作业在哪个具体方面帮助我实现目标 督促我阅读《构建之法》,了解软件开发的具体含义及流程
提问博客地址 https://www.cnblogs.com/KevinJiao/p/10477153.html

1.请尝试对自己曾经提出的问题进行解答,并阐明,是如何通过看书,实践,或者讨论弄清楚的。是否原来的问题还不明白?如果有,请分析。是否产生了新的问题?如果有,请提出

如果一架民用飞机上有需求,用户使用它的概率是百万分之一,你还要做这个功能么?

这个问题在我们的开发过程中就真实的发生了。在alpha阶段的末尾,我们通过django后端,发现我们的数据库被恶意注入了数万个用户,原因是我们的后端接口被暴露了出去,被大量调用。本来,针对接口的安全性防范我们是准备放在beta阶段实现的,但是,出现了这样的情况(对应百万分之一事件的发生概率),我们组的后端同学只能加紧完善接口安全性,并且将数据库恢复至以前的状态。

通过这件事,我了解到,即便在软件工程中极低概率出现的问题,只要它会给整个软件带来危害,就要防范。

在结对编程模式下,一对程序员肩并肩、平等地、互补地进行开发工作。他们并排坐在一台电脑前,面对同一个显示器,使用同一个键盘、同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起做单元测试,一起做集成测试,一起写文档,等等。

针对结对编程的问题,我在后续的团队软件开发中,也使用了我从其中了解到的一些经验。在后端、前端开发的时候,我们组进行了code review的要求。在一位开发同学完成代码开发,进行项目commit之后,我们组会要求另一位开发人员,对已经commit的代码进行复查,帮助同伴检查,以排除一些常见的bug。之后,才会merge到测试分支上,由测试同学进行完整而详细的单元测试。

在这个过程之中,我们利用到了我们在结对编程之所学,同伴的code review可以提升代码质量。

杀手功能/外围功能

针对这个问题,我有了新的思考。过去,我认为产品的功能分类取决于用户的喜好,现在,我认为,产品对于功能的划分,决定了自己的用户群体的划分。例如,OPPO/VIVO,将旗下的手机产品的拍照功能划分为杀手功能,给这项功能的开发分类了许多资源。相应的,它的产品就吸引了大部分的年轻女性。这也就印证了,功能对于用户的吸引。

迷思之三:好的想法会赢

但这里美国仍使用英制衡量制度的例子,我觉得的有些不恰当。并不是只有美国曾经使用过英制衡量制度,最起码英国使用过的。但是现在却只有美国仍在使用。说明别的国家经过讨论,决定更改。而美国不仅自己的国会经过了讨论,并且也知道别的国家的更改制度理由。可以理解为美国接收到了“创新的宣传”,但仍未做出更改。所以,我认为,这里的例子并不能很好地说明观点。

我的问题没有得到解答,我没有形成新的见解。在我的看法中,宣传与好的想法是一对无关的变量,尽管从统计上看,两者可能是伴随出现的,但是,在我的观点中,二者并不存在充分必要条件的关系。就像晚上刷牙与心脏病得病概率一样。

迷思之五:要成为领域的专家、才能创新

这句标题与文中的例子未免都有以偏概全的嫌疑。对于无数的创新过程,书中仅仅以几例就驳倒创新与领域专家之间的关系。而标题更是忽视了可能存在的反例。对于这部分信息,我更想知道的是对于不同的领域,专家和创新之间的关系,是计算机领域的独特性质(早期待发展的部分很多)导致了这种现象么?还是这是一个普适的结论?

这个问题,我有了新的想法,对于创新领域来说,了解的人并不多,在现在看来很多初级的想法,在当时,已经是“专家”级别了。只不过,随着该领域的发展,“专家”的水平得到了上升。这也就解释了,为什么很多在现在看起来,“似乎没什么”的想法,在当时能开创一个时代。

2.请问你们在项目的 需求/设计/实现/测试/发布/维护阶段(一共6 个阶段)中都学到了什么“知识点”,每个阶段只要说明一个知识点就可以。

需求

NABCD为,N(Need,需求),A(Approach,做法),B(Benefit,好处),C(Competitors,竞争),D(Delivery,推广)。我在项目的进行之中了解到一个好的创意的产生其实是有方法的,而在软件开发之中,这个方法可以是NABCD。它教会我们从五个方面,系统地分析一个项目的特点,从而更好地抽象需求。

设计

在设计的过程中,我所在的后端开发团队采取了“设计规范”---“接口文档”---”代码“的实现流程。在所有开发进行之前,我们会指定一些简单的设计规范,例如变量、函数名称的大小写,返回值的返回方式(List或者是Dict),一些接口的POST/GET方法。在开发的过程之中,我们在具体实现一个接口之前,也会现在GitHub的Wiki中写好待实现的接口的文档,预先定义好传入传出值,之后,我们才会具体去进行实现。这样的设计方式,虽然在前期的准备工作中花费了不少时间,但是保障了我们工作的高效性,大大提升了我们的效率。

实现

在代码实现的过程之中,我们采取了主流的基于GitHub的多分支开发方式。前端、后端、测试,有着不同的分支(基于前一个发布版本的base分支),在开发的过程之中,属于不同团队的代码不会混在一个开发分支之中,这样的话,方便开发人员查看属于自己团队的开发记录。

测试

我隶属于后端开发团队,所以测试这边负责的工作并不多。但是,我学习到了如何与测试的同学沟通的方式,这也是我之前不了解的内容。我们组的方式是,由测试同学在issue上提出他找到的可能的bug,并提及所有后端的开发人员,在由后端开发组经核实之后,交由负责的同学进行修改,并在commit的时候提及相关issue,汇报给测试同学。经由完整测试后,如果通过,则close掉相关issue,否则重新修改。

发布

发布的时候,我们组根据自身项目的特点,梳理出我们的公客网与“友商”的(指班级中另一个开发公客网的小组的产品)产品的不同之处,着重宣传我们的杀手功能以及差异性的地方。

维护

后端团队的维护主要集中于压力测试的结果。在全部开发完成之后,后端会进行压力测试,根据测试的结果,我们会调整实现的方式,提高并发,保障用户的访问。

3.结合自己在个人项目/结对编程/团队项目的经历,谈谈自己的理解或心得。

我在我们团队度过了一段令人回味的时光。在选择任务的时候,我选择了加入后端开发团队,虽然之前对于后端的开发并不熟悉,但是结合前人的代码,同时向团队中的同学学习,我很快就能熟练完成开发任务了。在团队组会的时候,得益于我们组的PM很愿意与大家沟通,在组会的时候我们每个人能很好地交流工作时遇到的困难、自己独特的解决方案、吐槽队友

[BUAA 软工]提问回顾与个人总结的更多相关文章

  1. [BUAA软工]提问回顾与个人总结

    提问回顾与个人总结 项目 内容 所属课程 2019春季计算机学院软件工程(任健) 所属作业 提问回顾与问题总结 课程目标 理解软件工程的作用和重要性,提升工程能力,团队协作能力 作业目标 回顾软工课程 ...

  2. 2020BUAA软工提问回顾和个人总结作业

    2020BUAA软工提问回顾和个人总结作业 17373010 杜博玮 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 提问回顾和个人总结作业 我在 ...

  3. [2017BUAA软工]提问回顾

    原博客链接 原问题1:有没有系统的方法来提高一开始的文档的设计后的质量呢 在之前的OO课程上,我已经深刻领会到了设计的重要性,而且在这次的团队开发中,我也是负责从需求分析到代码设计的转换,所以对设计这 ...

  4. BUAA 2020 软件工程 提问回顾与个人总结

    BUAA 2020 软件工程 提问回顾与个人总结 Author: 17373051 郭骏 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 提问回顾 ...

  5. [BUAA软工]第二次博客作业---结对编程

    [BUAA软工]结对作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 2019年软件工程基础-结对项目作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能 ...

  6. [BUAA软工]第一次结对作业

    [BUAA软工]结对作业 本次作业所属课程: 2019BUAA软件工程 本次作业要求: 结对项目 我在本课程的目标: 熟悉结对合作,为团队合作打下基础 本次作业的帮助:理解一个c++ 项目的开发历程 ...

  7. [BUAA软工]第1次阅读

    [BUAA软工]第1次阅读 本次作业所属课程: 2019BUAA软件工程 本次作业要求: 第1次个人作业 我在本课程的目标 熟悉和实践软件工程流程,适应团队开发 本次作业的帮助 帮助理解<构建之 ...

  8. [BUAA软工]第一次博客作业---阅读《构建之法》

    [BUAA软工]第一次博客作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 第1次个人作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪 ...

  9. [BUAA软工]第零次博客作业---问题回答

    [BUAA软工]第0次博客作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 第0次个人作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪 ...

随机推荐

  1. Cat搭建遇坑记

    1. Cat搭建遇坑记 1.1. 报错 服务端启动 Unable to get component: class com.dianping.cat.analysis.TcpSocketReceiver ...

  2. nodeType属性在vue源码中的使用

    每个节点都有一个 nodeType 属性,用于表明节点的类型,节点类型由 Node 类型中定义12个常量表示:  nodeType在vue中的应用 在vue编译的过程中需要查找html结构中的双大括号 ...

  3. android黑白屏的问题

    你会很奇怪,为什么有些app启动时,会出现一会儿的黑屏或者白屏才进入Activity的界面显示,但是有些app却不会如QQ手机端,的确这里要做处理一下.这里先了解一下为什么会出现这样的现象,其实很简单 ...

  4. MyBatis的一级缓存、二级缓存演示以及讲解,序列化异常的处理

    MyBatis的缓存机制 缓存就是内存中的一个空间,通常用来提高查询效率 MyBatis支持两种缓存技术:一级缓存和二级缓存,其中一级缓存默认开启,二级缓存默认关闭 一级缓存 (1)一级缓存默认开启 ...

  5. Docker搭建Zentao(禅道)

    禅道搭建方式有很多种,可参考官方文档搭建,这里介绍的是参考官方文档以docker方式搭建. 禅道内部默认会自动安装mysql数据库. 一.下载地址 禅道开源版:   http://dl.cnezsof ...

  6. Django之mysql数据库配置

    在settings.py中配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': 'my ...

  7. CentOS6.7搭建部署DHCP服务 (详解主配置文件)

    DHCP服务 dhcp:动态主机配置协议.从bootp演变而来,引进了租约.续租功能,成为了现在的DHCP. 需要就分配,不需要就回收. 工作过程: 1.当获得地址是,有租约期限,当你关机时,IP地址 ...

  8. 这是一份非常适合收藏的Android进阶/面试重难点整理

    写在前面 记得我大二时“不务正业”地自学Android并跟了老师做项目,到大三开始在目前的公司实习,至今毕业已有几年多,学习Android已经6.7年多了!但总感觉知识点很零散,并且不够深入,遇到瓶颈 ...

  9. 数组中有一个数字出现的次数超过数组长度的一半(C、Python)

    C语言 1 /* 2 ----------------------------------- 3 动态分配需要的内存大小 4 输入数组元素的值 5 通过函数调用,传地址对数组排序 6 循环每个元素,当 ...

  10. CustomHTTPProtocol

    http://blog.csdn.net/jingcheng345413/article/details/54967739 一.概念 NSURLProtocol也是苹果众多黑魔法中的一种,使用它可以轻 ...