软件工程基础知识(面试)

简介: (1)黑盒:把程序看做黑盒子不考虑程序内部结构和处理过程。只检查程序能否按照规格说明书正常使用,功能测试。

1.瀑布模型优缺点

(1)优点:

可强迫开发人员采用规范(结构化)方法——

PS:结构化分析方法:面向数据流自顶向下逐步求精进行需求分析的方法

严格规定每个阶段必须提交的文档

(2)缺点:

文档驱动——依赖书面的规格说明,导致最终产品不满足用户需求。

(3)适用范围:需求明确,小规模开发


2.黑盒&白盒

(1)黑盒:

把程序看做黑盒子不考虑程序内部结构和处理过程。

只检查程序能否按照规格说明书正常使用,功能测试。


(2)白盒:

与黑盒相反,测试者知道程序的结构和处理算法,即按照程序的内部逻辑测试程序。

白盒测试在测试的早期阶段,黑盒测试在测试的后期。

3.软件生命周期模型

软件定义、软件开发、运行维护(软件维护)


通常使用生命周期模型简洁地描述软件过程,

也称过程模型:瀑布模型、快速还原模型、增量模型、螺旋模型、喷泉模型。

4.单元测试的5个测试重点

模块接口、局部数据结构、重要的执行通路、出错处理通路、边界条件。


5.软件工程方法学三要素

(1)方法:是完成软件开发的各项任务的技术方法,回答“怎样做”的问题

(2)工具:是为运用方法而提供的自动的或半自动的软件工程支撑环境

(3)过程:是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤


6.详细设计的基本任务

详细设计即过程设计,通过对结构表示进行细化,得到软件详细的数据结构和算法,

其基本目就是回答详尽、精确地描述系统个模块的具体实现方法。

描述方法有:程序流程图、盒图、PAD图、判定表、判定树、jackson图、warnier图。


7.E-R图(实体-联系)

实体-联系方法,描述现实世界的概念模型。

image.png


栗子

两个实体之间的联系:如多对多:

image.png


8.需求分析的3种模型及工具

(1)数据模型:实体-联系图(E-R图)

(2)功能模型:数据规范化

(3)行为模型:状态转换图(或简称为状态图),通过描绘系统的状态转换的事件,来表示系统的行为。同时提供建模机制。


9.软件配置管理的作用

主要任务:控制变化,同时负责各个软件配置项等。

具体任务:标致软件配置中的对象;版本、变化控制;配置审计;状态报告。


10.软工的基本原理

(1)用分阶段的生命周期计划严格管理

(2)坚持进行阶段审评、严格的产品控制、结果应能清楚地审查

(3)开发人员少而精

(4)承认不断改进软件工程实践的必要性

软件过程:为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

11.软工的方法学

方法学即范型,是软件生命周期全过程中使用的一套技术方法的集合。


(1)传统方法学

又称生命周期方法学或结构化范型。

它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务


(2)OOP方法学

以数据为主线。

①把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构建

②把所有对象都划分成类(class)

③按照父类(或称为基类)与子类(或称为派生类)的关系,把若干相关类组成一个层次结构的系统(已成为类等级)(继承)

④对象彼此间仅能通过发送消息互相联系

12.详细设计的步骤

大致过程可以理解为:

一、先宏观算法,再根据需求微观模块、接口,最后打杂:数据库、测试用例、文档。

二、开工:编码、单元&综合测试,最后软件维护。


详细设计的具体过程:

(1)为每个模块进行详细的算法设计(用图形、表格等描述算法)。

(2)对模块内的数据结构设计。

对需求分析、概要设计确定的概念性的数据结构进行确切的定义。

(3)模块接口设计。


(4)其他设计:数据库、代码、输入or输出格式设计。

(5)模块测试用例的设计

(6)写说明书,形成正式文档


(7)编码和单元测试

(8)综合测试:如集成测试和验收测试

(9)软件维护


13.多态性

指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。


14.OOP开发的建模

OOP开发软件,通常要建立的3种形式的模型:

(1)对象模型:描述系统数据结构,表示静态的、结构化的系统的“数据”性质

(2)动态模型:描述系统控制结构,表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。

(3)功能模型:描述系统功能,表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。


15.开发时期的4阶段

(1)总体设计 (2)详细设计

(3)编码和单元测试 (4)综合测试


其中,每个阶段都有以下基本任务:

(1)问题定义:“要解决的问题是什么”

(2)可行性研究:“对于上一个阶段所确定的问题有行得通的解决办法吗”

(3)需求分析:准确确定“为了解决这个问题,目标系统必须做什么”

(4)总体设计:“概括地说,应该怎样实现目标系统?”

(5)详细设计:把问题具体化,“应该怎样具体实现这个系统呢?”

16.过程设计的工具

也即详细设计的工具:

(1)程序流程图,又称为程序框图。

主要缺点有:不是逐步求精的好工具;程序员不受任何约束,随意转移控制;不易表示数据结构。


(2)盒图,有如下特点:

