首页 > 其他分享 >软件工程快速入门(上)

软件工程快速入门(上)

时间:2023-11-28 13:56:27浏览次数:33  
标签:CMM 入门 模型 软件工程 原型 阶段 SDLC 软件 快速

1什么是SDLC?

image

软件开发生命周期(SDLCSoftware Development Lifecycle)是构建软件的系统过程,可确保构建软件的质量和正确性。 SDLC流程旨在生产满足客户期望的高质量软件。软件开发应在预定义的时间范围和成本内完成。

SDLC包含详细的计划,解释如何规划,构建和维护特定的软件。 SDLC生命周期的每个阶段都有自己的流程和可交付成果,可以进入下一阶段。

为什么选择SDLC?

这里是SDLC对于开发软件系统非常重要的主要原因。

  • 它为项目规划,调度和估算提供了基础
  • 为一组标准活动和可交付成果提供框架
  • 它是项目跟踪和控制的机制
  • 提高项目规划对开发过程中所有相关利益相关者的可见性
  • 增加并提高开发速度
  • 改善客户关系
  • 帮助您降低项目风险和项目管理计划开销

SDLC阶段

整个SDLC流程分为以下几个阶段:

image

  • 阶段1:需求收集和分析
  • 第2阶段:可行性研究:
  • 第3阶段:设计:
  • 阶段4:编码:
  • 第5阶段:测试:
  • 阶段6:安装/部署:
  • 阶段7:维护:

阶段1:需求收集和分析:

该要求是SDLC流程的第一阶段。它由高级团队成员根据业内所有利益相关者和领域专家的意见进行。在此阶段还要规划质量保证要求并识别所涉及的风险。

此阶段更清晰地描述了整个项目的范围以及触发项目的预期问题,机会和指令。

要求收集阶段需要团队获得详细和精确的要求。这有助于公司完成必要的时间表,以完成该系统的工作。

第2阶段:可行性研究:

完成需求分析阶段后,下一步是定义和记录软件需求。此过程在“软件需求规范”文档的帮助下进行,该文档也称为“SRS”文档。它包括在项目生命周期中应设计和开发的所有内容。

主要有五种可行性检查:

  • 经济:我们能否在预算范围内完成项目?
  • 法律:我们能否将此项目作为网络法和其他监管框架/合规处理。
  • 运营可行性:我们能否创建客户期望的运营?
  • 技术:需要检查当前的计算机系统是否可以支持该软件
  • 时间表:确定项目是否可以在给定的时间表内完成。

第3阶段:设计:

在第三阶段,系统和软件设计文档按照需求规范文档准备。这有助于定义整个系统架构。

该设计阶段作为模型下一阶段的输入。

在此阶段开发了两种设计文档:

高级设计(HLD)

  • 每个模块的简要描述和名称
  • 关于每个模块的功能的概述
  • 模块之间的接口关系和依赖关系
  • 识别数据库表及其关键元素
  • 完整的架构图以及技术细节

详细设计(LLD)

  • 模块的功能逻辑
  • 数据库表,包括类型和大小
  • 界面的完整细节
  • 解决所有类型的依赖性问题
  • 错误消息列表
  • 为每个模块完成输入和输出

阶段4:编码:

一旦系统设计阶段结束,下一阶段就是编码。在此阶段,开发人员通过使用所选编程语言编写代码来开始构建整个系统。在编码阶段,任务分为单元或模块,并分配给各种开发人员。这是软件开发生命周期过程中最长的阶段。

在此阶段,开发人员需要遵循某些预定义的编码指南。他们还需要使用编译器,解释器,调试器等编程工具来生成和实现代码。

第5阶段:测试:

软件完成后,将其部署在测试环境中。测试团队开始测试整个系统的功能。这样做是为了验证整个应用程序是否符合客户要求。

在此阶段,QA和测试团队可能会发现一些与开发人员沟通的错误/缺陷。开发团队修复了该错误并将其发送回QA进行重新测试。此过程一直持续到软件无错误,稳定并根据该系统的业务需求工作。

阶段6:安装/部署:

一旦软件测试阶段结束并且系统中没有任何错误或错误,则开始最终部署过程。根据项目经理提供的反馈,最终软件将被发布并检查是否存在部署问题。

阶段7:维护:

部署系统后,客户开始使用已开发的系统,发生以下3项活动

  • 错误修复 - 由于某些未完全测试的情况而报告错误
  • 升级 - 将应用程序升级到较新版本的软件
  • 增强功能 - 在现有软件中添加一些新功能

SDLC阶段的主要重点是确保继续满足需求,并确保系统继续按照第一阶段提到的规范执行。

参考资料

流行的SDLC模型

这里是SDLC生命周期的一些最重要的阶段:

  • 瀑布模型

瀑布是一种广泛接受的SDLC模型。在这种方法中,软件开发的整个过程分为不同的阶段。在该SDLC模型中,一个阶段的结果充当下一阶段的输入。

