任务分解及时间估计——以Phyphox为例

1 前言

在项目开发时,需要确定项目需要完成的任务。在需求确定好后,可以通过任务分解、估计各部分任务的用时,来帮助确定项目的总体工作量。通过将一个较大的任务分解成子任务,可以使得项目更加易于管理。

以项目整体为单位估计项目所需时间(工作量)是粗略的,误差较大。根据子任务估算时间,可以提高估算项目所需时间的准确性。因此,有必要练习任务分解和时间估计。本文以手机物理实验软件Phyphox为例,介绍本次练习的分析过程。

2 WBS简介

项目任务分解的一个常用的手段是工作分解结构(Work Breakdown Structure, WBS)。WBS可以以层次结构图的形式体现。本次练习根据需求描述得出WBS层次结构图,其对应一级功能、二级功能、三级功能。

3 Phyphox功能需求提取及时间预估

本部分介绍Phyphox的功能界面,从中提取出功能需求,预估所需时间。

3.1 一级、二级功能提取及时间预估

Phyphox的Android端主界面如下图所示。

从主界面中可以发现App分为原始传感器、力学、声学、工具、日常生活、计时器几大模块,将其作为一级功能。每个大模块下有一些子模块,以计时器为例,可分为光学秒表、声学秒表、运动秒表、近距秒表几个子模块。将这些子模块作为二级功能。

至此,提取出的子模块类型可以用如下的WBS图表示。

主界面预估8小时完成,目前得到的二级功能仍可细分,因此在本阶段暂时不做时间预估。

注意到右下角有一个Floating Action Button(下文简称FAB),点击查看其包含的功能,如下图所示。

在Android Material Design库里有FAB组件,预估需要3小时完成库引用及点击事件逻辑编写、动画弹出。从FAB点击后的界面中可以提取出“新建简易实验”、“从二维码添加实验”、“为蓝牙设备添加实验”三个功能模块。此处的实验是前文已经提取出的实验,从二维码添加、为蓝牙设备添加都属于实验数据的传输,因此将其定义为公共模块下的“数据传输模块”。同时,主界面和右下方的Floating Action Button可以定义为公共模块下的“界面模块”。至此,WBS图如下图所示。

3.2 三级功能提取及时间预估

在上一节的分析中,已经得到了二级功能,本节将二级功能分解得到三级功能,同时预估各三级功能完成的时间。

3.2.1 原始传感器

以光传感器为例,点击进入光传感器的界面如下图所示。

注意到界面顶部有一个标题栏,上方有运行实验、删除等操作。光传感器有两种数据显示方式,分别为图表和简明值。

接下来分别点击加速度、定位、磁力计、陀螺仪等功能,发现每个功能均有界面顶部的标题栏,因此该标题栏可以作为公共模块下界面模块的一部分,预估4小时完成。同时,发现每个功能虽选项卡数量不同,但数据显示方式只有两种:一种是图表形式,一种是文字形式。因此,将它们提取为公共模块下的数据显示模块。图形化显示预估7小时完成,文字形式显示预估4小时完成。

进一步分析发现,图形化显示支持用户点击后对图形做一定的处理操作,如下图所示。

此时,在数据显示模块下可以提取出图形数据处理子模块。考虑到有平移、缩放、选取、重置缩放、时间转换、跟踪新数据、线性拟合等处理手段,这部分预估20小时完成。同时,在该界面发现支持数据的导出,将数据导出提取为公共模块下数据传输模块的子模块,预估10小时完成。

原始传感器下的三级功能可以按以下标准估计。

(1)传感器数据的读取。这些三级功能是获得手机传感器提供的数值,每个传感器读取功能均预估4小时完成。

(2)传感器数据的显示。由于已经有可复用的图形显示模块和文字显示模块,每种显示方式只预估2小时完成。如一个功能下存在多张图表或文字,将根据图表或文字的相似程度适当缩短预估时间。如,读取到的数据分x,y,z三张图,由于它们拥有相似性,预估为4小时,而非6小时。

3.2.2 力学内置实验、声学内置实验、内置工具

以“向心加速度”为例,界面如下图所示。

可以发现,这里使用读取到的传感器数据,利用公式做计算和处理。同时,以图表或文字方式展示数据。

在一些实验中,支持用户设置实验的参数,如下图所示。

