如何分析APP功能需求、结构

简介: <p><br></p> <p style="text-align:center"><span style="font-size:24px; color:#3366ff">如何分析APP功能需求、结构</span><br></p> <p></p> <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-


如何分析APP功能需求、结构


         APP分析过程在项目管理体系PMBOK中归属于项目范围定义(Define Scope)过程。从PMBOK的角度来看,在完成需求收集(Collect Requirements)后,需要对项目和产品的详细范围进行描述,清晰完整的项目/产品范围说明书有利于制定出具有良好执行性的WBS(Work Breakdown Structure),但其更为重要的意义在于科学的构建了用户所需要的系统功能架构


        从业务演变到系统的角度来看,APP是业务在系统的具体呈现,APP的分析过程是将业务语言翻译为机器语言的表现。只不过这不是普通的翻译,是包含了智力和经验的过程。所以,对于计算机信息领域的技术专家来说,更需要去学习和掌握跨领域的业务语言,并在不同领域的交界处形成明确的定义,实现不同语言间的准确对应。


         举个例子,假设在电子商务领域里有一个业务我们称之为A:用户通过网站填写了一份购买汽车坐垫的订单,付款成功后可以通过连接电脑的打印机自动打印一份A4幅面标准格式的确认单。那么在信息系统的世界里,A被翻译为:1、用户通过web表单填写完订单内容后;2、在线支付。2.1、如果支付不成功,系统提示用户哪里出现错误,并引导用户修正错误。2.2、如果支付成功,系统提示用户:订单已经生效,系统即将打印确认单。3、系统传递打印控制信息,打印机负责打印出指定格式的文件。4、系统提示交易完成。


        上面的例子说明了不同的领域有不同的表达标准,想要在不同领域都能准确表达同一个意思,将是非常困难的事情。

        在计算机领域,信息系统的APP的设计过程非常的复杂,不只是纯粹的描述计算机处理流程那么简单,还包括了抽象过程(建模过程),设计过程(包括系统流程设计、功能设计、权限设计、用户体验设计、异常处理设计等等),测试过程(建立demo,必要的验证)。而在这些过程中,建模环节是最为重要,也是最为复杂的一个步骤。


举个例子来说明为什么说业务建模过程最为关键、也最为复杂:

        假设家里有很多的杂物被堆放在不同的角落里,有衣服,裤子,鞋子,碗,清洁剂,锤子,可折叠的小凳子等等,家里每个人都会用到其中的某些物品。久而久之,大家都觉得这些东西胡乱放置,既不利于保管、用时也不方便找到。于是,大家推举你来解决这个问题,并给你提出了很多好的建议。例如,把这些东西整理到一个角落放置,给每个物品一个固定的位置,可以请木工打个大木箱子来放置,也可以去家具商店买个好点的柜子来放置,又或者买几个大的袋子分类来装。最后,一家之长告诫你:在投资允许的情况下,尽可能的选择最好的一种方案来满足家里所有人的需求。


那么这个时候,你应该怎么去做呢?让我来试着描绘一种可能成功的做法。

Ø  首先,对每个人的需求进行登记。即收集需求的过程(Collect Requirements)

详细的与每个干系人(Stakeholder)进行沟通,识别出每个人的一些行为特性,例如:

1、 你一般什么时候去哪儿哪些物品哪些事情什么时候又还原回去?(流程)

2、 这些物品有些什么保管的要求?(功能需求)

3、 你希望去哪里去取最方便?(非功能需求)

4、 有别人和你一起用这些物品吗?(权限要求)

5、 大致预算在什么范围,等等(限制条件)

Ø  对需求展开分析,进入设计和构造阶段。即需求的定义过程(Define Scope)

