软件工程-考研复试准备

💡 一、软件生命周期

软件的生命周期可以分为定义阶段、开发阶段、维护阶段。

1、定义阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。

2、开发阶段又分为4个阶段。

首先是需求分析,在确定软件开发可行的情况下,与需求方沟通,对软件需要实现的各个功能进行详细分析,最终得到一份需求文档。

其次是软件设计,根据需求的内容思考怎么呈现的实现,比如设计系统构架,设计系统界面、设计数据库、设计开发接口等,最终会形成架构设计文档。软件设计一般分为总体设计和详细设计。

然后是程序编码,将软件设计的结果转换成计算机可运行的程序代码。

最后是软件测试,依据需求文档以发现软件存在的问题并加以纠正。整个测试过程分单元测试、组装测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。最终形成测试报告。

3、维护阶段是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。

💡 二、瀑布模型

(1)瀑布模型是指将软件生存周期的各项活动规定按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。其过程是将上一项活动的输出作为该项活动的输入,利用这一输入实施该项活动应完成的内容,然后对当前活动的工作结果进行验证,如果验证通过,则将该结果作为下一项活动的输入,并且继续进行下一项活动,否则就返回修改。
(2)计划阶段、开发阶段、运行维护阶段
计划阶段包括:问题定义,可行性研究,需求分析
开发阶段包括:概要设计,详细设计,软件实现,软件测试
运行维护阶段包括:运行维护
(3)优缺点如下:

优点 :1)为项目提供了按阶段划分的检查点。

2)当前一阶段完成后,您只需要去关注后续阶段。

3)可在迭代模型中应用瀑布模型

4)它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。

缺点:1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。

2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。

3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。

4)瀑布模型的突出缺点是不适应用户需求的变化。
(4)瀑布模型适合于项目结构比较固定、基本不变化的用户

💡 三、模块的概念

软件工程中的模块是指整个程序中一些相对独立的程序单元,每个程序单元完成和实现一个相对独立的软件功能,通俗点就是一些功能独立的程序段

💡 模块间耦合度

模块间的耦合度是软件结构模块间互连程度的度量,是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。

模块间联系越多,其耦合性越强,同时表明其独立性越差 。软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分模块的一个准则就是高内聚低耦合。

💡 区分模块的要素是什么

区分模块的要素是功能、逻辑和状态。

💡 四、软件的设计模式

