计算机考研初试/复试——软件工程

一、软件

软件定义

计算机程序、文档、运行程序所必须的方法、数据、规则。方法和规则在文档中说明,在程序中实现。(文档+程序+数据)

软件分类

基于软件功能的划分

  • 系统软件:与计算机硬件紧密配合使计算机各个部件与相关软件和数据协调、高校工作的软件。(如:操作系统、编译程序)
  • 支撑软件:协助用户开发软件的工具性软件(北大青鸟)
  • 应用软件:商业数据处理软件、工程与科学计算软件(CAD)、智能产品嵌入式软件(家用电器、智能手机)、人工智能软件(专家系统、模式识别软件)、个人计算机软件。

基于软件规模的划分

根据参加人员数、开发周期、产品规模(代码行LOC)决定:微型、小型、中型、大型、极大型。

软件发展

程序设计阶段、程序系统阶段、软件工程阶段(集中主机、客户机服务器两层模式、客户机服务器三层模式、浏览器服务器模式)、新技术(专家系统、云计算)

软件危机

在计算机软件开发和维护过程中遇到的一系列严重问题。

  • 开发成本和进度估计不准
  • 用户对已交付的软件不满意
  • 软件产品质量靠不住
  • 软件可维护性差
  • 软件没有适当的文档资料

软件工程

把系统化、规范化、可度量的途径应用于软件开发、运行和维护过程中;研究其实现途径(内容:软件工程技术、软件工程管理)

软件生存周期

软件从产生、发展到成熟、直至衰亡为止。
阶段:

  1. 可行性研究与计划
  2. 需求分析
  3. 总体设计
  4. 详细设计
  5. 实现(编码和单元测试)
  6. 集成测试
  7. 确认测试
  8. 使用和维护

软件过程模型

  • 瀑布模型
    特点:阶段具有顺序性和依赖性、推迟实现的观点、质量保证的观点
    缺点:过于理想化,出错无法改正(增加反馈环)、缺乏灵活性,无法解决需求不明确的问题
    优点:提高软件质量、降低软件成本、缓解软件危机
  • 快速原型模型
    特点:快速建立反映用户主要需求(需求不确定)的原型系统,反复由用户评价修正需求,开发出最终产品
    缺点:质量低下,内部结构不好
    优点:确定需求上优于瀑布模型、提供学习手段、有的原型可以成为最终产品的一部分
  • 增量模型
    特点:开发软件时将软件产品作一系列增量构建设计、编码、集成和测试
    缺点:结构开放比较困难
    优点:较短时间向用户提交可用的产品、用户有时间学习适应产品、软件结构必须开放,方便向现有产品加入新构建
  • 螺旋模型
    特点:制定计划、风险分析、实施工程、客户评估(每次都进行这四步)
    缺点:需要风险评估经验、契约开发通常需要事先指定过程模型和发布产品
    优点:大型软件开发项目有较好的风险控制
  • 喷泉模型
    特点:面向对象生存周期模型,体现迭代(求精,系统某部分被重复工作,相关功能每次迭代中逐渐加入演进系统)和无缝(分析、设计、编码各阶段不存在明显边界)特性。
    缺点:可能随时加各种信息、需求和资料,需严格管理文档
    优点:无缝、可同步开发、提高开发效率、节省时间、适应面向对象软件

二、结构化软件开发方法

结构化分析

分解化简问题、物理和逻辑表示分开、进行数据与逻辑抽象

步骤

发现需求、求精、建模、软件需求规格说明、复审

结构化分析模型

模型核心:数据字典
数据模型:E-R图表达
功能模型:数据流图(DFD)表达
行为模型:状态转换图
在这里插入图片描述

数据模型

组成
数据对象:软件必须理解的复合信息表示,复合信息是具有一系列不同性质或属性的事物。事务(报表)、地点(仓库)、角色(学生)
属性:定义数据对象性质。学生的属性可为学号、姓名等
关系:1:1、1:N、N:M
E-R图:
实体用矩形框
属性用圆角矩形
关系用菱形

数据流图

描绘系统逻辑模型,图中没有具体的物理元素,只描绘信息在系统中流动处理的情况。
符号:
在这里插入图片描述 在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
附加符号:
在这里插入图片描述
解法:

  1. 从问题描述提取数据流图四种成分
    在这里插入图片描述
  2. 着手画数据流图的基本系统模型
    在这里插入图片描述
  3. 把基本系统模型细化,描绘系统主要功能
    在这里插入图片描述
  4. 主要功能进一步细化
    在这里插入图片描述

