实用项目:分析
在你开始制作你的项目之前,你需要知道你要做什么。这就是分析发挥作用的地方,它也值 9 分,占整个项目的 12%!我们最好开始吧。
希望你现在已经对你的用户以及他们想要你做什么有了一些想法,我们需要将所有内容都编纂(写下来)以便我们开始获得一些分数。考试委员会非常友好,如果你查看评分标准,他们甚至会提供一个清单,列出了你需要在你的分析中包含的内容。我们将以这些作为我们的标题。
这应该是首先做的。你已经对需要呈现的部分有了一些想法,所以你应该为你的主要用户准备一些问题,以获得你开始构建这些问题的答案。从你的研究中,你需要了解以下内容
- 当前系统及其运行方式
- 当前系统的缺陷
- 用户
- 使用它的用户的技能水平
- 他们希望新系统做什么
- 在基于 Web、基于手机、基于应用程序方面的任何偏好。你正在为哪个平台开发
结构化访谈可能会有用,你需要记录下对每个问题的回答。你应该尝试理解当前情况和问题,建议你执行并证明至少两种以下方法并解释你使用每种方法的原因
- 访谈
- 问卷调查(针对多个用户)
- 观察当前系统
完成研究的介绍后,你需要总结研究结果并解释你使用每种研究方法的原因。
不要忘记
|
你需要介绍你的问题,简要概述问题是什么以及计算机如何解决它。例如,提到当前系统是基于纸质的,速度很慢,人们经常丢失东西,计算机系统会更快、更安全,并允许他们运行报告和计算。但在此时不要提及任何语言或数据库,我们将在分析结束时决定。
描述当前系统,它做什么以及它如何存储数据。描述当前系统的缺陷,它速度慢、安全、易于查询、易于使用吗?可以允许多个人同时使用吗?它易于访问吗?使用尽可能多的资源来支持你的描述,包括访谈、观察和图片。这将证明给标记员你的项目有一个真正的客户。
在某些情况下,你的系统只涉及一个用户,就是你为其编写系统的人。但在大多数情况下,它会涉及不止一个人。你需要识别所有使用你系统的用户,无论大小。
例如,如果你正在制作一个数学复习网站,那么你的主要用户是数学老师,但还有谁会使用该系统?当然还有学生!然后你需要写下这些用户组中的每个人如何使用系统,以及一些用户如何拥有比其他用户更多的访问权限。老师应该能够更改测试并查看所有学生的成绩,他们应该能够添加和删除学生用户。学生应该能够参加测试,并且只能查看他们的成绩。
例如,如果你正在制作一个库存控制系统,那么系统管理员应该能够添加/删除/更新和重新订购库存商品、运行报告以及添加/删除/更新用户和供应商。一般商店员工只能销售商品并打印收据。客户不会直接使用该系统。
你还应该提及每个用户的技能。例如,如果他们一直使用 Mac,那么类似于 OS X 接口的界面会很有用。如果他们使用 Microsoft Office 2010,那么类似于该软件套件的界面将很合适。
总结你的研究结果,你的每个用户都希望你做什么?例如
老师需要我创建一个系统,它
- 存储学生的最高分
- 显示学生的进度
- 允许他们添加、编辑和删除问题
学生需要我创建一个系统,它
- 允许他们登录
- 允许他们回答考试风格的问题
限制稍微难以列出。你需要写下你的系统将不会做什么,因为时间、复杂性或用户偏好的原因。这些可能包括系统不会存储用户登录信息,因为这些信息将由 LDAP 管理,或者系统不会强制执行台球上的旋转,因为这个特定功能不是老师需要的,并且开发人员没有足够的时间来实现它。
数据源和目标
[edit | edit source]大多数情况下,你会使用数据库,但你也可以使用基于文件的系统或 xml。到目前为止,你应该已经提到了你的项目需要存储和处理的一些内容(这些内容应该来自你的访谈)。你将从哪里获取这些数据?
- 是什么 -> 来自哪里 -> 到哪里去
例如,当前系统可能显示
是什么 | 来源 | 目的地 |
---|---|---|
客户信息 | 填写表格的新客户 | 客户纸质记录 |
考试题目 | 往年试卷和老师 | 学生的复印件 |
新系统将如下所示(注意可能有一些额外的属性)
是什么 | 来源 | 目的地 |
---|---|---|
客户信息 | 填写在线表格的新客户 | 客户数据库表 |
考试题目 | 往年试卷和老师 | 问题 XML 文件 |
管理员信息 | 经理 | 用户数据库表 |
数据量
[edit | edit source]构建任何系统时,需要考虑的一个重要因素是需要存储多少数据以及需要多少处理。这应该直接来自你的研究,并将影响你如何完成项目以及需要使用什么样的硬件。例如,如果只有一人同时参加在线测试,那么只需要一台简单的计算机。如果你希望数百人同时使用你的系统,那么你需要一台非常快的计算机,并且可能需要一个基于 Web 的解决方案。
例如
- 我将存储数百个客户,并且...
- 复习系统将存储多达 100 个不同的问题和 300 个学生信息
- 每个学生将记录他们在每个问题上的尝试次数,可能产生 300*100 = 30000 个问题答案结果
- 系统只需要一次处理一项销售,因为...
数据字典
[edit | edit source]就像字典描述你在句子中可以使用的所有单词一样,这将记录要在系统中存储和处理的所有数据。你需要为所有存储数据的项目提供以下信息
字段名称 | 字段用途 | 字段类型 | 字段大小 | 示例数据 | 验证 |
---|---|---|---|---|---|
姓 | 存储玩家的姓名 | 字符串 | 30 | Peter | 不能为空 |
出生日期 | 存储玩家的出生日期 | 日期/时间 | DD/MM/YY (6 位数字) | 19/08/76 | 日期/时间格式 |
分数 | 存储玩家的最高分数 | 整数 | 4 | 7643 | 大于 0,小于 10000 |
如果你正在存储数据库,请确保已存储了数据库中所有字段的数据,例如,以上数据存储了学校学生的信息。为了让系统正常工作,你需要存储哪些数据?
如果你正在编写程序,你将需要列出程序运行时存储的所有变量。例如,如果你正在创建一个程序来统计某人在测验中获得的分数,你应该列出用于存储该分数的变量。
字段名称 | 字段类型 | 起始值 | 描述 |
---|---|---|---|
分数 | 整数 | 0 | 这将跟踪玩家的分数 |
姓 | 字符串 | NULL | 这将跟踪玩家的姓 |
出生日期 | 日期 | 01/01/1990 | 这将跟踪玩家的出生日期 |
警告:一个非常常见的错误是错误地设置字段大小。例如,你正在制作一个成绩簿系统,其中将存储学生的年龄。年龄在 11 到 16 之间,那么为什么不将年龄设置为 16 位长度?答案是,因为 16 位长度允许你存储年龄“9999999999999999 年”,而这不可能有学生(更不用说人类)活到那么大。长度应该更合理地设置为 3。虽然预期数字是两位数,但可以设想将来软件可能会扩展到用于年龄更大的学生,因此长度应该设置为涵盖这种可能性。不要重复“Y2K 问题”,其中开发人员将年份存储为仅两位数字,导致当年份“翻转”回零时,花费了数百万英镑来修复它。
数据流图
[edit | edit source]绘制数据流图的方法很多,所以如果你的老师告诉你一种方法,而你在这里读到的方法完全不同,不要担心。重要的是要展示数据如何在当前系统中移动,在哪里存储,在哪里处理,以及你计划如何在新的系统中移动它。毕竟它被称为数据流图!对于这些示例,我们使用 Gane Sarson 方法。
你需要注意四个主要组成部分
名称 | 描述 | 符号 |
---|---|---|
实体 | 这通常显示参与系统的所有 人员。它还可以指示你正在与之交互的其他外部系统 | 圆圈 |
过程 | 这描述了数据从 一个位置移动到另一个位置时对数据进行的 处理,它接收数据 输入,并将 输出到数据存储、另一个进程或实体 | 正方形 |
存储 | 通常,这表示用于 保存数据 的不同计算存储,例如硬盘文件、数据库、CD-ROM 等。 | 矩形 |
传输 | 这显示了 数据 如何从系统的一部分移动到另一部分。你需要对箭头进行标记,以解释究竟是什么在移动。 | 箭头 |
使用这些描述,我们可以看到上图的意思如下
- 客户可以咨询商店商品,系统处理咨询并将数据从商品数据存储中提取出来,并将结果发送给客户
- 客户可以订购商品,系统检查客户是否真实,检查商品是否有库存,发送订单,最后将商品和发票发送给客户。
你需要绘制四张数据流图,其中两张显示当前情况,两张显示提议的系统(这在当前规范中不是必需的)。对于每张图,你必须显示以下图表
- 0 级
- 1 级
你可以使用文字处理器来制作它们,但使用专门的软件要容易得多。你可以尝试使用 dia 或 Open ModelSphere,它们都是免费的。或者,你可以使用 Microsoft Visio。
扩展:用例
|
实体关系图(用于数据库)
[edit | edit source]在考虑如何将数据保存到系统时,你可能会决定使用数据库,如果是这种情况,你必须包含一个 E-R 图。如果你不使用数据库,请说明不需要完成本部分。你需要识别你的主要表。应该至少有 3 个表以及它们之间的关系。这些表在此时不需要被规范化,但应该详细描述它们之间的关系。
- 参见关于 数据库 的章节
面向对象规划(用于面向对象)
[edit | edit source]对于您正在使用的每个类,请描述
- 它所做的事情的概述
- 继承
- 覆盖
- 公有和私有变量
- 公有和私有方法
例如,怪物类的属性可能包含
访问类型 | 字段名称 | 字段类型 | 初始值 | 描述 |
---|---|---|---|---|
私有 | 健康 | 整数 | 100 | 这将存储怪物的健康值,当健康值降至 0 时,怪物应该死亡 |
私有 | x | 整数 | 0 | 这将跟踪怪物的 x 位置 |
您还需要注意怪物类将使用的方法
访问类型 | 方法名称 | 参数 | 返回值 | 描述 |
---|---|---|---|---|
公共 | 向左移动 | 无 | 无 | 这将使怪物向左移动 3 个点 |
公共 | 伤害 | 伤害 | 怪物当前的健康值 | 这允许您伤害怪物 |
- 参见关于面向对象编程 的章节
目标
[edit | edit source]这是您分析中最重要的一部分,因为这是您将如何检查您的最终系统是否满足所有用户需求。您需要概述三组目标,所有目标都符合 SMART 原则并编号
- 系统目标
- 处理目标
- 用户目标
尽可能地,所有目标都应符合 SMART 原则。但 SMART 意味着什么?
字母 | 主要术语 | 描述 | 示例 | 不可接受! |
---|---|---|---|---|
S | 具体 | 确保它不含糊不清,并且与您系统的某个部分相关 | 系统应该能够以降序显示 5 个最高分 | 我的系统应该很好 |
M | 可衡量 | 有没有什么方法可以轻松地证明您已实现此目标。 | 每个页面应该在 5 秒内加载 | 我的页面会很漂亮 |
A | 可实现 | 确保在可用的时间和资源内,您将能够完成此目标 | 我的系统将允许保存用户偏好 | 将有一个面部识别系统,允许用户登录系统 |
R | 相关 | 这个目标将帮助您满足用户需求吗? | 收据将被打印并发送到客户的电子邮件 | 我的收银系统将在后台播放 MP3 |
T | 有时间限制 | 您在完成此项目的时间上是有限的。您必须在您的分析中列出截止日期,并且您能及时完成每个目标吗? | 我将使用 2D 矢量图形在地图上显示玩家位置 | 游戏将具有与英雄联盟一样好的 3D 图形 |
正如您可能认识到的,上面几个不正确的目标未能满足多个 SMART 标准。测试自己,哪些目标足够 SMART,可以帮助您开始一个好的项目
系统将允许员工更新库存和添加新的库存项目。<click> | ||
|
运动俱乐部系统将在每个页面上显示当前时间。<click> | ||
|
系统将使用自定义代码来解释和显示 SVG 游戏图形。<click> | ||
|
系统将计算并显示每个客户的总销售额。<click> | ||
|
系统将每秒处理 5,000,000 笔交易。<click> | ||
|
不要忘记
|
潜在解决方案
[edit | edit source]您可以通过多种方式解决手头的問題,您需要列出至少 3 种不同的选项。对于每种选项,您需要提到正面和负面,然后论证您选择的解决方案。
例如,如果我被要求制作一个库存控制系统,我可以使用以下内容(更详细!)。
建议的解决方案 | 优点 | 缺点 |
---|---|---|
Excel 和 VBA 桌面应用程序 | 我知道如何使用 Excel 用户也有 Excel 使用经验 Excel 和 VBA 将允许我执行计算并显示结果 |
Excel 是一个扁平文件数据库,不会让我处理数据之间的链接。 解决方案只能在离线状态下使用 |
Visual Basic.NET 应用程序和 Access 数据库后端 | 我从第一年开始就有一些 Visual Basic 的经验 VB.NET 让我可以轻松地构建一个具有类似于 MS Office 程序的界面的解决方案 他们已经拥有 Access 并使用 Windows |
我需要学习更多 VB.NET 来完成这个项目 这个解决方案只能在离线状态下使用 |
ASP.NET 和 MSSQL 数据库网站解决方案 | 这个解决方案将允许用户在线登录。 关系将是可以强制执行的 我将能够使用 SQL 来执行搜索 |
我在 ASP.NET 上还有很多东西要学 用户不需要从多台计算机访问它 它需要一个服务器和网络知识 |
选择的解决方案
[edit | edit source]从您建议的选项中选择最佳选项并解释原因。这将是您解决这个问题的方式!
其他证据(可选)
[edit | edit source]在本节中,您需要证明您用来编写分析的技术是正确的,并确保您设法获得了新系统的全部目标。返回问卷、面试和观察。将它们包含在这里,并解释这如何确保您可以制作一份全面的分析。
下一步
[edit | edit source]现在您已经完成了分析,您需要开始制作您的项目。您应该对如何制作系统有一些想法,现在您需要开始学习完成这个项目所需的所有技能。为您的编程语言选择一本教科书,并确保您可以使用它执行一些简单的任务。此时,最好编写一个快速列出您需要学习的技能的清单。
在您获得这些技能的同时,请前往设计