软件工程实践——软件评测作业

这个作业属于哪个课程2023软工W班
这个作业要求在哪里软件工程实践——软件评测作业(邹欣老师)软件工程 案例分析作业
这个作业的目标调研,评测,分析,建议和规划
其他参考文献

文章目录

第一部分 调研,评测

1.0 Bug评级量化标准

为了方便下面阐述Bug,以及对Bug进行定量描述,先对Bug严重性进行评级如下。

星级说明
🌟🌟🌟🌟🌟严重的安全问题:可能导致用户关键信息泄漏;严重的功能问题:某模块功能完全不能使用。
🌟🌟🌟🌟潜在的安全问题:可能使得部分用户的信息泄漏;一般的功能问题:某模块或功能在某些场合不能使用;交互问题:不符合逻辑的交互,会导致暂存信息丢失等。
🌟🌟🌟潜在的功能问题:在某些极端情况下会出现的功能问题,以及足够影响功能的排版/交互/显示错误。
🌟🌟显著的排版/交互/显示错误,信息调用报错,以及在某些极端情况下功能不能使用。
🌟细小的排版/交互/显示错误,刷新或等待后恢复,不影响实际信息以及主要功能。

1.1 InsCode

1.1.1 使用体验
1.1.1.1 综述

InsCode是CSDN的一款子产品,主要提供一个编程分享社区,用户能够创建带有实时运行和演示功能的项目仓库,使得用户能够在传统的类似github或gitcode等代码仓库的基础上,实现代码项目实时预览并分享演示。

InsCode首页

目前,用户可以通过一些官方或经过认证的通用模板,比如HTML模板项目,vue模板项目等,创建自己的项目。
在这里插入图片描述

1.1.1.2 使用过程

InsCode和CSDN共用一套账户系统。笔者已经有了CSDN账号,因此不需要额外注册就登录了InsCode。

可以看到,主页中列举了一些目前新的项目。由于平台还处于beta阶段,项目还比较少。

在左侧的区域是功能侧栏。我很容易地就找到了新建项目的入口。点击创建项目,然后选择一个自己想要的模板。可以看到现在的模板还比较少,但是基本覆盖了一些常用的web(node)项目,比如vue,react,html等,甚至还有ChatGPT。但是一些非node/文本内核的项目,比如go,java等没有对应的模板。

在笔者完稿前的几天内,这个情况有了一些波动。在几天前,在模板选择和模板中心都能直接找到java和go等,但是临完稿时已经下架,但是在模板中心搜索还是能够找到,并且也能正常地fork。特别地,在某些场合,项目创建选择时又会出现这些模板,但是创建时会报告参数错误。(详见1.1.3)

考虑项目还处于beta阶段,可能是功能还在调节。因此文中当做没有对应模板处理。

在这里插入图片描述
我选择了vue。指定项目名和标识符,就完成了项目新建。这个过程不涉及任何环境相关的配置,相当简洁快速,但是也带来了一些灵活性的问题:模板是固定的,我不能在这个过程中指定vue的版本,包管理法等等。

一种更加灵活的方式是先在github,gitcode等平台建立自己的仓库,配好之后再导入。

完成新建之后进入编辑界面。在这里,一切都很像VS Code(),左侧是文件视图,中间是编辑器,右边是终端和预览。

之后和在本地的vscode上编辑,预览是类似的,也附带有热重载。
在这里插入图片描述
可以选择发布,这样项目就会发布到社区,大家都可以点进来看到项目的演示效果。
在这里插入图片描述

也可以看到在社区中有不少人也发布了他们的项目,其中不乏有游戏等。对于其他人的项目,也可以选择直接fork,与git项目类似。
在这里插入图片描述

在我的项目栏目中可以查看编辑自己的项目,以及取消发布。

1.1.1.3 优缺点

优点:

  • 界面美术清爽友好,布局合理。
  • 方便上手,建立模板免配置,直接就可以编辑。
  • 有一套社区体系,能够满足Web游戏等的分享演示需求。
  • 与Git联动,能够fetch到git的内容,避免维护两套代码。