状态转换图

行为模型:
状态:被观察到的系统行为模式
在这里插入图片描述
事件:引起状态转换的外界事件抽象
在这里插入图片描述
行为:进入某状态所做的动作
在这里插入图片描述
在这里插入图片描述

数据字典

对系统使用的所有数据元素定义的集合,半形式化表示

定义描述:

数据流: 在这里插入图片描述

数据元素: 在这里插入图片描述

*数据存储: *在这里插入图片描述

处理:
在这里插入图片描述
定义符号:
在这里插入图片描述
范例:
在这里插入图片描述

三、结构化设计

数据设计、体系结构设计、接口设计、过程设计

结构化设计的概念和原理

模块化:按适当原则把软件划分成一个个较小的、相关而独立的模块
模块:又称“构件”,一般指用一个名字调用的相邻程序元素序列。
模块成本关系图
在这里插入图片描述
抽象:抽出事物本质特性,暂不考虑细节。
求精:为了集中解决主要问题,尽量推迟对细节问题的考虑,与抽象互补。
信息隐藏:每个模块的实现细节对于其他模块来说是隐藏的,用户只通过接口来了解该模块。

模块独立

容易分工合作、容易测试维护

耦合:软件结构中不同模块间互联程度的度量。原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合,完全不用内容耦合。

非直接耦合:两个模块可以独立工作,没有任何关系。
分类:

  • 数据耦合
    两模块通过参数交换数据信息。
    在这里插入图片描述
  • 控制耦合
    两模块通过参数交换控制信息。
    在这里插入图片描述
  • 公共环境耦合
    两个或多个模块通过一公共数据环境作用。
    1、 一模块送数据,一模块取数据,等价数据耦合
    2、 两模块即送数据也取数据,介于数据耦合和控制耦合之间
    在这里插入图片描述
  • 内容耦合:
    1、 一模块访问另一模块内部数据
    2、 一模块不通过正常入口进入另一模块内部
    3、 两个模块有部分代重叠(汇编语言)
    4、 一模块有多个入口
    在这里插入图片描述

内聚:模块内各个元素的紧密程度。

  • 功能内聚
    一模块中各个部分是完成某一功能不可缺少的部分

  • 顺序内聚
    模块内处理元素同某功能密切相关,顺序执行

  • 通讯内聚
    一模块内各功能部分使用相同输入数据,或产生相同输出数据
    在这里插入图片描述

  • 过程内聚
    模块内处理元素相关,特定次序执行。如流程图中循环部分、判定部分、计算部分分成三个模块。
    在这里插入图片描述

  • 时间内聚
    要求所有功能在同一时间执行。

  • 逻辑内聚
    一模块完成功能在逻辑上属于相似一类。
    在这里插入图片描述

  • 偶然内聚
    模块内各部分没有联系。

启发式规则

  • 改进软件结构提高模块独立性
    在这里插入图片描述

  • 模块规模适中

  • 深度、宽度、扇出和扇入应适当

    深度:软件结构控制层数,标志系统大小和复杂程度
    宽度:软件结构同一层模块数最大值
    扇出:一模块直接控制模块数最大值
    扇入:有多少上级模块直接调用它

  • 模块作用域应在控制域内
    模块作用域:受该模块内判定影响的模块集合
    控制域:模块本身及所有直接或间接从属它的模块集合

  • 降低模块接口复杂程度

  • 设计单入口、单出口的模块

  • 模块功能可预测(不可预测、过分受限)

面向数据流的设计方法

软件结构图

在这里插入图片描述

信息流

变换流

在这里插入图片描述

变换分析:将具有变换流特点的数据流图映射成软件结构
  1. 复查基本系统模型
  2. 复查并精细化数据流图
  3. 确定数据流图具有变换特性还是事务特性
  4. 找出变换中心(确定输入、输出边界)
  5. 完成二级分解
  6. 对初步软件结构精化
事务流

在这里插入图片描述
在这里插入图片描述

事务分析:信息流具有明显事务特点(事务中心)

软件结构:一接受分支和一发送分支
在这里插入图片描述

设计过程

在这里插入图片描述

人机界面设计

  • 系统响应时间
    从用户完成某操作到软件给出预计响应。

  • 用户帮助措施

  • 出错信息处理

  • 命令交互

过程设计