该SDLC模型是文档密集型的,早期阶段记录了后续阶段需要执行的操作。

  • 增量方法

增量模型不是单独的模型。它本质上是一系列瀑布循环。这些要求在项目开始时分为几组。对于每个组,遵循SDLC模型来开发软件。重复SDLC过程,每个版本都添加更多功能,直到满足所有要求。在此方法中,每个循环都充当先前软件版本的维护阶段。对增量模型的修改允许开发周期重叠。之后的循环可以在前一循环完成之前开始。

  • V模型

在这种类型的SDLC模型测试和开发中,阶段是并行计划的。因此,侧面有验证阶段,另一侧有验证阶段。 V-Model通过编码阶段加入。

  • 敏捷模型

敏捷方法是一种在任何项目的SDLC过程中促进开发和测试的持续交互的实践。在Agile方法中,整个项目分为小型增量构建。所有这些构建都是在迭代中提供的,每次迭代持续一到三周。

  • 螺旋模型

螺旋模型是风险驱动的过程模型。此SDLC模型可帮助团队采用一个或多个流程模型的元素,如瀑布,增量,瀑布等。

该模型采用了原型模型和瀑布模型的最佳特征。螺旋方法是设计和开发活动中快速原型设计和并发性的结合。

  • 大爆炸模型

Big bang模型专注于软件开发和编码中的所有类型的资源,没有或很少计划。这些要求在它们到来时就被理解和实施。

此模型最适合与较小规模开发团队合作的小型项目。它对学术软件开发项目也很有用。这是一个理想的模型,其中要求是未知的或未给出最终发布日期。

小结

结论

  • SDLC是一个用于构建软件的系统过程,可确保所构建软件的质量和正确性
  • SDLC流程为标准的一系列活动和可交付成果提供了框架
  • 七个不同的SDLC阶段1)需求收集和分析2)可行性研究:3)设计4)编码5)测试:6)安装/部署和7)维护
    高级团队成员进行需求分析阶段
  • 可行性研究阶段包括在项目生命周期中应设计和开发的所有内容
  • 在设计阶段,系统和软件设计文档是根据需求规范文档准备的
  • 在编码阶段,开发人员通过使用所选编程语言编写代码来开始构建整个系统
  • 测试是下一阶段,用于验证整个应用程序是否按照客户要求运行。
  • 当软件测试阶段结束时,安装和部署面开始,并且系统中没有任何错误或错误
  • 维护面中涉及的错误修复,升级和参与操作
  • 瀑布,增量,敏捷,V型,螺旋,大爆炸是一些流行的SDLC模型
  • SDLC包含详细的计划,解释如何规划,构建和维护特定的软件

2瀑布模型

什么是瀑布模型?

瀑布模型是一种将软件开发划分为不同阶段的顺序模型。 每个阶段都设计用于在SDLC阶段执行特定活动。 它由Winston Royce于1970年推出。

image

软件工程中瀑布模型的不同阶段

阶段活动
需求收集阶段 从客户收集要开发的软件系统的详细要求
设计阶段 规划编程语言、数据库或者项目的其他高级技术细节
编码 在设计阶段之后,它是建立阶段,这只是编码软件
测试阶段 测试软件以验证它是否按照客户端提供的规范构建。
部署阶段 在相应的环境中部署应用程序
维护阶段 可能需要根据客户要求更改代码

何时使用SDLC瀑布模型

可以使用瀑布模型

  • 需求不经常变化
  • 应用并不复杂和庞大
  • 项目很短
  • 要求很明确
  • 环境稳定
  • 使用的技术和工具不是动态的,而且是稳定的
  • 资源可用并经过培训

瀑布模型的利弊

好处缺点
在下一个开发阶段之前,必须完成上一阶段 只能在阶段期间修复错误
适用于需求定义明确的小型项目 对于需求经常变化的复杂项目,这是不可取的
应该在完成每个阶段之前执行质量保证测试(验证和验证) 测试介入很晚
精心编写的文档 文档占用了开发人员和测试人员的大量时间
项目完全依赖项目团队,客户干预最少 客户的宝贵反馈不能包含在正在进行的开发阶段
软件的任何变化都是在开发过程中进行的 完成的软件中出现的微小变化或错误可能会导致很多问题

3增量模型

什么是增量模型?

增量模型是一个软件开发过程,其中需求被分解为软件开发周期的多个独立模块。从分析设计,实施,测试/验证,维护开始逐步进行增量开发。

image

每次迭代都要经过需求,设计,编码和测试阶段。并且系统的每个后续版本都会将功能添加到先前版本,直到实现了所有设计的功能。

image

系统在交付第一个增量时投入生产。第一个增量通常是解决基本要求的核心产品,并在下一个增量中添加补充功能。一旦客户分析了核心产品,就会有下一个增量的计划开发。

