一、学习目标与要求
1.了解软件工程的基本概念;
2.了解软件工程过程与软件的生命周期,以及软件工程的目标和原则;
3.了解利用结构化分析法进行软件工程中的需求分析的方法,并了解需求分析的方法和需要完成的任务;
4.了解数据流图的使用方法;
5.了解如何利用结构化设计方法进行软件设计,并了解软件设计的一些常用用工具;
6.了解软件测试的目的和方法,以及软件测试的准则,了解常用的软件测试方法的区别和各自的功能与特点;
7.了解程序调试的方法和原则。
二、内容要点
(一)软件工程基本概念
1.软件定义与软件特点
1)软件的定义
与计算机系统的操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。
2)软件的特点
(1)软件是一种逻辑实体,而不是物理实体,具有抽象性;
(2)软件的生产与硬件不同,它没有明显的制作过程;
(3)软件在运行、使用期间不存在磨损、老化问题;但为了适应硬件、环境以及需求的变化要进行修改,会导致一些错误的引入,导致软件失效率升高,从而使得软件退化;
(4)软件的开发、运行对计算机系统具有依赖性,受到计算机系统的限制,这导致了软件移植的问题;
(5)软件复杂性高,成本昂贵。软件开发需要投入大量、高强度的脑力劳动,成本高,风险大;
(6)软件开发涉及诸多的社会因素。许多软件的开发和运行涉及软件用户的机构设置,体制问题以及管理方式等,甚至涉及到人们的观念和心理,软件知识产权及法律等问题。
3)软件的分类
按功能分,可分为:
应用软件:为解决特定领域的应用而开发的软件
系统软件:是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件
支撑软件(或工具软件):介于系统软件和应用软件之间,协助用户开发软件的工具性软件,包括辅助和支持开发和维护应用软件的工具软件
2.软件危机与软件工程
1)软件危机
泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。它主要表现在:
(1)软件需求的增长得不到满足,用户对系统不满意的情况经常发生;
(2)软件开发成本和进度无法控制。开发的成本超预算和开发周期的超期经常出现;
(3)软件质量难以保证;
(4)软件不可维护或维护程度非常低;
(5)软件成本不断提高;
(6)软件开发生产率的提高赶不上硬件的发展和应用需求的增长。
2)软件工程
软件工程的定义:是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。
软件工程包括3个要素:方法、工具和过程。
方法:完成软件工程项目的技术手段;
工具:支持软件的开发、管理、文档生成;
过程:支持软件开发的各个环节的控制、管理。
3.软件工程过程与软件生命周期
1)软件工程过程
软件工程过程把输入转化为输出的一组彼此相关的资源和活动。支持软件工程过程的两方面内涵:
(1)软件工程过程是指为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。它包括4种基本活动:
P—软件规格说明。规定软件的功能及其运行时的限制;
D—软件开发。产生满足规格说明的软件;
C—软件确认。确认软件能够满足客户提出的要求;
A—软件演进过程。为满足客户的变更要求,软件必须在使用的过程中演进。
(2)使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)。
软件工程过程是将软件工程的方法和工具综合起来,以达到合理、及时地进行计算机软件开发的目的。
2)软件生命周期
将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。即软件的生命周期就是软件产品从开始考虑其概念开始,到软件产品不能使用为止的整个时期都属于软件生命周期。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。这些活动可以有重复,执行时也可以有迭代。
生命周期的主要阶段:
软件定义
软件开发
软件维护
软件生命周期的主要活动阶段是:
(1)可行性研究与计划制定:确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成开发任务的实话计划;
(2)需要分析。对待开发软件提出的需求进行分析并给出详细的定义;
(3)软件设计。系统设计人员和程序设计人员给出软件的结构、模块的划分、功能的分配以及处理流程;
(4)软件实现。把软件设计转换成计算机可以接受的程序代码。即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划;
(5)软件测试。在设计测试用例的基础上,检验软件的各个组成部分,编写测试分析报告;
(6)运行和维护。将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要且可能的扩充和删改。
4.软件工程的目标与原则
1)软件工程的目标
软件工程的目标:在给定成本、进度的情况下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。
软件工程需要达到的基本目标:
付出较低的开发成本
达到要求的软件功能
取得较好的软件性能
开发的软件易于移植
需要较低的维护费用
能按时完成开发,及时交付使用
软件工程的理论和技术性研究的内容包括:软件开发技术和软件工程管理。
(1)软件开发技术
软件开发方法学、开发过程、开发工具和软件工程环境,其主体内容是软件开发方法学。软件开发方法学是根据不同的软件类型,按不同的观点和原则,对软件开发中应遵循的策略、原则、步骤和必须产生的文档资料都做出规定,从而使软件开发能够进入规范化和工程化的阶段。
(2)软件工程管理
软件工程管理:软件管理学、软件工程经济学、软件心理学等内容。
软件工程管理学包括:人员组织、进度安排、质量保证、配置管理、项目计划等。
软件工程经济学:是研究软件开发中成本的估算、成本效益分析的方法和技术,用经济学的基本原理事研究软件工程开发中的经济效益问题。
软件心理学:从个体心理、人类行为、组织行为和企业文化等角度来研究软件管理和软件工程。
2)软件工程的原则
(1)抽象。抽取事物取基本的特征和行为,忽略非本质细节。采用分层次抽象,自顶向下,逐层细化的办法控制软件开发过程的复杂性;
(2)信息隐蔽。采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单;
(3)模块化。模块是程序中相对独立的成分,一个独立的编程单位,应有良好的接口定义。块太大会使模块内部过渡复杂,不利于对模块的理解和修改,也不利于模块的调试和重用;模块太小会使程序结构过于复杂,难于控制;
(4)局部化。在同一个物理模块中集中逻辑上相互关联的计算资源,保证模块间具有松散的耦合关系,模块内部有较强的内聚性;
(5)确定性。所有的概念表达应是确定的、无歧义且规范。
(6)一致性。包括程序、数据和文档的整个软件系统的各模块应使用已知的概念、符号和术语;程序内外部接口保持一致,系统规格说明与系统行为应保持一致;
(7)完备性。软件系统不丢失任何重要成份,完全实现系统所需要的功能;
(8)可验证性。开发大型软件系统需要对系统自顶向下,逐层分解。
5.软件开发工具与软件开发环境
1)软件开发工具
早期的软件开发,最早使用的是单一的程序设计语言,没有相应的开发工具,效率很低,随着软件开发工具的发展,提供了自动的或半自动的软件支撑环境,为软件开发提供了良好的环境。
2)软件开发环境
软件开发环境或称软件工程环境是全面支持软件开发全过程的软件工具集合。
计算机辅助软件工程将各种软件工具、开发机器和一个存放开发过程信息的中心数据库组成起来,形成软件工程环境。
2016年计算机二级公共基础学习教程:软件工程基本概念.doc正在阅读:
2016年计算机二级公共基础学习教程:软件工程基本概念10-16
忍耐作文800字10-03
2019广东初级护师成绩查询时间及查分入口【7月26日-10月30日】03-29
2017年湖南湘西中考历史试题12-04
2017河北考研报名条件04-02
2017陕西延安中考分数怎么算01-11
玩中的乐趣与收获作文01-30
[2018年河南高考英语试题及答案(官方版)]2018年湖南高考英语试题及答案【1-3】05-07
2017云南迪庆中考成绩什么时候能查01-10