软考笔记--信息系统开发方法(上)

信息系统是一个极其复杂的人机交互系统,它不仅包含计算机技术,通信技术和网络规划以及其他的工程技术,而且,它还是一个复杂的管理系统,需要管理理论和方法的支持,因此,与其他工程项目相比,信息系统工程项目的开发和管理显得更加复杂,面临的风险也更大。

一.结构化方法

结构化方法也称为生命周期法,是一种传统的信息系统开发方法,由结构化分析,结构化设计和结构化程序设计三部分组成,其精髓是自顶向下逐步求精和模块化设计。

1.结构化方法的特点。

 (1)开发目标清晰化。结构化方法的系统开发遵循用户第一的原则,开发中要保持与用户的沟通,取得与用户的共识,使得信息系统的开发建立在可靠的基础之上。

(2)开发工作阶段化。结构化方法每个阶段的工作内容明确,注重对开发过程的控制。

(3)开发文档规范化。结构化方法每个阶段工作完成后,要按照需求完成相应的文档,保证各个工作阶段的衔接与系统维护工作的便利。

(4)设计方法结构化。在系统分析与设计时,从整体和全局考虑,自定向下地分解;

2.结构化分析

SA就是根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图DFD来建立系统的功能模型,从而完善需求分析。SA方法使用抽象模型的概念,按照系统内部数据传递、变化的关系,自顶向下,逐层分解,直至找到满足功能要求的所有实现的系统为止。SA方法给出了一组帮助系统分析师产生需求规格说明的方法与技术,一般利用图形来表达用户需求,使用的手段主要有DFD,数据字典,结构化语言,判定表,判定树等。

(3)结构化设计

SD可以进一步细分为概要设计和详细设计两个阶段,根据模块独立性原则和系统结构准则,将DFD转换为系统结构图,用系统结构图来建立系统的物理模型,描述系统层次的模块结构以及模块之间的通信与控制关系。

(4)结构化程序设计

SP就是使用某种程序设计语言,将某个模块的功能用响应的标准控制结构(顺序结构,选择结构,循环结构)表示出来,从而实现整个系统。

(5)结构化方法的缺点

结构化方法是目前最成熟,应用比较广泛的一种工程化方法,它特别适合于数据处理领域的问题,但是不适合规模较大、复杂的系统开发。结构化的不足主要表现在以下几个方面:

(1)开发周期长

(2)难以适应需求变化。

(3)很少考虑数据结构。

以上问题在实际应用中有的已经解决,同时也产生了其他方法,如原型法,面向对象方法等。

6.结构化方法的贡献

结构化方法属于自定向下的开发方法,强调开发方法的结构合理性以及开发系统的结构合理性,提出了一组提高系统结构合理的准则。结构化方法的另一个贡献在于,明确划分了系统规划,系统分析,系统设计,系统实施、系统维护等阶段,后来发展的一些开发方法,从本质上还是遵循这些阶段。

二.面向对象方法

面向对象(Object-Oriented,OO)方法是当前的主流开发方法,拥有很多不同的分支体系,主要包括OMT方法,Coad/Yourdon方法,OOSE方法和Booch方法等,OMT,OOSE和Booch已经统一成为统一建模语言UML。

1.基本概念

(1)对象。对象是指一组属性及这组属性上的专用操作的封装体。一个对象通常有三部分组成,对象名,属性和方法。

(2)类。类是一组具有相同属性和方法的对象的集合。一个类中的每个对象都是这个类的一个实例。

(3)继承。继承是在某个类的层次关联中不同的类共享属性和方法的一种机制。父类与子类的关系是一般与特殊的关系。

(4)封装。面向对象系统中的封装单位是对象,对象之间只能通过接口进行信息交流,对象外部不能对对象中的数据随意进行访问。封装的目的是使对象的定义和实现分离,这样就能减少耦合,类内部的实现可以自由改变而不会影响其他的类或对象。

(5)消息。消息是对象之间通信的手段,一个对象通过向另一个对象发送消息来请求服务。一个消息通常包括以下信息:提供服务的对象标识、服务类型和相关参数。

(6)多态。多态是指同一个操作作用于不同的对象时可以有不同的解释,并产生不同的执行结果。

2.OO方法的过程

与结构化方法类似,面向对象方法也包括面向对象的分析(OOA)、面向对象的设计(OOD)和面向对象的程序设计(OOP)三个阶段。

