本文基于这样一个前提:需求分析的结果,理想状态下是将软件做为一个黑盒,将它的功能包括所有细节都描述清楚。需求中包括界面,和界面的功能如何使用等,目标是达到通
过这个文档用户即可看到做出来的软件的各项功能及其操作过程。(对于这样的详细需求,是不是该采用形式化的用例描述来分析表达呢?)
一、需求的获取
需求获取的方法是用例。通过用例能得到用户的功能性需求。但是,用例的传统描述方法,是格式化的文本描述。文本中包括参与者使用软件的步骤。这样的描述方法,对于功能
本身只包含一个过程的功能是有效的。但是,有的功能并没有很长的操作过程,但抱话许多平行的过程。换句话说一用例包括了很多子功能,用传统的用例格式很难对相关的子功
能进行分组单独讨论。硬要用传统的用例格式来描述需求,当然也行,不过会参杂着隐含的对子功能进行分组思考,再转化为传统用例描述的过程。这样做对于需求分析来说,可
能是低效的。
因此,我认为有一些需求是不适合用传统的形式化描述方法进行描述的。对于子功能众多的用例,必须对子功能按子功能的内在关系(通常相关的子功能都和同一概念相关)分组
,然后考虑每个细节,采用分而治之的思想才能对需求进行全面的考虑。这里注意:实际上这里是要采用利于功能分解的描述形式,但本质上仍就是对一个用例的描述。
比如: 用户需要查询多个设备的性能图表。
详细的用例描述就是:
1.用户输入查询时间段
2.用户在一级页面点新增按钮打开二级页面。
2.1 用户输入查询条件,查询需要的设备检查点
2.2 用户选择需要的设备检查点
2.3 用户设定图表配置。
2.4 确定返回一级界面
3.系统在列表中显示用户选择的设备检查点
4.用户点确定生成性能图表。
扩展事件流:
1.(关于模板功能的操作略)
2.(对查询条件中的检查点的删除操作略)
3.(各种校验行为略)
以上的用例描述是传统的方式。如果先将需求分为 模板、查询条件、生成图表三部分,然后再在每个部份单独讨论需求。
1.模板
加载 创建 保存 删除 ......
2.查询条件
增删 设备检查点 校验......
3.生成图表
......
这样的描述方法,应该是更适合的。而对于设计工作来说,必然是一个功能分解的过程,这样在需求里就已进行了总体的分解,对于设计来说也是有利的。不然使用传统的用例描
述,在设计时,设计人员需要对需求进行类似的分解过程,才能将功能最终转化为可以实现的功能点。
二 设计过程
1 概述。
软件设计的目标是解决“怎么做”的问题。根本方法只有一个“分而治之”,也可以说是“自顶向下逐步求精”。现在的软件都是用的面向对象的语言开发的。但功能的宏观上就
是一个过程。我认为,软件的设计实质上就是把可被软件实现的过程具体化到框架、语言、对象中。在宏观上软件是面向过程的。
软件设计并不是一个纯萃的工作,都要对需要进行验证和补充。
对于软件中实现功能的过程是由两部分构成:数据模型和业务逻辑。需要先得到数据模型,然后才能考虑在数据模型基础上可构造的业务逻辑。
软件中的数据库模型是可以单独进行设计的,因为它直接和功能的领域相关,可以直接从软件功能的领域得出,是业务逻辑的数据结构。但直接从领域得到的数据结构,在开发过程中会不断进行验证和补充,这是不可必免的。数据模型中的一部份也会来自动功能本身的需要。比如:用来存储网站所有菜单项的表。
2 设计过程
i 数据库设计
ii 分解需求进行设计
这步是做设计的关键,和必经之路。需要把需求中的功能分解成具有相关性的组。然后单独思考每个组的实现方法。分解目的只有一个,就是可以把精力放在一小块功能上进行思考,忽略无关的其它功能。这样的分解一直进行下去,直到每个功能点可以单独考虑实现为止,这时就可以思考一个功能点的实现方法了。把每个功能点的实现考虑完后,则整个组的设计完毕,可以考虑下一个组的设计了。
比如以上需求:
可以先分解为三部分:模板 查询条件 生成图表 (相关的子功能通常和一个概念相关,比如:模板、查询条件)
先分别针对三部分进行库表设计得到总的库表,在具体的设计过程中对库表进行精化。(库表设计也可以在独立的子功能分析的过程中进行设计,这个需要看哪个更方便)。
然后可以针对每一部分进行进一步分解细化,在这个过程中同时进行需求的验证和补充。
比如:对于模板,又分为 加载 创建 保存 删除 功能,如果需求部分对这四个功能的定义没有问题,就可以先考虑“创建”如何实现,如果有需求中没考虑到的点或问题,则可能要进行讨论修正补充,然后再考虑如何实现。
当考虑实现时,就涉及到具体的技术问题了。这时可以用UML的顺序图刻画类之间的协作过程。最终确定用哪些类和方法。这里注意:有些技术点,在做需求时是可以预见的。那时就要先分配人力进行相关的技述研究工作,以便合理使用人力。
分享到:
相关推荐
### 新产品设计流程详解 #### 第一阶段:基础调研 ...通过以上六个阶段,新产品设计流程得以完整覆盖从市场调研到产品上线的全过程,确保每一环节都能够有效衔接,最终打造出既符合市场需求又具有良好用户体验的产品。
图书馆数据库设计需求分析 E-R 图逻辑设计 数据库设计是指根据用户的...我们的数据库设计过程包括需求分析、概念设计、逻辑设计和物理设计等步骤。我们的设计结果包括数据字典、E-R 图、关系模式和物理存储结构等。
在设计过程中,网站的数据库被划分为基本信息部分和新闻资源管理两大部分,以实现简单、清晰且独立的结构,避免过于复杂的关联。 **功能需求** 1. **前台功能**: - **浏览信息**:用户可以方便地浏览各个栏目,...
软件需求分析是软件开发过程中的关键步骤,它旨在明确、精确地定义软件的功能、性能、约束和其他特性,以便为后续的设计、编码、测试和维护提供基础。以下是对这个主题的详细阐述: 1. 软件需求分析的任务: - ...
根据给定文件的信息,我们可以提炼出关于GJB150.28-2009第28部分:酸性大气试验的相关知识点。 ### GJB150.28-2009标准概述 GJB150.28-2009是《军用装备实验室环境试验方法》系列标准中的一个部分,该标准主要针对...
"软件开发模版(需求分析、概要设计、详细设计等)"是针对这些关键阶段的标准化工具,它们通常包括一系列文档和指南,用于规范项目的各个步骤。下面将详细解析这些模板的重要性和内容: 1. 需求分析模板: 需求...
- **定义**: 在软件开发过程中,设计数据库结构和功能的过程。 - **作用**: 确保数据库能够有效地存储和检索数据,支持应用程序的功能需求。 #### 17. Detailed Design (DD) 详细设计 - **定义**: 在软件开发过程中...
书中内容涵盖需求分析的基础概念、软件需求的过程管理以及需求管理的最佳实践。 #### 二、软件需求的定义与层次 - **软件需求**:是指为了满足用户或系统所必需的功能和非功能特性。 - **解释**:需求通常包括...
- **Word:** 用于撰写项目文档,如需求分析报告、设计文档等。 - **Excel:** 适合进行数据管理和简单的数据分析。 - **Visio:** 主要用于绘制各种图表,如流程图、UML图等,有助于清晰地展示设计思路。 **编程...
【信息系统需求分析与设计】是信息系统开发过程中的关键步骤,主要涵盖了从初步调查到系统设计的完整流程。首先,我们要了解系统分析的概念。系统分析是管理信息系统开发中最核心且最具挑战性的阶段,它决定了系统的...
- **内容**:包括需求分析、范围定义、时间安排等。 #### 54. PPQA Process and Product Quality Assurance 过程和产品质量保证 - **定义**:过程和产品质量保证是指确保过程和产品的质量和符合性的活动。 - **方法...
### 数据库课程设计知识点详解 #### 一、需求分析 - **定义与目的**:需求分析是数据库设计的首要步骤,旨在明确系统的目标以及...在整个设计过程中,不断反思和总结经验,有助于形成良好的学习习惯和解决问题的能力。
### 软件工程名词解释知识点详解 #### 1. 需求分析 - **定义**: 需求分析是软件开发初期的关键步骤之...这些术语涵盖了软件开发的各个环节,从需求分析到设计、测试乃至后期维护等方面,为读者提供了全面的理解视角。
在软件开发过程中,需求分析和设计是至关重要的阶段,它们为后续的编码和测试奠定了基础。本文将重点讨论在【标题】"汇总:需求分析及概要、详细设计-修改 (1)1"中提到的MAGIC-SCAN图片编辑系统,以及在【描述】中...
通过以上案例分析,我们可以看到需求分析和系统设计在软件开发过程中的重要性。对于图书管理系统而言,通过精确地识别和分析需求,我们可以设计出合理且高效的面向对象模型。而在模拟鸭子游戏案例中,则展示了如何...
综上所述,这份工资管理系统文档详细介绍了系统从需求分析到设计再到测试的全过程,涵盖了系统开发的所有关键方面。通过这样的文档,不仅可以指导项目的顺利进行,还能为未来的系统维护和升级提供重要的参考依据。
火车票订票销售系统的需求分析设计是一个复杂的过程,涉及到多个层面的考虑。在这个系统中,主要目标是构建一个基于计算机网络、数据库技术和先进开发平台的开放、可扩展、易维护的火车票预订系统。该系统由客户端子...
#### 二、需求分析与总体规划阶段 **2.1 需求分析报告** - **目标**: 收集并整理用户需求和技术需求。 - **内容**: 用户需求、功能需求、性能需求、界面需求等。 **2.2 需求分析评审报告** - **目的**: 确保需求的...