这个作业属于哪个课程 | 2023年福大-软件工程实践-W班 |
---|---|
这个作业要求在哪里 | 软件工程实践——软件评测作业 |
这个作业的目标 | 完成一篇评测博客 |
其他参考文献 | 《构建之法》、CSDN、博客园、简书、知乎 |
前言
0.1 作业要求
0.2 Bug量化标准
Bug等级 | 描述 |
---|---|
☆ | 界面显示异常,不影响用户使用产品 |
☆☆ | 系统功能异常,操作无法达到预期效果,影响用户使用产品 |
☆☆☆ | 严重系统故障、服务器鉴权漏洞或重要数据泄露、用户体验较差 |
☆☆☆☆ | 致命性系统故障、致命性安全性漏洞、用户体验严重影响 |
第一部分 调研,评测
1.1 InsCode
1.1.1 体验
一、介绍
(1)首页
首页简洁明了,提供了创建项目入口以及个人项目的快捷访问方式,方便用户快速地开始作业。同时提供了热门板块,用户能够通过该板块了解热门的项目并fork下来,在此模板的基础上进行修改,完成自己的项目。
(2)创建项目
有从git url导入和从模板创建两种创建项目的方式。
(3)运行项目
InsCode能够在线运行项目代码,省去了下载到本地以及配置环境的步骤,使用户能够方便直观的看到项目的效果。
(4)我的项目
通过该界面用户能够查看自己创建的项目、动态、星标项目,同时能够选择发布作品。
(5)模板中心
展示各种热门模板
(6)社区
通过社区用户能够看到其他用户发布的动态,了解更多的信息
(7)设置
能够通过设置界面修改昵称、用户名以及个人简介。设置SSH公钥以及git。
二、优缺点分析
优点:
(1)UI美观,用户使用体验好。
(2)能够在线运行项目代码,省去了下载到本地以及配置环境的步骤,使用户能够方便直观的看到项目的效果,从而获得更好的浏览体验。
(3)提供了许多热门的模板供用户选用,加快开发速度。
(4)有代码提示。
缺点:
(1)inscode项目无法直接导出,需要到gitcode导出。
(2)只支持部分语言,具有局限性。
(3)用户量不多,社区不够活跃,优质项目较少。
三、改进意见
问题描述:
在inscode创建项目时会自动在gitcode里创建对应的仓库,那么如果我想把gitcode仓库的代码导入到inscode里自动运行却仍需要手动导入并不能直接同步,导致gitcode中会有一个多余的仓库,使用体验不好。
意见:
将gitcode中的仓库集成到inscode中,提供选择gitcode仓库的选项
问题描述:
在通过git url导入项目时,若未选择“语言”,点击“导入项目”错误提示信息为“请选择模板”,存在二义性(这与另一种项目创建方式“从模板创建”存在歧义),可能会误导用户认为通过git url导入功能存在异常,影响正常使用。
意见:
将报错信息改为“请选择语言”。
1.1.2 BUG
1.1.2.1 BUG1
(1) Bug发生时的测试环境
操作系统:Win11
浏览器:Microsoft Edge 113.0.1774.3 (正式版本) dev (64 位)
发生时间段:2023/04/07 0:57
(2)Bug的可复现性及具体复现步骤
Bug的可复现性:100%
具体复现步骤:在搜索框中输入形如“*/*
”内容,进行搜索
(3)Bug具体情况描述
在搜索框中输入形如“*/*
”内容时页面出现“404”报错
(4)Bug分析
输入:ss/s
结果:404
分析:观察url发现,执行搜索操作时程序将搜索框中的内容拼接在“search/”后,当输入形如“*/*
”的搜索内容时,拼接后的内容无法识别为一个api,而是识别为一个静态资源,但服务器中并不存在该资源,因此返回404。
Bug的严重性:☆☆
1)系统功能:并未实现预想中的搜索效果。
2)安全性:存在注入风险。
3)用户体验:返回结果为404,并不符合用户预期结果,影响使用,用户体验不好。
Bug改进
1)预期:不应该返回404,而是应当与其他搜索无结果的情况相同。
2)改进措施:对“/”进行转义或转换为十六进制ascii码。
1.1.2.2 BUG2
(1) Bug发生时的测试环境
操作系统:Win11
浏览器:Microsoft Edge 113.0.1774.3 (正式版本) dev (64 位)
发生时间段:2023/04/07 18:05
(2)Bug的可复现性及具体复现步骤
Bug的可复现性:80%
具体复现步骤:在搜索框中执行多次搜索操作
(3)Bug具体情况描述
在搜索框中执行多次搜索操作后失去搜索响应
(4)Bug分析
输入:多次搜索操作
结果:搜索功能失效
分析:不清楚原因
Bug的严重性:☆☆
1)系统功能:并未实现预想中的搜索效果。
2)安全性:未发现
3)用户体验:搜索功能失效,影响使用,用户体验不好。
1.1.3 结论
d) 好,不错
类别 | 描述 | 评分 (满分 10 分, 良好 6 分, 及格 4 分,聊胜于无 1 分, 很差 -3 分) | |
功能 | 核心功能 | 分析三个核心功能,功能设计和质量。 | 6 |
细节 | 有什么为用户考虑的细节? | 4 | |
用户体验 | 当用户完成功能时,不干扰用户 (例如: 是否不断弹出不相关广告)。 | 6 | |
辅助功能 | 一些辅助功能如皮肤等 | 4 | |
差异化功能 | 这个软件独特的功能. 它对用户的吸引力有多大? | 6 | |
软件的效能 | 占用内存, 启动速度, 内存泄漏情况 | 4 | |
体验 | 软件的适应性 | 在联网/断网, 大小屏幕, 没有鼠标的情况下都可以顺畅操作. 和不同平台的软件能流畅协作 | 4 |
成长性 | 记住用户的选择, 适应用户的特点,用户越用越方便 | 4 | |
用户有控制权 | 系统状态有反馈,等待时间要合适。关键操作有确认提示,有明确的错误信息。 让用户方便地从错误中恢复工作, 快捷操作键可调整。 | 6 |
1.2 IT屋
1.2.1 体验
一、介绍
(1)全部工具
提供各种在线工具如编译工具、数据工具、前端工具等
(2)编译工具
提供各种语言的在线编译工具
(3)数据工具
能够执行数据库代码
(4)前端工具
能够运行前端代码,并且提供一些前端工具
(5)在线运行Java代码
二、优缺点分析
优点:
(1)能够在线运行各编程语言代码以及sql语句。
(2)部分语言提供了可运行代码的基本框架。
(3)支持语言较多,同时伴有教程模块,适合初学上手一门语言。
缺点:
(1)UI不美观。
(2)仅支持单文件运行,用处不大。
(3)无社区支持,无示例代码。
(4)无代码提示。
三、改进意见
问题描述:
编写代码时没有代码提示,与本地IDE编写感受相差较大。
意见:
添加代码提示功能。
1.2.2 BUG
1.1.2.1 BUG1
(1) Bug发生时的测试环境
操作系统:Win11
浏览器:Microsoft Edge 113.0.1774.3 (正式版本) dev (64 位)
发生时间段:2023/04/06 20:12
(2)Bug的可复现性及具体复现步骤
Bug的可复现性:100%
具体复现步骤:在搜索框中输入“/”,“.”或“\”,进行搜索。
(3)Bug具体情况描述
在搜索框中输入“/”,“.”或“\”页面都会出现“System.NullReferenceException: 未将对象引用设置到对象的实例”报错
(4)Bug分析
输入:/
结果:出现“System.NullReferenceException: 未将对象引用设置到对象的实例”报错。
分析:不清楚是什么原因
Bug的严重性:☆☆
1)系统功能:并未实现预想中的搜索效果。
2)安全性:服务器资源安全存在漏洞
3)用户体验:返回结果并不符合用户预期结果,跳转到报错页面,无法正常返回,影响使用,用户体验不好。
Bug改进
1)预期:不应该返回报错界面,而是应当与其他搜索无结果的情况相同。
2)改进措施:对“.”,“\”,“/”转换为十六进制ascii码。
1.2.3 结论
c) 一般
类别 | 描述 | 评分 (满分 10 分, 良好 6 分, 及格 4 分,聊胜于无 1 分, 很差 -3 分) | |
功能 | 核心功能 | 分析三个核心功能,功能设计和质量。 | 5 |
细节 | 有什么为用户考虑的细节? | 3 | |
用户体验 | 当用户完成功能时,不干扰用户 (例如: 是否不断弹出不相关广告)。 | -3 | |
辅助功能 | 一些辅助功能如皮肤等 | 1 | |
差异化功能 | 这个软件独特的功能. 它对用户的吸引力有多大? | 4 | |
软件的效能 | 占用内存, 启动速度, 内存泄漏情况 | 4 | |
体验 | 软件的适应性 | 在联网/断网, 大小屏幕, 没有鼠标的情况下都可以顺畅操作. 和不同平台的软件能流畅协作 | 4 |
成长性 | 记住用户的选择, 适应用户的特点,用户越用越方便 | -3 | |
用户有控制权 | 系统状态有反馈,等待时间要合适。关键操作有确认提示,有明确的错误信息。 让用户方便地从错误中恢复工作, 快捷操作键可调整。 | 4 |
1.3 Online Compiler and IDE
1.3.1 体验
一、介绍
(1)首页
首页即为编译器界面,能够选择语言,编辑代码运行。
(2)我的代码
运行后的代码会记录在我的代码中,供下次查看。
(3)范例
可以下载或fork代码
(4)最近代码
查看平台最近的提交运行代码
二、优缺点分析
优点:
(1)能够在线运行各编程语言代码,支持语言丰富。
(2)部分语言提供了可运行代码的基本框架。
(3)各语言均有范例代码
缺点:
(1)UI不美观。
(2)仅支持单文件运行,用处不大。
(3)无代码提示。
(4)界面没做响应式布局。
三、改进意见
问题描述:
编写代码时没有代码提示,与本地IDE编写感受相差较大。
意见:
添加代码提示功能。
1.3.2 BUG
未发现Bug
1.3.3 结论
c) 一般
类别 | 描述 | 评分 (满分 10 分, 良好 6 分, 及格 4 分,聊胜于无 1 分, 很差 -3 分) | |
功能 | 核心功能 | 分析三个核心功能,功能设计和质量。 | 5 |
细节 | 有什么为用户考虑的细节? | 4 | |
用户体验 | 当用户完成功能时,不干扰用户 (例如: 是否不断弹出不相关广告)。 | 5 | |
辅助功能 | 一些辅助功能如皮肤等 | 1 | |
差异化功能 | 这个软件独特的功能. 它对用户的吸引力有多大? | 4 | |
软件的效能 | 占用内存, 启动速度, 内存泄漏情况 | 4 | |
体验 | 软件的适应性 | 在联网/断网, 大小屏幕, 没有鼠标的情况下都可以顺畅操作. 和不同平台的软件能流畅协作 | 1 |
成长性 | 记住用户的选择, 适应用户的特点,用户越用越方便 | 4 | |
用户有控制权 | 系统状态有反馈,等待时间要合适。关键操作有确认提示,有明确的错误信息。 让用户方便地从错误中恢复工作, 快捷操作键可调整。 | 4 |
1.4 用户采访
采访对象背景:软件工程专业大三学生
选择原因:有丰富的项目经验,有使用过类似的在线编译器工具。
使用产品:InsCode
第二部分 分析
2.1 开发时间估计
2.1.1 Inscode
项目进度 | 估计时间 (周) |
---|---|
需求分析/市场调研 | 4 |
原型设计 | 2 |
UI界面设计 | 2 |
概要设计和数据库设计 | 1 |
编码实现和测试 | 10 |
发布和部署 | 5 |
总计 | 24 |
2.1.2 IT屋
项目进度 | 估计时间 (周) |
---|---|
需求分析/市场调研 | 4 |
原型设计 | 1 |
UI界面设计 | 1 |
概要设计和数据库设计 | 1 |
编码实现和测试 | 6 |
发布和部署 | 3 |
总计 | 16 |
2.1.3 Online Compiler and IDE
项目进度 | 估计时间 (周) |
---|---|
需求分析/市场调研 | 4 |
原型设计 | 1 |
UI界面设计 | 1 |
概要设计和数据库设计 | 1 |
编码实现和测试 | 7 |
发布和部署 | 3 |
总计 | 17 |
2.2 同类产品对比排名
市面上的同类型产品还有online gdb,godbolt等
网站 | 核心功能得分(50) | 使用体验得分(50) | 总分(100) | 排名 |
---|---|---|---|---|
InsCode | 45 | 45 | 90 | 1 |
IT屋 | 40 | 35 | 75 | 5 |
Online Compiler and IDE | 40 | 40 | 80 | 3 |
online gdb | 40 | 40 | 80 | 3 |
godbolt | 45 | 40 | 85 | 2 |
上述产品各有侧重。
InsCode
优势:
- InsCode能够在线运行整个项目这一功能是当前市面上其他产品所不具有的,是其核心竞争力所在。
- 依托于CSDN在计算机专业学生及从业人员中的影响力,能够迅速提高知名度,提高市场占有率。
劣势:
- 代码仓库依托于GitCode,而GitCode的用户量与公信力对标其同类产品Github有较大的差距。
IT屋
优势:
- 集成知名It教程平台《菜鸟教程》,作为其示例代码演示的在线编译器具有较大优势。
劣势:
- 页面不美观,单作为一款在线编译器来看的话并没有什么突出的亮点,甚至有所不足,使用体验不佳。
Online Compiler and IDE
优势:
- 支持语言较多,有丰富的范例代码。
劣势:
- 界面较不美观,无代码提示,用户体验不佳。
2.3 软件工程方面的建议
InsCode
建议:
- 将InsCode集成到GitCode中,能通过GitCode仓库直接导入为InsCode项目并运行
- 在通过Git Url导入项目时增加选择分支的功能
- 增加对更多语言的支持,提供更多语言模板
- 加强对社区消息的过滤
IT屋
建议:
- 将在线编译器集成到菜鸟教程中(菜鸟教程中在线编译的代码不可编辑)
- 优化UI设计
- 添加代码提示功能,提高用户使用体验
Online Compiler and IDE
建议:
- 增加范例代码
- 优化UI设计
- 添加代码提示功能,提高用户使用体验
2.4 BUG存在的原因分析
我认为InsCode以及IT屋的搜索会出现上述Bug的主要原因是开发人员在设计接口时未考虑到对“/”输入的处理。
第三部分 建议和规划
3.1 市场概况
3.1.1 市场规模
在线编译器是软件开发领域的一项重要工具,它可以帮助程序员和学生在互联网上进行编程和测试。根据市场研究机构的报告,全球在线编译器市场规模正在不断扩大,预计未来几年内将保持稳定增长。
从IT行业从业人数来看,2011年-2020年期间,IT行业从业人数每年都在不断的增加。由2011年的344万人,增长到了2020年的705万人。其中2018年-2019年人数增加了37万人,2019年到2020年人数增加了23万人。IT行业火热,成为了比较热门的职业之一。
3.1.2 用户
(1)直接用户
- 学生:在线编译器可以帮助学生更方便地进行编程实验、练习和作业,提高学习效率和质量。
- 程序员:在线编译器可以帮助程序员在互联网上进行代码测试和调试,避免本地环境出现的问题,提高编码效率。
- 开发人员:在线编译器可以为开发人员提供一些便利功能,如代码版本管理、团队协作等,提高开发效率和质量。
(2)潜在用户
- 初学者和爱好者:在线编译器可以降低编程的门槛,为初学者和爱好者提供一种更加轻松的学习方式。
3.2 市场现状
(1)市面产品
- online gdb:支持gdb在线调试、支持控制台输入、支持多种语言、支持多文件编辑。
- wandbox:支持多语言、支持选择编译器版本、支持选择编辑器类型,例如可以选择你熟悉的vim或emacs
- godbolt:实时查看C/C++代码的汇编代码,而不用使用gdb,objdump等工具反汇编
- CodePen:一个代码片段分享社区,支持 HTML、CSS 和 JavaScript 的在线编辑和展示。
- JSFiddle:一个专门针对前端开发者的在线编辑器,提供 HTML、CSS 和 JavaScript 的在线编辑和测试功能。
- Repl.it:一个集成了多种编程语言的在线编程工具,支持 Python、JavaScript、Java、C++ 等编程语言。
(2)定位、优势与劣势
上述产品的定位为在线编译器
优势:
- 环境无限制:无需安装任何编程软件,不受操作系统的限制,方便用户进行编程工作。
- 即时反馈:在线编译器可以实时编译和运行代码,用户能够及时看到代码运行结果,方便用户进行代码调试和测试。
- 多用户协作:支持多用户同时使用,多人可以同时进行代码编辑和协作,方便团队协作和项目管理。
- 数据安全:用户的代码和数据都储存在云端,不用担心本地数据丢失或设备损坏的情况。
劣势:
- 离线无法使用
- 受网络速度限制
- 功能受限:在线编译器的功能和插件会受到一定限制
(3)关系
上述产品中wandbox和Repl.it存在竞品关系,两者功能相近,用户群体有较大重叠。
(4)领域市场所处阶段
在线编译器领域处于成长和风口阶段
随着互联网技术的不断发展和普及,越来越多的人开始利用在线编译器进行编程和学习。在线编译器在许多方面都比传统的本地编译器更具优势,如便捷性、灵活性、协作性等等,这使得在线编译器得到了广泛的认可和使用。
3.3 市场与产品生态
(1)核心用户群
- 程序员:作为在线编译器的主要用户,他们的学历可能涵盖本科、硕士及以上,年龄在20岁及以上,专业领域则包括计算机科学、软件工程等。他们有较强的编程技能和需求,需要进行代码的编写、调试和测试,使用在线编译器能够提高工作效率和编程质量。
- 学生群体:包括高中生、大学生及职业教育等。随着计算机课程的推广,编程教育越来越普及,学生们需要使用在线编译器完成编程任务和作业。
- 教育机构:他们需要提供在线编译器给学生使用。
(2)用户群体间关系
教育机构和学生群体间存在交集,学生可能在教育机构中学习。
3.4 产品规划
3.4.1 功能拓展及NABCD分析
我会在InsCode当前功能的基础上设计添加通过导入GitCode仓库创建项目以及“各模板使用教程”功能
分析环节 | 分析 |
---|---|
N(Need,需求) | ①在使用中发现在InsCode中创建项目时会在GitCode中创建一个仓库用于存放代码,若用户想将GitCode仓库中的代码通过InsCode运行时仍需通过git url导入,导致GitCode中会出现一个重复的仓库。使用体验不佳。 ②作为InsCode的最大亮点,通过模板创建项目后缺乏运行项目的基础的教程,例如在通过模板创建项目后,并没有关于“.inscode”文件作用的讲解,用户不清楚应当如何设置入口文件,影响用户上手InsCode。 |
A(Approach,方法) | ①在GitCode中添加通过InsCode运行项目的功能,同时在InsCode中添加从GitCode仓库导入项目的选项。 ②在用户通过模板创建项目时增加询问用户是否需要新手引导的选项 |
B(Benefit,好处) | ①避免GitCode中出现重复不必要的仓库,方便用户对代码仓库的管理,同时使得InsCode和GitCode相互引流,构建良好用户生态。 ②大大降低用户上手难度,优化新手用户体验,利于产品的推广传播。 |
C(Competiton,竞争) | ①相比于其他在线编译器,有了GitCode的支持,使得InsCode的项目有了更好的在线协作能力以及版本控制管理功能。 ②通过完善新手指引功能,能够更好发挥其在线运行项目的亮点,具有极高的竞争力。 |
D(Delivery,推广) | 通过CSDN在国内的强大影响力,通过举办比赛或开展集训营等方式,推广InsCode的使用。 |
3.4.2 角色配置
产品1名,前端2名,后端2名,测试1名
3.4.3 详细规划
周数 | 开发阶段 | 目标 | 任务 |
---|---|---|---|
1 | 需求分析 | 确定应用需求和功能 | 客户需求调研、功能设计 |
2 | 界面设计 | 设计应用界面 | 界面设计、交互设计 |
3 | 数据库设计 | 设计应用数据库 | 数据库设计、数据模型建立 |
4 | 技术选型 | 选定开发技术和工具 | 技术选型、环境搭建 |
5、6 | 前端开发 | 开发前端页面 | 页面布局、功能实现 |
7、8 | 后端开发 | 开发后端接口 | 接口设计、数据库连接 |
9 | 测试 | 进行单元测试和集成测试 | 测试用例编写、测试环境搭建 |
10 | 前端优化 | 优化前端性能 | 代码重构、性能测试 |
11 | 后端优化 | 优化后端性能 | 代码重构、性能测试 |
12 | 安全审查 | 审查应用的安全性 | 安全漏洞检查、修复 |
13 | 问题修复 | 修复应用问题 | 问题排查、代码修复 |
14 | 部署上线 | 部署应用到线上环境 | 线上环境搭建、应用部署 |
15 | 应用测试 | 进行线上测试 | 线上测试用例编写、测试环境搭建 |
16 | 交付验收 | 交付应用并验收 | 交付应用、验收测试结果 |