增量模块的特征包括

  • 系统开发分解为许多小型开发项目
  • 部分系统相继构建以产生最终的总系统
  • 首先解决最高优先级要求
  • 一旦制定了要求,就会冻结对该增量的要求

需求分析:收集软件的要求和规格
设计: 在此阶段设计了一些高端功能
编码:在此阶段完成软件编码
测试:部署系统后,它将进入测试阶段

何时使用增量模型?

  • 清楚地理解系统的要求
  • 当产品的早期发布需求出现时
  • 当软件工程团队不熟练或训练有素时
  • 当涉及高风险特征和目标时
  • 这种方法更多地用于Web应用程序和基于产品的公司

优点:

  • 软件将在软件生命周期中快速生成
  • 更改要求和范围更灵活,成本更低
  • 发展阶段的变化可以做到
  • 与其他模型相比,该模型的成本更低
  • 客户可以回复每个版本
  • 错误很容易识别

缺点:

  • 它需要一个良好的规划设计
  • 问题可能是由于系统架构导致的,因此并非所有需求都在整个软件生命周期中预先收集
  • 每个迭代阶段都是刚性的,并且彼此不重叠
  • 在一个单元中纠正问题需要在所有单元中进行校正并且消耗大量时间

4螺旋模型

什么是螺旋模型?

螺旋模型是瀑布模型和迭代模型的组合。螺旋模型中的每个阶段都以设计目标开始,最后由客户审查进度。 Barry Boehm在1986年的论文中首次提到螺旋模型。

Spiral-SDLC模型的开发团队从一小部分需求开始,并针对这些需求进行每个开发阶段。软件工程团队在每个不断增加的螺旋中增加了额外需求的功能,直到应用程序为生产阶段做好准备。
image

螺旋模型阶段

  • 计划

它包括估算迭代的成本,进度和资源。它还涉及了解系统分析员与客户之间持续通信的系统要求

  • 风险分析
    在规划和最终确定风险缓解策略的同时,确定潜在风险

  • 工程
    它包括在客户现场测试,编码和部署软件

  • 评估
    由客户评估软件。此外,还包括识别和监控诸如进度滑点和成本超支等风险

什么时候使用螺旋方法?

  • 当项目很大时
  • 需要频繁发布
  • 创建原型时适用
  • 风险和成本评估很重要时
  • 适用于中高风险项目
  • 当要求不清楚和复杂时
  • 随时可能需要更改
  • 由于经济优先事项的变化,长期项目承诺不可行

螺旋模型的优缺点

好处

  • 其他功能或更改可在稍后阶段完成
  • 由于原型建筑是以小碎片完成的,因此成本估算变得容易
  • 持续或重复的开发有助于风险管理
  • 开发速度快,功能以系统的方式添加
  • 始终存在客户反馈的空间

缺点

  • 不符合时间表或预算的风险
  • 它最适合大型项目,也需要风险评估专业知识
  • 为了顺利运行,需要严格遵循螺旋模型协议
  • 文档更多,因为具有中间阶段
  • 对于较小的项目,这是不可取的,它可能会花费很多

5RAD快速应用程序开发模型

什么是RAD(快速应用程序开发)模型?

RAD或Rapid Application Development流程采用瀑布模型;它的目标是在短时间内开发软件。

SDLC RAD模型具有以下阶段

  • 业务建模
  • 数据建模
  • 流程建模
  • 应用程序生成
  • 测试和Turnover

image

它侧重于信息的输入输出源和目的地。它强调以小块形式提供项目;较大的项目分为一系列较小的项目。 RAD模型的主要特点是它专注于模板,工具,流程和代码的重用。

image

RAD模型的阶段

  • 业务建模:根据各种业务渠道之间的信息流动和分配,设计产品
  • 数据建模:从业务建模收集的信息被细化为一组对业务有重要意义的数据对象
  • 流程建模:转换在数据建模阶段声明的数据对象,以实现实现业务功能所需的信息流
  • 应用程序生成:自动化工具用于构建软件,将过程和数据模型转换为原型
  • 测试和Turnover:由于原型在每次迭代期间都经过单独测试,因此RAD的整体测试时间会缩短。

何时使用RAD Methodology?

  • 当需要在短时间内(2-3个月)生产系统时
  • 当要求已知时
  • 当用户将参与整个生命周期
  • 当技术风险较小时
  • 当有必要创建一个可以在2-3个月内模块化的系统
  • 当预算足够高时,可以为设计人员提供建模以及代码生成的自动化工具的成本

SDLC RAD模型的优缺点

好处

  • 灵活且适应变化
  • 当您必须降低整体项目风险时,它非常有用
  • 它具有适应性和灵活性
  • 以脚本,高级抽象和中间代码的形式传输可交付物更容易
  • 由于代码生成器和代码重用,减少了手动编码
  • 由于本质上的原型设计,可能存在较少的缺陷
  • RAD的每个阶段都为客户提供最高优先级的功能
    人员越少,生产力就能在短时间内增加

