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

系统架构13 - 软件工程(1)

软件工程

  • 软件开发生命周期
    • 软件定义时期
    • 软件开发时期
    • 软件运行和维护
    • 文档
  • 软件工程过程
  • 软件系统工具
  • 软件设计四个活动:
  • 能力成熟度模型CMM
    • CMM
    • CMMI
      • 两种表示方法

软件开发生命周期

软件定义时期

包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标。具体可分成问题定义、可行性研究、需求分析等。

软件开发时期

就是软件的设计与实现,可分成概要设计、详细设计、编码、测试等。

软件运行和维护

就是把软件产品移交给用户使用。

文档

软件系统的文档可以分为用户文档系统文档两类。

  • 用户文档。主要描述系统功能和使用方法,并不关心这些功能是怎样实现的。
  • 系统文档。描述系统设计、实现和测试等各方面的内容。

软件工程过程

是指为获得软件产品包括以下4个方面活动:

  • P(Plan): 软件规格说明。规定软件的功能及其运行时的限制
  • D(Do): 软件开发。开发出满足规格说明的软件。
  • C(Check): 软件确认。确认开发的软件能够满足用户的需求。
  • A(Action): 软件演进。软件在运行过程中不断改进以满足客户新的需求。

软件系统工具

通常可以按照软件过程活动分为:
软件开发工具:需求分析工具、设计工具、编程与排错工具、测试工具等。
软件维护工具:版本控制、文档分析工具、开发信息库工具、逆向工程工具、再工程工具等。
软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择。

软件设计四个活动:

(1)数据设计。
(2)架构(体系结构)设计。
(3)人机界面(接口)设计。
(4)过程(功能)设计。

能力成熟度模型CMM

CMM

软件能力成熟度模型 (Capability Maturity Model for Software,CMM) 是一个概念模型,模型框架和表示是刚性的,不能随意改变,但模型的解释和实现有一定弹性

能力等级特点关键过程区域
初始级过程通常是杂乱无章的,几乎没有明确定义的步骤个人努力、英雄主义
可重复级建立了基本的项目管理过程和实践来跟踪项目费用、进度和功能特性。存在必要的过程准则来重复以往的成功案例软件配置管理、软件质量保证、软件子合同管理、软件项目跟踪与监督、软件项目策划、软件需求管理
已定义级管理和工程两方面的软件过程已经文档化、标准化,并综合成整个组织的标准软件过程。所有项目都据此过程来开发和维护软件同行评审、组间协调、软件产品工程、集成软件管理、培训大纲、组织过程定义
已管理级制定了软件过程和产品质量的详细度量标准软件质量管理和定量过程管理
优化级加强了定量分析,通过来自过程质量的反馈和来自新观念、新技术的反馈使过程能不断持续地改进过程更改管理、技术改革管理和缺陷预防

CMMI

CMMI(Capability Maturity Model Integration for Software, 软件能力成熟度模型集成) 是在 CMM 的基础上发展而来的。
CMMI提供了一个软件能力成熟度的框架,它将软件过程改进的步骤组织成5个成熟度等级,共包括18个关键过程域,52个过程目标,3168种关键时间,它为软件过程不断改进奠定了一个循序渐进的基础。
CMMI是若干个过程模型的综合和改进,不仅限于软件,也包括多个工程学科和领域的、系统的、一致的过程改进框架,能适应现代工程特点和需要,能提高过程质量和效率

两种表示方法

(1)连续式模型:关注每个过程域的能力,一个组织对不同过程域可以达到不同的过程域能力等级。
(2)阶段式模型:类似于CMM,关注组织的成熟度,五个成熟度模型如下:

能力等级特点关键过程区域
初始级过程通常是随意且混乱组织的成功依赖于组织内人员的能力与英雄主义。也常常能产出能用的产品与服务,但它们经常超出在计划中记录的预算与成本。
已管理级过程为项目服务确保策划、文档化、执行、监督和控制项目级的过程。为过程建立明确的目标,并能实现成本、进度和质量目标等
已定义级过程为组织服务企业能够根据自身的特殊情况定义适合自己企业和项目的标准流程,将这套管理体系与流程予以制度化,同时企业开始进行项目积累,企业资产的收集。
量化管理级过程已度量和控制组织建立了产品质量、服务质量以及过程性能的定量目标。成熟度级别与上一级的关键区别在于对过程性能的可预测
优化级集中于过程改进和优化企业的项目管理达到了最高的境界。关注于通过增量式的与创新式的过程与技术改进,不断地改进过程性能。组织使用从多个项目收集来的数据对整体的组织级绩效进行关注。

相关文章:

  • 第二章 使用 SQL Search
  • 使用docker配置semantic slam
  • Python ddddocr 构建 exe 程序后运行报错:Failed Load model ... common_old.onnx
  • Mac M1 Parallels CentOS7.9 Deploy Typecho
  • 考研C语言刷编程题篇之分支循环结构基础篇(一)
  • 从零开始c++精讲:第三篇——内存管理
  • 计算机毕业设计选题分享-ssm租房小程序42196(赠送源码数据库)JAVA、PHP,node.js,C++、python,大屏数据可视化等
  • esp32-c-简单应用笔记
  • python-基础篇-函数
  • 「实战应用」如何用DHTMLX Gantt构建类似JIRA式的项目路线图(二)
  • 软件测试|使用matplotlib绘制箱型图
  • SpringSecurity(07)——JWT整合
  • react和vue的区别
  • 数字身份所有权:Web3时代用户数据的掌控权
  • EXCEL VBA获取幸运数字号码
  • 【css3】浏览器内核及其兼容性
  • Create React App 使用
  • CSS 专业技巧
  • HomeBrew常规使用教程
  • IOS评论框不贴底(ios12新bug)
  • JavaScript 奇技淫巧
  • JAVA之继承和多态
  • JS函数式编程 数组部分风格 ES6版
  • markdown编辑器简评
  • Object.assign方法不能实现深复制
  • Selenium实战教程系列(二)---元素定位
  • SSH 免密登录
  • Travix是如何部署应用程序到Kubernetes上的
  • 反思总结然后整装待发
  • 关于for循环的简单归纳
  • 汉诺塔算法
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 强力优化Rancher k8s中国区的使用体验
  • 使用Swoole加速Laravel(正式环境中)
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # Panda3d 碰撞检测系统介绍
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (二)linux使用docker容器运行mysql
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (转)可以带来幸福的一本书
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .py文件应该怎样打开?
  • @Builder用法
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