导图社区 计算机二级:软件工程基础
计算机二级公共基础课之软件工程基础知识点总结
社区模板帮助中心,点此进入>>
计算机操作系统思维导图
计算机组成原理
计算机二级复习
二级计算机基础知识汇总
计算机-python 思维导图
Java Log
Android知识脑图
精通Python网络爬虫
Linux运维工程师技能树
Java技能树
软件工程基础
软件工程基本概念
软件
定义
计算机软件是计算机操作系统中与硬件相互依存的另一部分,是包括程序、数据及其相关文档的集合
组成
机器可执行的程序及有关数据
机器不可执行的,与软件开发、运行、维护、使用和培训有关的文档
特点
软件是一种逻辑实体,而不是物理实体,具有抽象性
软件的生产与硬件不同,它没有明显的制作过程
软件在运行、使用期间不存在磨损、老化问题
软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植和兼容的问题
软件复杂性高,成本昂贵
软件开发涉及诸多的社会因素
生命周期
从软件产品的提出、实现、使用、维护道停止使用退役的过程
三个阶段
定义阶段
问题定义
可行性研究
需求分析
开发阶段
概要设计
详细设计
实现
测试
维护阶段
使用和维护
退役
软件危机
概念
软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
主要表现
软件开发进度难以预测
软件开发成本难以控制且不断提高
软件需求的增长得不到满足
软件产品质量难以保证
软件产品难以维护或维护程度非常低
软件开发生产率的提高赶不上硬件的发展和应用需求的增长等
软件工程
软件工程就是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法,是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。
三要素:
方法
完成软件工程项目的技术手段
工具
支持软件的开发、管理、文档生成
过程
支持软件开发的各个环节的控制、管理
软件工程过程
为获得软件产品,在软件工具的支持下由软件人员完成的一系列软件工程活动,是把输入转化为输出的一组彼此相关的资源和活动。
原则
抽象
抽取事物最基本的特性和行为,忽略非本质细节
信息隐蔽
用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单
模块化
模块式程序中相对独立的成分,一个独立的编程单位,应有良好的接口定义
局部化
要求在一个物理模块内集中逻辑上相关联的计算资源,保证模块间具有松散的耦合关系,模块内部有较强的内聚性,这有助于控制解的复杂性
确定性
软件开发过程中所有概念的表达应是确定的、无歧义且规范的
一致性
程序内外部接口应保持一致,系统规格说明与系统行为应保持一致
完备性
软件系统不丢失任何重要成分,完全实现系统所需的功能
可验证性
应遵循容易检查、测评、评审的原则,以确保系统的正确性
结构化分析方法
四个方面
需求获取
编写需求规格说明书
需求审评
常见方法
面向数据流的结构化分析方法SA
面向数据结构的Jackson方法
面向数据结构的结构化数据系统开发方法DSSD
面向对象的分析方法
常用工具
数据流图(DFD图)
数据字典(DD)
判定树
判定表
步骤
1、通过对用户的调查,以软件的需求为线索,获得当前系统的具体模型
2、去掉具体模型中非本质因素,抽象出当前系统的逻辑模型
3、根据计算机的特点分析当前系统与目标系统的差别,建立目标系统的逻辑模型
4、完善目标系统并补充细节,写出目标系统的软件需求规格说明
5、审评直到确认完全符合用户对软件的需求
结构化设计方法
软件设计
从技术角度看
结构设计
定义软件系统各主要部件之间的关系
数据设计
将分析时创建的模型转化为数据结构的定义
接口设计
描述软件内部、软件和写作系统之间以及软件与人之间如何沟通
过程设计
把系统结构部件转换成软件的过程性描述
从工程角度看
又称结构设计,将软件需求转化为软件体系结构,确定系统级接口、全局数据结构和数据库模式
基本任务
设计软件系统结构
数据结构及数据库设计
编写概要设计文档
概要设计文档审评
结构图(程序结构图)
常见术语
深度:表示控制的层数
宽度:整体控制跨度(最大模块数的层)的表示
扇入:直接调用一个给定模块的模块个数
扇出:由一个模块直接调用的其他模块数
确定每个模块的实现算法和局部数据结构,用适当方法表示算法和数据结构的细节
详细设计每个模块的实现算法和所需的局部数据结构
图形工具
程序流程图
盒图(N-S图)
PAD图
HIPO图
表格工具
语言工具
PDL(伪码)
基本原理
模块独立性
一个良好的软件系统应具有高内聚、低耦合的特点
程序的调试
程序调试是在测试发现错误之后排除错误的过程,主要任务是诊断错误和排除错误
强行排错法
回溯法
原因排除法
软件测试
是一种实际输出和预期输出之间的比较过程,目的就是为了尽可能多地发现软件中的问题
根据被测软件是否需要被执行
静态测试
一般指人工评审软件文档或程序,以发现错误。包括代码检查、静态结构分析、代码质量等
动态测试
动态测试是在样板测试数据上执行程序并分析输出以发现错误的过程。所以动态测试包括三部分:生成测试数据、执行程序与验证的输出结果。
按照功能
白盒测试
白盒测试是根据程序的内部逻辑来设计测试用例,主要方法包括逻辑覆盖测试和基本路径测试
黑盒测试
黑盒测试是根据规格说明书的功能来设计测试用例,检查程序的功能是否符合要求。黑盒测试不需要考虑程序的内部逻辑结构,主要方法包括等价类划分法、边界值分析法和错误推测法等
实施
四个步骤
单元测试
集成测试
确认测试
系统测试
准则
所有测试都应追溯到需求
严格执行测试计划,排除测试的随意性
充分注意测试中的集群现象
程序应避免检查自己的程序
穷举测试不可能
妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方面
软件需求规格说明书
是需求分析阶段的最后成果,是软件开发中的重要文档之一
作用
便于用户、开发人员进行理解和交流
反映出用户问题的结构,可以作为软件开发工作的基础和依据
作为确认测试和验收的依据
主要标准
完整性
正确性
无歧义性
可理解性
可修改性
可追踪性
可归结为成本质量生产率等问题