当前位置:网站首页>软考 --- 软件工程(2)软件开发方法
软考 --- 软件工程(2)软件开发方法
2022-08-04 15:51:00 【想写程序的毛毛虫】
一、结构化分析
1.1 结构化分析(SA)
一种面向数据流的需求分析方法,利用图形表达用户需求,常用工具有数据流图、数据字典;
1.1.1 数据流图(DFD)
用来描述数据流从输入到输出的变换过程;
- DFD 不同于程序流程图;
- DFD 可以表现大到整个系统,小到一个模块;
- 分层数据流图;
1.1.2 数据字典(DD)
对软件的每个数据规定一个定义条目,以保持数据在系统中的一致性;
数据项:只含一个数据;
数据流:有多个相关的数据项组成;
数据文件(数据库);
1.2 结构化分析(SD)
是一种面向数据流的设计方法,以分析阶段产生的文档(数据流图、数据字典、软件需求说明书)为基础,逐步求精和模块化的过程;
结构化设计通常可以分为概要设计和详细设计;
1.2.1 概要设计
概要设计也称为结构设计或总体设计;
概要设计的基本任务:设计软件系统结构,进行模块划分,确定每个模块的功能、接口、模块间的调用关系;
概要设计工具:结构图、数据字典(DD)、判定树和判定表;
1.2.2 详细设计
为每个模块设计其实现的细节;
详细设计工具:
- 程序流程图;
- 盒图(NS图);
- 问题分析图(PAD);
- 程序设计语言(PDL);
二、面向数据结构的设计(了解即可)
根据输入/输出数据结构导出程序结构;
Jackson 方法和 Warnier 方法是最著名的两个面向数据结构的设计方法;
三、面向对象的分析与设计
面向对象的方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法;
面向对象 :对象(objext)+ 类(classification)+ 继承(inheritance)+通信(communication with messages)
采用这四个概念开发的软件系统是面向对象的;
3.1 对象(object)
- 对象时系统中用来描述客观事物的一个实体,是构成系统的一个基本单位 ;
- 属性(attribute)也称为状态或数据,用来描述对象的静态特征;
- 操作(operation)(也称方法或服务)规定了对象的行为,表示对象所能提供的服务;
封装(encapsulation)是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的;
3.2 类(class)
类是一组具有相同操作的对象的集合;
- 一个类中的每个对象都是这个类的一个实例(instance);
- 类是创建对象的模板,从一个类实例化的对象都有相同的结构和行为;
3.3 继承(inheritance)
继承是指特殊类(子类)的对象拥有其一般类(父类)的全部属性和服务;
父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承其父类(或祖先类)的属性和操作,还可以对父类(或祖先类)中的操作重新定义其实现方法;
3.4 多态性
多态性(polymorphism)是指同一个操作作用域不同的对象上可以有不同的解释,并产生不同的执行结果;
3.5 消息(message)
消息传递是对象间通信的手段,一个对象通过向另一个对象发送消息请求其服务;
一个消息通常包括接收对象名、调用的操作名和适当的参数;
消息只告诉接收对象需要完成什么操作,但不指示接收者怎样完成操作,消息完全由接收者解释执行;
3.6 面向对象方法的优点
- 与人类习惯的思维方法一致;
- 稳定性好;
- 可重用性好;
- 较易开发大型软件产品;
- 可维护性好;
边栏推荐
- 大家有没有遇到过 cdc mysql to doris只能单task,看不到具体数据流。怎么回事?
- 在Markdown文件中快速插入本地图片
- 吴恩达机器学习[13]-支持向量机
- 【愚公系列】2022年07月 Go教学课程 028-函数小结案例(通讯录)
- flink cdc怎么指定位点,从某个位点开始消费mysql的Binlog?
- 我说MySQL联合索引遵循最左前缀匹配原则,面试官让我回去等通知
- Projector reached the party benefits 】 【 beginners entry - brightness projection and curtain selection - from entry to the master
- Pisanix v0.2.0 发布|新增动态读写分离支持
- "Research Report on the Development of Global Unicorn Enterprises in the First Half of 2022" released - DEMO WORLD World Innovation Summit ended successfully
- uni-app之renderjs
猜你喜欢
Xi'an Zongheng Information × JNPF: Adapt to the characteristics of Chinese enterprises, fully integrate the cost management and control system
numpy入门详细代码
Byte、Short、Integer、Long内部缓存类的对比与源码分析
An article to answer what is the product library of the DevOps platform
项目里的各种配置,你都了解吗?
分支控制if-else
线上一次JVM FullGC搞得整晚都没睡,彻底崩溃
荐书 | 《大脑的奥秘:人人要懂的脑科学》:大脑里面有什么
ICDE‘22推荐系统论文之Research篇
Pisanix v0.2.0 发布|新增动态读写分离支持
随机推荐
实战:10 种实现延迟任务的方法,附代码!
我在羊毛和二手群里报复性消费
HyperBDR云容灾深度解析一:云原生跨平台容灾,让数据流转更灵活
成功 解决 @keyup.enter=“search()“ 在el-input 组件中不生效的问题
7 天学个Go,Go 结构体 + Go range 来学学
remote: Check Access Error, please check your access right or username and password!fatal: Authenti
MySQL select加锁分析
JVM调优-GC基本原理和调优关键分析
【Harmony OS】【FAQ】Hongmeng Questions Collection 2
【Jprofile 11.0 安装】
(2022杭电多校五)C - Slipper (dijkstra+虚拟结点)
解决dataset.mnist无法加载进去的情况
The electromagnetic compatibility EMC protection study notes
06-总线
番茄插件番茄助手下载
js判断一个对象是否在一个对象数组中
云存储硬核技术内幕——(8) 只缘身在此山中
numpy入门详细代码
爬虫小白笔记(昨天的对于注意解析数据的补充)
Crawler Xiaobai Notes (yesterday's supplement to pay attention to parsing data)