系统分析师论文——论软件需求分析方法和工具的选用

news2024/11/15 11:22:27

现已临近2024年软考,周围一些报名参加系统分析师考试的“小伙伴”还未准备论文,我分享早年写的一些内容(包括参加继续教育准备的论文),仅供大家结合最新考纲要求酌情参考,希望予人玫瑰,手有余香。

注1:为了不涉及敏感数据,文中年份、合同金额、建设周期等数字均做了“马赛克”处理-_-||b

目录

【摘要】

【正文】

 第一步:通过逆向工程获取原有系统的基本需求。

第二步:基于初步分析,继续使用PowerDesigner绘制用例,并明确系统基本需求

第三步:使用Axure Pro进行UX设计,完善需求分析与原型设计


【摘要】

本文以出入境信息管理系统的升级改造项目为背景,探讨了信息系统需求分析的实践过程。该项目的重要特征在于,它是对现有系统的一次重要升级,而非全新系统的建设。因此,需求分析过程具有其独特性,并可分为三个关键阶段:首先,通过实施逆向工程对原系统进行深入剖析,以获得对系统的初步了解;其次,在逆向工程的基础上,撰写详细的分层用例图,并客户进行沟通、评审和补充,以确保需求的准确性和完整性;最后,根据基本需求文档开发系统原型,并利用原型与客户进行多轮次交流,从而获取稳定的基线需求。本文详细阐述了不同阶段中所采用的分析方法与工具,以及在实践中遇到的一些典型问题和相应的解决措施。同时,本文也对需求分析中使用的工具进行了反思,分享了笔者对于如何更好地应用这些工具的初步体会。

【正文】

笔者于2011年9月至2012年6月参与了出入境信息管理系统的升级改造项目。由于甲方已有旧系统正在使用,并承载着重要的出入境信息管理任务。然而,老系统存在几个显著的问题:一是系统运行效率低下,特别是在处理大量出国境申请时,查询和更新操作的响应时间耗时较长,严重影响了用户体验和受理人员的工作效率;二是系统数据存在一定的不准确性,有时会出现实际申请信息与系统中记录的历史数据不一致的情况,给管理工作带来了诸多不便。三是系统的用户界面过时,不符合现代操作习惯,使得用户在使用时感到不便。为了解决这些问题,甲方决定对原有系统进行升级改造。

鉴于出入境信息管理系统的复杂性、涉及人员众多以及项目时间紧凑、资源有限等实际情况,我们决定对原系统的需求进行深入且切实可行的分析。为避免前一系统出现的结构混乱、操作体验较差与运维难度大等问题,我们采取了一种系统性的方法来确保需求的准确性和可行性。由于原有系统已经运行了一段时间,且用户已积累了一定的使用经验,同时基本业务流程保持稳定,我们将需求分析过程划分为三个主要步骤:一是深入分析原有系统的结构,特别是数据库结构和程序操作流程与逻辑;二是在第一步分析的基础上,撰写分层用例图和DFD,既表达需求,又描述数据流程,并提交给客户进行沟通、评审和补充;三是根据第二步的结果,设计系统原型,并通过与客户交流,不断完善和优化需求,最终确定切实可用的需求。接下来,笔者将详细阐述这三个步骤的实施过程。


 第一步:通过逆向工程获取原有系统的基本需求。

由于原有出入境信息管理系统在功能上已基本满足用户需求,并且在长期服务中积累了大量经验,因此,我们可以从中汲取宝贵的信息,避免不必要的摸索。在这一阶段,为了深入分析系统的数据库结构和程序流程,我们主要采用了专业的逆向工程工具。这些工具帮助我们高效地解析了复杂的数据存储结构和程序流程,使得开发人员和高级用户能更清晰地理解系统的工作原理。