缺点:

  • 侧重于web应用,忽视了对其他平台或类型语言,以及混合平台项目的特别支持。
  • 如果用户将其作为一个单纯的在线Web运行平台,它则显得过于花哨。
  • 对于一个模板,没有对配置项的引导或自定义配置功能。
  • 缺乏完善的git联动支持,比如选择分支运行。
1.1.1.4 改进建议
  • 将原先的基于模板创建升级为基于平台-框架(模板)二级模板来创建,用户能选择使用何种平台的何种框架(模板)来运行,其中可以选择支持纯前端,Node,Java,Python,Go等常用编程语言平台。
  • 增加配置项的选单,以及支持直接自定义。
  • 完善git联动,而不是单纯clone。
  • 发布作品逻辑应该是针对某个项目在更多中发布,而不是让用户搜索或者选择要发布哪个项目。
  • 评论添加删除和修改功能。
1.1.2 Bug1描述
1.1.2.1 环境
  • 操作系统:macOS 13.3
  • 计算机平台:Macbook 2020 M1
  • 浏览器:Chrome 111.0.5563.146 arm64
1.1.2.2 可复现性

在下述条件下,bug可能出现:

  • 在任意具有搜索框的页面,如主页,进行搜索
  • 不断地输入不同的字符串重复搜索,搜索第i次时,键入任意字符串后,使用回车而不是点击进行确认搜索

对于约50组独立测试中,有约10%的概率存在i,使得当x>i时的搜索不能正确刷新出正确的结果。

1.1.2.3 叙述

有概率在使用回车进行全局搜索时出现后续搜索都不能正确刷新的情况。

在手动页面刷新之后,这个故障消失。

在这里插入图片描述

第i次搜索前

在这里插入图片描述

第i次搜索后

1.1.2.4 可能原因

考虑到这是一个路由完备的搜索,可能是前端在处理搜索执行时的异步方法相关出错。

1.1.2.5 严重性

🌟🌟

用户在搜索时会受到一些影响,但是这并非是一个很关键的问题,用户很容易想到通过刷新来解决。

1.1.2.6 改进建议

检查前端代码,特别是搜索触发逻辑的异步,检查是否对任何搜索触发,都能够驱动:

  • 字符串更新
  • 路由刷新
  • 页面刷新
1.1.3 Bug2描述
1.1.3.1 环境
  • 操作系统:macOS 13.3
  • 计算机平台:Macbook 2020 M1
  • 浏览器:Chrome 111.0.5563.146 arm64
1.1.3.2 可复现性

对于第一个问题,对于Java,Python,Go等模板,目前总是可复现,与操作步骤和时间无关。

对于第二个问题,在2023.4.6-4.7之间,这个问题出现,完稿时已不能复现。

1.1.3.3 叙述

包括但不限于Java、Python、Go的语言框架下架之后在主页创建项目和模板中心都不可见,但是搜索能搜索出来。

其次,在下架期间,会出现能搜索出来但是不能创建的情况。(目前无法复现)

在这里插入图片描述

在这里插入图片描述

1.1.3.4 可能原因

可能是为了维护一些模板的功能,临时下架了一些模板,但是并未在搜索中过滤。

1.1.3.5 严重性

🌟🌟

这是一种数据不一致,并且使得下架的项目在某种情况下以不可用的形态出现,但这不影响其他未正常的项目的创建,也不会危害用户数据。

1.1.3.6 改进建议

统一下架逻辑,对于下架的模板,既不能在选单、主页中出现,也不能被搜索到。

1.1.4 Bug3描述
1.1.4.1 环境
  • 操作系统:macOS 13.3
  • 计算机平台:Macbook 2020 M1
  • 浏览器:Chrome 111.0.5563.146 arm64
1.1.4.2 可复现性

在约50组独立测试中,有约30%的测试出现了这个问题,与键入的字符串无关。

复现步骤:

  • 点击新建项目,进入新建面板
  • 点击选择面板,键入html进行搜索
  • 返回结果不变,没有按照html来筛选
1.1.4.3 叙述

键入关键字之后执行了搜索,但并未返回正确的结果,而是未搜索的状态。
在这里插入图片描述

1.1.4.4 可能原因

