软件工程1:软件工程概念
一、软件工程的定义
IEEE:
软件工程是:将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件《计算机科学技术百科全书》:软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。
《计算机科学技术百科全书》:
软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。
比较认可的一种定义认为:
软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
二、软件工程的主要内容
软件工程概述、可行性分析、需求分析、概要分析、详细分析、面向对象分析与设计、编码、软件质量与质量保证、项目计划与管理
三、软件
3.1软件定义:
定义:是计算机系统中与硬件相互依存的一部分,它包括程序、相关数据及说明文档。
程序:一组计算机指令
数据:操作对象
文档:隐形软件开发过程的显形呈现。包括:设计文档,规格说明,使用维护手册等
现在的软件采用面向对象技术,可视化的集成开发环境,并且向智能化,自动化,集成化,并行化,自然化为标志软件开发新技术。
3.2软件的特点:
①软件是一种逻辑实体,而不是物理实体,具有抽象性;
②软件的生产过程与硬件不同,它没有明显的制作过程;
③软件在运行、使用期间不存在磨损、老化问题;
④软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致软件移植的问题;
⑤软件复杂性高,成本昂贵;
⑥软件开发涉及诸多的社会因素。
抽象性、无损性、轻便性、复杂性、昂贵性。
3.3按照不同的原则和标准将软件划分为不同的种类:
(1)基于功能划分为:系统软件、支撑软件、应用软件
(2)基于软件服务对象:通用软件、定制软件
(3)基于软件规模划分:小型软件,中型软件,大型软件。
(4)按软件的工作方式分为:实时处理软件,分时软件,交互式软件,批处理软件
四、软件危机
软件危机一直围绕以下两点:
如何开发软件以满足对软件日益增长的需求
如何维护数量不断膨胀的已有软件
4.1软件危机的主要表现
①软件需求的增长得不到满足。用户对系统不满意的情况经常发生。
②软件开发成本和进度无法控制。开发成本超出预算,开发周期大大超过规定日期的情况经常发生。
③软件质量难以保证。
④软件不可维护或维护程度非常低。
⑤软件的成本不断提高。
⑥软件开发生产率的提高赶不上硬件的发展和应用需求的增长
总之,可以将软件危机归结为成本、质量、生产率等问题。
五、软件工程
1.目的:
为建造高质量的软件提供一个框架。
2.发展历史:
传统软件工程—对象软件工程—过程软件工程—构件软件工程
3.目标:
成功地建造一个大型软件系统,能在开发成本,开发时间,软件功能,性能等方面达到预期目标。
4.软件工程本质特征:
1.软件工程关注于大型程序的构造
2.软件工程的中心课题是控制复杂性
3.软件经常发生变化
4.开发软件的效率非常重要
5.和谐的合作是开发软件的关键
6.软件必须有效的支持它的用户
7.一种文化背景的人替另一种文化背景的人
5.软件工程基本原理
1.用分阶段的生命周期计划严格管理
2.坚持进行阶段评审
3.实行严格的产品控制
4.采用现代程序设计技术
5.结果应能清除的审查
6.开发小组的人员应少而精
7.承认不断改进软件工程实践的必要性
6.软件工程的技术特点
规范化、文档化
六、软件生命周期
1.定义:
软件从孕育、诞生、成长、成熟、衰亡的生存过程,即一个软件产品从被提出开始研制到软件最终被废弃不再使用为止的全过程。
2.过程:
1.软件定义时期
问题定义、可行性研究、需求分析
2.软件开发时期
2-1系统设计
总体设计、详细设计
2-2 系统实现
编码和单元测试、综合测试
3.软件维护时期
运行为维护
3.表格显示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eDgVE0ah-1584863240411)(images/图片1.png)]
2-1系统设计
总体设计、详细设计
2-2 系统实现
编码和单元测试、综合测试
3.软件维护时期
运行为维护