首页 > 其他分享 >软件工程部分备考

软件工程部分备考

时间:2024-09-05 13:53:36浏览次数:15  
标签:模型 开发方法 软件工程 备考 模块 内聚 耦合 软件 部分

1. 软件生存周期

  • 可行性分析
  • 需求分析:解决“做什么”的问题。
  • 概要设计:根据需求分析的结果,对软件整个系统进行设计,例如系统框架设计、数据库设计等。
  • 详细设计:描述每个模块的具体功能,使功能精确、结构化。
  • 程序编码:将软件设计的结果装换成可运行的程序代码。
  • 软件测试:在软件设计完成后要经过严格的测试,已发现软件在整个设计过程中存在的问题并加以修正。
  • 维护:在软件投入使用后,由于需要不断适应新要求,需要对软件进行维护,包括纠错性维护和改进性维护两个方面。

2. 能力成熟度模型(CMN)

分为5个成熟度级别:初始级、可重复级、已定义级、已管理和优化级。成熟度级别越高,软件开发生产精度越高,每单位工程的生产周期越短。

  1. 初始级:软件过程是无序的,可能也是混乱的。
  2. 可重复级:建立了基本的项目管理过程,能重复早先类似应用项目取得的成功。
  3. 已定义级:已将软件管理和工程俩方面的过程文档化、标准化
  4. 已管理级:收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解和控制。
  5. 优化级:过程的量化反馈和先进的新思想、新技术促使过程不断改进。

3. 统一过程模型

统一过程(UP):用力和风险驱动,以架构为中心,迭代并且增量的开发过程。

分为4个阶段:

  1. 初始阶段——生命周期目标
  2. 精华阶段——生命周期架构
  3. 构建阶段——初始运作功能
  4. 移交阶段——产品发布

4. 软件开发模型

  • 瀑布模型:迭代模型/迭代开发方法。
  • 演化模型:快速应用开发。

在获取用户的一组基本需求后,通过快速分析构造出该软件的一个初始可运行的版本,初始的软件称为原型。

  • 增量模型:构建组装模型/基于构建的开发方法。

基于瀑布模型的基本成分和原型实现的迭代特征。

  • 螺旋模型:统一过程/统一开发方法。

将瀑布模型和演化模型相结合,4个活动:制定计划、风险分析、实施过程、客户评估。

  • 快速原型模型:敏捷开发方法。
  • V模型:基于架构的开发方法。(瀑布模型的一种变体)
  • 喷泉模型:模型驱动的开发方法。(以用户需求为动力、以对象为驱动,主要采用对象技术的软件开发过程,具有迭代和无间隙特性)
  • 基于构件的开发模型:本质上是演化模型,以迭代方式构建软件。

5. 软件开发方法

  • 结构化方法

面向数据流的开发方法,结构化分析根据分解与抽象的原则,用数据流图来建立系统的功能模型,完成需求分析工作。自顶向下、逐层分解。

  • Jackson方法

,面向数据结构的开发方法,以数据结构为驱动。

  • 原型化方法

适用于用户需求不清、业务理论不确定、需求经常变化的情况。

  • 面向对象的开发方法

UML统一建模语言。

  • 敏捷开发方法

目标是通过尽可能早、持续地对有价值的软件的交付使客户满意。极限编程:轻量级、高效、低风险、柔性、可预测、科学的软件开发方式,由价值观、原则、实践和行为4部分组成。

  • 极限编程

5个原则:快速反馈、简单性假设、逐步修改、提倡更改、优质工作。

12个最佳实践:计划游戏、小型发布、隐喻、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周工作40小时、现场客户、编码标准。

6. 需求分析

  1. 功能需求:考虑要做什么
  2. 性能需求:技术性指标
  3. 用户或人的因素:用户类型
  4. 环境需求:未来软件应用的环境,包括软硬件
  5. 界面需求:对数据格式、数据存储介质的规定
  6. 文档需求:针对哪些读者
  7. 数据需求:数据的格式、接收、发送数据的频率
  8. 资源使用需求:软件运行时所需的数据、内存空间等
  9. 安全保密要求
  10. 可靠性要求:考虑系统的可靠性
  11. 软件成本消耗与开发进度需求
  12. 其他非功能需求