缺点

  • 它不能用于较小的项目
  • 并非所有应用程序都与RAD兼容
  • 当技术风险很高时,它是不合适的
  • 如果开发人员不致力于按时交付软件,RAD项目可能会失败
  • 由于时间装箱而减少的功能,其中功能被推送到更高版本以在短时间内完成发布
  • 由于RAD开发的应用程序作为原型开始并演变为完成的应用程序,因此降低了可伸缩性
  • 习惯性的进步和问题难以跟踪,因此没有文件证明已经完成的工作
  • 需要高技能的设计师或开发人员
模型瀑布增量模型螺旋模型Rad模型
早期规划 没有
回到早期阶段 没有
处理大型项目 不适当 不适当 适当 不适当
详细文档 必要 会,但不多 有限
成本 昂贵
需求规格 开始 开始 开始 时间盒发布
灵活变革 简单 简单 简单
用户参与 只在开始时 中间 只在一开始
维护性 最小 促进可维护性 典型 易于维护
持续时间 很长
风险 中到高风险
框架类型 线性 线性+迭代 线性+迭代 线性
测试 编码阶段完成后 每次迭代后 在工程阶段结束时 编码完成后
迭代 没有 是(因为并行开发) 没有
可重用性 最少可能 在某种程度上 在某种程度上
大体时间 很长
工作软件可用性 在生命周期结束时 在每次迭代结束时 在每次迭代结束时 在生命周期结束时
目的 高保证 快速发展 高保证 快速发展
团队规模 大团队 不是大团队 大团队 小团队
客户控制 非常低

6原型模型

什么是软件原型模型?

原型方法被定义为软件开发模型,其中构建原型,测试,然后在需要时重新加工,直到实现可接受的原型。 它还创建了生成最终系统的基础。

软件原型模型在项目要求未知的情况下效果最佳。 它是一种在开发人员和客户端之间进行的迭代,试验和错误方法。

原型模型阶段

image

原型模型遵循以下六个SDLC阶段:

  • 第1步:需求收集和分析

原型模型从需求分析开始。 在此阶段,详细定义了系统的要求。 在此过程中,对系统的用户进行访谈,以了解他们对系统的期望。

  • 第2步:快速设计

第二阶段是初步设计或快速设计。 在这个阶段,创建了一个简单的系统设计。 但是,它不是一个完整的设计。 它向用户简要介绍了系统。 快速设计有助于开发原型。

  • 第3步:构建原型

在此阶段,基于从快速设计收集的信息设计实际原型。 它是所需系统的小型工作模型。

  • 第4步:初始用户评估

在此阶段,建议的系统将提交给客户进行初步评估。 它有助于找出工作模型的优缺点。 评论和建议从客户收集并提供给开发人员。

  • 第5步:精炼原型

如果用户对当前原型不满意,您需要根据用户的反馈和建议优化原型。

在满足用户指定的所有要求之前,此阶段不会结束。 一旦用户对开发的原型感到满意,就会根据批准的最终原型开发最终系统。

  • 第6步:实施产品和维护

一旦最终系统基于最终原型开发,它就会经过全面测试并部署到生产中。 该系统进行日常维护,以最大限度地减少停机时间并防止大规模故障。

原型模型的类型

四种原型模型是:

  1. 原型
  2. 进化原型
  3. 增量原型
  4. 极端原型
  • 快速原型

快速一次性是基于初步要求。 它很快就被开发出来以显示需求在视觉上的外观。 客户的反馈有助于推动对需求的更改,并再次创建原型,直到需求基线为止。

在这种方法中,开发的原型将被丢弃,并且不会成为最终接受的原型的一部分。 该技术对于探索想法和获得客户需求的即时反馈非常有用。

  • 进化原型

在这里,开发的原型根据客户的反馈逐步完善,直到最终被接受为止。 它可以帮助您节省时间和精力。 这是因为从头开始为过程的每次互动开发原型有时会非常令人沮丧。

该模型对于使用未被充分理解的新技术的项目很有帮助。 它还用于复杂项目,其中必须检查每个功能一次。 当要求不稳定或在初始阶段不清楚时,这是有帮助的。

  • 增量原型

在增量型原型设计中,最终产品被抽取为不同的小型原型并单独开发。 最终,不同的原型被合并为一个产品。 此方法有助于缩短用户与应用程序开发团队之间的反馈时间。

  • 极端原型:

极端原型方法主要用于Web开发。 它由三个连续阶段组成。

  1. 所有现有页面的基本原型都以HTML格式显示。
  2. 您可以使用原型服务层模拟数据流程。
  3. 这些服务已实施并整合到最终原型中。

原型设计的最佳实践