前端异步方法次序问题。

1.1.4.5 严重性

🌟🌟

这个问题不能通过刷新解决,但是概率较低,且内容总量不大,因此目前并非一个严重的问题。

1.1.4.6 改进建议

检查前端代码,特别是搜索触发逻辑的异步。

1.1.5 Bug4描述
1.1.5.1 环境
  • 操作系统:macOS 13.3
  • 计算机平台:Macbook 2020 M1
  • 浏览器:Chrome 111.0.5563.146 arm64
1.1.5.2 可复现性

以下是复现步骤:

  • 利用HTML模板新建一个HTML项目
  • 进入编辑器界面,在终端输入python
  • 选择任意一个依赖(如pkgs.python39),回车确认
  • 出现终端忙等待

实验发现,利用终端在原本不存在对应依赖的项目模板安装下列的依赖,上述问题总是成立,与时间无关。

  • pkgs.python39
  • pkgs.python38
  • pkgs.python27
1.1.5.3 叙述

在任意的项目的编辑器界面,试图利用终端安装依赖时,出现至少30分钟以上的终端无限忙等待,且新建的任意一个bash同样忙等待。等待时间至少30分钟。
在这里插入图片描述

在这里插入图片描述

这是一个新的bash

1.1.5.4 可能原因

由于没有换源,网络缓慢,下载线程不能退出,阻止正常的终端初始化。

1.1.5.5 严重性

🌟🌟🌟🌟

这是一个很严重的问题,若用户在终端键入对依赖的安装命令,会直接导致长时间的任意的终端忙等待,即终端失效。这一操作不能通过刷新、新建bash、CtrlC、CtrlZ解决,用户很可能需要重新建立项目,对项目和功能可用性、用户体验都有很大的威胁。

1.1.5.6 改进建议

对依赖进行换源,使得能够正常下载依赖,或者建立依赖安装的rollback机制。

1.1.6 总结

InsCode是一个能够进行在线编辑和预览分享的平台,能够分享项目演示画面,避免安装依赖是它的一大亮点,同时能够利用社区推广宣传自己的Web项目。目前它还处于Beta阶段,有一些功能缺失问题和bug需要解决,但是总体来说界面清爽,从模板制作等亮点使得它还是能够比较良好地适用于一部分开源编程者的需求。

项目满分得分
代码编辑0.70.65
代码运行0.80.6
项目分享0.60.55
项目管理0.40.4
社区与用户群0.60.5
交互体验0.60.4
额外功能0.60.3
UI设计0.70.7

推荐等级:比较推荐(4.1/5)

1.2 IT屋

1.2.1 使用体验
1.2.1.1 综述

IT屋,也就是IT1352站,是一个典型的独立编程工具类网站。在网站上提供了一些编程技术方面的工具,比如问答,新手教程(菜鸟教程),在线编译工具,转换工具等。

在线编译工具支持较多语言,包括但不限于Java、Python2/3、Go、C、C++、C#,但没有对框架的支持。

1.2.1.2 使用过程

为了突出重点,使用过程着重于它的“在线编译工具”这一部分。

来到在线编译工具页面,可以看到它主页已经列出了全部的支持的语言。
在这里插入图片描述

进入Python3在线工具,运行一段实例代码。
在这里插入图片描述

除此之外,在线工具区并没有什么特殊的功能了。

点击导航栏的“菜鸟教程”,可以进入教程主页。

在这里插入图片描述

点击某个教程能看到一些教程的文章。

在这里插入图片描述

1.2.1.3 优缺点

优点:

  • 方便快速,不需要账号,新建项目等
  • 编译器全面,支持大多数常用编程语言

缺点:

  • 编译器的代码不支持储存,二次加工等
  • 不支持软件项目,框架等
  • 布局、UI混乱,至少存在2套以上UI方案
  • 问答库和菜鸟教程质量很低,一眼机翻
1.2.1.4 改进建议
  • 添加代码存储或导入等二次加工功能
  • 添加对框架的支持
  • 统一UI方案
  • 去掉问答库和菜鸟教程,专注于在线编译器