确定模块算法、数据结构、接口(系统外部接口、用户界面、内部模块接口细节、输入输出数据)

程序流程图
在这里插入图片描述
优点:对控制流程描绘直观,便于初学者掌握
缺点:不是逐步求精的好工具,过早考虑控制流程、用箭头代表控制流、不宜表示数据结构和调用关系

N-S图
在这里插入图片描述
特点:功能域明确、不可能任意转移控制、容易确定局部和全程数据的作用域、容易表现嵌套关系和模块层次结构

PAD图
在这里插入图片描述
优点:必然是结构化程序、结构十分清晰、表现的逻辑易懂、容易转换成高级源程序、支持自顶向下逐步求精。

判定表/判定树
在这里插入图片描述
在这里插入图片描述
优点:能清晰表示复杂的条件组合与应作动作间对应关系

过程设计语言
伪码:用正文形式表示数据和处理过程设计工具

程序复杂度

McCabe方法:1、根据过程设计结果画出相应流图2、计算流图环形复杂度

面向数据结构设计方法

Jackson方法

  • Jackson图
    描述数据结构:顺序、选择、重复
    在这里插入图片描述
  • Jackson方法
    在这里插入图片描述

四、结构化系统实现

编码

  • 机器语言
    优点:计算机直接识别
    缺点:效率低,重用性差
  • 汇编语言
    优点:比机器语言易读写、易调试和修改,执行速度快、占内存少,针对硬件编制
    缺点:不能编写复杂程序,依赖于机型、不通用、不可移植
  • 高级语言
    优点:编码效率高、通用性强,兼容性好,便于移植
    缺点:运行效率低,对硬件操作不如汇编

语言选择标准
系统用户要求、可以使用的编译程序、可以得到的软件工具、工程规模、程序员知识、软件可移植性、软件应用领域

编码风格
程序内部的文档、数据说明、语句构造、输入输出、效率

测试

测试的目的
测试是为了发现程序中的错误而执行程序的过程、好的测试方案是极有可能发现迄今尚未发现的尽可能多的错误的测试、成功的测试是发现了迄今尚未发现的错误的测试

黑盒测试:如果知道产品应具有的功能,可通过测试来检验每个功能是否正常使用

  • 等价类划分
    把程序的输入域分成若干数据类(数据特性类似),从每类中选取有代表性的数据作为测试用例。
  • 边界值分析法

白盒测试:知道产品内部工作过程可通过测试来检验内部动作是否按照规格说明书规定正常执行。

  1. 逻辑覆盖
    语句覆盖:选择测试数据,使被测程序中每个语句至少执行一次
    判定覆盖:每个语句执行一次,每个判定的真假分支至少执行一次
    条件覆盖:每个语句执行一次,判定表达式每个条件取各种可能结果
    判定/条件覆盖:每个条件都取各种可能,每个判定表达式也都取各种可能
    条件组合覆盖:每个判定表达式中条件的各种组合都至少执行一次
  2. 控制结构测试
    基本路径测试:根据过程设计结果(PDL)画出流图、计算流图环形复杂度(流图的区域数)、确定线性独立路径基本集合、设计测试用例执行基本集合中的路径
    循环测试:简单循环(0次循环、一次循环、二次循环、m次循环、最大次数循环)、嵌套循环、连锁循环、非结构化循环

测试步骤
在这里插入图片描述

  1. 单元测试
  2. 集成测试
    非渐增式、渐增式、自底向上集成、混合策略、回归测试
  3. 系统测试
    恢复测试、安全性测试、强度测试、性能测试、时间需求
  4. 确认测试(验收测试)
    a测试(功能,界面)、b测试(支持性)

调试

强行排错、回溯法排错、原因排错法

软件可靠性

可靠性:程序在给定时间间隔及环境条件下,按规格说明书的规定,成功运行的概率
可用性:给定时间点,按规格说明书规定,成功运行的概率

五、面向对象方法学

对象+类+继承+传递消息实现通信

概念

对象:具有相同的一组操作集合,对状态和操作的封装
:对具有相同状态和相同操作的一组相似对象的定义。类是一个抽象数据类型
实例:由某个特定类所描述的一个具体对象
在这里插入图片描述
消息:要求某对象执行某个操作的规格说明
方法:对象执行的操作,即类中定义的服务
属性:类中所定义的数据
继承:子类自动共享基类中定义的属性和方法的机制
多态性:在类等级不同层次可共享一个方法名,不同层次每个类按各自需要实现这个方法
重载:函数重载(在同一作用域内,参数特征不同的函数可使用相同的名字)、运算符重载(同一个运算符可以施加于不同类型操作数上面)

