跳转到内容

实用项目:分析

来自维基教科书,开放世界中的开放书籍

单元 4 - ⇑ 计算机实践项目 ⇑

← 选择项目 分析 设计 →


在你开始制作你的项目之前,你需要知道你要做什么。这就是分析发挥作用的地方,它也值 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 等。 矩形
传输 这显示了 数据 如何从系统的一部分移动到另一部分。你需要对箭头进行标记,以解释究竟是什么在移动。 箭头

使用这些描述,我们可以看到上图的意思如下

  1. 客户可以咨询商店商品,系统处理咨询并将数据从商品数据存储中提取出来,并将结果发送给客户
  2. 客户可以订购商品,系统检查客户是否真实,检查商品是否有库存,发送订单,最后将商品和发票发送给客户。

你需要绘制四张数据流图,其中两张显示当前情况,两张显示提议的系统(这在当前规范中不是必需的)。对于每张图,你必须显示以下图表

  • 0 级
  • 1 级

你可以使用文字处理器来制作它们,但使用专门的软件要容易得多。你可以尝试使用 diaOpen ModelSphere,它们都是免费的。或者,你可以使用 Microsoft Visio

扩展:用例

在软件和系统工程中,用例 是一个步骤列表,通常定义角色(在 UML 中被称为“参与者”)与系统之间的交互,以实现目标。参与者可以是人类或外部系统。例如,在一个用户想要在社交网络上邀请一些人参加聚会的系统中。人

  1. 登录
  2. 选择创建活动
  3. 使用日期选择器选择从日期和时间
  4. 使用日期选择器选择到日期和时间
  5. 使用地图选择位置
  6. 从他们的图片集合中添加场地图片
  7. 添加描述
  8. 选择私人活动
  9. 发送邀请

实体关系图(用于数据库)

[edit | edit source]
使用 Crow's Foot 符号显示的四个相关实体。这种关系表明,一张收据对应一个客户、一个员工和一个产品。并且一个客户可以拥有多张收据;一个员工可以处理多张收据;一类产品可以被多次售出。

在考虑如何将数据保存到系统时,你可能会决定使用数据库,如果是这种情况,你必须包含一个 E-R 图。如果你不使用数据库,请说明不需要完成本部分。你需要识别你的主要表。应该至少有 3 个表以及它们之间的关系。这些表在此时不需要被规范化,但应该详细描述它们之间的关系。

面向对象规划(用于面向对象)

[edit | edit source]

对于您正在使用的每个类,请描述

  • 它所做的事情的概述
  • 继承
  • 覆盖
  • 公有和私有变量
  • 公有和私有方法

例如,怪物类的属性可能包含

访问类型 字段名称 字段类型 初始值 描述
私有 健康 整数 100 这将存储怪物的健康值,当健康值降至 0 时,怪物应该死亡
私有 x 整数 0 这将跟踪怪物的 x 位置

您还需要注意怪物类将使用的方法

访问类型 方法名称 参数 返回值 描述
公共 向左移动 这将使怪物向左移动 3 个点
公共 伤害 伤害 怪物当前的健康值 这允许您伤害怪物

目标

[edit | edit source]
确保您的目标编号并符合 SMART 原则

这是您分析中最重要的一部分,因为这是您将如何检查您的最终系统是否满足所有用户需求。您需要概述三组目标,所有目标都符合 SMART 原则并编号

  • 系统目标
  • 处理目标
  • 用户目标

尽可能地,所有目标都应符合 SMART 原则。但 SMART 意味着什么?

字母 主要术语 描述 示例 不可接受!
S 具体 确保它不含糊不清,并且与您系统的某个部分相关 系统应该能够以降序显示 5 个最高分 我的系统应该很好
M 可衡量 有没有什么方法可以轻松地证明您已实现此目标。 每个页面应该在 5 秒内加载 我的页面会很漂亮
A 可实现 确保在可用的时间和资源内,您将能够完成此目标 我的系统将允许保存用户偏好 将有一个面部识别系统,允许用户登录系统
R 相关 这个目标将帮助您满足用户需求吗? 收据将被打印并发送到客户的电子邮件 我的收银系统将在后台播放 MP3
T 有时间限制 您在完成此项目的时间上是有限的。您必须在您的分析中列出截止日期,并且您能及时完成每个目标吗? 我将使用 2D 矢量图形在地图上显示玩家位置 游戏将具有与英雄联盟一样好的 3D 图形

正如您可能认识到的,上面几个不正确的目标未能满足多个 SMART 标准。测试自己,哪些目标足够 SMART,可以帮助您开始一个好的项目

不要忘记

请您的客户签署这些编号的目标,并在您的报告中提供证据。这可能包括将电子邮件复制到文档中。

潜在解决方案

[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]

现在您已经完成了分析,您需要开始制作您的项目。您应该对如何制作系统有一些想法,现在您需要开始学习完成这个项目所需的所有技能。为您的编程语言选择一本教科书,并确保您可以使用它执行一些简单的任务。此时,最好编写一个快速列出您需要学习的技能的清单。

在您获得这些技能的同时,请前往设计

华夏公益教科书