1.2.2 Bug描述
1.2.2.1 环境
  • 操作系统:macOS 13.3
  • 计算机平台:Macbook 2020 M1
  • 浏览器:Chrome 111.0.5563.146 arm64
1.2.2.2 可复现性

在下列条件下,bug一定出现。

  • 在站内任意含有顶部搜索框的页面执行全局搜索
  • 搜索的关键词字符串中含至少一个大写字母

下面是复现步骤:在任意含有顶部搜索框的页面,比如主页,在搜索框输入:Java。返回空结果:“未找到相关资源,请更换关键词搜索.”。实际上,包含Java子串的目标标题有很多。

复现与否与时间无关。

下面是尝试的可能的字符串以及结果:

字符串结果
Java
java正常
Restful
restfulApi
restfulApi java
restfulApi Java
JAVA
1.2.2.3 叙述

在站内任意有顶部搜索框的页面,进行全局搜索时,假如键入的字符串中包含任意大写字母,则搜索结果必为空。然而,将大写字母改成小写字母后,返回结果正常,包含全部忽略大小写的子串匹配内容。从返回结果上,不难看出,对应的含大写字母字符串子串的标题是存在的。

即,用户不能使用搜索功能搜索任意含大写字母的字符串,这显然违背功能逻辑。

在这里插入图片描述

1.2.2.4 可能原因

我们不妨将大写字母改为小写字母,比如键入java搜索,观察返回的信息,可以发现返回的结果即含本身,也包含Java等忽略大小写的结果。因此可以说,该搜索的逻辑是忽略了大小写的模糊匹配。

因此,如果按照这种搜索逻辑,有两种可能。

一是,在搜索比对时,是将标题进行全转小写,但并未对目标子串转小写,这样对于任意的比对,在正则严格子串中,返回出空结果。

二是,由于搜索结果是url路径完备的,在预处理url时,可能出于安全或者其他某种原因,将大写字符串进行了滤过处理,导致接受字符串时为空,最终导致结果为空。

url路径完备,是说一个页面唯一确定了一个url,而没有异步刷新。在此网站中,一个搜索结果对应了一个含有关键字的路径,如.../search/java

1.2.2.5 严重性

🌟🌟🌟

用户可能会误以为以忽略大小写字符串为字符串的内容不存在,或者认为搜索功能不可用。在欲搜索一些专有名词一定包含大写字母的情况下,这一情况不可避免。

1.2.2.6 改进建议

检查前端代码,改正这一问题,使得包含任意合法字符的字符串都能做到忽略大小写的模糊匹配搜索。

1.2.3 总结

IT屋是一个典型的独立的工具融合类网站,这样的性质决定了它的功能是零散的,独立的,低质量的,但是另一方面,它的功能也足够直接,不需要账号,创建项目等,对于一些非常简单的场合,比如需要临时运行一小段代码,那么这个网站是个不错的选择,因为它提供的编译器(解释器)足够全。除此之外的部分,如“问答库”,“菜鸟教程”等,都几乎不可用——充斥着爬取的机翻文章,广告文章等大量垃圾信息。

项目满分得分
代码编辑0.70.4
代码运行0.80.7
项目分享0.60
项目管理0.40
社区与用户群0.60
交互体验0.60.2
额外功能0.60
UI设计0.70.1

推荐等级:较不推荐(1.4/5)

1.3 Online Compiler and IDE

1.3.1 使用体验
1.3.1.1 综述

Oline Compiler and IDE 是一款单纯的在线编译器网站。在网站内,可以编译运行一段代码,也可以将这段代码和结果公布给其他人。网站也有账户系统,可以持久化自己的代码。
在这里插入图片描述

1.3.1.2 使用体验

一打开首页,便是一个大的代码编辑器。下方提供了一些简单的选项,支持切换语言,选择可见性,以及运行。可以选择将代码公布给任何人,或者仅通过链接传递给某个人,或者私有。
在这里插入图片描述

得出结果。
在这里插入图片描述

点击范例,可以看到一些预先设定好的模板代码,这显然是固定的。

在这里插入图片描述

点击Recent Codes可以看到全部公开的代码。
在这里插入图片描述

1.3.1.3 优缺点

