当前位置: 首页 > news >正文

系统架构师-软件工程

一、相关定义
1. 软件工程

指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,其目的是提高软件生产率、提高软件质量、降低软件成本。

2. 软件生命周期

软件要经历从需求分析、软件设计、软件开发、运行维护,直至被淘汰的全过程。

3. 软件过程模型定义

为了使软件生命周期中各项任务能够有序的按照规程进行,需要一定的工作模型对各项任务给予规程约束,这样的工作模型被称为软件过程模型,又称软件生命周期模型。

二、重量级模型
1. 瀑布模型

在这里插入图片描述

适用于需求很明确的项目,有利于人员组织、便于管理。需求完整性、正确性很难确定,纠错、变更代价巨大,很难在每个阶段一次性完全解决该阶段工作。

2. 原型模型/快速原型模型

在这里插入图片描述

适用于需求模糊不清,需要一定的开发环境和工具的支持,对原型的若干次修改后,应收敛,大型软件难以设计原型。

3. 螺旋模型

在这里插入图片描述

强调风险分析,支持面向规格说明、面向过程、面向对象的开发方法。适用于膨大、复杂并且具有高风险的系统。抵御风险能力强,支持需求变化。周期长,管理难度大,对开发人员风险分析能力要求高。

三、轻量级模型
1. 敏捷开发模型

适用于团队和项目规模比较小的情况,适应性而非预设性,面向人而非面向过程,迭代增量式的开发。

2. 统一过程模型(UP)

9个核心工作流:业务建模、需求、分析与设计、实现、测试、部署、配置与变更管理、项目管理、环境。

3. CMMI

软件能力成熟度模型主要用于指导软件开发过程和进行软件开发能力的评估。
CMMI模型包含5个级别:初始级、已管理级、已定义级、量化管理级、优化级。

4. 净室软件工程

一种以经济方式生产高质量软件的工程技术,其理念在于通过严格的工程过程,在规约和设计阶段消除错误,并以“净”的方式只做软件。净室软件工程的理论基础主要包括函数理论和抽样理论。

四、基于构件的软件工程(CBSE)

基于构件组装的软件开发过程,需要考虑构件的复用,裁剪、适配。

  • 构件:一个独立的软件单元,可以与其它软件构成一个软件系统。
  • 特征:可组装性、可部署性、文档化、独立化、标准化
  • 构件的组成:接口、使用信息、部署
  • 主要过程: 系统需求概览、识别候选构件、根据发现的构件修改需求、体系结构设计、构件定制和是撇撇、组装构件、创建系统
  • 组装:顺序组装、层次组装、叠加组装
  • 构件不兼容:参数不兼容、操作不兼容、操作不完备

示例

  1. javaEE 构件简介:EJB:服务器端构件,Servlets和JSP:Servlets是Java类,JSP是基于文本的表示层技术,一起构件Web应用程序,JMS:是消息传递的标准API,JDBC:与数据库之间进行通信的标准API
  2. .net构件简介:COM构件
五、软件开发环境与工具
  1. 软件开发环境是指支持软件的工程化开发和维护而使用的一组软件,由软件工具集和环境集成机制组成,前者用以支持软件开发的相关过程、活动和任务,后者为工具集成和软件的开发、维护及管理提供统一的支持。

  2. 软件工具集:软件开发工具、软件维护工具、软件管理和软件支持工具。

http://www.dtcms.com/a/355295.html

相关文章:

  • 前端响应式设计
  • 推荐系统王树森(五)重排多样性提升
  • 银河麒麟桌面操作系统:为什么不让root直接登录图形界面?以及如何安全地解决这个问题
  • 英伟达营收和利润均超出市场预期,但盘后一度跌超5%
  • Groovy语法入门
  • [光学原理与应用-321]:皮秒深紫外激光器产品不同阶段使用的工具软件、对应的输出文件
  • 客户案例 | 国际知名内衣品牌x甄知科技,领航IT服务新征程
  • linux 网络:并发服务器及IO多路复用
  • 开发避坑指南(42):Vue3 element ui el-table单选实现方案
  • HTML静态页面实现材积计算器和材积表生成器
  • 动手学深度学习(pytorch版):第七章节—现代卷积神经网络(5)批量规范化
  • 吴炳锡:AI 时代下的湖仓一体化平台建设的思考
  • 从枯燥C++到趣味音乐:我的Windows系统底层探索之旅
  • 公共字段自动填充
  • Foundry工具大全
  • uniapp vue3 canvas实现手写签名
  • 【Node.js从 0 到 1:入门实战与项目驱动】2.4 开发工具推荐(VS Code 、IDEA及插件、终端工具、调试工具)
  • Cesium入门教程(二)环境搭建(HTML版)
  • QT:【第一个QT程序】【信号和槽】
  • 使用uni-app和Canvas生成简易双列表格布局并长按下载到本地
  • 混淆 打包 编译
  • Ovis2.5技术解密:原生分辨率与“反思模式”如何铸就新一代MLLM王者
  • 2024年山东省信息学小学组(CSP-X)第一轮题解
  • 冒泡排序算法详解(python code)
  • Python训练营打卡 DAY 50 预训练模型+CBAM模块
  • Shell 编程基础与实践要点梳理
  • PCIe 5.0 SSD连续读写缓存用完速度会骤降吗?
  • IntelliJ IDEA 反编译JAR包记录
  • Beats与Elasticsearch高效数据采集指南
  • Komo Searc-AI驱动的搜索引擎