在这里,您需要在原型制作过程中注意以下几点:

  • 当要求不清楚时,您应该使用原型
  • 执行计划和控制的原型设计非常重要。
  • 定期会议对于保持项目准时并避免代价高昂的延误至关重要。
  • 用户和设计人员应该了解原型设计问题和陷阱。
  • 在很早的阶段,您需要批准原型,然后才允许团队进入下一步。
  • 在软件原型设计方法中,如果需要部署新的想法,就不应该害怕改变先前的决策。
  • 您应该为每个版本选择适当的步长。
  • 尽早实施重要功能,以便在用完时,您仍然拥有一个有价值的系统

原型模型的优点

在这里,使用Prototyping模型是重要的优点/好处:

  • 用户积极参与开发。 因此,可以在软件开发过程的初始阶段检测错误。
  • 可以识别缺失的功能,这有助于降低故障风险,因为原型设计也被视为降低风险的活动。
  • 帮助团队成员有效沟通
  • 客户满意度的存在是因为客户可以在很早的阶段就能感受到产品。
  • 几乎没有软件拒绝的可能性。
  • 更快的用户反馈可帮助您实现更好的软件开发解决方案。
  • 允许客户端比较软件代码是否与软件规范匹配。
  • 它可以帮助您找出系统中缺少的功能。
  • 它还确定了复杂或困难的功能。
  • 鼓励创新和灵活的设计。
  • 这是一个简单的模型,因此很容易理解。
  • 无需专业专家来构建模型
  • 原型作为推导系统规范的基础。
  • 原型有助于更好地了解客户的需求。
  • 原型可以改变甚至丢弃。
  • 原型也可作为操作规范的基础。
  • 原型可以为软件系统的未来用户提供早期培训。

原型模型的缺点

这里是原型设计模型的重要缺点:

  • 原型设计是一个缓慢且耗时的过程。
  • 由于原型最终被丢弃,开发原型的成本完全是浪费。
  • 原型设计可能会鼓励过多的变更请求。
  • 有时,客户可能不愿意在更长的持续时间内参与迭代周期。
  • 每次客户评估原型时,软件需求可能会有太多变化。
  • 文档很差,因为客户的要求正在发生变化。
  • 软件开发人员很难适应客户要求的所有变更。
  • 在看到早期的原型模型后,客户可能会认为实际的产品很快会交付给他。
  • 当客户对初始原型不满意时,客户可能会对最终产品失去兴趣。
  • 想要快速构建原型的开发人员最终可能会构建不合标准的开发解决方案。

摘要

  • 在软件工程中,Prototype方法是一种软件开发模型,其中构建原型,测试然后在需要时重新工作直到获得可接受的原型。
  • 1)需求收集和分析,2)快速设计,3)构建原型,4)初始用户评估,5)精炼原型,6)实施产品和维护; 是原型制作过程的6个步骤
  • 原型模型的类型是1)Rapid Throwaway原型2)进化原型3)增量原型4)极端原型
  • 定期会议对于保持项目准时并避免原型制作方法出现代价高昂的延误至关重要。
  • 可以识别缺失的功能,这有助于降低故障风险,因为原型设计也被视为SDLC中的风险降低活动。
  • 原型设计可能会鼓励过多的变更请求。

能力成熟度模型CMM

什么是CMM?

能力成熟度模型(Capability Maturity Model)用作衡量组织软件过程成熟度的基准。

CMM是在80年代后期在软件工程研究所开发的。 它是由美国空军资助的一项研究的结果,作为评估分包商工作的一种方式。 后来基于1991年创建的CMM-SW模型来评估软件开发的成熟度,其他多个模型与CMM-I集成在一起

image

什么是能力成熟度模型(CMM)级别?

  1. 初始
  2. 重复/管理
  3. 定义
  4. 量化管理
  5. 优化

image

不同级别的CMM会发生什么?

水平活动优点
1级初始 在第1级,该过程通常是混乱和临时的;能力的特征是基于个人而非组织; 未衡量进展;开发的产品通常是计划和超出预算;计划,成本,功能和质量目标的差异很大 没有
2级管理 需求管理; 估算项目参数,如成本,进度和功能;衡量实际进度;制定计划和流程; 定义了软件项目标准;识别和控制产品,问题报告的变化等;项目之间的流程可能不同 流程变得更容易理解;管理人员和团队成员花费更少的时间来解释事情的完成方式以及执行事务的时间;项目得到更好的估计,更好的计划和更灵活;质量已融入项目中;成本可能最初很高,但加班时间会下降;更多文书工作和文件
Level-3定义 澄清客户要求;解决设计要求,制定实施流程;确保产品符合要求和预期用途;系统地分析决策'纠正和控制潜在的问题 流程改进成为标准;解决方案从“编码”发展到“工程化”;在整个项目工作中出现质量门,整个团队参与该过程;风险得到缓解,不会让团队感到意外
4级定量管理 统计管理项目的流程和子流程;了解流程绩效,定量管理组织的项目; 优化整个组织的流程绩效;促进组织中的定量项目管理。
5级优化 及早发现并消除缺陷的原因;确定并部署新工具和流程改进,以满足需求和业务目标 促进组织创新和部署;推动因果分析和解决方案