我们选择这些工具的原因是原有系统规模庞大、模块众多,且缺乏完整的设计文档。通过工具辅助,我们能够更准确地把握系统的整体架构和细节。在使用这些工具对数据库和程序进行深入分析后,我们初步了解了原系统的结构,并结合实际使用情况,进一步明确了功能和流程的需求。在此基础上,我们采用PowerDesigner整理并记录了初步的需求文档。需要注意的是,在使用这些工具时,我们也遇到了一些挑战。例如,当数据库表字段过多或表间关系复杂时,生成的图表可能会显得混乱且难以阅读。为了克服这一不足,我们采取了一系列措施,如定制化PowerDesigner图表模板、添加注释等,以提高文档的可读性和易用性。

第二步:基于初步分析,继续使用PowerDesigner绘制用例,并明确系统基本需求

在进行了初步的逆向工程之后,我们获取了原有系统的基本需求。为了更直观、更清晰地展现这些需求,并便于客户理解和评审,我们决定在第二步中使用PowerDesigner这一工具。PowerDesigner不仅能够帮助我们深入解析数据库结构,还能通过图形化的方式展示系统的各个组成部分及其关系。在这一阶段,我们主要利用PowerDesigner绘制了数据模型图(PDM)、实体关系图(ERD)以及分层用例图等,以全面、准确地描述系统的需求。

首先,我们根据逆向工程的结果,在PowerDesigner中创建了新系统的实体关系图,直观地展示了系统中各个实体之间的关系,包括一对一、一对多、多对多等关系。这有助于我们深入理解系统的业务逻辑和数据流程。逻辑数据模型,明确了各个数据表、字段以及表之间的关系。接着,我们绘制了新系统的逻辑和物理数据模型,这有助于我们和客户共同理解系统的数据结构和数据存储方式。

最后,我们根据客户的需求和业务流程,绘制了分层用例图。用例图从用户的角度出发,描述了系统的功能和操作流程。通过用例图,我们可以清晰地看到各个用例之间的关系,以及每个用例的具体步骤和期望结果。这不仅有助于我们和客户确认需求,还为后续的开发工作提供了明确的指导。

在完成了这些图形化描述之后,我们将这些图表和文档提交给客户进行评审和补充。客户根据这些直观的图表,更容易地理解了我们的需求分析工作,并提出了宝贵的反馈意见。我们根据客户的反馈对需求进行了进一步的完善和调整。通过使用PowerDesigner并绘制分层用例图等来描述需求,我们不仅提高了需求分析的准确性和效率,还增强了与客户之间的沟通和协作。这为后续的开发工作奠定了坚实的基础,并确保了项目能够按照客户的要求顺利进行。

第三步:使用Axure Pro进行UX设计,完善需求分析与原型设计

在第二步的基础上,我们进入了项目的第三阶段,这一阶段的目标是结合Axure Pro和PowerDesigner两款工具,进一步完善需求分析与原型设计。首先,我们使用Axure Pro创建了可交互的原型。Axure Pro的强大功能使我们能够模拟出非常接近真实系统的交互体验,这帮助客户更直观地理解系统的预期行为。通过原型的交互演示,客户能够在实际开发前对系统有一个更为准确的预期。

与此同时,我们使用PowerDesigner的UML组件工具来绘制功能模块图。功能模块图能够清晰地展示出系统的整体结构,以及各个功能模块(或类、组件)之间的关联。这有助于开发人员和其他利益相关者更好地理解系统的组成和相互关系。通过PowerDesigner,我们不仅绘制了详细的功能结构图,使得复杂的系统结构变得更为清晰易懂。

这种结合Axure Pro和PowerDesigner的工作方式,使我们能够更全面地捕捉和记录客户的需求。Axure Pro提供的交互式原型让客户能够直观地看到系统的未来形态,而PowerDesigner的UML功能结构图则为我们提供了一个逻辑清晰、直观可视的功能框架。最终,经过这一阶段的工作,我们成功地获得了经过客户确认,达到了需求基线,这为后续的开发工作奠定了坚实的基础。

