面试常见问题——软件工程(一)
----------------分界线:本博客2020年3月14日进行了一次修正---------------
目录:
- 软件开发的基本过程工作阶段划分及其相应文档
- 可行性研究原因及主要研究问题
- 软件需求规格说明书内容
- 软件危机定义、产生原因、消除方法
- 有人认为软件开发时,一个错误发现得越晚,为改正它所付出的代价越大。提出你的观点并解释原因。从项目经理出发,如何管理软件项目
- 数据流图的作用和基本成分
- 软件工程定义,与软件工程方法学的关系
- 软件生命周期(软件过程模型),瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点
- 分析模型(数据字典、数据流图、实体-关系图、状态转换图)
1、 软件开发的基本过程工作阶段划分及其相应文档
- 问题定义
- 确定要解决的问题是什么。通过调研,系统分析员要提出关于问题性质、工程目标和工程规模的书面报告,并且要得到客户对这份报告的确认。
- 《用户需求分析分档》
- 可行性研究
- 确定问题是否有行得通的解决办法。用最小的代价在尽可能短的时间内确定问题是否能够解决。
- 《可行性研究报告》和《项目开发计划》
- 需求分析
- 确定目标系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰和具体的要求。
- 《软件需求规格说明书》、《数据要求说明书》、《初步用户手册》
- 概要设计(总体设计、初步设计、逻辑设计、高层设计)
- 概括地说,怎样实现目标系统?
- 确定解决问题的方案及目标系统中应该包含的程序。
- 设计程序的体系结构,确定程序由哪些模块组成以及模块间的关系。
- 《概要设计说明书》、《测试计划初稿》
- 概括地说,怎样实现目标系统?
- 详细设计(模块设计、物理设计、低层设计)
- 把解决办法具体化,详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。
- 《详细设计说明书》、《数据库设计说明书》
- 编码和单元测试
- 把详细设计的结果翻译成用选定的语言书写的程序,并且仔细测试编写出的每一个模块。
- 《模块开发卷宗(始)》、《用户手册(完)》、《操作手册》
- 综合测试
- 通过各种类型的测试及相应的调试使软件达到预定的要求。最基本的测试是集成测试和验收测试。
- 集成测试(组装测试):根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试。【前后端联调】
- 验收测试(确认测试):按照规格说明书的规定,由用户对目标系统进行验收。【UAT测试】
- 《模块开发卷宗(完)》、《测试计划》、《测试分析报告》、《项目开发总结报告》
- 通过各种类型的测试及相应的调试使软件达到预定的要求。最基本的测试是集成测试和验收测试。
- 软件维护
- 通过各种必要的维护活动使系统持久地满足用户的需要,包括四类维护活动:
- 改正性维护:诊断和改正软件错误
- 适应性维护:修改软件以适应环境的变化
- 完善性维护:根据用户要求改进或扩充软件使它更完善
- 预防性维护:修改软件为将来的维护活动预先做准备
- 《开发进度月报》、《软件维护报告》、《软件问题报告》、《软件修改报告》
- 通过各种必要的维护活动使系统持久地满足用户的需要,包括四类维护活动:
2、 在软件开发早期阶段为什么要进行可行性研究?可行性研究主要研究什么问题?
- 进行可行性研究原因:
- 开发一个软件时,需要判断原定的系统模型和目标是否现实,系统完成后所能带来的效益是否值得,从而避免在这些工程上的任何时间、人力、软硬件资源的浪费。
- 可行性研究的实质是进行一次大大压缩简化了的系统分析和设计过程,就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
- 主要研究问题:
- 技术可行性。包括对要开发项目的功能、 性能和限制条件进行分析, 确定在现有的资源条件下,技术风险有多大,项目是否能实现。这里的资源包括已有的或可以搞到的硬件、软件资源,现有技术人员的技术水平和已有的工作基础。
- 经济可行性。包括进行成本评估以及利润评估, 确定要开发的项目是否值得投资开发。对于大多数系统,一般衡量经济上是否合算,应考虑一个“底线”,经济可行性研究范围较广,包括:
- 成本—效益分析
- 长期公司经营策略
- 开发所需的成本