功能域(即一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来;

不可能任意转移控制;

很容易确定局部和全程数据的作用域;

很容易表现嵌套关系,也可以表示模块的层次结构。


(3)PAD图,是问题分析图(problem analysis diagram)的英文缩写,

用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易,

主要优点有:

使用表示结构化控制结构的PAD符号设计出来的必定是PAD程序;

程序结构十分清晰;

用PAD图表示程序逻辑,易懂、易读、易记;

容易转化成高级语言源程序;

可用于表示程序逻辑;

支持自顶向下,逐步求精。


(4)判定表


(5)判定树


(6)过程设计语言(PDL),也称为伪码。


17.系统流程图

系统流程图是概括地描绘物理系统(硬件)的传统工具,

它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件(程序、文档、数据库、人工过程等)。

表达的是数据在系统各部件之间流动的情况,是物理数据流程图,而不是程序流程图。(程序流程图有分支、判定结点,主要描绘控制过程)


系统的逻辑模型=数据流图+数据字典。

18.测试&调试

1.测试

在软件投入生产运行前,发现错误。

软件测试步骤:模块测试、子系统测试、系统测试、验收测试、平行测试


2.调试

通过测试发现错误后诊断并改正错误。

调试途径:蛮干法、回溯法、原因排除法(对分查找法、归纳法、演绎法)

19.人机交互

(1)设计人机界面遇到的四个问题:

系统响应时间、用户帮助设施、出错信息处理、命令交互


(2)人机设计指南:

一般交互指南、信息显示指南、数据输入指南


20.结构化设计方法

称SD方法, 即基于数据流的设计方法。

目标:给出设计软件结构的一个系统化的途径。

信息流的两种类型:变换流、事务流。


21.IPO图

(1)IPO图是输入、处理、输出图的简称,

它是由美国IBM公司发展完善起来的一种图形工具,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系

(2)基本形式是在左边的框中列出有关的处理数据,在中间的框内列出主要的处理,在右边的框内列出产生的输出数据。处理框中列出处理的次序暗示了执行的顺序,但是用这些基本符号还不足以精确描述执行处理的详细情况

(3)适合于需求分析阶段的需要

22.层次方框图

(1)系统分析员从对顶层信息的分类开始,沿途中每条路反复细化,直到确定了数据结构的全部细节时为止;

(2)用树形结构的一系列多层次的矩形框描绘数据的层次结构

(3)适合于需求分析阶段的需要


23.Warnier图

(1)用花括号{表示层次关系,在同一括号下,自上到下是顺序排列的数据项,在有些数据项名字后面附加了圆括号,给出该数据项重复的次数

(2)和层次方框图类似,用树形结构描绘信息,

但提供了更为丰富的手段,可以表明信息的逻辑组织,也就是说,

它可以指出一类信息或一个信息元素是重复出现的,

也可以表示特定信息在某一类信息中是有条件地出现的

(3)适合于需求分析阶段的需要,可以转变成软件设计工具


24.模块化

是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,

而且有一个总体标识符代表它。

模块化就是把程序划分成独立命名且可独立访问的模块,

每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。(要确定合适的模块数量)



相关文章
|
7月前
软件工程面试技巧之十八罗汉
软件工程面试技巧之十八罗汉
软件工程面试技巧之十八罗汉
回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有。其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。回到顶部。
141 0
软件工程面试技巧之十八罗汉
|
4月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
1月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
1月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
1月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
59 4
|
2月前
|
算法 Java 数据中心
探讨面试常见问题雪花算法、时钟回拨问题,java中优雅的实现方式
【10月更文挑战第2天】在大数据量系统中,分布式ID生成是一个关键问题。为了保证在分布式环境下生成的ID唯一、有序且高效,业界提出了多种解决方案,其中雪花算法(Snowflake Algorithm)是一种广泛应用的分布式ID生成算法。本文将详细介绍雪花算法的原理、实现及其处理时钟回拨问题的方法,并提供Java代码示例。
92 2
|
2月前
|
JSON 安全 前端开发
第二次面试总结 - 宏汉科技 - Java后端开发
本文是作者对宏汉科技Java后端开发岗位的第二次面试总结,面试结果不理想,主要原因是Java基础知识掌握不牢固,文章详细列出了面试中被问到的技术问题及答案,包括字符串相关函数、抽象类与接口的区别、Java创建线程池的方式、回调函数、函数式接口、反射以及Java中的集合等。
37 0
|
4月前
|
XML 存储 JSON
【IO面试题 六】、 除了Java自带的序列化之外,你还了解哪些序列化工具?
除了Java自带的序列化,常见的序列化工具还包括JSON(如jackson、gson、fastjson)、Protobuf、Thrift和Avro,各具特点,适用于不同的应用场景和性能需求。
|
4月前
|
Java
【Java基础面试三十七】、说一说Java的异常机制
这篇文章介绍了Java异常机制的三个主要方面:异常处理(使用try、catch、finally语句)、抛出异常(使用throw和throws关键字)、以及异常跟踪栈(异常传播和程序终止时的栈信息输出)。