总结这个项目需求分析阶段的工作,我们综合运用了多种工具来提升需求分析和管理的效率。逆向工程分析工具则协助我们从现有系统中提取关键信息,加速了需求分析的进程;PowerDesigner帮助我们进行了数据库结构和业务流程的建模,通过其UML功能,我们能够清晰地绘制出分层用例图,从而更直观地展现系统的功能需求和用户操作流程;Axure Pro清晰地表达了用例图描述的需求,并以可交互式原型展示了系统构建后的状态,这既是需求直观可视的表达,又是进一步挖掘需求的利器;同时,PowerDesigner作为我们的需求管理工具,在整个项目中发挥了不可或缺的作用。它帮助我们系统地组织和跟踪需求变更,提供了强大的版本控制和历史记录功能,使得需求分析过程更为严谨和可追溯。通过这些工具的应用,我们明显感受到了工作效率的提升和项目管理的便捷性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1665842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【CTF MISC】XCTF GFSJ0513 pdf Writeup(PDF隐写)

pdf 菜猫给了菜狗一张图,说图下面什么都没有 解法 打开 pdf,只看见一张图片。 用浏览器搜索 flag,发现图片中间藏了一行字。 复制出来,得到 flag。 Flag flag{security_through_obscurity}声明 本博客上发布的所有关于网络攻…

Arduino-ILI9341驱动开发TFT屏显示任意内容三

Arduino-ILI9341驱动开发TFT屏显示任意内容三 1.概述 这篇文章介绍使用ILI9341驱动提供的函数控制TFT屏显示字符串、图形、符号等等内容的编辑和展示。 2.硬件 2.1.硬件列表 名称数量Arduino Uno12.8" TFT彩色液晶触摸屏模块(ILI9431)110K 电阻…

从JSON数据到Pandas DataFrame:如何解析出所需字段

目录 一、引言 二、JSON数据的基本结构 三、使用Pandas从JSON数据中读取数据 四、从DataFrame中解析出所需字段 解析对象字段 解析嵌套对象字段 解析数组字段 五、案例与代码示例 六、总结 一、引言 在数据分析和处理的日常工作中,我们经常需要从各种…

基于单片机的空气质量检测系统设计(51+4G版)-设计说明书

设计摘要: 本设计是基于单片机的空气质量检测系统设计涉及以下主要功能,旨在监测甲烷和一氧化碳的浓度,并在浓度过高时采取相应措施,以确保室内空气质量的安全。该系统使用传感器对甲烷和一氧化碳的浓度进行检测。传感器将收集到…

大数据Scala教程从入门到精通第七篇:Scala在IDEA中编写Hello World

一:Scala在IDEA中编写Hello World 想让我们的idea支持scala的编写,需要安装一个插件。

kdb 调试内核-延迟驱动加载

说明: 系统在启动过程中,一些要调试的驱动在 "进入kdb 之前" 就已经加载了, 那么,我们就需要延迟 "加载驱动" #define XX_module_platform_driver(__platform_driver) \XX_module_driver(__platform_driver, platform_d…

以太ETH链市值机器人

在数字资产交易市场的浪潮中,如何高效地管理市值、提升交易流动性并保障资金安全,一直是交易所和项目方关注的焦点。市值管理机器人飞机//aishutuyu以太ETH链市值机器人凭借其卓越的功能和强大的安全保障,为数字资产交易市场带来了革命性的变…

python视频转码脚本

今天有一个临时的需求,就是需要将一个wmv的初步转码成mp4的格式。找了一圈,免费的工具少,即使有免费的工具,在功能上也是有所限制,或者会给你塞广告或者附带安装其它流氓小游戏或者杀毒程序。 我并非不支持正版&#…

矩阵稀疏扫描 - 矩阵

系列文章目录 文章目录 系列文章目录前言一、题目描述二、输入描述三、输出描述四、Java代码五、测试用例提示 前言 本人最近再练习算法,所以会发布一些解题思路,希望大家多指教 一、题目描述 如果矩阵中的许多系数都为零,那么该矩阵就是稀…

【Spring】初识 Spring AOP(面向切面编程)