还有一些实验有独特的功能。例如,在声音频谱实验中,支持生成白噪声。

本节提取出的三级功能可以按以下标准估计。

(1)数据计算与处理。指利用公式得到实验数据的过程。根据公式的数量和难度估算。考虑难度是因为复杂公式验证正确性时会有更大的工作量,而简单公式相对更易验证。

(2)数据显示。与3.2.1部分所述数据显示标准相同。

(3)实验设置/数据输入。指设置或输入实验的参数。每个子功能预估3~4小时完成。具体为3小时或是4小时,是根据参数的数量决定的。

(4)其他功能,如白噪音生成。根据实现难度单独估计。

3.2.3 日常生活

以掌声计为例,其界面如下图所示。

该功能与其他实验相比,用户可以通过操作按钮控制图表和文字数据,即控件和点击事件。这部分预估6小时完成。分数数据的计算预估4小时完成。分数数据显示预估2小时完成。

由于暂时无法找到支持本部分另一个功能“电梯速度”的设备,使用“掌声计”功能相同的估计时长来近似。

3.2.4 计时器

以“光学秒表”为例,界面如下图所示。

本部分“光学秒表”“声学秒表”“运动秒表”“近距秒表”四个二级功能下包含的三级功能界面和步骤与前文已介绍部分相似,可以总结为以下三个步骤:

(1)实验设置与展示。向用户展示实验可设置的项目,支持用户设置。预估5小时完成。

(2)实验数据记录。根据用户的设置完成实验数据记录。预估5小时完成。

(3)实验数据处理及展示。向用户展示实验结果。预估5小时完成。

3.2.5 扩展实验

Phyphox还支持用户扩展实验,这是通过一个可视化编辑器实现的,文档参见https://phyphox.org/wiki/index.php?title=Experiment_editor。这部分可分为输入、输出、视图、分析、导出、XML生成几个功能。根据文档描述功能及演示视频,分别预估时间为输入20小时、输出20小时、视图20小时、分析72小时、导出10小时、XML生成10小时。

同时,Phyphox支持在Android端导入实验,也支持在Android端添加简易实验。实验的导入估计需要40小时、简易实验添加预计需要20小时、实验保存预计需要15小时。

3.2.6 WBS图

至此,得到的WBS图如下图所示。

3.3 调整优化

(1)所有的内置实验和内置工具均使用了原始传感器数据,因此可以将原始数据读取的部分提取出来作为公共模块。

(2)有一些未提取的其他界面(对话框、提示框等),预估8小时完成。

(3)Phyphox支持使用PC远程访问手机上的数据,预估150小时完成。

根据以上几点调整优化,更新WBS图,如下图所示。

4 难点、风险点识别

本部分介绍识别到的项目难点及风险点。

(1)公共模块-数据传输模块下的远程访问与控制模块。

(2)扩展实验-可视化编辑器端-输入、输出、视图、分析模块。

(3)扩展实验-Android端-实验文件解析与导入。

难点和风险点(1)(2)规模大,是单独的子系统,且估算时间准确度低于Android端功能点。难点和风险点(3)在实现过程中需要对自定义的实验格式做正确的解析处理,有一定实现难度。

5 反思与总结

在起初分析该项目工作量时,对项目工作量有低估。以下反思总结原因。

(1) 对App了解程度不足。我体验时,仅下载了App在手机端体验,没有体验网页版的可视化编辑器,导致当时分析工作量时忽略了“自定义实验”、“通过电脑远程访问手机上的数据”两个重要功能。这两个功能在细致分析的时候都变成了难点。

(2) 分析时过于注重了局部的实现技术。虽然读取传感器是本App重要的实现手段,但是一些其他功能,比如如何处理、显示读取出来的数据;如何将传感器读到的数据和领域知识结合构成有意义的实验;如何支持用户自定义实验等,都是实际开发中需要面对的问题。起初的分析过于注重传感器读取的局部技术实现方法。

(3) 测试、模块之间存在依赖等问题也需要工作量。

 

以后在分析工作量时需要注意思路的调整。

附录 

功能分解及预估时间表格

注:标红部分为识别到的风险点与难点。

posted @ 2022-10-18 23:22  OurShiningDays  阅读(548)  评论(0编辑  收藏  举报