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

现已临近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作为我们的需求管理工具,在整个项目中发挥了不可或缺的作用。它帮助我们系统地组织和跟踪需求变更,提供了强大的版本控制和历史记录功能,使得需求分析过程更为严谨和可追溯。通过这些工具的应用,我们明显感受到了工作效率的提升和项目管理的便捷性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

政安晨:【Keras机器学习示例演绎】(四十三)—— 使用 KerasNLP 实现英语到西班牙语的翻译

目录 简介 设置 下载数据 解析数据 数据标记化 格式化数据集 建立模型 训练我们的模型 解码测试句子(定性分析) 解码测试句子(定性分析) 评估我们的模型(定量分析) 10 个轮次后,得分…

声明变量的六种方法

ES6 声明变量的六种方法 varfunctionletconstclassimport 顶层对象的属性 1. ES6 声明变量的六种方法 ES5 只有两种声明变量的方法: var 命令和 function 命令。 ES6 除了添加 let 和 const 命令,还有另外两种声明变量的方法: import 命令和…

matlab使用教程(69)—创建包含多个 x 轴和 y 轴的图

此示例说明如何创建这样一张图,通过坐标区底部和左侧的轴放置第一个绘图,并通过坐标区顶部和右侧的轴放置第二个绘图。 使用 line 函数绘制一个红色线条。将 x 轴和 y 轴的轴线颜色设置为红色。 注意:从 R2014b 开始,您可以使用圆…

python脚本-整理vsphere虚拟机资源/批量开关机虚拟主机

1.整理vsphere中的虚拟机资源 将每一台虚拟主机所属esxi主机,虚拟机电源状态,虚拟主机ip,虚拟机的操作系统,虚拟所属文件夹,虚拟机的备注一一对应,存放到xlsx表格。 其中vsphere的目录为: fro…

《A data independent approach to generate adversarial patches》论文分享(侵删)

原文链接:A data independent approach to generate adversarial patches | Machine Vision and Applications author{Xingyu Zhou and Zhisong Pan and Yexin Duan and Jin Zhang and Shuaihui Wang}, 一、介绍 在图像识别领域,与数字域中的攻击相比…

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

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

物联网到底物联了个啥?——青创智通

工业物联网解决方案-工业IOT-青创智通 物联网,这个听起来似乎颇具科技感和未来感的词汇,其实早已悄然渗透到我们生活的方方面面。从智能家居到智慧城市,从工业自动化到医疗健康,物联网技术正在以其独特的魅力改变着我们的生活方式…

【深耕 Python】Quantum Computing 量子计算机(5)量子物理概念(二)

写在前面 往期量子计算机博客: 【深耕 Python】Quantum Computing 量子计算机(1)图像绘制基础 【深耕 Python】Quantum Computing 量子计算机(2)绘制电子运动平面波 【深耕 Python】Quantum Computing 量子计算机&…

QT学习(2)——qt的菜单和工具栏

目录 引出qt的菜单栏工具栏菜单栏,工具栏状态栏,浮动窗口 属性设计ui编辑控件添加图片 总结 引出 QT学习(2)——qt的菜单和工具栏 qt的菜单栏工具栏 菜单栏,工具栏 1QMainWindow 1.1菜单栏最多有一个 1.1.1 QMenuBar…

开发利器 - docker 安装运行 mysql

本文选择安装的mysql版本为5.7 ,安装环境 mac 1、查看镜像是否存在 docker search mysql:5.7 2、拉取镜像 docker pull mysql:5.7 3、运行镜像 docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORDroot1234 -d mysql:5.7 --name:指定容器…

深入理解Linux下的网络监控工具:iftop

目录标题 1. 什么是iftop?2. 安装iftop在Debian/Ubuntu上安装在CentOS/RHEL上安装在其他Linux发行版上 3. 使用iftop监控网络流量命令行选项界面说明交互命令 4. 相关参数及说明 在维护和监控Linux服务器时,了解网络流量的细节非常重要。网络监控可以帮助我们诊断延…

在 Navicat 17 创建一个数据字典

即将于 5 月 13 日发布的 Navicat 17(英文版)添加了许多令人兴奋的新功能。其中之一就是数据字典工具。它使用一系列 GUI 指导你完成创建专业质量文档的过程,该文档为跨多个服务器平台的数据库中的每个数据元素提供描述。在今天的博客中&…

Python | Leetcode Python题解之第83题删除排序链表中的重复元素

题目: 题解: class Solution:def deleteDuplicates(self, head: ListNode) -> ListNode:if not head:return headcur headwhile cur.next:if cur.val cur.next.val:cur.next cur.next.nextelse:cur cur.nextreturn head

【页面】3D六边形

<!DOCTYPE html> <html> <head><title>3D正六边形</title><style>body {display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;}.container {perspective: 1000px;}.hexagon {width: 200px;height: 200px;…

1056: 邻接表到邻接矩阵

解法&#xff1a; #include<iostream> #include<vector> #include<string> using namespace std; int arr[100][100]; int main() {int n;cin >> n;getchar();vector<string> s(n);for (int i 0; i < n; i) {getline(cin, s[i]);}for (int …

LaTeX多行公式中\split出现一长一短多行公式无法居中

最近在整理一篇论文时出现了一长一短多行公式的问题无法居中 类似下图的情况&#xff1a; 这部分的代码如下&#xff1a; \begin{equation} \begin{split} \scalebox{0.75}{$X_{n} C$}\\ \scalebox{0.75}{$X_{m} \biggl\{\begin{array}{ll} \sum\limits_{i1}^{n} [X_{i} …

iOS Failed to create provisioning profile.

错误描述 错误情况参考这张图 解决方案 修改Bundle Identifier就可以解决这个错误&#xff0c;找不到位置可以看图 &#xff08;具体解决的原理与证书有关&#xff0c;个人不是非常熟悉&#xff0c;还望大神告知&#xff09;

Spring Cloud Gateway详解

文章目录 Gateway搭建路由&#xff08;route&#xff09;断言&#xff08;Predicate &#xff09;自定义断言 过滤器&#xff08;filter&#xff09;自定义全局过滤器 引言 在传统的单体项目中&#xff0c;前端和后端的交互相对简单&#xff0c;只需通过一个调用地址即可实现。…

蓝桥杯单片机之模块代码《多样点灯方式》

过往历程 历程1&#xff1a;秒表 历程2&#xff1a;按键显示时钟 历程3&#xff1a;列矩阵按键显示时钟 历程4&#xff1a;行矩阵按键显示时钟 历程5&#xff1a;新DS1302 历程6&#xff1a;小数点精确后两位ds18b20 历程7&#xff1a;35定时器测量频率 历程8&#xff…

JavaFX布局-HBox

JavaFX布局-HBox 常用属性alignmentspacingchildrenmarginpaddinghgrow 实现方式Java实现Xml实现 综合案例 HBox按照水平方向排列其子节点改变窗口大小,不会该部整体布局窗口太小会遮住内部元素&#xff0c;不会产生滚动条 常用属性 alignment 对齐方式 new HBox().setAlign…