目录 1、介绍AOP 1.1、AOP的定义 1.2、AOP的作用 1.3、AOP的核心概念及术语 2、AOP实现示例 3、EnableAspectJAutoProxy注解 1、介绍AOP 1.1、AOP的定义 AOP(Aspect Orient Programming),直译过来就是面向切面编程,AOP 是一…

windows使用Docker-Desktop部署lobe-chat

文章目录 window安装docker-desktop下载和启动lobe-chatAI大语言模型的选择lobe-chat设置大模型连接 window安装docker-desktop docker-desktop下载地址 正常安装应用,然后启动应用,注意启动docker引擎 打开右上角的设置,进入Docker Engine设…

wangEditor富文本编辑器与layui图片上传

记录&#xff1a;js 显示默认的wangEditor富文本编辑器内容和图片 <style>body {background-color: #ffffff;}.layui-form-select dl{z-index:100000;} </style> <div class"layui-form layuimini-form"><div class"layui-form-item"…

【IC前端虚拟项目】验证环境env与base_teat思路与编写

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 上一篇里解决了最难搞的axi_ram_model,接下来呢就会简单又常规一些了,比如这一篇要说的env和base_test的搭建。在这里我用了gen_uvm_tb脚本: 【前端验证】验证自动化脚本的最后一块拼图补全——gen_t…

一个全栈SpringBoot项目-Book Social Network

一个全栈SpringBoot项目-Book Social Network BSN是一个会员之间交换图书的社交网络平台。图书社交网络是一个全栈应用程序&#xff0c;使用户能够管理他们的图书收藏并与图书爱好者社区互动。它提供的功能包括用户注册、安全电子邮件验证、图书管理&#xff08;包括创建、更新…

使用SPI驱动串行LCD的驱动实现(STM32F4)

目录 概述 1. 硬件介绍 1.1 ST7796-LCD 1.2 MCU IO与LCD PIN对应关系 2 功能实现 2.1 使用STM32Cube配置Project 2.2 STM32Cube生成工程 3 代码实现 3.1 SPI接口实现 3.2 LCD驱动程序实现 3.3 测试程序实现 4 测试 源代码下载地址&#xff1a; https://gitee.com/mf…

[蓝桥杯]真题讲解:AB路线(BFS+分层图)

[蓝桥杯]真题讲解&#xff1a;AB路线&#xff08;BFS分层图&#xff09; 一、视频讲解二、正解代码1、C2、python33、Java 一、视频讲解 [蓝桥杯]真题讲解&#xff1a;AB路线&#xff08;BFS分层图&#xff09; 二、正解代码 1、C #include<bits/stdc.h> #define INF …

大数据Scala教程从入门到精通第八篇:Scala在IDEA中编写Hello World

一&#xff1a;Scala在IDEA中编写Hello World object HelloWorld {def main(args: Array[String]): Unit {println("hello world")}}这个对象也单例的。 特殊的Java类库需要import

【Java 查询树结构列表,递归删除子节点】

Java 获取列表树结构&#xff0c;递归删除子节点 数据库表结构ModelVO查询树结构列表递归删除子节点 数据库表结构 Model Data AllArgsConstructor NoArgsConstructor public class TBaseDept {/** ID */private String id;/** 单位名称 */private String fdName;/** 部门编码…

Python | Leetcode Python题解之第84题柱状图中最大的矩形

题目&#xff1a; 题解&#xff1a; class Solution:def largestRectangleArea(self, heights: List[int]) -> int:n len(heights)left, right [0] * n, [n] * nmono_stack list()for i in range(n):while mono_stack and heights[mono_stack[-1]] > heights[i]:righ…

scanf留下的那一片云彩

【题目描述】 给出一个由O和X组成的串&#xff08;长度为1&#xff5e;80&#xff09;&#xff0c;统计得分。每个O的得分为目前连续出现的O的个数&#xff0c;X的得分为0。例如&#xff0c;OOXXOXXOOO的得分为1200100123。 输入第一行表示有n个字符串&#xff0c;后续是n行字…