优点:

  • 方便快速,不需要新建项目等,私有的代码也不需要账户
  • 编译器全面,支持大多数常用编程语言
  • 支持代码的一些简单的二次处理,比如分享和持久化,实现了一些公开,私有和链接分享三种权限。

缺点:

  • 公开代码缺少筛选或搜索机制,使得这个模块几乎无用
  • 范例固定,可以添加一个功能使得用户可以上传自己的模板
  • 编译速度较慢
1.3.1.4 改进建议
  • 为公开代码模块建立筛选机制,按代码语言进行分类
  • 为公开代码模块建立搜索机制,可以进行关键词的搜索
  • 为范例模块增加用户上传模板功能,后台管理员审核后增加到范例。
1.3.2 Bug描述

暂无发现。

1.3.3 总结

这是一个单纯的代码在线编译器网站,功能比较集中,全部的模块都是为代码服务的,而且有一些简单的分享功能,但是也只是一点点而已,公开代码几乎是不可用的。然而如果将其视作一个单纯的在线编译器,它已经做到了大部分功能。

项目满分得分
代码编辑0.70.4
代码运行0.80.7
项目分享0.60.4
项目管理0.40.2
社区与用户群0.60.2
交互体验0.60.4
额外功能0.60.25
UI设计0.70.3

推荐等级:一般(2.85/5)

1.4 采访

被采访者是一位软件工程的本科生,没有开源项目等的经历,但接触过较多项目框架。

在这里插入图片描述
在这里插入图片描述

第二部分 分析

2.1 时间估计

2.2.1 人员前提

下述时间估计针对于6人的大学本科毕业生,计算机专业毕业,考虑分工如下:

分工人数
前端实现1
前端逻辑1
API后端1
数据库1
可用性后端、运维1
测试1

上述分工不含美工,建立在假设有专业UI团队支持的基础上。

2.2.2 以InsCode为例

InsCode是综合性的平台,包含有社区、项目管理、代码编辑三个大模块,不能与一般的在线编译软件相比,因此此时间估计仅对InsCode而言。

在不考虑后续功能以及后续可用性的前提下,估计针对InsCode基本功能进行编码和测试的时间如下:

项目进度内容花费天数累计天数
需求分析1010
原型设计1525
数据库设计1035
前端界面实现2055
后端接口设计2075
后端接口CURD实现25100
前端交互实现15115
前后端通讯对接8123
后端可靠性10133
编译器虚拟环境搭建10143
编译器功能测试5148
前端可靠性10158
测试10168
总计168168
2.2.3 对于一般的在线编译网站而言

对于一般的在线编译网站而言,由于几乎没有社区和项目管理,需要考虑的内容少了很多,大部分时间将花在编译器的搭建上。

项目进度内容花费天数累计天数
需求分析66
原型设计713
数据库设计518
前端界面实现1028
后端接口设计1038
后端接口CURD实现1048
前端交互实现1058
前后端通讯对接361
后端可靠性364
编译器虚拟环境搭建1579
编译器功能测试685
前端可靠性580
测试1090
总计9090

2.2 评价比对

2.2.1 引论

必须要指明的是,下面要对比的几个网站的核心功能以及目标都有一定的差别,共性是它们都带有在线编译运行演示的功能,也就是同类网站。在分析优势和劣势,仅能针对一般地要使用这一功能的目标用户,而不代表这些目标用户是相同的。比如一个只是想跑代码的用户可能会反感InsCode需要账户这一点,尽管InsCode提供了可能更加优质的功能。

要做对比的软件包括:

  • InsCode
  • IT屋
  • ProductHunt
  • OC&I
2.2.2 优势综述

InsCode这类具备社区和一定生态的平台显然最大的优势与编译器本身并没有关系。用户来到InsCode一定不是简简单单想要跑一段代码,更重要的是让大家看到。因此这类平台最大的优势是让大家看到你的项目,以及你项目的演示效果,而不需要安装依赖。其次才是更加高质量的代码编辑器和演示工具给其加分。

而传统的代码编译器要做的是如何成为一个好的编译器——在编译速度上要快,覆盖的语言要多等等,其次才是生态。