下图给出了在不同CMM级别发生的情况的图示

Capability Maturity Model (CMM) & CMM Levels: A Fool’s Guide

实施CMM需要多长时间?

CMM是维护任何软件开发公司产品质量的最理想的流程,但其实施所需的时间比预期的要长。

  • CMM实施不会在一夜之间发生

  • 这不仅仅是一个“文书工作”。

  • 典型的实施时间是

    • 3-6个月- >准备
    • 6-12个月- >实施
    • 3个月- >进行评估准备
    • 12个月-每个新级别> b

CMM的内部结构

CMM中的每个级别都定义为关键过程域或KPA (key process area) ,级别1除外。 每个KPA都定义了一组相关活动,这些活动在共同执行时实现了一组对提高软件能力至关重要的目标

对于不同的CMM级别,有一组KPA,例如对于CMM模型-2,KPA是

  • REQM-需求管理
  • PP-项目规划
  • PMC-项目监测和控制
  • SAM-供应商协议管理
  • PPQA-流程和质量保证
  • CM配置管理

同样,对于其他CMM模型,您有特定的KPA。 要了解KPA的实施是否有效,持久和可重复,它将根据以下基础进行绘图

  1. 承诺执行
  2. 能够执行
  3. 活动执行
  4. 测量和分析
  5. 验证实施

CMM模型的局限性

  • CMM确定流程应该解决的问题,而不是如何实施
  • 它没有解释软件过程改进的所有可能性
  • 它专注于软件问题,但不考虑战略业务规划,采用技术,建立产品线和管理人力资源
  • 它没有说明组织应该从事什么样的业务
  • CMM在目前正面临危机的项目中没有用处

为何使用CMM?

今天,CMM充当软件行业的“批准印章”。 它有助于以各种方式提高软件质量。

  • 它指导可重复的标准流程,从而缩短了如何完成工作的学习时间
  • 实践CMM意味着实践标准协议进行开发,这意味着它不仅可以帮助团队节省时间,还可以清楚地了解要做什么和期望什么
  • 质量活动与项目完美结合,而不是单独的事件
  • 它充当项目和团队之间的通勤者
  • CMM的努力始终是为了改进流程

摘要

CMM于80年代末首次在美国空军引入,用于评估分包商的工作。 后来,通过改进版本,它被实现为跟踪软件开发系统的质量。

整个CMM级别分为五个级别。

  • 1级 (初始):系统的要求通常是不确定的,误解和不受控制的。 这个过程通常是混乱和临时的。
  • 2级 (管理):估算项目成本,进度和功能。 软件标准已定义
  • 3级 (定义):确保产品符合要求和预期用途
  • 4级 (定量管理):统计管理项目的流程和子流程
  • 5级 (成熟度):识别和部署新工具和流程改进,以满足需求和业务目标

8多层架构

什么是N-Tier?

N层应用程序是分布在分布式网络中的三个或更多个单独计算机之间的程序。

最常见的n层形式是3层应用程序,它分为三类。

  • 用户计算机中的用户界面编程
  • 更集中的计算机中的业务逻辑,和
  • 管理数据库的计算机中的必需数据。

此体系结构模型为软件开发人员提供了最大灵活性的可重用应用程序/系统。

N层中,“N”指的是正在使用的层数或层数,如 - 2层,3层或4层等 。 它也被称为“ 多层 架构”

n层架构是经过行业验证的软件架构模型。 它通过提供可伸缩性,安全性,容错性,可重用性和可维护性的解决方案,适合支持企业级客户端 - 服务器应用程序。 它可以帮助开发人员创建灵活且可重用的应用程序。

N层架构

此处描述了n层系统的图形表示 - 表示层,应用程序层和数据库层。
image

根据要求,这三层可以进一步细分为不同的子层。

一些应用这种架构的热门网站是

  • MakeMyTrip.com
  • Sales Force企业应用程序
  • 印度铁路 - IRCTC
  • 亚马逊等

