BUAA2020软工作业——提问回顾与个人总结
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 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. 团队项目
在软工课的团队项目中,我第一次体会到了在一个大公司工作的感觉,几个人分成一个小组,每个人都各司其职完成自己的任务,每天开组会讨论问题和汇报进度,定期更新功能和推广软件。我第一次了解了真正的软件开发团队是怎么运作的,也体会到了自己的团队从零开发、测试、维护一款软件是什么感觉,也收获了很多团队工作经验。总之,本学期的软件工程课让我收获颇丰。
BUAA2020软工作业——提问回顾与个人总结的更多相关文章
- 【BUAA软工】提问回顾与个人总结
链接到以前提问题的博客 在之前的博客我曾经提问过以下几个问题 为什么单元测试必须由写程序的人完成? 过早优化,过早泛华:何时为过早? 为何使用goto语句? 用户需求分析:分而治之,如何分? 兼容性测 ...
- BUAA2020软工作业(五)——软件案例分析
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 软件案例分析作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方面 ...
- BUAA2020软工作业(四)——结对项目
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 结对项目作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力,团队协作能力 这个作业在哪 ...
- BUAA2020软工作业(三)——个人项目
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人项目作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方面帮助 ...
- BUAA2020软工作业(二)——对软件工程的初步理解
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方面帮助 ...
- BUAA2020软工作业(一)——谈谈我和计算机的缘分
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 第一次作业-热身! 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方 ...
- BUAA2020软工团队beta得分总表
BUAA2020软工团队beta得分总表 [TOC] 零.团队博客目录及beta阶段各部分博客地址 团队博客 计划与设计博客 测试报告博客 发布声明博客 事后分析博客 敏 杰 开 发♂ https:/ ...
- 软工作业-----Alpha版本第一周小结
软工作业-----Alpha版本第一周小结 Part1.第一周周计划记录 姓名 学号 周前计划安排 每周工作记录 自我打分 yrz(队长) 1417 1.进行任务分析 2.任务分配 ...
- [软工作业]-软件案例分析-CSDN
[软工作业]-软件案例分析-CSDN(app) 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件案例分析 我在这个课程的目标是 ...
随机推荐
- openswan协商流程之(三):main_inR1_outI2
主模式第三包:main_inR1_outI2 1. 序言 main_inR1_outI2()函数是ISAKMP协商过程中第三包的核心处理函数的入口.这里我们主要说明main_inR1_outI2的函数 ...
- 使用shell脚本实现everthing的功能
我们知道,在 Windows 下,有一款非常实用的神器,叫作 Everything ,它可以在极短的时间里,搜索出来你所想要的文件/目录,如下图示: Linux 下也有一些类似于 everything ...
- 硕盟 TYPE C转HDMI+VGA+USB3.0+PD3.0四口扩展坞
硕盟SM-T54是一款USB-C 四合一多功能扩展坞,支持四口同时使用,您可以将含有USB 3.1协议的电脑主机,通过此产品连接到具有HDMI或VGA的显示器.电视机或其他显示设备.产品可以接入硬盘. ...
- FastAPI 学习之路(一)fastapi--高性能web开发框架
fastapi是高性能的web框架.他的主要特点是:- 快速编码- 减少人为bug- 直观- 简易- 具有交互式文档 - 高性能 - 基于API的开放标准 支持python 3.6版本. 安装 pip ...
- HearthbuddyHelper已经开源
https://github.com/V-arc/HearthbuddyHelper 只是为了稳定,没耗时多久写的一个中控,只是在逐渐堆加,并未进行重构. 通过写这个感受到自己对异步和wpf的理解还有 ...
- (未完)Java集合框架梳理(基于JDK1.8)
Java集合类主要由两个接口Collection和Map派生出来的,Collection派生出了三个子接口:List.Set.Queue(Java5新增的队列),因此Java集合大致也可分成List. ...
- PHP7兼容mysql_connect的方法
在php7版本的时候,mysql_connect已经不再被支持了,本文将讲述在代码层面实现php7兼容mysql系列,mysql_connect等操作. PHP7不再兼容mysql系列函数,入mysq ...
- Elasticsearch2.4.6版本 在linux 命令行 对数据的增删改操作
一._cluster系列:查询设置集群状态 1.设置集群状态 curl -XGET 10.68.120.167:9204/_cluster/health?pretty=true pretty=true ...
- oracle常见命令
1.权限 (1)系统权限 系统权限是指对数据库系统的权限和对象结构控制的权限. 如grant create session to 用户名 -赋予用户登录的权限 (2)对象权限 访问其它用户对象的权利 ...
- 什么?你还不明白自动化的POM设计模式?
POM简介.POM优势.如何设计POM POM简介 Page Object Model (POM) 直译为"页面对象模型",这种设计模式旨在为每个待测试的页面创建一个页面对象(cl ...