方法 | 特点 |
---|---|
收集资料 | 把与系统有关的、对系统开发有益的信息收集起来。 |
阅读历史文档 | 对收集数据性的信息较为有用。 |
用户访谈 | 1对1-3,有代表性的用户。比较耗时,一般选择有代表性的用户,开放式(问答式,比较发散)与封闭式(选择题)问题相结合。成本高,要有领域知识支撑。 |
问卷调查 | 用户多,无法一一访谈,成本低。 |
抽样调查 | 基于数理统计,降低成本,快速获取。样本大小=a*(可信度系数/可接受的错误)2 注:a一般取0.25。 |
现场观摩 | 针对较为复杂的流程和操作过程。 |
参加业务实践 | 有效的发现问题的本质和寻找解决问题的办法。 |
联合需求计划(JRP) | 高度组织的群体会议,各方参与,成本高。以会议的形式获取需求。 |
情节串联版【原型前身】 | 一系列图片,通过这些图片来讲故事。 |
联合需求计划(JRP)是一种流行的需求获取方法。请说明什么是JRP,JRP 与其它需求获取方法相比有什么优势?
联合需求计划是一个通过高度组织的群体会议来分析企业内的问题并获取需求的过程,它是联合应用开发的一部分。JRP 是一种相对来说成本较高的需求获取方法,但也是十分有效的一种。它通过联合各个关键用户代表、系统分析师、开发团队代表一起,通过有组织的会议来讨论需求。JRP 将会起到群策群力的效果,对于一些问题最有岐义的时候、对需求最不清晰的领域都是十分有用的一种方法。
优势:
FAST(Framework for the Application of Systems Thinking),叫 FAST 框架运行,FAST 分析也行,或者是 FAST 方法学也是可以的。FAST 不是一套实际的商业方法,我们可以把它当成遇到的最佳方法实践的组合。同许多商业方法不一样,它不是一种规范。也就是说,FAST 是一个灵活的框架,可以用于不同型的项目和策略。
FAST方法的阶段:
又叫初始化研究阶段或计划阶段等。
又叫研究阶段或可行性分析阶段等。
问题分析的目标就是在开发之前对要解决的问题有一个更透彻的理解。
为了达到这一目标,通常需要经过在问题定义上达成共识,理解问题的本质。
问题分析阶段的四项主要任务包括:
因果鱼骨图通过直观的图形找出问题或现象的所有潜在原因,从而追踪出问题的根源。
鱼骨图,输出结果以文档样式显示,如下:
针对 【现有系统】 | 针对 【待开发的新系统】 |
---|---|
问题或机会【表象】 | 系统目标 【改进的要求】 |
原因和结果 【背后的原因】 | 系统约束条件 【资源的限制】 |
帕累托图是采用直方图的形式,用于识别造成大多数问题的少数重要原因。根据问题的相对频率或大小从高往低降序排列,帮助设计师将精力集中在重要的问题上。它为 80%的问题找到关键的 20%的原因,它可以一目了然地显示出各个问题的相对重要程度,有助于预防在解决了一些问题后,却使另外一些问题变得更糟的现象发。
在使用时,通常按照以下步骤进行:
系统的改进目标可能受到约束条件的调节。约束条件可以分为:
有些方法学将问题分析和需求分析合并成一个阶段。
功能需求,满足系统目标所需的输入、输出、过程和存储的数据的形式定义。
非功能需求,性能、易学性、易用性、预算、开支和开支节省、时间表和最终期限、文档和培训需求、质量管理、安全和内部审核控制等。
性能用于描述企业当前的运行效率,可以分析当前业务的处理速度。
信息和数据指标用于描述业务数据的输入、输出以及处理方面存在的各种问题。
经济指标主要是从成本和收益的角度分析企业当前存在的问题。
提高信息的安全和控制水平。
提高企业的人、财、物等的使用效率。
提高企业对客户、供应商、合作伙伴、顾客等的服务质量。
问题分析阶段主要完成对项目开发的问题、机会和/或指示的更全面的理解。请说明系统分析师在问题分析阶段通常需要完成哪四项主要任务。
问题分析的目标就是在开发之前对要解决的问题有一个更透彻的理解。为了达到这一目标,通常需要经过在问题定义上达成共识,理解问题的本质。
问题分析阶段的四项主要任务包括:
(1)研究问题领域
(2)分析问题和机会
(3)制定系统改进目标
(4)修改项目计
一份需求定义文档应该包括哪些内容?对于与系统开发相关的人员:系统所有者、用户、系统分析人员、设计人员和构造人员、 项目经理,需求定义文档各有什么作用?
一份需求定义文档可能是项目文档中被阅读和引用得最多的文档。应该包含以下内容:
系统分析人员、设计人员和构造人员使用它来理解需要什么以及处理需求变更,开发用于验证系统的测试用例。
项目经理使用它作为制定项目计划、处理变更及验收的依据。
FAST 开发方法在系统分析中包括了初始研究、问题分析、需求分析和决策分析等四个阶段,请简要说明每个阶段的主要任务。
范围定义(初始研究阶段):
问题分析阶段:
需求分析阶段:
决策分析阶段:
数据平衡原则
流程图和数据流图是软件系统分析设计中常用的两种手段,请用 300 字以内文字简要说明流程图与数据流图的含义及其区别,并说明项目组为何确定采用数据流图作为建模手段。
数据流图作为一种图形化工具,用来说明业务处理过程、系统边界内所包含的功能和系统中的数据流。流程图以图形化的方式展示应用程序从数据输入开始到获得输出为止的逻辑过程,描述处理过程的控制流。两者的区别如下:
高质量的数据流图是可读的、内部一致的并能够准确表示系统需求。请用 300 字以内文字说明在设计高质量的数据流图时应考虑的三个原则。
高质量数据流图设计时应考虑的三个原则如下:
(1)信息工程方法中的’实体(entity) ”与面向对象方法中的“类(class) ”之间有哪些不同之处?
(2)在面向对象方法中通常采用用例(Use Case)来捕获系统的功能需求。用例可以按照不同的层次来进行划分,其中的 Essential Use Cases 和Real Use Cases 有哪些区别?
(1)实体用于数据建模,而类用于面向对象建模。实体只有属性,而类有属性和操作。
(2)Essential Use Cases 可翻译为抽象用例,Real Use Cases 可翻译为基础用例。他们是区别在于:基础用例是实实在在与用户需求有对应关系的用例,是从用户需求获取的渠道得到的,而抽象用例是从基础用例中抽取的用例的公共部分,是为了避免重复工作,优化结构而提出的用例。
静态图
动态图
包含关系【使用关系】:从多个用例中提取公共行为,提取出来的公共用例称为抽象用例,而把原始用例称为基本用例。如下:
扩展关系:一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例。如下:
泛化关系:当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。子用例继承了父用例所有的结构、行为和关系。如下:
依赖关系 一个事物发生变化影响另一个事物。
泛化关系 特殊/一般关系
关联关系 描述了一组链,链是对象之间的连接
实现关系 接口与类之间的关系
用例视图 | (user-case view)最终用户,需求分析模型。 |
---|---|
逻辑视图 | (logical view)展现系统功能。系统分析、设计人员。类与对象 |
实现视图 | (implementation view)源代码结构。程序员。物理代码文件和组件 |
进程视图 | (process view)并发与同步结构。系统集成人员。线程、进程、并发 |
部署视图 | (deployment view)软件构件到物理结点映射。系统和网络工程师 |
用例建模的主要工作是书写用例规约。用例规约通常包括哪几部分内容?
用例规约:用例名称、简要说明、事件流、非功能需求、前置条件、后置条件、扩展点、优先级。
识别设计类是面向对象设计过程中的重要工作,设计类表达了类的职责,即该类所担任的任务。请用 300 字以内的文字说明设计类通常分为哪三种类型、每种类型的主要职责,并针对题干描述案例涉及的具体类为每种类型的设计类举出 2 个实例。
在面向对象的设计过程中,活动图(activity diagram)阐明了业务用例实现的工作流程。请用 300 字以内的文字给出活动图与流程图(flow chart)的三个主要区别。
随着共享单车投放量以及用户量的增加会存在系统性能或容量下降问题,请用 200 字以内的文字说明,在系统设计之初,如何考虑此类问题?
在结构化和面向对象的软件分析过程中,通常会使用到数据流图、活动图和流程图,请分别描述这三种模型的特点和适用场景。
需求评审是通过将需求规格说明书递交给相关人员检查,以发现其中存在缺陷的过程。在需求工程中,需求评审是一个非常重要的过程。结合题干案例,请用 300 字以内的文字简要说明需求评审的内容及作用。
需求评审内容:
本例中存在需求描述不完整的情况,如:谁向系统请求?输入个人详细信息要输入哪些?选择账户类型,有哪些账户类型供选择?都未明确描述
采用面向对象方法进行软件系统分析与设计时,一项重要的工作是进行类的分析与设计。请用 200 字以内的文字说明分析类图与设计类图的差异。
设计类图通常是在分析类图的基础上进行细化和改进的。