3.Coad/Yourdon方法

Coad/Yourdon方法特别强调OOA和OOD采用完全一致的概念和表示法,是分析和设计之间不需要表示法的转换。Coad/Yourdon方法中,OOA的任务主要是建立问题域的分析模型。OOA概念模型的顺序由五个层次组成,即类与对象层,属性层,操作层,结构层和主题层。OOA需要经过5个步骤来完成整个分析工作,即标识对象类,标识结构与关联、划分主题,定义属性和定义操作。

OOD中将继续贯穿OOA中的五个层次和五个活动,它由4个组成部分,分别是人机交互组件,问题域组件,任务管理组件和数据管理组件,其主要的活动就是这4个组件的设计工作。

4.Booch方法

Booch最先描述了OO方法的基础问题,指出OO方法是一种根本不同于传统的功能分解的设计方法。Booch认为系统开发是一个螺旋上升的过程,每个周期包括4个步骤,即标识类和对象,确定类和对象的含义,标识关系,说明每个类的接口和实现。

5.OMT方法

OMT方法使用了建模的思想,讨论如何建立一个实际的应用模型,包括对象模型、动态模型和功能模型。对象模型描述系统中对象的静态结构、对象之间的关系属性和操作,主要用对象图来实现;动态模型描述与时间和操作顺序有关的系统特征。

OMT方法通常包括4个活动:系统分析,系统设计,对象设计和实现。

6.OOSE

OOSE 在OMT的基础上,对功能模型进行了补充,提出了用例(use case) 的概念,最终取代了DFD来进行需求分析和建立功能模型。OOSE方法采用5 类模型来建立目标系统,即需求模型、分析模型、设计模型、实现模型和测试模型。OOSE的开发活动主要分为三类:分析、构造和测试。

7.与结构化方法的结合

OO方法将系统的描述及信息模型的表示与客观实体相对应,符合人们的思维习惯,有利于系统开发过程中用户与开发人员的交流沟通,但是也存在一些不足,通常与结构化方法结合起来。首先使用结构化方法进行自定向下的整体划分,然后自底向上采用OO方法开发系统,结构化方法和OO方法仍然是两种在系统开发领域中相互依存,不可替代的方法。

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

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

相关文章

自然语言转SQL的应用场景探索

