面试常问软件工程

软件工程
1 软件生命周期

​ 软件生命周期是指软件从产生到最终被废弃的生命周期,可以分为定义问题、软件开发和软件维护三大阶段,每个大阶段又可分为多个小阶段。

  • 软件定义:问题定义->可行性研究->需求分析

  • 软件开发:总体设计->详细设计->编码和单元测试->综合测试

  • 软件维护

2 模块

​ 2.1 模块的定义

​ 软件工程中谈到的模块是指整个系统中一些相对独立的程序单元,每个程序单元完成和实现一个相对独立的软件功能。通俗点就是一些独立的程序段。模块一般具有如下三个属性:

  • 功能:描述该模块实现什么功能

  • 逻辑:描述模块内部怎么做

  • 状态:该模块使用时的环境和条件

​ 2.2 高内聚、低耦合

​ 耦合:是对模块间关联程度的度量。耦合度就是某模块与其它模块之间的关联、感知和依赖的程度,是衡量代码独立性的一个指标。

img

​ 内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系。

3 常见的软件开发模型
  • 瀑布模型

    ​ 瀑布模型(经典生命模型)提出了软件开发的系统化的、顺序的方法。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。比较适合需求确定不怎么变化的项目,例如操作系统和编译系统。

  • 增量模型

    ​ 在整体上按照瀑布模型的流程实施项目开发,以方便对项目的管理;但在软件的实际开发中,则将软件系统按功能分解为许多增减构件,并以构件为单位逐个地创建与交付,直到全部增量构件创建完成,并都被集成到系统之中交付用户使用。适用于找不到足够开发人员的情况。

  • 喷泉模型

    ​ 喷泉模型是专门针对面向对象软件开发方法而提出的。该模型认为软件开发过程自下而上周期的各阶段是相互重叠和多次反复的,像水喷上去又可以落下来。各个开发阶段没有特定的次序要求,可以交互进行,可以在开发阶段随时补充其他任何阶段的遗漏。适用于需求不确定经常变化的情况。

4 设计模式

创建型模式:在创建对象的同时隐藏创建逻辑,不使用 new 直接实例化对象。有工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式:通过类和接口间的继承和引用实现创建复杂结构的对象。有适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式:通过类之间不同通信方式实现不同行为。有策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

  • 单例模式:目的是保证一个类只能有一个实例,而且自行实例化并向整个系统提供这个实例,避免频繁创建对象,节约内存。在程序编写上,一般将单例模式分为两种,分别是饿汉式和懒汉式。饿汉式:在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快。懒汉式:在类加载时不初始化,等到第一次被使用时才初始化。

  • 观察者模式:一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。观察者模式的意义是解耦,使观察者和被观察者逻辑不再搅在一起。

  • 装饰者模式:子类函数在调用父类的基础上添加自己的修饰。对已有的业务逻辑进一步包装,例如java中I/O流就使用了装饰着模式。

  • 适配器模式:将一个类的接口转换成另一种接口。

  • 策略模式:忽略了内部细节,仅提供了实现策略的接口。

  • 工厂模式:一个抽象的接口,多个抽象的实现类,一个工厂类,用来实例化抽象的接口。

5 UML图
  • UML是统一建模语言,它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。UML图总共有九种,其中我们用的最多的就是UML类图,类图主要描述了类名称,类的特性和类的操作还有类之间的关系(依赖、继承、组合、聚合、关联等)。
6 黑盒白盒
  • 黑盒测试

    ​ 黑盒测试又称为功能测试,就当整个程序是个黑盒子,我们看不到它里面做了些什么事情,只能通过输入输出看是否能得到我们所需的来测试。常用的有等价分析法,边界值分析法等

  • 白盒测试

    ​ 白盒测试也称为结构测试或逻辑驱动测试,就当整个盒子是个透明的盒子,里面的一切我们都看的清楚,从而我们可以通过去测内部结构来测试。常用的有逻辑覆盖测试和基本路径覆盖测试。

7 CMM

​ 软件能力成熟度模型是一种对软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述形成的标准。

8 软件工程各个阶段

Snip20160703_17

  • DFD图(数据流图):用于表示业务信息系统中的数据流,它表达了系统中的数据从输入到存储间所涉及的程序,在可行性分析阶段使用。就是各实体和系统之间的数据交换。

  • IPO图:IPO图是输入、处理和输出图的简称,它清楚的描述了输入数据、处理数据、输出数据之间的关系,在需求分析阶段使用。

  • 层次图:层次图用来描绘软件的层次结构。很适于在自顶向下设计软件的过程中使用。用此图表示自顶向下分解所得系统的模块层次结构,在总体设计阶段使用。

  • 6
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值