(1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
(2)结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
(3)行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
(4)另外两类:并发型模式和线程池模式。

💡 五、增量模型

增量模型是把软件产品作为一系列的增量构件来分析、设计、编码、集成、测试
优点:在较短的时间内向用户提交一些有用的工作产品,适应用户需求变更,较早投入市场
缺点:新的构件加入到软件体系中时,必须不破坏原有产品,加入新构建过程必须简单方便,管理成本高

💡 六、喷泉模型
一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性,喷泉模型使开发过程具有迭代性和无间隙性。

💡 七、IPO图、层次图、DFD图等的使用阶段,作用,描述
数据流图(DFD图):用于可行性研究阶段。是一种图形化技术,描绘 信息流和数据 从输入移动 到 输出 的过程中所经受的变换。没有任何的物理部件,只是描绘 数据在软件中的流动和被处理的逻辑过程。

用途:①交流信息的工具。分析员把他对现有系统的认识或对目标系统的设想用数据流图描绘出来,供有关人员审查确认。
②作为分析和设计的工具。相比于系统流程图,能 着重描绘系统所完成的功能而不是系统的物理实现方案。

层次图:用于需求分析阶段。用树形结构的一系列多层次的矩形框描绘数据的层次结构。
顶层:代表完整的数据结构;
各层矩形框:这个数据的子集;
最底层的矩形框:组成这个数据的实际数据元素(不能再分割的元素)。系统分析员从顶层信息的分类开始,沿图中每条路径反复细化,直到确定了数据结构的全部细节为止。

IPO图:输入、处理、输出 图的简称,能方便的描绘输入数据、对数据的处理 和 输出数据之间的关系。
左边的框:有关的输入数据;中间的框:主要的处理;右边的框:产生的输出数据。

在需求分析阶段 可以使用IPO图简略地描述系统的主要算法(即数据流图的各个处理的基本算法)。
在软件设计阶段可以进一步补充修正这些图,作为设计阶段的文档。

💡 八、CMM
CMM,即软件能力成熟度模型,一共以下有5个等级:
(1)初始级。工作无序,项目进行过程中常放弃当初的计划。管理无章法,缺乏健全的管理制度。开发项目成效不稳定,项目成功主要依靠项目负责人的经验和能力,他一但离去,工作秩序面目全非。
(2)可重复级。管理制度化,建立了基本的管理制度和规程,管理工作有章可循。 初步实现标准化,开发工作比较好地按标准实施。 变更依法进行,做到基线化,稳定可跟踪,新项目的计划和管理基于过去的实践经验,具有重复以前成功项目的环境和条件。
(3)已定义级。开发过程,包括技术工作和管理工作,均已实现标准化、文档化。建立了完善的培训制度和专家评审制度,全部技术活动和管理活动均可控制,对项目进行中的过程、岗位和职责均有共同的理解 。
(4)已管理级。产品和过程已建立了定量的质量目标。开发活动中的生产率和质量是可量度的。已建立过程数据库。已实现项目产品和过程的控制。可预测过程和产品质量趋势,如预测偏差,实现及时纠正。
(5)优化级。可集中精力改进过程,采用新技术、新方法。拥有防止出现缺陷、识别薄弱环节以及加以改进的手段。可取得过程有效性的统计数据,并可据进行分析,从而得出最佳方法。

💡 九、黑盒白盒
(1)黑盒测试法
把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。黑盒测试又称为功能测试,包含等价类划分法、边界值法、错误推测法、因果图法等。
(2)白盒测试法
是把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。白盒测试又称为结构测试,包含逻辑覆盖法和基本路径测试法。

💡 十、模块独立性
模块独立性是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口最简单。
模块的独立程度可以由内聚和耦合来度量。
耦合是模块和模块之间的相互依赖的紧密程度,尽量追求低耦合,易于变更、易于重用 。
模块间的耦合主要存在7种形式:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合。强度依次减弱。所以非直接耦合是较为理想
内聚是模块内 元素之间的彼此结合的紧密程度,尽量追求高内聚,可读性强、易维护和变更、支持低耦合、移植和重用性强。
模块的内聚种类通常可分为7种,按其内聚度从低到高的次序依此为:偶然内聚、逻辑内聚、瞬时内聚、过程内聚、通信内聚、顺序内聚、功能内聚。

💡 十一、软件工程常用的模型
一是瀑布模型
二是快速原型模型。第一步就是创建一个快速原型,能够满足项目干系人与未来的用户可以与原型进行交互,再通过与相关干系人进行充分的讨论和分析,最终弄清楚当前系统的需求,进行了充分的了解之后,在原型的基础上开发出用户满意的产品。
优点是:快速为用户提供一个可以看到的原型软件;可有效应对需求的不确定性;原型系统可以逐步演化为最终系统,避免浪费人力。
缺点是:整个软件可能是随意搭成的 ,开发者没有考虑整体软件质量与长期的可维护性;
采用了一些折中手段让系统快速运行起来,比如不合适的操作系统、开发语言、低效算法等。

三是增量模型

四是螺旋模型

螺旋模型,尤其重视风险分析阶段,特别适用于庞大并且复杂,非常高风险的项目。通常螺旋模型由四个阶段组成:制定计划、风险分析、实施工程和客户评估。螺旋模型中,发布的第一个模型甚至可能是没有任何产出的,可能仅仅是纸上谈兵的一个目标,但是随着一次次的交付,每一个版本都会朝着固定的目标迈进,最终得到一个更加完善的版本。

优点:支持用户需求的动态变化
原型可看作形式的可执行的需求规格说明,易于为用户和开发人员共同理解,还可作为继续开发的基础,并为用户参与所有关键决策提供了方便;
特别强调原型的可扩充性和可修改性 , 原型的进化贯穿整个软件生存周期,这将有助于目标软件的适应能力;
为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险

缺点:如果每次迭代效率不高,致使迭代次数过多将会增加成本并推迟提交时间;
使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高。
五是瀑布模型。

💡 十二、什么是软件危机?产生的原因有哪些?
软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。
软件危机产生的原因有:
(1)对软件开发成本和进度的估计常常很不准确;
(2)用户对“已完成的”软件系统不满意的现象经常发生;
(3)软件产品的质量往往靠不住;
(4)软件常常是不可维护的;
(5)软件通常没有适当的文档资料;
(6)软件成本在计算机系统总成本中所占的比例逐年上升;
(7)软件开发生产率提高的速度,跟不上计算机应用迅速普及深入的趋势。

💡 十三、软件工程为什么要测试?
一款软件开发出来并不能保证其稳定性与毫无漏洞,这就需要对软件进行测试。软件侧测试的目的是找出该软件的缺陷,暴露程序中的错误。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值