要记住一些常用术语,以便更清楚地理解概念。

  • 分布式网络:它是一种网络体系结构,位于网络计算机上的组件仅通过传递消息来协调和传递其操作。 它是位于不同节点的多个系统的集合,但在用户看来是单个系统。

    • 它提供单个数据通信网络,可以由不同的网络单独管理。
    • 分布式网络的一个示例 - 其中不同的客户端在一侧的LAN架构内连接,另一侧连接到高速交换机以及包含服务节点的服务器机架。
  • 客户端 - 服务器体系结构:它是一种体系结构模型,其中客户端(一个程序)从服务器(另一个程序)请求服务, 它是通过因特网或通过内联网提供的请求 - 响应服务。

    在此模型中, 客户端将作为一组程序/代码,通过网络执行一组操作。 另一方面, Server是一组另一个程序,它根据请求将结果集发送到客户端系统。

    • 在此,客户端计算机向终端用户提供从服务器请求服务或资源的接口,另一方面服务器然后处理该请求并将结果显示给最终用户。
    • 客户端 - 服务器模型的一个例子 - ATM机。 银行是用于在大客户数据库内处理应用程序的服务器,并且ATM机器是具有用户界面的客户端,具有一些简单的应用程序处理。
  • 平台:在计算机科学或软件行业中,平台是应用程序可以运行的系统。 它由硬件和软件组合而成,具有内置指令,供处理器/微处理器执行特定操作。

    • 换句话说,平台是一个系统或基础,任何应用程序都可以运行和执行以获得特定任务。
    • 平台示例 - 装有ubuntu或Mac OS X的个人计算机,作为2个不同平台的示例。
  • 数据库:它是一种有组织的信息集合,因此可以轻松访问,管理和更新。

    • 数据库的例子 - mongoDB, MySQL,postgresql和Oracle数据库是一些常见的Db。

N层架构的类型

有不同类型的N层体系结构,如3层体系结构,2层体系结构和1层体系结构。

首先,我们将看到3层架构,这非常重要。

3层架构

通过查看下图,您可以轻松识别3层架构有三个不同的层。

  • 表示层
  • 业务逻辑层
  • 数据库层

image

在这里,我们采用了一个简单的学生形式示例来理解所有这三个层次。 它包含有关学生的信息 - 姓名,地址,电子邮件和图片。

用户界面层或表示层
image.png