与传统方法比较

  1. 传统方法中数据与过程是分离的,面向对象方法中对象把数据和处理数据的方法封装成一个单元。
  2. 传统方法中系统是过程的集合,面向对象方法中系统是交互对象的集合。
  3. 传统方法中过程与数据实体交互,面向对象方法中对象与人或其他对象交互。
  4. 传统方法中过程接受输入并产生输出,面向对象方法中对象发送与响应消息。

UML

静态建模机制
用例图:获取执行者、获取用例、执行者间关联、用例关联(泛化、扩展、包含)
类图:描述类与类间的静态关系(关联、泛化(继承)、依赖、实现)
包图
动态建模机制
消息:对象间交互信息
顺序图:描述对象间交互
协作图:描述对象间交互关系和链接关系
活动图
UML物理框架机制
构件图:展示一组构件的类型、内部结构和他们之间的关系
配置图

面向对象分析

  • 步骤:获取需求、整理需求、建立模型(功能模型、对象模型、动态模型)
  • 功能模型:用用例图表达,补充用例说明
  • 对象模型:描述类及相互关系,表达目标系统静态结构
  • 动态模型:用顺序图、状态图

面向对象设计

  • 设计准则

抽象、信息隐藏、弱耦合、强内聚、可重性

  • 启发规则

设计结果清晰易懂、一般特殊结构深度适当、设计简单类、使用简单协议、使用简单服务

  • 设计问题域子系统
  • 设计人机交互子系统
  • 设计任务管理子系统
  • 设计数据管理子系统

面向对象实现

6.1程序设计
6.2测试
6.2.1单元测试
单元:封装类和对象
6.2.2集成测试
6.2.3确认测试

六、软件项目管理

  1. 软件规模度量
  2. 工作量估算
  3. 进度计划
  4. 组织方式
  5. 风险控制
  6. 质量控制
  7. 配置管理

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子信息工程保研复试|考研复试——通信原理复试问题集锦

电子信息工程保研/考研复试——通信原理问题集锦 保研/考研复试——通信原理问题集锦(复习重点以及面试真题!!良心整理) 面向考研/保研同学,时间紧任务重,归纳了去年保研面试中复习以及被问到的通信原理相关…

北邮考研复试机试准备过程(已上岸)

纯自用请勿转载,用来给自己最后复习和捋思路用的,主要参考牛客网王道机试指南,C、C混用。考研人太久不写代码了…什么都不记得了,从头开始过一遍吧。 黑色代码段是要记住的重点函数/方法。每天下午做几个小时,一共不到…

【计算机考研】复试常见问题

操作系统 操作系统的特点? – 共享:资源可被多个并发执行的进程使用 – 并发:可以在同一时间间隔处理多个进程,需要硬件支持 – 虚拟:将物理实体映射成为多个虚拟设备 – 异步:进程执行走走停停&#xff0c…

会话存档-如何高性能存储海量聊天记录

场景 每天大约500w条数据,存档消息,并对消息进行统计分析。 大概计算一下: 每天的工作时间是8小时,大约是8小时处理400w条数据就足够了,为避免某时刻的峰值超负荷,还按照8小时处理500w条数据的标准来搭建…

开通会话存档查看聊天记录需要准备什么?

会话存档是腾讯企业微信推出的一项付费增值功能,开通会话存档之后企业可以通过会话存档API接口获取员工的聊天记录,可以获取到员工与员工之间的聊天记录、员工与客户的聊天记录,员工所在群的聊天记录,企业可以通过企小码会话存档存…

一个网站查遍所有英文文章 “会议地点及出版商”(亲测搜了80篇全部有效)

说明:本人用下面方法进行会议文章——会议地点及出版商 ——的搜索,连搜80篇文章没有任何问题! 前提使用学校网络,可能有的学校没有买会议的权限 第一步:点击所有版本 打开谷歌学术镜像网站,不用翻墙的那…

全国跨境电商联合运营服务平台,定义跨境新力量!

近年来,我国跨境电商行业不断发展,预计2021年跨境电商进出口交易规模有望达到14.3万亿元,疫情催化的市场需求、不断扩大的市场规模、频繁释放利好的政府政策,让跨境的风愈吹愈旺,面对波谲云诡的市场环境,如…

