BUAA2020软工作业——提问回顾与个人总结

时间:2022-07-08 16:36:44
项目 内容
这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健)
这个作业的要求在哪里 提问回顾与个人总结
我在这个课程的目标是 进一步提高自己的编码能力,工程能力
这个作业在哪个具体方面帮助我实现目标 反思我这一学期的工作并做出总结
其他参考文献 《构建之法——现代软件工程》第二版

一、以前提出的问题

个人博客作业

二、对问题的解答

1. 关于创新

在书的16.1.2节中,作者给出了“创新者甚至恨创新”的支持例子,就是假设发明电报的人被发明电话的人上门推销,发明电报的人会感到不安,因为电话这个创新将会颠覆目前的电报产业,导致辛辛苦苦建立起来的电报公司失去市场。

之前我给出的解答是“在我看来恰恰相反,一个颠覆性的产品必将会带来很大的商业价值,只要抓住机会加以利用,就会取得成功”,课程结束后,我依然认为我的解答是正确的。在如今产品种类极大丰富的时代,拥有一个好的创新是很难的,一旦某个领域有了一个创新点,这个点就会被很多公司去模仿,为自己创造生机。就比如这些年很火的吃鸡游戏,刚出的时候大批玩家进入让整个游戏市场为之震惊,随后很多公司也都出了吃鸡的手游,再到后来王者荣耀甚至也加了吃鸡模式。我敢说这些游戏开发者没有一个会恨吃鸡这款游戏,而是把它当成新的商机去利用。

2. 关于用户需求

对于软件教程的编写是我一直以来很关注的一件事,很多大厂设计了有很高操作难度的软件,比如PS,可是自己没有相应的电子版或者纸质版教程,这就给广大用户使用软件造成了不便。

在我们做团队项目的时候,我们使用了Flutter这个安卓app框架,我发现flutter在用户使用体验方面做的就很好,他们有一个官方教程网站,可以解决Flutter使用中的绝大部分问题,在我开发过程中也可以参考上面的例子,感觉非常方便。所以我感觉很多软件公司应该自己有一个写教程的团队,而不是让用户去写。

3. 关于代码规范

一个好的团队项目都要有高质量的代码,而高质量的代码都需要有严格的代码规范来把控。

比如我们在团队项目中,后端和爬虫使用Python,使用pylint和pylint-django第三方包对代码进行静态检查,并配置了适合于我们项目的.pylintrc配置文件。代码风格检查在GitHub平台上使用Action功能进行了自动化部署,每个commit都需要通过代码风格检查。

前端遵循Dart语言的一般代码规范。我们主要靠AS自带的Reformat功能对缩进换行等进行限制,而变量名、程序结构等其他风格由组员自行维护。

这样在我们组员阅读别人的代码的时候,都会觉得非常的方便美观。

4. 关于用户体验

在之前的博客中我提到了一个iPhone的静音按钮要不要同时关闭闹钟铃声的问题,我们在设计产品时,面对复杂的用户需求,怎么做合理的取舍才能让软件被大多数人所接受呢?

首先要从自身出发,做好充分的调研,其次,要根据用户的使用反馈去跟进项目,做好迭代和维护,这样才可以让产品被更多用户所接受。

三、新的问题

我们普遍感觉软件刚开发出来的时候推广起来非常困难,我们团队做的北航教务助手app应该说是最贴近学生们的生活的了,但是到最后才只有350多人使用。而其他组做的实用性不高的软件就更加难以推广了。所以不知道在软件推广方面有没有什么更有效的方法呢?

四、软件工程的知识点

1. 需求

需求分析要列出所有要做的功能,以及每个功能面向的用户,以及预计用户量等等。

2. 设计

设计阶段需要把各个功能的预期页面效果,前后端交互方案设计出来,但是设计细节不用定的太死,可以在开发过程中灵活调整。

3. 实现

前后端要多进行沟通交流,我们在实现前端的过程中经常遇到前端要做的功能后端没有相应的数据,或者后端的数据格式不太方便解析和处理。这时就要跟后端提出要求让他们修改。

4. 测试

测试阶段要尽可能地对软件的每个地方每种情况进行测试。后端可以使用单元测试和测试驱动的开发,前端在软件做完后,全组一起帮忙使用测试,人多力量大,可以测出很多隐蔽的bug。

5. 发布

对于我们在校生而言,发布渠道也仅限朋友圈以及各种群,可以针对每个功能面向的用户群体进行发布,也可以广撒网,尽可能多的去宣传。同时软件内部应该设有用户反馈功能,方便收集各种bug以及建议。

6. 维护

在维护期需要做的是根据发布后的用户反馈来对软件做出调整,或者是根据不同时期的不同需求来增加一些小功能,并实时发布最新版本软件。

五、谈谈个人心得

1. 个人项目

通过个人作业我入门了c++的面向对象机制,为结对作业打下了基础。

2. 结对项目

我是第一次做结对项目,之前都是感觉一个人写代码更好,因为所有代码自己都看得懂,感觉处理起来比较方便。结对项目还需要阅读和理解队友的代码,比较麻烦。但是经历结对编程后我发现其实结对编程比想象中的方便的多,我们只需要做好分工然后完成自己的部分就好,不需要读太多队友的代码。其实到项目开发测试全部完成以后,程序中队友的代码我还有些地方没有读到,但这都没有关系,我们的项目是完整的而且经过测试的。所以说我现在感觉结对编程非常方便。

3. 团队项目

在软工课的团队项目中,我第一次体会到了在一个大公司工作的感觉,几个人分成一个小组,每个人都各司其职完成自己的任务,每天开组会讨论问题和汇报进度,定期更新功能和推广软件。我第一次了解了真正的软件开发团队是怎么运作的,也体会到了自己的团队从零开发、测试、维护一款软件是什么感觉,也收获了很多团队工作经验。总之,本学期的软件工程课让我收获颇丰。