1. 软件生命周期C/S、B/S 架构

news2024/11/26 20:37:19

目录

1. 软件生命周期

2. 面向对象 

2.1 面向对象分析

2.2 面向对象设计

2.3 面向对象编程

3. C/S、B/S 架构

3.1 CS 架构

3.2 BS 架构


1. 软件生命周期

软件生命周期中划分为可行性研究、需求分析、概要设计、详细设计、实现、组装(集成)测试、
确认测试、使用、维护、退役10个阶段,如下图:

  • 可行性研究:通过分析软件开发要求,确定软件项目的性质、目标和规模,得出可行性研究报告,如果可行性研究报告是可行的,就要制订详细的项目开发计划。此阶段交付成果为可行性研究报告;
  • 需求分析是软件生命周期中重要的也是决定性的一步,通过需求分析才能把软件功能和性能的总体概念描述为具体的软件需求规格说明书,为软件开发奠定基础,此阶段交付成果为软件需求规格说明书;
  • 概要设计:根据软件需求规格说明建立软件系统的总体结构和模块间的关系,定义各功能模块接口,设计全局数据库或数据结构,规定设计约束,制定组装(集成)测试计划;
  • 详细设计:将各模块要实现的功能用相应的设计工具详细的描述出来;
  • 实现:写出正确的、易理解的和易维护的程序模块。程序员根据详细设计文档将详细设计转化为程序,完成单元测试;
  • 组装测试(集成测试):将经过单元测试的模块逐步进行组装和测试;
  • 确认测试:测试系统是否达到了系统要求,按照规格说明书的规定,由用户(或在用户积极参与下)对系统进行验收。必要时,还可以再通过现场测试或并行运行等方法对系统进行进一步测试;
  • 使用:将软件安装在用户确定的运行环境中,测试通过后移交用户使用。在软件使用过程中,客户和维护人员必须认真收集发现的软件错误,定期或阶段性的撰写软件问题报告和软件修改报告;
  • 维护:通过各种必要的维护活动使系统持久的满足用户需要;
  • 退役:终止对软件产品的支持,软件停止使用。

作为实践项目,我们主要完成需求分析、概要及详细(系统)设计、实现、单元和集成测试、部署使用这几个阶段的任务。

2. 面向对象 

对象的数据对应表示为属性,对象的动作表示为方法。

使用面向对象方法对系统进行构建主要分为以下几个阶段:

2.1 面向对象分析

Object-Oriented Analysis(OOA)发生在需求分析阶段,解决“做什么”的问题,主要任务是确定对象的属性与方法,对象与对象之间的关系,各个操作的具体流程,但不考虑系统具体实现有关的因素;


2.2 面向对象设计


Object-Oriented Design(OOD)发生在系统设计阶段,解决的是“怎么做”的问题,其基本思想包括抽象、封装和可扩展性,其中可扩展性主要通过继承和多态来实现。主要任务是把实现对象进行工程化规范,管理程序内部各部分的相互依赖,为面向对象编程提供指导与依据;

2.3 面向对象编程


Object-Oriented Programming (OOP)发生在系统开发阶段,使用面象对象语言如JAVA,实现OOD模型中的各个成分;OOP的三个主要目标是:重用性,灵活性和扩展性。

3. C/S、B/S 架构

  • C/S 架构即客户端/服务器架构模式
  • B/S 架构即浏览器/服务器架构模式

3.1 CS 架构

C/S 架构全称是客户端/服务器(Client/Server)架构,是常用的两层架构。客户端需要安装客户端软件,服务端程序运行在服务器上,提供Socket或数据库服务。

常用于固定用户群体中。常见的C/S架构的应用,比如QQ,CCTALK,各种网络游戏等等,一般需要安装并且与服务器进行网络通信的都属于此类。

优点:

  • 大部分业务都可以在客户端完成,充分利用本地的计算机资源
  • 响应速度快
  • 个性化定制能力强
  • 面向相对固定的用户群,对信息安全的控制能力强

缺点:

  • 需要安装客户端才能使用
  • 维护成本高,任何一台电脑上的客户端出现问题都需要进行维护,升能过程繁琐

3.2 BS 架构

B/S架构全称是浏览器/服务器(Browser/Server)结构,分为Web浏览器、服务器程序、数据库服务三部分,可以理解为是对C/S架构一种改进。由于所有的业务逻辑都由服务器程序处理,所以客户端仅使用浏览器就可以完成所有操作,大大降低了客户端的维护成本。

常用于对公开用户提供的网络服务中。比如常见的大型网站都属于此类。
优点:

  • 客户端零维护,只需要安装一个浏览器即可
  • 所有业务都集中在服务器端,业务扩展非常方便
  • 维护成本低,只需要维护服务器即可

缺点:

  • 服务器安全与业务处理能力需要花费很大精力与成本
  • 不同浏览器支持不尽人意

JAVA EE项目都基于B/S架构。

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

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

相关文章

【Linux】进程间通信——system V共享内存

目录 写在前面的话 System V共享内存原理 System V共享内存的建立 代码实现System V共享内存 创建共享内存shmget() ftok() 删除共享内存shmctl() 挂接共享内存shmat() 取消挂接共享内存shmdt() 整体通信流程的实现 写在前面的话 上一章我们讲了进程间通信的第一种方式…

kubeadml 安装 k8s

目录 一:kubeadml 安装 k8s 1、网络环境 2、 环境准备 3、 所有节点安装docker 4、所有节点安装kubeadm,kubelet和kubectl ​5、部署K8S集群 6、测试 二: 部署 Dashboard 一:kubeadml 安装 k8s 1、网络环境 master&am…

