《软件工程概述.pptx》由会员分享,可在线阅读,更多相关《软件工程概述.pptx(19页珍藏版)》请在优知文库上搜索。
1、第1章 软件工程概述本章目标 p 了解软件的概念、特点及主要分类p 了解软件危机的产生原因及其表现p 掌握软件工程的概念,以及软件工程的基本原则p 了解软件开发的方法p 了解与软件开发项目相关的常用工具1.1 软件 1.1.1 软件的概念及特点概念:计算机软件是由专业人员开发并长期维护的软件产品。完整的软件产品包括了在各种不同容量和体系结构计算机上的可执行的程序,运行过程中产生的各种结果,以及以硬复制和电子表格等多种方式存在的软件文档1.1 软件 特点:1)具有抽象性2)无明显的制造过程3)存在退化问题4)对计算机系统有着不同程度的依赖性5)尚未完全摆脱人工的开发方式6)软件本身是复杂的7)成
2、本相当昂贵8)相当多的软件工作涉及社会因素1.1 软件 1.1.2 软件的分类1.2 软件危机 1.2.1 软件危机的表现与原因 在软件开发的过程中,会经常出现一些不能按时完成任务、产品质量得不到保证、工作效率低下和开发经费严重超支等现象。计算机软件的开发、维护和应用过程中普遍出现的这一些严重的问题便是软件危机 人们对软件产品认识的不足以及对软件开发的内在规律理解的偏差是软件危机出现的本质原因。1.2 软件危机 1.2.2 软件危机的启示 软件危机给我们的最大启示,是使我们更加深刻的认识到软件的特性以及软件产品开发的内在规律。l 软件产品是复杂的人造系统,具有复杂性、不可见性和易变性,难以处理
3、。l 个人或小组在开发小型软件时使用到的非常有效的编程技术和过程,在开发大型、复杂系统时难以发挥同样的作用。l 从本质上讲,软件开发的创造性成分很大、发挥的余地也很大,很接近于艺术。它介于艺术与工程之间的某一点,并逐步向工程一段漂移,但很难发展到完全的工程。1.2 软件危机 l 计算机和软件技术的快速发展,提高了用户对软件的期望,促进了软件产品的演化,为软件产品提出了新的、更多的需求,难以在可接受的开发进度内保证软件的质量。l 几乎所有的软件项目都是新的,而且是不断变化的。项目需求在开发过程中会发生变化,而且很多原来预想不到的问题会出现,对设计和实现手段进行适当的调整是不可避免的。l “人月神
4、化”现象生产力与人数并不成正比。1.3 软件工程 1.3.1 软件工程的概念 IEEE对软件工程的定义为: 1)将系统化、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件 2)对1)中所述方法的研究 具体说来,软件工程是以借鉴传统工程的原则、方法,以提高质量,降低成本为目的指导计算机软件开发和维护的工程学科。它是一种层次化的技术1.3 软件工程 软件工程层次图1.3 软件工程 1.3.2 软件工程研究的内容 软件工程研究的内容主要包括以下两个部分: 软件开发技术。主要研究软件开发方法、软件开发过程、软件开发工具和环境。 软件开发过程管理。主要研究软件工程经济学和软件管
5、理学。1.3 软件工程 1.3.3 软件工程目标和原则 软件工程要达到的基本目标包括: 达到要求的软件功能 取得较好的软件性能 开发出高质量的软件 付出较低的开发成本 需要较低的维护费用 能按时完成开发工作,及时交付使用1.3 软件工程 软件工程的7条基本原则 用分阶段的生没周期计划进行严格的管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 软件工程结果应能清楚地审查 开发小组的人员应该少而精 承认不断改进软件工程实践的必要性1.3 软件工程 1.3.4 软件工程知识体系 IEEE在2014年发布的软件工程知识体系指南中将软件工程知识体系划分为以下15个知识领域。1软件需求2软
6、件设计3软件构建4软件测试5软件维护6软件配置管理7软件工程管理8软件工程过程9软件工程模型和方法10软件质量11软件工程职业实践12软件工程经济学13计算基础14数学基础15工程基础1.4 软件开发方法 1.4软件开发方法 软件开发方法是一种使用定义好的技术集及符号表示组织软件生产的过程,它的目标是在规定的时间和成本内,开发出符合用户需求的高质量的软件。 常见的软件开发方法包括:1) 结构化方法2) 面向数据结构方法3) 面向对象方法4) 形式化方法 此外,软件开发方法还有问题分析法、可视化开发方法等。1.5 软件工程工具 软件工程的工具对软件工程中的过程和方法提供自动的或半自动的支持。可以
7、帮助软件开发人员方便、简捷、高效地进行软件的分析、设计、开发、测试、维护和管理等工作。有效地利用工具软件可以提高软件开发的质量,减少成本,缩短工期,方便软件项目的管理。 软件工程工具通常有3种分类标准:1.按照功能划分2.按照支持的过程划分3.按照支持的范围划分1.5 软件工程工具 按照功能划分:功能是对软件进行分类的最常用的标准,按照功能划分,软件工程工具可分为可视化建模工具、程序开发工具、自动化测试工具、文档编辑工具、配置管理工具、项目管理工具等。 按照支持的过程划分:根据支持的过程,软件工程工具可分为设计工具、编程工具、维护工具等。1.5 软件工程工具 按照支持的范围划分:根据支持的范围,软件工程工具可以分为窄支持、较宽支持和一般支持工具。窄支持工具支持软件工程过程中的特定任务,一般将其称之为工具;较宽支持支持特定的过程阶段,一般由多个工具集合而成,称之为工作台;一般支持支持覆盖软件过程的全部或大部分阶段,包含多个不同的工作台,称之为环境。谢谢!