必须要说的是,生态并非是割裂于“编译器类网站”的模块,只是在大多数没有想要实现流量扩充的网站,这只是个附属品。只有像InsCode这样的网站才有可能在生态上占领高地——也是它本来的目的。

2.2.3 劣势综述

劣势与优势就正好对应。InsCode在编译器本身上并不占优势,甚至在支持性上占劣势;而传统的就是代码分享,生态上的劣势。

2.2.4 横向对比

这里用了一种比较新的客观评价方法,列出了“编译器类网站”可能会有的一些维度,看看不同的网站在不同的点上表现得怎样。

网站名编译器功能代码分享生态用户体验
InsCode一般,没有其他的编译器那样支持那么多的语言,但是在框架部分有额外支持。非常好,通过社区能方便地进行分享。非常有前途。界面良好,但是在引导上有欠缺。
IT屋比较全面。很差。
ProductHunt最不侧重编译器。最强,就是为此而生的。虽然有代码分享的社区,但是难与其他的平台发生共鸣。较好,全英文,国人使用可能有难度。
OC&I比较全面。有少量辅助性质的功能。一般
2.2.5 排名

综合2.2.2-2.2.4,给出了排名:

  1. InsCode
  2. OC&IDE
  3. ProductHunt
  4. IT屋

2.3 软件工程建议

网站名建议
InsCode将原先的基于模板创建升级为基于平台-框架(模板)二级模板来创建,用户能选择使用何种平台的何种框架(模板)来运行,其中可以选择支持纯前端,Node,Java,Python,Go等常用编程语言平台。 增加配置项的选单,以及支持直接自定义。 完善git联动,而不是单纯clone。 发布作品逻辑应该是针对某个项目在更多中发布,而不是让用户搜索或者选择要发布哪个项目。 评论添加删除和修改功能。
IT屋添加代码存储或导入等二次加工功能 添加对框架的支持 统一UI方案 去掉问答库和菜鸟教程,专注于在线编译器
OC&IDE为公开代码模块建立筛选机制,按代码语言进行分类 为公开代码模块建立搜索机制,可以进行关键词的搜索 为范例模块增加用户上传模板功能,后台管理员审核后增加到范例。

2.4 Bug原因分析

  • 对于InsCode的若干bug,考虑到它是beta版本,因此最可能的情况是上线时间较短,测试人员并未针对全部的情况都考虑到。

  • 而对于IT屋的Bug,则更有可能是网站缺乏维护,导致问题没有人解决的结果。

第三部分 建议和规划

3.1 市场概况

考虑在线编译类的网站,可能的使用场景有两类:

  • 一是学生,需要使用在线编译器完成一些代码或项目的在线运行
  • 二是开源爱好者,需要将自己的项目进行发布,能够让他人在不安装依赖的情况下,看到自己的项目的演示。

目前到2020年,我国程序员总数超过600万,2022年的IT专业学生也达到了100多万。因此综合估计目前的市场规模为800万用户。

潜在用户为那些在项目上有想法,但是没有实际动手做过的潜在开源开发者。

3.2 市场现状

  • 目前市场上的大部分产品停留在普通的编译器工具阶段,尤其是国内的平台,只是提供一套支持多种语言的编译器,能够在线运行用户的代码,产生结果,而更多的周边功能,比如代码分享,在线内容演示等则可能没有,可能只提供一些最基本的功能。而国外的大部分网站国内很难访问,存在一定市场空白。如:IT屋,OC&IDE等等。
  • 上述产品主要定位于需要使用在线编译器完成一些代码或项目的在线运行学生,以及少部分开源开发者。
  • 优势在于,在编译速度上较快,覆盖的语言较多,不需要账户,比较简单快速。
  • 对于一般的编译器而言,如OC&IDE,CPOR等,它们互为竞品,需求点基本重叠,但是竞争并不激烈,因为商业点有限。
  • 而对于编译器和社区,他们可能在某些地方互补,某些地方竞争。
  • 该领域处于成长阶段。市场已经有一些产品,但是重叠度不高,比较分散,也没有形成商业趋势。

3.3 市场和产品生态