自然语言转SQL的应用场景探索 1. 自然语言转sql有哪些解决方案2. 自然语言转sql有哪些应用场景3. 自然语言转sql在智能制造领域有哪些应用场景 1. 自然语言转sql有哪些解决方案 自然语言转SQL(NL2SQL)是一个涉及自然语言处理(NLP&#xff09…

JNI教程之数组操作

1. 创建数组:New[type]Array /** 新建数组 length: the array length. RETURNS: Returns a Java array, or NULL if the array cannot be constructed. */ jbyteArray javaArray env->NewByteArray(1024*1024);New[PrimitiveType]Array RoutinesArray TypeNewB…

[嵌入式AI从0开始到入土]15_orangepi_aipro欢迎界面、ATC bug修复、镜像导出备份

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注:等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间,后期会考虑出视频教程,务必催更,以防我变身鸽王。 第1期 昇腾Altas 200 DK上手 第2期 下载昇腾案例并运行 第3期 官…

单片机学习笔记---红外遥控(外部中断)

目录 红外遥控简介 硬件电路 基本发送与接收 NEC编码​​​​​​​ 遥控器键码 复习外部中断和定时器 红外遥控简介 红外遥控是利用红外光进行通信的设备,由红外LED将调制后的信号发出,由专用的红外接收头进行解调输出 通信方式:单工…

WebGL中开发科学数据可视化应用

WebGL在科学数据可视化领域有广泛的应用,可以用于呈现和解释复杂的科学数据。以下是在WebGL中开发科学数据可视化应用时的一些建议,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.选择合…

C++开发基础之函数的参数类型高级用法

前言 当涉及到高级参数传递方式时,有几种常见的技术可以在 C 中使用。下面是对每种技术的详细介绍,并附带示例说明: 1. 指针的引用(Reference to Pointer) 指针的引用允许在函数内部修改指针本身,而不仅…

BERT模型中的input_ids和attention_mask参数

一、概述 1.1 input_ids 在BERT模型及其衍生体中,输入文本首先经过一个分词处理流程,其中文本被细分为单词或子单词(subwords),每个分词随后映射到一个唯一的整数标识符。这些标识符组成了所谓的input_ids数组&#x…

2、电源管理入门之开机详解

目录 1. 硬件上电 2. ATF运行 3. Linux启动 3.1 内核启动start_kernel 3.2 平台启动setup_arch 3.4 DTS初始化psci_dt_init 3.5 系统rest创建kernel_init线程 3.6 SMP初始化smp_init 3.7 PSCI接口psci_cpu_on 3.8 SMC返回secondary_entry 系统开机牵扯到:“我是…

记录人工智能领域的人、事、社区

曾梦想执剑走天涯,我是程序猿【AK】 目录 简述概要关注人物OpenAI团队成员 关注事件2015年2016年2017年2018年2019年2020年2021年2022年2023年2024年 关注社区OpenAITensorFlowPyTorchMIT Technology ReviewReddit Machine LearningIEEE Transactions on Neural Net…

java 使用documents4j将XML转为pdf文件的方式

1.背景: 通过spire.doc.free将word转换成PDF时存在缺陷:只能获取前3页。获取全文另外需支付费用。 2.解决办法 使用documents4j,documents4j会保留原word文件中更多的样式,如修订模式下的差异化字体颜色、文档右侧修订记录等。 …

信息学奥赛一本通1188:菲波那契数列(2)

1188:菲波那契数列(2) 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 70272 通过数: 26790 【题目描述】 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。 给出一个正整数a,要求菲…

Android Studio基础(下载安装与简单使用)

1、搭建Android开发平台 1.1 Android Studio 下载地址及版本说明 Android 开发者官网: https://developer.android.com/index.html(全球,需科学上网) https://developer.android.google.cn/index.html(国内&#xff…

oracle INSERT 批量插入写法

直接采用mysql那种INSERT批量插入语句的写法,会报 SQL 错误 [933] [42000]: ORA-00933: SQL 命令未正确结束 它可以使用以下方法来批量插入数据: 使用INSERT ALL语句:可以在一条INSERT语句中插入多个记录。使用这种方法,您可以为…

十三、集合进阶——单列集合 及 数据结构

单列集合 及 数据结构 13.1 集合体系结构13.1.2 单列集合1. Collection2.Collection 的遍历方式迭代器遍历增强for遍历Lambda表达式遍历 3.List集合List集合的特有方法List集合的遍历方式五种遍历方式对比 4.数据结构1).栈2).队列3)数组4)链表小结5&…

PyTorch – 逻辑回归

data 首先导入torch里面专门做图形处理的一个库,torchvision,根据官方安装指南,你在安装pytorch的时候torchvision也会安装。 我们需要使用的是torchvision.transforms和torchvision.datasets以及torch.utils.data.DataLoader 首先DataLoa…

Tomcat是如何打破“双亲委派“机制的

目录 一、什么是双亲委派机制? 二、什么情况下我们需要破坏双亲委派模型?

营销系统黑名单优化:位图的应用解析 | 京东云技术团队

背景 营销系统中,客户投诉是业务发展的一大阻碍,一般会过滤掉黑名单高风险账号,并配合频控策略,来减少客诉,进而增加营销效率,减少营销成本,提升营销质量。 营销系统一般是通过大数据分析建模…

2024年了,如何从 0 搭建一个 Electron 应用

简介 Electron 是一个开源的跨平台桌面应用程序开发框架,它允许开发者使用 Web 技术(如 JavaScript、HTML 和 CSS)来构建桌面应用程序。Electron 嵌入了 Chromium(一个开源的 Web 浏览器引擎)和 Node.js(一…

关于ORA-30625: method dispatch on NULL SELF argument is disallowed

文章目录 1. 创建type2. 创建测试表3. 创建type body4. insert 测试数据5. 引用type并执行6.原因7. 正确的方式 JOB 频繁出现ORA-30625:method dispatch on NULL SELF argument is disallowed。 这篇文章将对此错误进行重现并分析其原因 1. 创建type CREATE OR RE…

游戏行业洞察:分布式开源爬虫项目在数据采集与分析中的应用案例介绍

前言 我在领导一个为游戏行业巨头提供数据采集服务的项目中,我们面临着实时数据需求和大规模数据处理的挑战。我们构建了一个基于开源分布式爬虫技术的自动化平台,实现了高效、准确的数据采集。通过自然语言处理技术,我们确保了数据的质量和…