VBA遍历Wrod所有表格每个单元格,单元格未尾两个回车替换

一、遍历 word中遍历所有表格的每个单元格。因为在单元格时会常出错。浪费了不少时间。 Sub a()Dim doc As Document, tb As Table, ce As cellDim rng As Range, p As ParagraphSet doc ActiveDocumentFor Each tb In doc.TablesFor Each ce In tb.Range.Cells 关键处就是这里…

作为程序猿,怎么维护自己的电脑?

我的电脑是联想拯救者R7000 内存:16G CPU :AMD R5 外存:500G。买这台电脑是个意外。情况是这样的,面试去了一家外包公司,入职当天, HR问我:你的电脑呢? 我:没有发给我啊 …

十一、ESP32加快240x240显示二维码

1. 效果 非常快速的显示出二维码 2. 原理 2.1 之前的方式(慢)

MySQL日期常见的函数

-- 获取当天日期 -- 2023-06-20 select curdate();-- 获取当天年月日时分秒 select now();-- 日期运算 -- 2024-06-20 17:04:17 select date_add(now(),interval 1 year);-- 日期比较 -- 0 select datediff(now(),now());-- 日期MySQL对于日期类型数据如何查询 -- 获取指定日期…

vcode开发go

配置环境变量 go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,direct 创建文件夹 mkdir hello cd hello go mod init hello 安装所有"all" matched packages go mod tidy

Linux文件属性与权限管理(可读、可写、可执行)

Linux把所有文件和设备都当作文件来管理,这些文件都在根目录下,同时Linux中的文件名区分大小写。 一、文件属性 使用ls -l命令查看文件详情: 1、每行代表一个文件,每行的第一个字符代表文件类型,linux文件类型包括&am…

Python编程从入门到实践练习第五章:if语句和条件测试

目录 一、条件测试1.1 检测多个条件(and / or)1.2 检测特定值是否包含在列表中1.3 if语句结构 二、if语句处理列表2.1 判断列表是否为空2.2 练习题代码输出 一、条件测试 1.1 检测多个条件(and / or) 所用关键词 and : 两个条件…

C++ 多态 虚函数表

文章目录 简易抽象理解多态多态的具体实现虚函数的定义虚函数的重写重定义(隐藏)、重载 、重写(覆盖)区别C11 override 和 final 关键字抽象类的定义接口继承和实现继承多态的原理:虚函数表单继承和多继承关系的虚函数…

Nginx可视化Nginx-gui

Github:GitHub - onlyGuo/nginx-gui: Nginx GUI Manager 运行方式支持docker、window 下载后压缩,直接运行startup.bat 默认账号密码:admin/admin

Flutter iOS 集成使用 flutter boost

在 Flutter项目中集成完 flutter boost,并且已经使用了 flutter boost进行了路由管理,这时如果需要和iOS混合开发,这时就要到 原生端进行集成。 注意:之前建的项目必须是 Flutter module项目,并且原生项目和flutter m…

CorelDRAW2023矢量制图支持Windows和macOS系统安装使用

CorelDRAW Graphics Suite - 矢量制图专为企业打造的矢量设计作图软件CorelDRAW Graphics Suite套装,支持Windows和macOS系统安装使用。使用 CorelDRAW Graphics Suite 2023,打破创意障碍,以自己的风格进行自由创作。与全球数百万仰赖 CorelD…

睡眠助手/白噪音/助眠夜曲微信小程序源码 附教程

简介: 睡眠助手/白噪音/助眠夜曲微信小程序源码 附教程 支持分享海报 支持暗黑模式 包含了音频数据 最近很火的助眠小程序,前端vue,可以打包H5,APP,小程序 后台可以设置流量主广告,非常不错的源码 代码完…

Linux操作系统知识点总结(二)

总结(一)链接Linux操作系统知识点总结(一)(附VMware、CentOS以及finalshell的安装教程)_你好,明天,,的博客-CSDN博客 43. 由于虚拟机的 Linux系统的IP地址是通过DHCP服务…

前端CSS文字阴影text-shadow记录

前端CSS文字阴影text-shadow记录 一、文字阴影 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Doc…

【基于IDEA + Spark 3.4.1 + sbt 1.9.3 + Spark MLlib 构建逻辑回归鸢尾花分类预测模型】

逻辑回归进行鸢尾花分类的案例 背景说明&#xff1a; 基于IDEA Spark 3.4.1 sbt 1.9.3 Spark MLlib 构建逻辑回归鸢尾花分类预测模型&#xff0c;这是一个分类模型案例&#xff0c;通过该案例&#xff0c;可以快速了解Spark MLlib分类预测模型的使用方法。 依赖 ThisBui…

“算法详解”系列第3卷贪心算法和动态规划出版

“算法详解”系列图书共有4卷&#xff0c;目前1到3卷已经出版。最新出版的是第3卷—贪心算法和动态规划。 算法详解 卷3 贪心算法和动态规划 “算法详解”系列图书共有4卷&#xff0c;本书是第3卷—贪心算法和动态规划。其中贪心算法主要包括调度、最小生成树、集群、哈夫曼编…

vue+vite线上环境地址和开发环境配置方式

vuevite线上环境地址和开发环境配置方式 第一种(放飞自我写法) 说明:后端已解决跨域的情况下配置线上部署访问地址和开发时候地址 java解决跨域代码: Configuration public class WebMvcConfig implements WebMvcConfigurer {Overridepublic void addCorsMappings(CorsRegistr…