private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)
{
// Object of the Property layer
clsStudent objproperty=new clsStudent();
// Object of the business layer
clsStudentInfo objbs=new clsStudentInfo();
// Object of the dataset in which we receive the data sent by the business layer
DataSet ds=new DataSet();
// here we are placing the value in the property using the object of the
//property layer
objproperty.id=int.Parse(DataGridl.SelectedItem.Cells[1].Text.ToString());

// In this following code we are calling a function from the business layer and 
// passing the object of the property layer which will carry the ID till the database.
ds=objbs.GetAllStudentBsIDWise(objproperty);

// What ever the data has been returned by the above function into the dataset
//is being populate through the presentation laye.
txtId.Text=ds.Tables[0].Rows[0][0].ToString();
txtFname.Text=ds.Tables[0].Rows[0][1].ToString();
txtAddress.Text=ds.Tables[0].Rows[0][2].ToString();
txtemail.Text=ds.Tables[0].Rows[0][3].ToString();

业务访问层 -

这是业务层的功能,它接受来自应用层的数据并将其传递给数据层。

  • 业务逻辑充当客户端层和数据访问层之间的接口
  • 所有业务逻辑 - 如数据验证,计算,数据插入/修改都是在业务逻- 辑层下编写的。
  • 它使客户端和数据层之间的通信更快捷,更容易
  • 定义完成任务所需的正确工作流活动。
// this is the function of the business layer which accepts the data from the 
//application layer and passes it to the data layer.
public class clsStudentInfo
{
	public DataSet GetAllStudentBsIDWise(clsStudent obj)
	{
	 DataSet ds=new DataSet();
	 ds=objdt.getdata_dtIDWise(obj);// Calling of Data layer function
	 return ds;
	}
}

数据访问层

这是数据层功能,它从业务层接收数据并对数据库执行必要的操作。

// this is the datalayer function which is receiving the data from the business 
//layer and performing the required operation into the database

public class clsStudentData // Data layer class 
{
	// object of property layer class
	public DataSet getdata_dtIDUise(clsStudent obj)
	{
	 DataSet ds;
	 string sql;
	 sql="select * from student where Studentld=" +obj.id+ "order by Studentld;
	 ds=new DataSet();
	//this is the datalayer function which accepts the sql query and performs the 
	//corresponding operation
		ds=objdt.ExecuteSql(sql); 
		return ds;
	}
}

单层或单层架构:

它是最简单的一个,因为它等同于在个人计算机上运行应用程序。 运行应用程序所需的所有组件都在单个应用程序或服务器上。

表示层,业务逻辑层和数据层都位于一台机器上。

多层体系结构的优缺点

好处

  • 可扩展性
  • 数据的完整性
  • 可重用性
  • 更容易分布式
  • 提高安全性
  • 提高可用性

缺点

  • 增加工作量
  • 增加复杂性

N层架构技巧与发展

考虑到软件专业人员必须完全控制架构的所有层,有关n层架构的提示如下

  1. 尝试使用soap XML等技术尽可能地将图层与其他图层分离。
  2. 使用一些自动化工具生成业务逻辑层和关系数据库层(数据层)之间的映射。 可以帮助建模这些映射技术的工具是 - Entity Framework和Hibernate for .Net等。
  3. 在客户端演示者层中,尽可能将所有客户端的公共代码放在单独的库中。 这将最大化所有类型客户端的代码可重用性。
  4. 可以将缓存层添加到现有层中以加速性能。

小结:

  • N层体系结构有助于在一个屋檐下管理应用程序的所有组件(业务层,表示层和数据库层)。
    -在局域网上使用少量用户的应用程序可以受益于n层架构。
    -这种架构设计确定了在因特网上有效地维护,扩展和部署应用程序。

标签:CMM,入门,模型,软件工程,原型,阶段,SDLC,软件,快速
From: https://www.cnblogs.com/R-bear/p/17861793.html

相关文章

  • Java开发者的Python快速进修指南:实战之简易跳表
    前言之前我已经将Python的基本语法与Java进行了比较,相信大家对Python也有了一定的了解。我不会选择去写一些无用的业务逻辑来加强对Python的理解。相反,我更喜欢通过编写一些数据结构和算法来加深自己对Python编程的理解。学习任何语言都一样。通过编写数据结构和算法,不仅可以加......
  • Java零基础入门-输入
    前言Java作为一门大型的编程语言,拥有广泛的应用领域和众多的开发人员。对于初学者来说,掌握Java的重点知识点非常重要,其中输入是Java中基础的操作之一。本文将介绍Java中输入的相关知识点,帮助初学者快速掌握Java。摘要本文将介绍Java中输入的相关知识点,包括输入的方法,使用示例以......
  • 神经网络入门篇:详解随机初始化(Random+Initialization)
    当训练神经网络时,权重随机初始化是很重要的。对于逻辑回归,把权重初始化为0当然也是可以的。但是对于一个神经网络,如果把权重或者参数都初始化为0,那么梯度下降将不会起作用。来看看这是为什么。有两个输入特征,\(n^{[0]}=2\),2个隐藏层单元\(n^{[1]}\)就等于2。因此与一个隐藏层......
  • 大数据从入门到实战 - 第3章 MapReduce基础实战——信息挖掘 - 挖掘父子关系
    输出一直顺序不正确,把正确答案和我自己写的混了混,目前感觉是mapper的问题正确输出:grand_childgrand_parentMarkJesseMarkAlicePhilipJessePhilipAliceJoneJesseJoneAliceStevenJesseStevenAliceStevenFrankStevenMaryJo......
  • 内核模块开发入门指南:在CentOS 7上实现自定义功能
    内核模块开发入门指南:在CentOS7上实现自定义功能在CentOS7及其他Linux系统中,内核模块是一种动态加载到内核中的代码,用于扩展内核的功能。内核模块的开发允许开发者在不重新编译内核的情况下,添加新的功能、驱动或调整系统行为。本文将带你入门内核模块的开发,在CentOS7上实现自......
  • cmd与bat批处理脚本入门
    字符串替换@echooffseta1=你是good好孩子::去掉goodsetres=%a1:good=%echo%res%::把变量a1中的"你"替换为"她们"setres=%a1:你=她们%echo%res%pause字符串截取@echooffsetmyvar=abcdefgechoOriginal:%myvar%echo索引1开始,长度3: %myvar:~1,3%echo索......
  • 【python入门之pip换源问题】---pip换源的方式
    【一】PIP更换源包【1】问题描述在使用Python时,我们经常需要用到pip安装第三方包。但是,在某些情况下,由于网络速度慢或者其他各种原因,pipinstall会非常慢,甚至可能无法完成。为了解决这个问题,我们提供以下几种方法。「解决方法」【第一种】永久更换pip源一般来说,默认使......
  • juc 入门
    JUC并发快速入门 线程池、CAS、ThreadLocal、AQS1.线程池1.1概述什么是线程池?线程池和数据库连接池非常类似,可以统一管理和维护线程,减少没有必要的开销。为什么要使用线程池?因为频繁的开启线程或者停止线程,线程需要被cpu重新从就绪状态调度到运行状态,需要......
  • 接口测试入门:深入理解接口测试!
    很多人会谈论接口测试。到底什么是接口测试?如何进行接口测试?这篇文章会帮到你。一、前端和后端在谈论接口测试之前,让我们先明确前端和后端这两个概念。前端是我们在网页或移动应用程序中看到的页面,它由HTML和CSS编写而成,让我们看到漂亮的页面,并进行一些简单的校验,例如确保......
  • 【python入门之pycharm篇】--如何安装pycharm以及如何安装python解释器
    【一】Python解释器下载【1】Python官网详细方面可见下方链接了解pythonhttps://www.python.org【2】Python各版本解释器官网https://www.python.org/downloads/【二】Windows系统安装Python解释器【1】下载Python版本解释器现在已经更新到了3.13版本的Python解释器......