3.3.1 核心用户群
  • 该产品核心用户以及需求为:
    • 学生,需要使用在线编译器完成一些代码或项目的在线运行
    • 开源爱好者,需要将自己的项目进行发布,能够让他人在不安装依赖的情况下,看到自己的项目的演示。

给出这两类人的典型画像如下:

  • 小张,20岁,大二学生,软件工程专业,喜欢学习编程技术。学到Java部分需要用到在线编译器运行代码。
  • 小李,26岁,在职软件工程师,也是一位开源开发者,喜欢自己做一些小的项目或者游戏,分享给别人看。
3.3.2 用户群体关系

对于上面两类群体,有下述两种关系:

  • 一是重叠关系。一个学生可能同时也是一个开源开发者。它可能同时需要发布自己的项目,也需要新增一些私用项目供自己学习时在线运行。这与Github上学生的仓库有开源项目也有自己学习用的项目很类似。
  • 二是时间递进关系。一个学生未来可能会成为一个开源开发者。

这提示我们可以创造出尽可能同时满足这两类人的迁移需求的生态。比如,一个项目可以是私有的,也可以是公有的,这样的状态可以互相转换。

3.3.3 产品关系

编译器这个子产品与其他的纯在线编译网站形成竞争关系。

可以考虑把这个部分的功能独立成一个子项目,这样可以将这个子项目再推广运用到其他的网站,增加生态广度。

3.4 产品规划

3.4.1 产品NABCD分析

考虑下面的InsCode的“升级版本”:

  • 将原先的基于模板创建升级为基于平台-框架(模板)二级模板来创建,用户能选择使用何种平台的何种框架(模板)来运行,其中可以选择支持纯前端,Node,Java,Python,Go等常用编程语言平台。
  • 增加配置项的选单,以及支持直接自定义。
  • 完善git联动,而不是单纯clone。
  • 发布作品逻辑应该是针对某个项目在更多中发布,而不是让用户搜索或者选择要发布哪个项目。
  • 评论添加删除和修改功能。

做NABCD分析如下:

关键点分析
N(Need,需求)1. 需要尽可能丰富地支持多种语言平台,并且模板需要更加灵活,对于导入的部分,希望导入的可选操作更多。2.希望增加学习引导。3.希望优化其他多种的逻辑细节。
A(Approach,方法)二级模板系统(平台-框架),配置模块,Git联动模块
B(Benefit,好处)用户能选择使用何种平台的何种框架(模板)来运行,能够全面地与git联动,能够更加方便地学习这个平台
C(Competiton,竞争)在现有的在线编译网站中,InsCode比较特殊,并不是单纯的编译器,重叠度不高。在国内市场的竞争度不高。
D(Delivery,推广)InsCode作为CSDN子产品,可以借助CSDN的影响力进行推广,也可以嵌入在GitCode作为其子模块。
3.4.2 产品开发规划
3.4.2.1 分工安排
分工人数
美术1
前端1
API后端1
数据库1
可用性后端、运维1
测试1
3.4.2.2 16周开发计划
周数进度概述进度详情
1-2需求收集和分析确定要升级的功能和特性 ;确定成员安排,进度控制方法等团队管理规约 ;确定系统架构和技术栈 ;编写相关类图和文档
3工具准备确定,学习和安装各种第三方库和依赖;各种环境的预部署
4-5原型更新原型设计与更新;产出符合新的需求的原型
6-7前端视图编写前端静态视图;产出静态前端页面
6数据库准备按照类图设计和实现数据库结构;产出数据库文档
7-12后端接口搭建接口设计;CURD实现;产出接口文档
8-12前端交互前端实现交互方法逻辑
12前后端对接前后端对接,修补接口问题,数据填充测试
13-14可靠性维护增加中间件提升网站的可靠性,可用性;提升系统性能以及安全性
15测试和修复漏洞单元测试;集成测试;修复问题
16发布确定功能上线日期和发布计划 ;将开发环境迁移到生产环境,完成部署;产出和整理各类文档;完成发布

本博客不使用ChatGPT或newBing等文本生成工具。

Only Used for SE2023, CSC, FZU.

© Copyright 2020-2023 MarkPolo, all rights reserved.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值