授课日期: 11月13日
课程名称: 软件工程导论
教学目的:让学生了解软件以及软件危机的概念
了解软件危机出现的原因以及解决途径
熟悉软件工程产生的原因以及其生命周期各个阶段的任务
教学重点:软件危机的出现原因、软件工程的基本原理、软件生命周期
教学难点:生命周期各个阶段的任务
教学过程:讲解软件的概念
通过软件危机的表现及原因分析引入软件工程的基本概念
分析消除软件危机的途径
讲解软件工程的基本原理
计算机系统发展迅速,但是人们仍然没有彻底摆脱“软件危机”的困扰,软件已经成为限制计算机系统发展的瓶颈。计算机软件工程学就是为了研究如何消除软件危机而发展起来的。那么什么是软件危机呢?
在开始讲软件危机时我要先提出一个概念:什么是软件?(板书:软件危机、什么是软件)简单来举例像我们平时用的word、excel都是计算机软件。
软件就是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及其说明文档。(软件的英文名为Software板书:software=program+data+document)
那它具有什么特性呢?在这里我向大家绘制两幅图,大家可以比较讨论一下
硬件的失效率刚开始是降低的,这个阶段就是磨合调整,通过调整失效率降低并达到一定时期的稳定,那为什么会失效率增高呢,硬件是物理实体它存在磨损用坏的问题。再来看软件的失效图像,我绘制了两条,一条是理想情况下,另一天是实际情况下。大家可以看出来吗?没错,开发出来的软件并不是永远有效的,随着用户的需求增大等情况失效率会增高。从图中我们还可以看出在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。因为软件是一种逻辑实体,并非具体的物理实体。
另外呢,软件复杂性很高,软件技术的发展落后于需求,成本也相当昂贵。
讲完软件的概念,那么软件危机就比较容易理解了,软件危机就是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
那么大家思考一下,能够正常运行的软件可能会存在软件危机吗?答案是可能会。实际上,几乎所有软件都不同程度地存在这些问题。比方说,你在用QQ软件时,它不能与你的计算机硬件环境兼容或是不能满足你的要求。
总结下来,软件危机需要应对两方面的问题:
(1) 如何开发软件,以满足对软件日益增长的需求
(2) 如何维护数量不断膨胀的已有软件
软件危机又有哪些典型表现呢?我们在进行一项工程时是不是经常会有一个工程预算,软件工程也不例外,如果对软件开发成本和进度的估计不准确,那么就很容易使用户不满。再
来如果没有和用户进行很好的沟通就着手编写程序,那么人家也不会满意;软件质量靠不住、软件开发出来是不可维护的,也可以说是不能够对其功能进行修改适应用户需求;软件开发供不应求都是软件危机的表现。
那么出现软件危机的原因是什么?在分析原因时我们就通常从内因外因来说,在前面我有讲到软件的特征,软件复杂度高,成本昂贵等都与软件危机的出现有关,外因则是由软件开发和维护的方法不正确有关。
下面我将引入一个问题,大家思考一下,假设你是软件公司的总工程师,当你告诉自己手下的工程师们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并且还举了一个例子:“如果一个故障是编码错误造成的,那么,一个人又怎么能再设计阶段就清除他呢?”你同意他的观点吗?
答:在软件开发的不同阶段进行修改需要付出的代价是很不一样的,在早期引入变动,涉及的面比较少,代价也比较低当进入开发中期,软件配置的许多东西都已经完成,引入一个变动要对所有已完成的配置成分都做相应地修改,不仅工作量大,而且逻辑上海很复杂,代价剧增啊,在软件已经完成时在引入变动,当然需要付出更大的代价。况且软件的开发是团体合作,并不是一个人,早发现早解决很重要!
那么如何消除软件危机呢?这也是我们这门课永恒的课题啊
首先呢我们要对计算机软件有一个正确的认识,软件并不等于程序,这是很多学生出的问题
必须充分认识到软件开发不是某种个体劳动的产物,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。也就是我们所说的团队合作
推广使用在实践中总结出来的开发软件的成功技术和方法
开发和使用更好的软件工具
那么软件危机我们就讲到这,下面开始介绍软件工程:
什么是工程?我们平时经常听到水利工程,建筑工程,工程就是对技术实体的分析、设计、建造、验证和管理。那么我们知道软件是一种逻辑产品,看不到摸不着而软件工程就是把软件当做一种工业产品,要求采用工程化的原理与方法对软件进行计划、开发和维护。是一种新兴工程。
如何定义它呢?软件工程就是为了经济地获得可靠地且能再实际机器上高效运行的软件,而建立和使用完善的工作原理;另一个更全面更具体的定义:软件工程是把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件。
下面就是本节课的重点,请大家认真听讲。软件工程的基本原理:
1、 用分阶段的生命周期计划严格管理
在软件开发和维护的漫长的生命周期中,需要完成各种任务。因而就应该吧软件生命周期划分为若干个阶段,并相应地制定出切实可行的计划,并严格计划开发,维护。
2、 坚持进行阶段评审
软件的质量保证工作不能等到编码阶段结束后再进行,那么在每个阶段都进行严格的评审可以更早的发现在开发过程中的错误,及时改正
3、 实行严格的产品控制
大家都知道软件开发成本很高,那就意味着不能随意更改需求。要必须按照严格的规程进行评审,获得批准以后才能实施修改。
4、 采用现代程序设计技术
采用先进的技术不仅可以提高软件开发和维护的效率,而且可以提高软件产品的质量。
5、 结果应能清楚的审查
软件是看不到摸不着的逻辑产品,应该根据软件开发项目的总目标及完成期限,规定产
品的标准,从而使得所得到的的结果更容易被审查
6、 开发小组的人员应该少而精
大家不是都在说人多力量大吗,何况软件开发是团队协作吗?在这里要注意到人员多交流情况讨论问题也会增加,耗时耗力。所以软件开发小组的组成人员应该要素质高,且不宜过高。
7、 承认不断改进软件工程实践的必要性
就是要积极主动的采纳新的软件技术,且要不断总结经验。大家可以想象一下,如果开发小组组长是一个固步自封的顽固派,那么后果将不堪设想
下面进行另一个知识点:软件生命周期
概括地说,软件生命周期由软件定义、软件开发和运行维护3个时期组成,但每个时期又进一步划分成若干个阶段;这里我帮大家总结了一下:
计划---需求分析---设计---编码---测试---运行、维护
在这里我解释一下,在开发软件时我们要制定计划,做需求分析了解用户想利用计算机软件帮他们解决什么问题然后进行设计它类似于工程师经常使用的工程蓝图,它包含了详细的设计每个模块,确定实现模块功能。接下来就是编码实现功能,而测试则是使软件达到预订的要求,在这里并不是结束我们还要对其进行运行维护持续满足用户的需求。
那现在我们来说一下具体的软件过程
软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。这就好比我们要建一栋房子,必须要有厨房,卧室吧,那么我们就需要有一个任务表,第一步干什么第二步干什么来完成。软件过程也是这样。那有的同学会问我们前面不是讲过软件周期吗,它不是也规定了先干什么后干什么吗,对,没错,它也是一种过程模型。但实际上要根据项目的特点来划分阶段,这也就引出了我们下面要研究的瀑布模型
大家可以比较一下它和生命周期模型的异同,在下节课我希望大家能够在课堂上举手发言。
归纳小结:这节课呢,我们主要讲了什么是软件,软件具有什么特性,有四点:逻辑实体、成本昂贵、技术落后于需求、复杂度高。在就是软件危机的相关概念以及为什么出现软件危机,以及解决软件危机的途径,也引入了软件的生命周期等知识点,望同学课下做好复习。
课后作业:素材32 1、3
百度搜索“爱华网”,专业资料,生活学习,尽在爱华网