# 软件工程
第一章 软件工程基础
什么是软件?软件和程序的区别是什么?
软件是计算机及手机等终端设备运行的指令数据和资料与服务的集合,包括指令程序、数据、相关文档和完善的售后服务的完整集合。
程序只是软件的组成部分。
什么是软件危机?软件危机的主要表现是什么?怎样消除软件危机?
软件危机是指20世纪60年代在计算机软件的研发、运行维护和管理过程中出现的一系列严重问题的现象。
主要表现:
1.在软件系统运行过程中经常出现功能、性能等严重问题和故障。
2.软件产品的质量、可靠性和安全等方面时常不能达到标准要求。
3.软件开发管理差,对成本和进度难以估计。
4.系统时常出现无法维护、升级或更新的问题。
5.开发效率低,无法满足应用快速发展与更新升级的实际需要。
6.研发成本难以控制,在总成本中所占比例不断大幅上升。
7.软件开发没有标准、完整、统一规范的文档资料。
怎样消除:
1.技术方法:运用软件工程的技术方法和标准进行规范。
2.开发工具:选用先进高效的软件工具,采取切实可行的实施策略。
3.组织管理:研发机构需要组织高效、管理制度和标准严格规范、职责明确、质量保证有力、团结互助、齐心协力、注重文档及服务。
什么是软件生存周期?软件生存周期为什么要划分阶段?划分阶段的原则是什么?
软件生存周期是从开始研发软件到软件停止使用的整个过程。
目的主要是便于确立系统开发计划,明确各类开发人员的分工与职责,以便选用不同的开发模型、技术方法、加强管理、分工协作、保证质量、提高效率。
原则:
1.各阶段任务线对独立。
2.同一阶段的工作性值尽量相同。
比较各种软件开发模型的特点。
瀑布模型:
1.开发过程的顺序性.
2.严格要求保证质量
3.统筹兼备,不早编程.
缺点:
将充满回溯且相互重叠的软件开发过程硬性的分为多个阶段,随着开发软件规模的增加,造成的危害大增
快速原型模型:
适合可以先尽快构建成一个原型的应用系统
增量模型:
灵活性很强,适用于软件需求不明确,设计方案有一定风险的软件项目,
缺点:
1.需要软件具备开放式的体系结构
2.软件过程的控制易失去整体性
螺旋模型:
将瀑布模型和快速原型模型结合,强调了其他模型所忽视的风险分析,适用于大型复杂系统,吸收了演化的概念.
第二章 可行性分析及研发策划
为什么要进行可行性分析?应该从哪些方面研究目标系统的可行性?
目的是以尽可能小的成本在较短的时间和特定的条件下确定软件项目是否值得研发,是否可行。
哪些方面:
技术可行性 经济可行性 社会可行性 开发方案可行性 运行可行性
可行性分析的任务有哪些?
初步确定软件项目的规模和目标,明确项目的约束和限制,并导出软件系统的逻辑模型,确定若干可选择的主要软件系统的初步研发方案。
研究项目的技术可行性一般要考虑的情况有哪些?
主要分析在特定条件下,技术资源,能力,方法等方面的可用性及其用于解决软件问题的可能性和现实性。
可行性分析包括哪些步骤?
1.明确系统规模和目标
2.认真研究现行系统
3.确定系统逻辑模型
4.制定并推荐技术方案
5.编写可行性分析报告
6.评审论证
第三章 软件需求分析
什么是需求分析?需求分析的特点是什么?
软件需求分析通常是软件需求分析师经过深入细致的调研和分析,准确理解用户需求和项目的功能,性能,
可靠性等具体要求,将用户非形式化的需求表述转化为完整的具体需求定义,再将需求定义写成需求规约的过程。
特点:
指标确定难 需求动态性 交流共识难 完全一致难 深入完善难
简述需求分析的目的和原则。
目的是获取用户及项目的具体需求,通过对实际需求的获取、分析、文档化和验证等需求分析的过程,为软件的进一步设计和实现提供依据。
1.需求划分
2.面向用户及项目获取分析需求
3.检查和解决不同需求间的矛盾
4.确定软件边界及范围
5.文档化并验证确认
原则:
功能分层 表达理解问题的数据域和功能域 建立模型
需求分析的任务和步骤是什么?
任务:
确定目标系统的具体要求 建立目标系统的逻辑模型 编写需求文档,验证确认需求
步骤:
需求获取 需求描述 编写需求文档 需求验证
第四章 软件设计
系统设计分成哪两阶段?各要完成什么任务?
总体设计:
此阶段确定软件系统的具体实现方案,给出软件的模块结构,编写总体设计文档。
详细设计:
对总体设计的一个具体细化的过程。确定组成模块及联系,处理过程数据库设计、网络设计、界面设计、软件设计文档和实现方案等。
总体设计的原则有哪些?
由宏观到微观,逐步求精的原则,定性与定量分析相结合。分解与协调相结合和模块化方法,并兼顾软件的通用性、关联性、整体和层次性,
根据软件的总体结构功能任务和目标进行分解,使各组成间互相协调配合,实现软件总体优化
用户界面应具备哪些特点?
可使用性 灵活性 界面的复杂性与可靠性
用户界面的设计基本原则。
界面的合适性 简便易操作 便于交互控制 媒体组合恰当
第五章 面向对象开发方法
第六章 软件编程实现
概述OOP设计的基本思想。
通过对象机制来封装处理数据,以控制程序的复杂度,通过继承提高程序的可重用性和软件的开发效率。
软件实现的原则有哪些?
面向对象实现方法的准则:
高可用性 高可扩充性 高可靠性及健壮性
其他:
精简编程 便于验证 适合更新扩充 遵守编程规范 选择熟悉的语言工具
第七章 软件测试与维护
什么是软件测试?目的是什么?
在规定的条件下对软件程序进行检测运行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程.
目的:尽可能多的找到软件中的错误,而不是证明软件的正确性.
软件测试的原则。
1.认真执行测试计划
2.尽早和不断的进行软件测试/评审
3.优选测试工具,技术及方法
4.精心设计测试用例
5.交叉进行软件检测
6.重点测试群集现象
7.全面检查并分析测试结果
8.妥善保管测试文档
软件测试的步骤和各个阶段的任务。
单元测试
单元模块内和模块之间的功能测试、容错测试、边界测试、约束测试、界面测试、
重要的执行路径,单元内的业务流程和数据流程等。
集成测试
1.各模块连接时,经过模块接口的数据丢失情况
2.某一模块的功能对另一个模块的功能的不利影响
3.各模块或子系统功能的组合,达到预期需求的集成子系统/系统功能情况
4.检测软件系统所需的全局数据结构是否有问题
5.单个模块的误差累积后情况,是否会放大,是否可接受
6.单个模块的错误对数据库的影响
有效性测试
包括系统性初始化测试、功能测试、用户需求确认、业务处理确认或数据处理测试、
性能测试、安全性测试、安装性测试、恢复测试、压力测试。
系统测试
恢复测试、安全测试、强度测试、性能测试。
什么是白盒测试法?什么是黑盒测试法?
白盒测试:
白盒测试法主要是对程序内部结构执行路径的测试,也称透明盒测试、开放盒测试、结构化测试、基于代码的测试和逻辑驱动测试等。
黑盒测试:
黑盒测试法也称功能测试或黑箱测试,其中黑盒是指测试人员只知道被测试软件的界面和接口外部情况,
不必考虑程序内部的逻辑结构和特性,只根据程序的需求分析规格说明检查其功能是否符合。
软件调试一般经过哪些步骤?原则是什么?
步骤:
重现问题 定位根源 确定解决方案 验证方案
确定错误性值及位置原则:
1.认真研究征兆信息
2.暂避难题求实现
3.借助工具辅助手段
4.不主观乱猜测
修改错误的原则:
1.注重集群现象
2.全部彻底修改
3.注意错误关联
4.回溯程序设计方法
5.不改变目标代码
软件维护的特点。
时间长、工作量大、成本高 维护的副作用 软件维护困难
Comments | NOTHING