软件工程
软件工程:是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
软件工程过程
- 软件规格说明
- 软件开发
- 软件确认
- 软件改进
软件生存期 life cycle
- 软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存期
- 制定计划:确定要开发软件系统的总目标;给出功能、性能、可靠性以及接口等方面的要求;完成该软件任务的可行性研究。
- 需求分析和定义:对待开发软件提出的需求进行分析并给出详细的定义;编写软件需求说明书。
- 软件设计:把各项需求转换成软件的体系结构,按照功能划分不同的模块,给每个模块以明确的定义;详细设计,确定每个模块的数据结构,包括模块之间的接口。
- 软件测试:单元测试,查找个模块在功能和结构上存在的问题并加以纠正;组装测试,将已测试过的模块按一定顺序组装起来。
- 开发方法:遵循软件生命期的划分,明确规定每个阶段的任务,上一阶段完成确定的任务后就产一定格式的文档给下一阶段,不同阶段的任务一般有不同级别的软件人员承担。
- 开发特点:时间的顺序性和依赖性;推迟实现的观点;质量保证的观点。
- 瀑布模型
- 演化模型
- 螺旋模型
- 喷泉模型
软件工程基本内容与目标
- 1.从内容上划分软件工程学可分为理论、结构、方法、工具、环境、管理、规范等。
- 2.基本目标
- 定义良好的方法学,面向计划、开发维护整个软件生存周期的方法学。
- 确定的软件成分,记录软件生存周期每一步的软件文件资料,按步显示轨迹。
- 可预测的记过,在深谷才能周期中,每隔一定时间可以进行复审。
- 软件工程学的最终目标是以较少投资获得易维护、易理解、可靠、高效率的软件产品。
软件工程的由来
软件危机
表现
- 产品不符合用户的实际需要。
- 软件开发生产率提高的速度远远不能满足客观需要,软件的生产率远远低于硬件生产率和计算机应用的增长,使人们不能充分利用现代计算机硬件提供的巨大潜力。
- 软件产品的质量差。
- 对软件开发成本和进度的估计常常不准确。
- 软件的可维护性差。
- 软件文档资料通常既不完整也不合格。
- 软件的价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。
产生的原因
- 软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。
- 在写出程序代码并在计算机上试运之前,很难检验开发的正确性,而且软件开发的也较难评价。软件不同于一般程序,它的一个显著特点是规模庞大。
- 开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的需求。
- 软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范。
- 在软件的开发与维护关系问题上存在错误的概念。
解决的原理
- 用分阶段的生存周期计划严格管理
- 坚持进行阶段评审
- 实行严格的产品控制
- 采用现代程序设计技术
- 结果应能清楚地审查
- 合理安排软件开发小组的人
- 承认不断改进软件工程实现的必要性,就是必须不断改进