1、 对收集的信息展开分析。保留有用的,去除相同的和无意义的需求。(需求过滤

2、 对物品进行逐一的分析,整理归类。确定物品分作哪些类别,例如,衣服类,鞋类,餐具类,清洁剂类,工具类,小家具类等。(分类&抽象

3、 确定每个类别的行为特性,尺寸大小,放置要求等。

例如,

衣服类物品要求存放于封闭、干燥的环境,拿取方便、好查找,部分衣服要求挂放,需要足够的空间;

鞋类要求每双鞋都单独放置,存放时能具备一定的空气流动性,要方便查找和拿取;

餐具类,要求单独存放,最好放在与水池较近的地方,要求能封闭放置,能在需要的时候进行通风干燥处理,储物构造的材料要求 防水;

清洁剂类,没有特别要求,只需要和衣服类,餐具类分开存放即可;工具类,……(抽象&分析


形成初步的设计方案。设计思路为,配置两个不同的储物柜解决储物的问题

一、在靠近厨房的角落设计一个三栏式的壁挂组合储物柜,采用防火,防腐蚀的UV板材

设计为挂式的原因是,节省房屋的空间,利于时常打开柜门通风;大人拿取方便,也防止小孩子随意拿取玩耍而摔破;三栏结构可以分开放置餐具类、清洁剂类物品和工具类物品,空间设计更为合理。

二、在靠近卧室的角落放置一个落地的多功能储物柜

储物柜设计为三层的实木结构,下层主要放置鞋类,其后面板和内隔档板采用镂空设计,内置4个隔层,总体高度约占柜体的1/4。镂空和隔层设计主要起到通风干燥和分类放置便于取放的作用;中间层为抽屉式设计,主要放置可以摺叠放置的衣物;而一些需要挂置的衣服则挂放在上层。在储物柜的顶上还可以放置一些小家具,例如摺叠的凳子,卷席等。另外,采用全实木材料还以防止甲醛等有害物质的侵害。(建模过程



Ø  验证设计的成果是否满足干系人需要。即范围确认过程(Verify Scope)

形成结论后,召集相关干系人商议、评估方案。一般依据业务程度,可以采用简单的评审(团队内部小范围的评审)或复杂(有客户、用户或者专家参与)的评审方式。

一旦方案得到大家的认可,则可以进入实施过程了,这时可以再推举一个人作为实施的负责协调人,由他来控制预算,制定行动计划,确定需求的优先级别,落实方案的执行。

 

        从上面的例子可以看到,设计和构造阶段中建模(Build Model)是整个APP设计过程中最具有技术含量的一个环节,不仅需要依靠知识和经验,还需要较强的逻辑能力,构思和策划能力。

其实,这么多年来我们在做需求分析和建模时,也是有一定的规律可遵循的,我用一句话来概括就是:

从业务对象入手,识别业务对象的行为,抽象APP,从而构造系统模型


下面用网上订票的例子来详细说明我们的做法:

假设,我们已经知道了用户的业务流程。

第一步:用户通过浏览器登录web网站,浏览和查询需要的信息。

第二步:选择票,填写订单信息,确认个人的信息,以方便取票时核对。

第三步:通过网站提供的支付方式,在线完成支付。

第四步:系统生成电子票号,并短信通知订票人,告知用户出票相关的信息和兑票方法。


具体参见下图:


        前面我们说到:业务的核心是数据所以,理清业务的基础是分析清楚业务下流动的数据都有哪些,这些数据分别代表了什么意义,对应了哪些业务对象。


所以,第一步我们分析业务中包含了哪些业务对象。

Ø  业务对象分析(确定BO)

        

在线订票业务中,有登录、填写订单、支付和出票四个环节。

仔细分析,我们发现,这四个环节分别包括了四个相对独立的业务对象:用户、订单、账单和票。(这里没有把手机短信也列为一个业务对象)

订票过程的所有活动都是围绕这四个对象来开展的,少了任何一个对象,这个流程都是不完整的。

那么在识别BO的时候,我总结了几个简单的标准:

1、 该业务对象是否有一定的明确业务含义,如果少了这个BO业务流程将不完整。

2、 业务流程中一定有一个或多个环节是有这个BO参与的。

3、 大多数BO往往是可以映射到现实生活中的某一类物体的。例如,人,账单,公司,电话,系统,卡,存折,车辆,身份证等等。

另外,我们在判断是否所有的业务对象都被识别时,也有一个很简单的判断标准:业务流程中可能涉及的数据内容都与已经识别的业务对象能紧密关联上

 

在确定BO后,需要分析和识别所有与业务对象相关的行为。

Ø  识别与BO相关的行为(BO属性和行为分析)

BO本身是有意义的,这些意义可以被细化为一些属性。我理解,属性就是说明和识别BO某一方面的一些具体标识或参数。

识别业务对象属性时,最重要是能分清楚哪些属性是与目前工作范围相关的。例如,用户有很多属性,但高矮胖瘦这些与我们正在分析的电子商务系统毫无关系,所以,找到BO属性并准确过滤才是这个过程的关键行为。



(在正式的团队协作过程中,必须要对每个BO,BO的属性和BO的行为进行统一编号标识。)


我们在识别BO的行为时,可以分为三个层次:

1、从业务流程中识别。从流程中只能识别一部分BO的行为,这一部分行为往往被称之为业务行为;也是BO最容易确定的一类行为,只要流程定义清楚了,这类行为就已经被确定了。例如,在上面的例子中,用户在流程中有登录和注册行为;针对订单对象,有填写订单,提交订单行为;账单对象有支付行为等。

2、从分析BO的完整性来识别。例如,用户有登录,就一定有注销行为;订单能新增,一定可以修改和查询;账单能支付,也可以退款。

3、从外部的需要来识别。例如,电子票本身是没有核对识别需要的,但考虑到安全性,一些运营商还是考虑了将电子票号进行了加密处理,票号本身含有身份识别信息。一旦电子票号遗失,只要有身份证信息,则电子票仍能使用。

通过三个层次的分析,一般能识别出绝大部分的BO行为,当然,还需要对这些识别的行为进行统一的描述。描述的内容包括行为名称,行为说明,涉及的BO属性和变化。例如,



        在识别BO行为的过程中,我们往往会遇到一些模棱两可的境地,例如,商品和购物车是两个不同的业务对象,那么将商品添加到购物车的行为,是归属商品的行为,还是购物车的行为呢?

有人说是购物车的行为;有人反问,为何这个行为主要出现在商品的单页上?

        我的意见是:当行为涉及到两个对象,一般把其归属到拥有管理职能的对象。购物车管理被放入的商品,管理放入的数量,也可以从购物车中删除。所以,放入购物车的行为主体对象是购物车。识别了BO,BO的属性以及BO的行为后,我们可以开始建立APP了。


Ø  建立APP

建立APP的过程是明确系统范围的过程,同时也是生成系统模型的过程。

建立APP有两种视角:

1、一种是以BO为视角,聚合BO的行为,以管理BO的功能组成一个APP;例如,我们将针对订单的所有行为,组合成为一个APP,称为订单管理。

2、另外一种是以业务为视角,聚合一个流程的所有环节,以实现流程的功能组成一个APP。例如,我们将针对打折票的预定流程中的所有行为环节,组合成为一个APP,称为折扣票预定APP。


具体参见下图:


但不管怎么组织APP的构成,在BO层面看,都是一样的:系统都是由操作BO的一堆行为构成的。

 上面是从业务分析BO,分析BO的属性行为,然后组织APP。

       然而,此刻还不能完成系统模型的构建,因为还需要思考这些已经被识别的APP是否足够支撑一个应用系统?

这里需要引入两个重要设计分析过程:一个是用户体验设计,一个是非功能设计


用户体验设计(User Experience)是以用户为中心的设计,是一种经验与创造相结合的设计过程,主要目的是提升用户的操作舒适感,增强在同类产品中的竞争力。在web2.0时代,用户体验设计将不再局限于展现流程和完成数据操作方面,还承载了不同角色之间的信息多元化交互的设计需要,以用户为核心将不再是简单的信息提供(推送)而已。

         那么,在构建系统的APP时,也要充分的考虑UE设计的需要,加入一些用于提升用户体验的APP,例如,Dashboard。

       非功能设计来源于用户的非功能需求,例如,系统的可管理要求,灵活扩展要求,性能要求,安全要求等。这些设计除了在系统的架构设计时需要充分的考虑和满足,在功能APP设计时也需要做相应的响应。例如,最常见的一个APP-系统管理,通常包含数据管理,日志管理,参数管理,模型管理,模版管理,接口管理,APP管理等等。这些来源于UE设计和非功能设计的APP与最早被识别的业务APP共同构成了系统,行成了系统模型。

        系统模型构建完成,进入设计APP的阶段。在设计APP时,我们发现大型项目中的单个APP往往都很巨大,内部包含了很多行为和内容,如果不进行拆分细化,则很难展开有效的设计。

已经被我们熟知的拆分方法有很多,可没有一个标准去衡量一定要拆分为多少层级才合适,这往往需要视系统的复杂程度和设计需要而定。


         我建议把较大的APP拆分为三个层次,即:APP层,Module层和Function层,这样拆分的原因是为了与系统层面的功能模块-页面-和页面里的操作(或者一个单独处理单元)逐一对应。


参考:

http://blog.sina.com.cn/s/blog_5f63e3d80102v7f7.html




目录
相关文章
|
1月前
|
安全 定位技术 API
婚恋交友系统匹配功能 婚恋相亲软件实现定位 语音社交app红娘系统集成高德地图SDK
在婚恋交友系统中集成高德地图,可实现用户定位、导航及基于地理位置的匹配推荐等功能。具体步骤如下: 1. **注册账号**:访问高德开放平台,注册并创建应用。 2. **获取API Key**:记录API Key以备开发使用。 3. **集成SDK**:根据开发平台下载并集成高德地图SDK。 4. **配置功能**:实现定位、导航及基于位置的匹配推荐。 5. **注意事项**:保护用户隐私,确保API Key安全,定期更新地图数据,添加错误处理机制。 6. **测试优化**:完成集成后进行全面测试,并根据反馈优化功能。 通过以上步骤,提升用户体验,提供更便捷的服务。
|
13天前
|
移动开发 监控 小程序
TP6+Uni-app框架开发,2025年最新圈子系统功能展示,圈子app流量主模式
圈子系统基于TP6+Uni-app框架开发,支持多端账号同步并可快速生成APP。它适用于行业、地方、社交、游戏、兴趣等多种圈子场景,提供广告展示、商品销售、推广结算、交易佣金、入驻费用、会员增值及线上线下活动等多元盈利模式,帮助商户精准定位用户,实现流量变现和业务增长。
|
1月前
|
PHP
全新uniapp小说漫画APP小说源码/会员阅读/月票功能
价值980的uniapp小说漫画APP小说源码/会员阅读/月票功能
109 20
|
1月前
|
前端开发 数据库 UED
uniapp开发,前后端分离的陪玩系统优势,陪玩app功能特点,线上聊天线下陪玩,只要4800
前后端分离的陪玩系统将前端(用户界面)和后端(服务器逻辑)分开开发,前者负责页面渲染与用户交互,后者处理数据并提供接口。该架构提高开发效率、优化用户体验、增强可扩展性和稳定性,降低维护成本,提升安全性。玩家可发布陪玩需求,陪玩人员发布服务信息,支持在线聊天、预约及线下陪玩功能,满足多样化需求。[演示链接](https://www.51duoke.cn/games/?id=7)
|
1月前
|
移动开发 小程序 前端开发
使用php开发圈子系统特点,如何获取圈子系统源码,社交圈子运营以及圈子系统的功能特点,圈子系统,允许二开,免费源码,APP 小程序 H5
开发一个圈子系统(也称为社交网络或社群系统)可以是一个复杂但非常有趣的项目。以下是一些关键特点和步骤,帮助你理解如何开发、获取源码以及运营一个圈子系统。
148 4
|
1月前
|
小程序 安全 网络安全
清晰易懂!陪玩系统源码搭建的核心功能,陪玩小程序、陪玩app的搭建步骤!
陪玩系统源码包含多种约单方式、实时语音互动、直播间与聊天室、大神申请与抢单、动态互动与社交及在线支付与评价等核心功能。搭建步骤包括环境准备、源码上传与解压、数据库配置、域名与SSL证书绑定、伪静态配置及后台管理。注意事项涵盖源码安全性、二次开发、合规性和技术支持。确保平台安全、合规并提供良好用户体验是关键。
|
2月前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
2月前
|
NoSQL 应用服务中间件 PHP
布谷一对一直播源码服务器环境配置及app功能
一对一直播源码阿里云服务器环境配置及要求
|
2月前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
2月前
|
机器人
布谷直播App系统源码开发之后台管理功能详解
直播系统开发搭建管理后台功能详解!

热门文章

最新文章

  • 1
    DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
  • 2
    圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
  • 3
    【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
  • 4
    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 5
    电竞陪玩系统架构优化设计,陪玩app如何提升系统稳定性,陪玩小程序平台的测试与监控
  • 6
    京东商品详情数据接口(H5、APP 端)
  • 7
    年轻人如何运用圈子系统进行扩列,社交圈子论坛app扩列的好处,兴趣行业圈子提升社交技能
  • 8
    【Azure App Service】对App Service中CPU指标数据中系统占用部分(System CPU)的解释
  • 9
    【Azure Logic App】使用MySQL 新增行触发器遇见错误 :“Unknown column 'created_at' in 'order clause'”
  • 10
    app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