7. 内聚和耦合

         内聚

  • 功能内聚:完成单一功能,每个部分协调工作,缺一不可
  • 顺序内聚:处理元素相关,必须顺序执行
  • 通信内聚:所有处理元素集中在一个数据结构的区域
  • 过程内聚:处理元素相关,而且必须按照特定的次序进行
  • 瞬时内聚:所包含的任务必须在同一时间段完成
  • 逻辑内聚:完成逻辑上的一组任务
  • 偶然内聚:完成一组没有关系或松散关系任务

        耦合

  • 非直接耦合:两个模块之间没有直接关系,之间的联系通过主模块的控制和调用实现
  • 数据耦合:一组模块借助参数表传递简单数据
  • 标记耦合:通过参数表传递记录信息
  • 控制耦合:模块之间的传递的信息包含用用于控制模块内部逻辑的信息
  • 外部耦合:一组模块都访问同一全局简单变量,不是通过参数表传递全局变量的信息
  • 公共耦合:一组模块都访问同一公共数据环境
  • 内容耦合:一个模块直接访问另一个模块的内部数据;一个模块不能通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口。

标签:模型,开发方法,软件工程,备考,模块,内聚,耦合,软件,部分
From: https://blog.csdn.net/2201_75408903/article/details/141922452

相关文章

  • 计算机网络基础(备考)
    1.分类按分布范围:局域网、城域网、广域网、因特网按拓扑结构:总线型、星型、环型2.七层网络体系结构及其设备应用层:HTTPDNSPOP3FTPTelnetSMTPDHCPTFIPSNMPDNS表示层:HTTPDNSPOP3FTPTelnetSMTPDHCPTFIPSNMPDNS会话层:HTTPDNSPOP3FTPTelnetSMTPDHCPTF......
  • CDA数据分析一级考试备考攻略
    一、了解考试内容和结构CDA一级考试主要涉及的内容包括:数据分析概述与职业操守、数据结构、数据库基础与数据模型、数据可视化分析与报表制作、PowerBI应用、业务数据分析与报告编写等。CDALevelⅠ认证考试大纲:https://www.cdaglobal.com/certification.html考试方......
  • 现今赚钱方式,为什么大部分人更愿意做海外问卷调查这样的项目呢
    大家好,我是金言问卷。最近有越来越多的人在了解和接触海外问卷调查项目了。为什么会出现这样的现象呢?这其中有哪些具体的原因?今天我们从多方面来分析下,虽然不一定全面,如果能给大家带来一些实际的参考,也是可以的。海外问卷调查,本质上就是海外国家的公司或者企业发放出来的市场......
  • 软件工程随笔
    三.在博客园发一篇随笔自我评估与技术偏好1.目前已具备的专业知识和能力能力A:编程语言掌握我熟练掌握了Python、Java和C++三种编程语言,能够熟练使用它们进行基本的编程任务和开发项目。能力B:数据结构与算法我对常见的数据结构和算法有深入的理解,能够灵活运用它们解决实......
  • C语言程序设计(初识C语言后部分)
    十九,指针1)指针是什么?指针理解的2个要点:1,指针是内存中一个最小单元的编号,也就是地址2,平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量总结:指针就是地址,口语中说的指针通常指的是指针变量。指针变量:我们可以通过&(取地址操作符)取出变量的内存起始地址,把......
  • 截取pdf中的部分内容,又保证内容不失真,实现方式
    文章目录0.为什么需要截取pdf1.访问网站2.上传你需要截取的pdf文件3.选取区域下载0.为什么需要截取pdf如果直接截图工具截图的话,里面的文字和图片内容会出现失真的情况,但是我们希望pdf空白部分的内容不要,这个时候就需要截取pdf工具1.访问网站进入网站截取pdf文件......
  • 自我认知及软件工程学习指南
    目前我已经具备的专业知识:数据库、数据挖掘、机器学习、c、python、matlab等,会使用pytorch、tensorflow基础功能,了解深度学习的基础算法。会使用神经网络、森林灭火等数学建模常用算法我感兴趣的技术方向:联邦学习、大数据架构、跨学科领域交叉数据融合分析、大数据治理等我缺少......
  • 初次部分使用c++语言无意发现个数组元素查找的代码
    includeusingnamespacestd;//定义结构体structMyArray{intarr[100];//数组,假设最大长度为100intsize;//数组当前元素数量};//输入函数,修改数组内容voidscanf(MyArray&myArray){for(inti=0;i<myArray.size;i++){cin>>myArray.arr[i];//键盘......
  • 高德地图,只有部分marker显示InfoWindow并可点击
    高德地图,只有部分marker显示InfoWindow并可点击   原因:加了MarkerCluster//将所有的标记点添加到markercluster//markercluster//markerLayer.setMarkers(markers);//markercluster//this.cluster=newAMap.MarkerCluster(//this.map,//地图......
  • 架构师备考的一些思考
    前言之前的python-pytorch的系列文章还没有写完,只是写到卷积神经网络。因为我报名成功了系统架构师的考试,所以决定先备考,等考完再继续写。虽然架构师证书不能证明技术水平,但在现实生活中的某些情况下是有意义的。考试虽然无聊,但有些考题还是蛮有意思的。思考看了几套架构师的......