[I.2] 个人作业:软件案例分析
开源解压缩软件7-Zip软件工程质量分析报告
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 北航软工 |
这个作业的要求在哪里 | [I.2] 个人作业:软件案例分析 |
我在这个课程的目标是 | 通过分析具体的案例来学习如何评价与提高软件的质量 |
这个作业在哪个具体方面帮助我实现目标 | 分析开源软件,在用户与作者两个角度来分析软件质量 |
第一部分 调研,评测
软件简介:
7-Zip是一款基于GNU LGPL协议发布的完全免费的解压缩软件,支持7z、XZ、BZIP2、GZIP、TAR、ZIP 以及 WIM格式的压缩与解压缩以及其余众多格式的解压缩功能,同时相比其他软件有更高的压缩比而且相对于WinRAR不会消耗大量资源。
软件使用(基本流程):
7-Zip操作十分简单,界面干净整洁,以下是其主界面(这里我们打开7-Zip的文件夹进行演示):
我们可以选中部分文件进行文件压缩:
点击"添加到压缩包..."后,我们便可以对其压缩格式,等级,方法,分卷,加密等功能进行配置,确定压缩后便可以在设置好的路径下得到压缩包。
对于压缩文件,我们也可以在快捷菜单内找到压缩的快捷方法:
对于解压缩,7-Zip的操作同样简洁,支持双击进入压缩包对文件进行预览。
点击解压我们便可以将压缩文件解压到指定位置。
软件分析:
从上文软件使用流程可以看出,7-Zip的功能十分全面,能够满足用户几乎全部的解压缩需求,下面我将进一步分析7-Zip在界面/功能/用户体验上的优缺点:
界面:诚如上文所言,7-Zip界面十分干净整洁(也许算得上是简陋),相比于其他成熟的商业压缩软件显得格外朴素,但是对于开源软件也无可厚非。
功能:从支持的压缩方式来看,7-Zip支持以下格式:
- 压缩 / 解压缩:7z、XZ、BZIP2、GZIP、TAR、ZIP 以及 WIM
- 仅解压缩:AR、ARJ、CAB、CHM、CPIO、CramFS、DMG、EXT、FAT、GPT、HFS、IHEX、ISO、LZH、LZMA、MBR、MSI、NSIS、NTFS、QCOW2、RAR、RPM、SquashFS、UDF、UEFI、VDI、VHD、VMDK、WIM、XAR、Z 以及 ZSTD
从压缩效率来看,与 ZIP 及 GZIP 格式相比,7-Zip 能提供比使用 PKZip 及 WinZip 高 2-10% 的压缩比,同时为 7z 与 ZIP 提供了更完善的 AES-256 加密算法。
用户体验:首先其安装体积极小(仅有1M左右),其次7-Zip既支持主流的 x86/amd64/arm64 架构,甚至还支持被业界弃用的32位 arm。Windows 最低支持到24年前的Windows 2000,Linux各发行版和macOS也均支持,除了极高的兼容性,7-Zip 还有极为丰富的命令行参数,在脚本中调用非常方便,用户体验可谓极佳。
用户调研
(采访对象为吴际老师软工课程的同学qxy,采访形式为线下面对面采访):
以下为线下采访照片,打码处理了一下 ( :
你目前最常使用的压缩软件是哪一款,为什么会做出这样的选择?
1.现在电脑上就安装了一个7-Zip,已经满足了所需的解压缩需求。
2.我过去试过不少解压缩软件,但是当时大部分解压软件的捆绑下载和软件收费都比较严重,我也是辗转好几次才选择这个软件,从那之后也基本没有换过别的来用了,之前我电脑重装系统,第一个下载的软件就是7-Zip。
你认为7-Zip还需要哪里进行改进,以及你在使用时又遇到什么问题吗,你对其有什么不满意的地方?
1.我觉得7-Zip唯一缺点就是Windows下的原生界面比较丑,不过这不重要,反正这种软件也不会盯着它的UI去看,大部分情况都通过右键快捷菜单或者命令行调用。
2.压缩软件基本上没什么重大的更新,涉及到的功能也就那几个,稳定好用的软件基本可以用很长时间,到现在为止没遇到什么问题。
3.我觉得7-Zip作为无广告开源免费的软件,是没有什么好挑剔的。
评测结论:
采用以下五级评分标准:
- a) 非常不推荐
- b) 不推荐
- c) 一般
- d) 好,不错
- e) 非常推荐
经过以上工作,我对这个软件的评价是: 非常推荐
Bug (1)分析和提交
-
测试环境:
操作系统:Win11
软件版本:7-Zip 24.09 (最新版本)
硬件设置:爱国者 U316 128G U盘
-
可复现性:在上文测试环境中,该Bug为必然发生现象
-
具体复现步骤 :
- 将U盘连接至电脑,在U盘下建立测试文件夹
- 设置该文件夹属性为只读格式
- 对该文件夹使用7-Zip以zip格式进行压缩,同时在压缩时选择压缩并删除选项 (即表示在建立压缩包后会将原文件删除)
- 报错出现,行为非法
-
Bug 具体情况描述 :
- 在上述复现步骤下,U盘内的只读文件夹无法被正常压缩与删除。
- 与之相对,当我们在主机环境下新建文件夹并以zip格式进行压缩时,行为正常,可以进行压缩并且删除原只读文件夹。
- 在其余格式(非zip,如rar,7z)下进行同样操作,无论是在主机环境下还是U盘环境下行为均正常,可以进行正常压缩并且删除原只读文件夹。
-
Bug 分析:
-
Bug 的可能成因,在查阅网上资料后,斗胆对Bug成因作初步推断:
U盘可能使用的是 FAT32/exFAT 文件系统,而非NTFS。FAT32/exFAT 对于只读文件属性的处理可能和NTFS不同。而7-Zip 在处理 NTFS 文件系统时,可能会使用 Windows 提供的权限管理 以尝试删除“只读”文件夹。但在 U 盘的 FAT32/exFAT 环境下,文件夹的“只读”属性可能会导致 7-Zip 无法成功删除。RAR、7z 等格式可能使用了不同的删除方式,绕过了 U 盘文件系统的“只读”属性限制。Zip 则使用与 Windows 资源管理器相似的删除方式,因此受限于“只读”属性,而 RAR/7z 可能有不同的文件操作策略,导致其可以正常删除。
-
Bug 的严重性
-
严重性:★★★✰✰
严重性分为五级,以五颗星作为代表,严重程度依次递增,分别为:
- ★✰✰✰✰ 建议(通常是安全最佳实践的建议,而不是实际的漏洞)
- ★★✰✰✰ 低危(漏洞存在,但影响较小或难以利用,通常不会直接危害系统安全)
- ★★★✰✰ 中危(可能导致部分系统功能受损、用户体验受影响)
- ★★★★✰ 高危(攻击者可能窃取敏感数据、执行未授权操作,但未必能完全控制系统)
- ★★★★★ 致命(可能导致系统完全被攻破,攻击者可远程执行代码、获取管理员权限,或造成不可逆的数据丢失)
-
-
发现的 bug,软件团队未能在发布前修复的可能是:
- 该Bug适用场景较少,触发条件较特殊,开发人员未能发现
- 测试把关不严,没有注意在特殊的配置或环境下测试
-
-
BUG 改进建议:
- 应当对zip只读文件夹进行正确压缩后删除
- 可能可以修改U盘下的zip格式支持的压缩文件源,使其支持压缩与删除只读文件夹。
-
**Bug 反馈 ** (在SOURCE FORGE上的7-Zip论坛进行了Bug反馈):
Bug (2)分析和提交
-
测试环境:
操作系统:Win11
软件版本:7-Zip 24.09 (最新版本)
-
可复现性:在上文测试环境中,该Bug为必然发生现象
-
具体复现步骤 :
- 在主机下新建测试文件夹,对测试文件夹进行zip格式的分卷压缩(分卷的大小应该大于文件夹大小)。
- 压缩后的文件结果以zip.001为压缩格式。
-
Bug 具体情况描述 :
- 本质上在单分卷的情况下,zip 与 zip.001本质相同,这里应当以zip格式作为返回结果。
- 我们将zip.001的后缀修改为zip,压缩包仍能正常进行解压,证明二者格式同源。
-
Bug 分析:
-
Bug 的可能成因是软件设计时未能考虑到分卷压缩时文件小于单卷大小导致的问题。
-
Bug 的严重性
-
严重性:★✰✰✰✰
严重性分为五级,以五颗星作为代表,严重程度依次递增,分别为:
- ★✰✰✰✰ 建议(通常是安全最佳实践的建议,而不是实际的漏洞)
- ★★✰✰✰ 低危(漏洞存在,但影响较小或难以利用,通常不会直接危害系统安全)
- ★★★✰✰ 中危(可能导致部分系统功能受损、用户体验受影响)
- ★★★★✰ 高危(攻击者可能窃取敏感数据、执行未授权操作,但未必能完全控制系统)
- ★★★★★ 致命(可能导致系统完全被攻破,攻击者可远程执行代码、获取管理员权限,或造成不可逆的数据丢失)
-
-
发现的 bug,软件团队未能在发布前修复的可能是:
- 测试把关不严,没有注意在特殊的配置或环境下测试。
-
-
BUG 改进建议:
- 应当产生zip为后缀的压缩文件。
- 在分卷压缩产生压缩包前进行文件大小比较,判断是否需要以分卷形式进行压缩。
第二部分 分析
工作量分析:
在 github官方项目中我们可以看到整个7-Zip的代码量大约在40w行,其中还涉及到文本压缩的相关专业知识,以6个本科毕业生的水平乐观估计也需要数年时间,这里作不负责任的估计大概三年左右。
软件质量分析:
- 目前该软件以简洁的操作系统,优秀的适配以及较高的压缩比,在同类产品中位于第一梯队,在我心中该产品质量位列第一。
- 7-Zip是1999以来逐步开发的项目,项目的功能与理论基础在多年的发展里逐步提高,但是其软件外观却未能跟随时代发展显得过于普通平凡,7zip软件团队可以在后续的开发中考虑更新软件外观以吸引更多用户。
第三部分 建议和规划
市场现状:
-
市场概况:压缩软件的市场范围极为广阔,凡是使用电脑的用户都不可避免的需要使用相关软件。
-
竞争产品:目前的主要竞品软件包括:WinRAR,WinZip,Bandizip,PeaZip,HaoZip。
-
产品定位:上述产品的定位、优势、差异以及竞争中的各方态势如下图所示。
软件 主要特点 是否免费 压缩率 界面友好度 特色功能 7-Zip 开源、支持 7Z 高压缩率 是 ★★★★★ ★★★✰✰ 高压缩率,支持加密 WinRAR RAR 专属,修复功能强 试用版可用 ★★★★✰ ★★★★✰ 损坏恢复,企业使用广 WinZip 界面美观,云集成功能 需要付费 ★★★✰✰ ★★★★✰ 云存储,集成 Office Bandizip 轻量高速,智能解压 部分功能付费 ★★★✰✰ ★★★★★ 智能跳过损坏文件 PeaZip 开源,安全性高 是 ★★★★✰ ★★✰✰✰ 多种加密算法支持 HaoZip 国产免费工具,集成功能多 是 ★★★✰✰ ★★★✰✰ 看图、PDF 预览
市场与产品生态:
-
核心用户群:该产品的核心用户群体十分丰富,基本涵盖了所有使用电脑的用户,同时由于大部分人(普通用户,对安全加密与压缩性能并不关心)对于压缩软件的高级需求并不强烈,更多的只是简单能用即可。
-
而对于其余7-Zip的用户我们可以分为以下几种:
-
技术爱好者:对 7-Zip 进行二次开发或优化,可能会在 GitHub、论坛等技术社区讨论改进方案。
-
IT 从业者:需要处理大量文件或自动化脚本,可能会在企业或服务器环境中批量使用 7-Zip。
-
数据分析师:利用 7-Zip 处理和压缩大规模数据,提高存储和传输效率。
-
安全隐私领域用户:关注 7-Zip 的加密功能,利用其 AES-256 加密特性保护敏感数据。
对于以上几类用户我们可以分别构建两种产品生态:
-
技术社区生态:在 GitHub 等平台上鼓励开发者贡献代码,改进 7-Zip 的性能、安全性和功能。
-
普通用户生态:在 媒体/论坛等频台 通过用户反馈来改进 7-Zip,比如优化界面、提升易用性等。
-
产品规划:
- 你要在当前软件的基础上设计什么样的新功能?为何要做这个功能,而不是其他功能?为什么用户会用你的产品/功能?你的创新在哪里?
“NABCD”是由Need、Approach、Benfit、Competitors、Delivery五个单词的首字母组成,分别指需求、做法、好处、竞争、推广五部分。通过这五部分,可以清楚简明的把项目的特点概括出来。
N(Need 需求):为什么要做这个功能,而不是其他功能 -> 用户需求?
目前,7-Zip 主要作为一个高效的压缩工具,但在文件管理和云存储集成方面仍有改进空间。我的新功能是 "智能文件管理 & 云同步",核心目标是:
- 自动分类:让用户可以智能归档、分类、标签化管理压缩文件。
- 云存储一键同步:支持用户将压缩文件直接同步到OneDrive、阿里云等平台。
A(Approach 做法):如何实现?-> 技术
通过行业最佳实践技术:机器学习对用户历史进行学习:
- 使用机器学习实现文件智能分类,用户不用手动归类。
- 利用云存储 API 来实现云同步,而不是自己造轮子。
B(Benefit 好处):为什么用户会用你的产品?
- 提高工作效率:不需要手动分类、搜索和整理压缩文件,减少时间浪费。
- 增强云端协作:用户可以直接在 7-Zip 中管理本地和云端文件,减少额外的上传操作。
C(Competition 竞争):有什么创新?相比其他产品的优势?
- 比 WinRAR、PeaZip 更智能:目前 WinRAR 仅提供基础压缩功能,没有 云存储集成、智能分类、AI 压缩推荐。
- 比传统云存储更方便:Google Drive/OneDrive 仅提供文件存储,7-Zip 结合 压缩 + 云端管理,形成更高效的文件管理体验。
- 更适合专业用户:对于 IT 从业者、数据分析师,智能分类和云端存储功能可以大幅提高效率。
D(Delivery 推广)怎么把自己的产品推广出去
- 论坛推广:软件新的功能面向技术性专业性更强的用户,因此我们可以考虑在GitHub等技术论坛对产品进行推广。
- 用户留存:对于已经使用7-Zip的用户,也许他们并不会注意到产品的更新与新功能的推出,因此我们可以向这些用户推送邮件已经在使用时进行提醒。
- 体验邀请:我们可以向一些从业人士主动提出试用邀请,积极的反应与良好的口碑会在相关从业者间口口相传达到推广的效果。
为了在 16 周内完成 7-Zip 的改进版本并发布,下面是我的团队分工:
角色 | 人数 | 主要职责 |
---|---|---|
项目经理(PM) | 1 | 需求分析、任务分配、进度管理、沟通协调、市场推广 |
后端开发 | 2 | 负责文件智能分类、推荐算法、云存储 API 集成 |
前端开发 | 2 | 设计智能管理界面,开发前端交互功能 |
测试工程师 | 1 | 负责功能测试、性能测试、兼容性测试 |
UI美工 设计师 | 1 | 设计更现代化美观的 7-Zip 界面,优化用户体验 |
开发规划
阶段 1:需求分析 & 设计(Week 1-3)
周数 | 任务 | 负责人 |
---|---|---|
Week 1 | 需求调研,竞品分析(WinRAR、PeaZip) | PM |
Week 2-3 | 确定功能列表,画流程图 | PM & 开发 |
Week 1-3 | 技术选择(云存储 API、推荐算法) | 开发团队 |
Week 1-3 | UI 设计图 | UI 设计师 & PM |
阶段 2:开发阶段(Week 4-10)
周数 | 任务 | 负责人 |
---|---|---|
Week 4-6 | 文件智能分类 与 智能推荐算法 | 后端开发 & PM |
Week 7-8 | 云存储 API(阿里云, OneDrive) | 后端开发 & PM |
Week 4-8 | 前端 UI 与 交互开发 | 前端开发 & UI设计师 |
Week 9-10 | 后端与前端对接 | 开发团队 |
Week 4-10 | 单元测试 | 测试工程师 |
阶段 3:测试 & 迭代(Week 11-14)
周数 | 任务 | 负责人 |
---|---|---|
Week 11-12 | 功能测试 | 测试工程师 |
Week 13-14 | 性能测试 | 测试工程师 |
Week 11-12 | UI 体验优化 | UI 设计师 & 开发 |
Week 13-14 | Beta 版发布,收集用户反馈 | PM |
阶段 4:推广 & 发布(Week 15-16)
周数 | 任务 | 负责人 |
---|---|---|
Week 15 | 修复最终 Bug,准备发布 | 开发团队 |
Week 16 | 发布正式版,推广到 GitHub & 社交媒体 | 开发团队 |