重点这里软件工程上午题以选择题为主软件工程下午题的案例题会涉及到系统建模的题目,即开发方法中使用的工具,会有所考察
在论文中会涉及到开发方法和开发模型这样的题
软件工程的由来
因为软件危机,这个我的个人理解是,由于大量不规范的代码书写导致后期的维护工作无法进行,进而导致系统无法进行维护或更新,导致被迫停用。说人话,写的屎山代码,还没有文档,也没有注释,变量名还不规范,后期维护人员看得一脸懵逼。
下面是官方的解释
由于时代的发展,软件的需求量暴增,导致之前那种小作坊式的软件开发不能满足需求,为了解决这个问题,专业人士寻思着从其他的工程领域如建筑工程领域找解决办法,你建造房子,我觉得应该经过如下步骤
- 需求明确,建造什么样的房子对吧,预算问题
- 画图纸和选址,这个图纸以何种方式能让别人一看就能看得懂呢?施工用到的材料可能不一样,标准怎么定呢?地址选定在哪里呢?
- 施工了,怎么施工,施工工具,拿勺子挖土?还是拿现代化工具来?
- 交付
- 维护
软件开发中的设计模式也是这么干的,因为设计模式起源于建筑工程领域
软件工程三要素
- 方法
- 工具
- 过程
软件开发生命周期
分为软件定义,软件开发,软件运行和维护
软件定义
包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的目标.
分为问题定义,可行性研究,需求分析。选择择题可能会将这一块与生命周期搞混
下面是详细展开的
- 问题定义 说人话,要做什么系统,比如做一个购物的还是游戏的还是通讯的,即定位。
- 可行性研究
说人话就是能不能做,让你做一个只要摇一摇手机就能将周围用户的银行卡中的钱转给你,你觉得能做吗?
真可刑包括技术可行性(你在开发过程中涉及到的软硬件是怎么来的,自主研发还是采购的),经济可行性(预算够不够),操作可行性和社会可行性(做一个违反法律的能做?)等等,确定是否有界,解决办法是否可行 - 需求分析 研究系统的功能性需求(就是必须要完成的)和非功能性需求(就比如安全性,可靠性,可维护性,结果的精度,容错性,响应速度和适应性)
软件开发
软件的设计与实现了,分为概要(总体)设计、详细设计、编码、测试等等
概要设计是在软件需求规格说明的基础上,建立系统的总体结构(含子系统的划分)和模块间的关系,定义功能模块及各功能模块之间的关系
就比如ERP,有物料的管理功能,一些其他的人力资源管理的功能 概要设计就是拆模块,定义模块的功能以及模块之间的关系
详细设计就是对模块内逐步细化了,详细设计包括算法与数据结构、数据分布、数据组织、模块间接口信息和用户界面等的设计,并写出详细设计报告。
测试分成单元测试、集成测试、确认测试和系统测试等等,通常把编码和测试称之为系统的实现
软件运行和维护
这个很好理解,前者就是上线了,维即满足客户的需求或随着业务的发展而新增的需求,这个不是重点,是运维干的活