跨境电商卖家,如何运营Facebook?

随着跨境电商的兴起,越来越多的卖家开始运营Facebook,以吸引更多的潜在客户和提高品牌知名度。那么,作为跨境电商卖家,我们可以在Facebook上做些什么呢? 首先,我们可以通过Facebook建立一个专业的品牌页面&…

新手运营适合哪个跨境电商平台

很多企业的网站被收录却没有排名,关键词优化不上去,网站也没有什么流量,不断更新文章,即使是原创,也排不上去,这究竟是由于哪些原因造成的呢?米贸搜作为专业的SEO平台,整理了以下几种…

跨境电商运营做什么的?跨境电商运营怎么样?

图片来源:123rf.com.cn 随着国内电商的逐渐饱和,越来越多的人涌入了跨境电商领域,那么作为一个跨境电商运营工作,每天是做什么工作呢?今天就主要为大家分析跨境电商运营做什么的?跨境电商运营怎么样&#x…

使用Foxmail登录阿里企业邮箱(钉钉邮箱)

pop服务器和SMTP服务器地址分别是:pop.qiye.aliyun.com smtp.qiye.aliyun.com 可以到邮箱里查: 开源项目: https://github.com/xutongbao/learn-chatgpt

第一批因 AI 失业的人已经出现!有公司直接裁掉一半人

点关注公众号,回复“1024”获取2TB学习资源! 当大家还在讨论ChatGPT未来将如何发展的时候,第一批因AI失业的人已经出现了。 据媒体报道,已经有一众游戏公司迅速拥抱技术变革,将AI绘画引进工作流程,用以摆脱…

ChatGPT:AI不取代程序员,只取代的不掌握AI的程序员

作者:成都兰亭集势信息技术有限公司技术总监张雄 可能大家会有如下的问题,我就使用chatGPT这个AI工具的API来问一下。 问:chatGPT会替换掉程序员吗?如果能,预计好久? 答:作为一名 AI 语言模型&a…

我看世界杯——来自一个“假”球迷视角

世界杯还有一个星期就要结束了,说实话,我之前是一场球都没有,对足球知道也甚少,妥妥一个假球迷了。这次世界杯感觉离自己特别近,身边的很多朋友都在看,也不乏赌球的小伙伴,自己的感悟也比较深&a…

2022卡塔尔世界杯互动游戏|运营策略

2022世界杯将于11月20日-12月18日在卡塔尔举办,四年一度的全球最大狂欢节开启! 足球是世界上最受欢迎和追捧的竞技体育项目,超越了国界、性别、种族和年龄,是世界上最早的一项体育项目。但作为展现世界最高足球水平的世界杯,在足球…

【黄啊码】如何用小程序实现世界杯参赛队伍投票

本次只分享小程序端的代码实现,后端每个人都有自己的实现方法,就不写在此。 好了,先看实现样式: 本次投票实现需要一个页面和一个弹窗实现,我们做的是淘汰赛部分,在此,黄啊码将淘汰赛部分直接选…

华人AI女神:从洗碗工到谷歌首席科学家,她是如何逆袭的?

来源 | 北美留学生观察 ID | collegedaily “如果获得诺贝尔奖,我希望是以中国人的身份去领奖。” 提到人工智能,我们首先想到前段时间大火的ChatGPT,其实早在2009年,一位华裔女孩已经钻研起了人工智能,而当时在当时…

大模型时代的“Linux”生态,开启人工智能新十年

演讲 | 林咏华 智源人工智能研究院副院长 整理 | 何苗 出品 | CSDN(ID:CSDNnews) 2018 年以来,超大规模预训练模型的出现推动了 AI 科研范式从面向特定应用场景、训练专有模型,转变为大模型微调模型服务的AI工业化…

巴比特 | 元宇宙每日必读:关闭寄售市场,承诺的“元宇宙”不见踪迹,数字藏品平台iBox被指涉嫌诈骗,多地警方已立案...

摘要:据澎湃新闻报道,4月12日,多名iBox用户向澎湃质量观投诉平台反映,他们在海南链盒科技旗下iBox平台购买数字藏品时被诈骗。针对多名用户报案称被链盒科技诈骗,4月13日,海南省澄迈县公安局正式受理该案。…

外国小哥用 ChatGPT 完成 80% 工作,同时打 4 份工,笑疯。。

点击上方“Java基基”,选择“设为星标” 做积极的人,而不是积极废人! 每天 14:00 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应…