Tag: 需求

iOS应用程序要求清单

当我们开始开发新应用时,通常会经过客户定义的要求,并开始考虑概念,体系结构和估计。 这些要求的范围可以从用几句话写成的模糊概念到带有模型,用例和接受标准的详细规范(很少有)。 但是,即使定义了产品的所有功能需求,也有一些事情被假定由客户完成,或者在定义规范时甚至没有考虑。 这可能是由于缺乏技术知识,假设或认为工作量太低而无法在以后定义的想法。 不幸的是,这些事情通常不会那么小,并且可能对项目成本产生重大影响。 这篇文章将探讨几种类似的情况,因此您可以粗略地概述并核对清单,以了解在项目开始时需要询问的内容。 在没有互联网连接的情况下使用应用程序可能会引起最大的误解之一。 如今,应用程序通常连接到后端系统上的REST服务,以获取所需的数据并将其呈现给用户。 当您有互联网连接时,一切都很好。 但是,需要尽快定义应用程序在您无法访问互联网时的行为方式,因为这会对项目的时间表和成本产生重大影响。 这里有几个选项。 这是最简单,最便宜的选择-如果没有互联网连接,该应用程序将无法运行。 每当对后端的请求失败时,应用程序应显示一个弹出窗口,指出发生了错误,并且需要显示该数据的屏幕为空。 这是一个更复杂的选项-您应该在连接可用时存储最新保存(或预先捆绑)的数据,并将其呈现给用户。 在这种情况下,您可以实现文件系统缓存,使用许多数据库选项之一,或者如果数据量很小,则可以摆脱“用户默认值”。 但是,您执行的任何需要在后端进行更改的操作(例如,我要离线添加产品)都是不可能的,并且会显示一个弹出窗口,您需要具有互联网连接才能执行此操作。 这是最复杂的选项。 它支持上面的只读模式,但是即使没有互联网连接,它也支持对数据进行更改。 为此,通常,您将需要在后端的数据库与移动电话上的本地存储或数据库之间实现同步机制。 同步机制需要进一步定义,因为其各种可能性会对项目的复杂性和成本产生不同的影响。 这里最复杂的部分是当移动应用程序和后端对同一组数据进行更改时会发生什么。 执行同步时,手机和服务器上的数据之间存在冲突。 有几种解决冲突的方法。 其中之一总是胜利 例如,可以说我们的冲突解决机制是从后端(或电话)获取最新更改并仅使用这些更改。 另一侧的更改将被丢弃。 这是最简单的选择,但它会导致丢失丢弃的数据,这对用户可能至关重要。 更好的选择是保留更改的时间戳。 当发生冲突时,我们将采用较新的更改并丢弃较旧的更改。 这种方法是对前一种方法的小升级,但是仍然会丢失数据。 两种方法中的快速优势就是要求用户选择他们想要保留的数据。 最复杂的方法是合并有冲突的数据,并以一种易于理解的方式将其呈现给用户,因此他们能够根据所做的更改查看要合并的数据。 它还应允许用户放弃合并并选择一侧或另一侧的更改。 类似于git或svn冲突解决方案。 如您所见,离线使用的复杂性从非常简单到非常复杂的实现不等,可能需要数周的开发时间。 很常见的误解。 如果该应用程序可以在iPad上运行,则应提前知道。 尽管每个负责任的开发人员都应使用自动布局,大小类和所有其他UI技术来实现灵活的布局,但这种要求需要事先知道,因为这可能会影响项目的组织和工作量。 另一个问题是iPad的屏幕要大得多,这意味着如果仅将iPhone应用程序缩放到iPad屏幕,则该应用程序的UI可能会非常空白。 要求iPad设计可以帮助计划和构建项目。 这同样适用于横向支持,在这种情况下,您始终应谨慎使用自动布局约束和对应用程序进行连续测试。 也应在项目开始时阐明受支持的最低iOS版本。 例如,请考虑以下情形:您需要开发增强现实应用程序。 您选择ARKit,开发所有内容,然后将要测试的应用程序发送给客户端。 但是,他们无法安装该应用程序。 他们的设备是装有iOS 10的iPhone 6。 您可以要求他们安装iOS 11,这已经引起了人们的注意,因为客户会急于检查市场上发行的OS版本。 iOS 10才使用了2年,因此缩小了该应用程序的市场规模。 当您最终说服他们安装iOS 11时,您意识到iPhone 6S及更高版本支持ARKit。 […]