软件工程进展的读后感

时间:2019-05-15 12:50:48下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《软件工程进展的读后感》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《软件工程进展的读后感》。

第一篇:软件工程进展的读后感

数据库新技术

学院名称:信息科学与工程学院

专业:

班级:

学号:

姓名:

软件工程信研1212106409沈田予

软件工程进展的读后感

软件工程是在遇到软件危机的时候提出来的,其定义是将系统化的、严格约束的、可量化的方法应用到软件的开发、运行和维护,即将工程化应用软件。软件工程研究目标是提高软件的质量和开发效率。目前比较受关注的5种相对并列的软件质量属性分别为:正确性、健壮性、安全性、高效性、易维护性。近年来,随着计算机网络逐步成为主要的软件运行环境,人们在质量的基础上更多的关注可信性。在开发效率这方面,开发人员的素质对项目的成败很重要,若要对实际的开发过程进行量化的话,则比较困难。不同于传统的一些工程项目,软件工程中的部署环节所占的比重较小。在拿到一个软件项目之后,需要对该项目进行总体分析后,选择合适的开发过程模型、开发方法、质量度量方法和具体的开发环境。主要的开发模型包括:瀑布模型、迭代模型、螺旋模型以及第四代模型等。开发方法有:结构化方法、面向数据结构方法、面向对象方法和构件化方法。构件是比对象更大的软件实体。软件度量的作用则是依靠对软件的分析,发现其中的缺陷,予以消除。一般有静态分析和动态分析,之间的区别为是否运行软件。软件工程的进步离不开计算机辅助工具和相应的环境。最近人们对基本的开发方法的关注度有所下降,更多的关注特定的软件开发方法。例如敏捷方法、模型驱动方法、面向服务的方法。敏捷方法顾名思义就是在几周或者几个月的时间内完成相对较小的功能。模型驱动则是在给定的平台上转换模型,尽可能的生成更多的代码。服务的方法强调的是软件实体的外在表现,现在这种方法还没完全成型。对应软件库的复用,需要的则是具体的API的使用规则。软件质量保障的主要方法包括静态缺陷查找、测试、修复、检测等。在动态测试方面,有两个较大影响力的基本动态符号执行的工具:针对基于.NET程序的通用测试工具Pex,以及针对二进制码形式的程序安全测试工具SAGE。20世纪90年代后,提出的一系列自动和半自动恢复软件特征和软件实现代码间的追踪关系的技术,降低了软件维护的负担,主要包含两种技术路线:①以可视化的方式展示实现代码中的多种依赖关系,让维护人员通过浏览这些依赖关系确定追踪关系。②通过实际执行和信息检索等技术获取软件特征和软件实现代码间的初步联系,进一步通过程序分析确定追踪关系。基于数据的软件工程旨在通过对过往软件开发过程各个阶段数据的分析和抽象,获得并积累软件开发知识和规律,为今后的软件开发提供及时有效的信息和辅助开发人员进行决策判断。大型软件公司在这方面有大量的私有数据,这些过往的数据对指导公司的决策具有重要意义,这也是产生基于数据软件工程的重要动力之一,另一方面,开源世界里存在大量的公共历史数据,也为基于数据的软件工程提供了数据基础,进一步的促进了基于数据的软件工程的发展。软件工程在中国的发展,比如南京大学徐家福在80年代到90年代的研究成果有:对需要分析的自动化支持、对系统分析与编程的自动化支持、对元层程序转换的自动化支持。1980年开始,中科院的唐稚松领导的团队提出的全球第一个可执行的时序逻辑语言XYZ/E,可以直接书写其中自动机的状态转换过程。还有北京大学的杨芙清等致力开发大规模的软件工程环境,为中国软件企业提供了系列“青鸟”方法与产品。近几年来,国内对缺陷检测的研究颇为热门,这类工作的目标是自动分析出软件中存在的缺陷,以提高软件质量、降低软件维护的成本。北京大学的梅宏等重点研究了基于缺陷模式的缺陷检测。缺陷模式指明了缺陷代码片段的特征,缺陷检测工具通过将受检程序和缺陷模式进行匹配来发现程序中的缺陷。他们研究了如何自动地获取这些缺陷模式,并进一步研究了如何对缺陷检测工具报告出来的缺陷列表进行排序,以提高程序员排查缺陷的效率。随着软件周期的推移,软件会在不同层次上进行演化,在软件演化过程中,程序会随着其所使用的框架而发生演化。这一方面,北京大学的梅宏等提出了通过分析软件演化历史以抽取当框架发生演化时程序自动调

整的规则。软件的在线演化要求软件在运行过程中进行演化,演化的动作不能影响软件的运行。南京大学的吕健等踢出了一个分布式算法,保证了分布式系统演化过程中版本的一致性。代码的合成也是研究的热门,代码的自动合成可以减少程序员编程的工作量。上海交大的赵建军等踢出了一个方法,这个方法可为使用API编程的程序员自动的推荐出API使用的参数。相比较以上的研究方法,在软件开发过程中,起主导作用的还是程序员。南京大学的荣国平等人在对软件教育的问题上进行了研究,提出两个学生为单位进行学习和完成作业时达到的学习效果要优于单个学生独自学习的效果。作为一门学科,软件工程至今仍然处于快速的成长时期,以下四方面是推动软件向前发展的主要力量:

1、更符合人类思维模式的软件模型。

2、支持高效高质量的软件开发。

3、支持高效能、高可靠、易管理的软件运行。

4、更全面、有指导意义的质量评价。软件到底还是人类智力的产物,不是一种客观存在,且至今软件形态仍处在不断演化的过程中,其上述的特点使得软件的研究面临着许多和传统学科不同的挑战,包括技术上的挑战、研究方法上的挑战和学科基础的挑战。互联网和通信设备的发展,淡化了地狱对软件开发的影响,使得全球化的软件开发成为了可能。全球化的软件开发,有效的利用了各地区的资源,将软件项目分解并把任务分配给各地区完成,进而提高了软件开发的效率,降低了软件项目的开发成本。但其存在的问题是存在着跨地域之间的协调障碍。具体表现在:有效沟通少、成员状态不透明、开发过程工具等不兼容。目前,全球化的软件开发日益成为软件领域关注的焦点之一。在网络的协同式开发方面,国内有学者踢出了“群体软件工程”的概念:云计算和网联网的发展衍生了超量的信息系统。群体软件工程的开发原则:使用者即设计者,使用者即开发者,使用者即维护者。自从云计算出现后,大量的软件将运行在集中的服务器上,这样就给软件工程带来了新的发展机遇。在云计算的模式下,可以获取到软件运行状况的信息,可以获取到用户的行为,获取开发人员的行为。随着运行平台和使用模式的发展,新形态的软件也在不断出现。对不同类型的软件,既要探求其共性的方法,又要分别研究各自特点,寻找到适合具体类型软件的方法,总的来说,目前软件工程领域的发展有限,需要进一步的去探索。

第二篇:软件工程读后感

读《软件工程》有感

软件工程学,是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科,它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。下面是软件工程的现状:

在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,提高人们的工作效率,同时提升了生活质量。

软件工程师是对应用软件创造软件的人们的统称,软件工程师按照所处的领域不同可以分为系统分析员,软件设计师,系统架构师,程序员,测试员等等。人们也常常用程序员来泛指各种软件工程师。

软件的开发到底是一门科学还是一门工程,这是一个被争论了很久的问题。实际上,软件开发兼有两者的特点。但是这并不意味着它们可以被互相混淆。

很多人认为软件工程基于计算机科学和信息科学就如传统意义上的工程学之于物理和化学一样。

在美国,大约40%的软件工程师具有计算机科学的学位。在世界其他地方,这个比例也差不多。他们并不一定会每天使用计算机科学方面的知识,但是他们每天都会使用软件工程方面的知识。

软件工程是在遇到软件危机的时候提出来的,其定义是将系统化的、严格约束的、可量化的方法应用到软件的开发、运行和维护,即将工程化应用软件。软件工程研究目标是提高软件的质量和开发效率。目前比较受关注的5种相对并列的软件质量属性分别为:正确性、健壮性、安全性、高效性、易维护性。近年来,随着计算机网络逐步成为主要的软件运行环境,人们在质量的基础上更多的关注可信性。在开发效率这方面,开发人员的素质对项目的成败很重要,若要对实际的开发过程进行量化的话,则比较困难。不同于传统的一些工程项目,软件工程中的部署环节所占的比重较小。在拿到一个软件项目之后,需要对该项目进行总体分析后,选择合适的开发过程模型、开发方法、质量度量方法和具体的开发环境。主要的开发模型包括:瀑布模型、迭代模型、螺旋模型以及第四代模型等。开发方法有:结构化方法、面向数据结构方法、面向对象方法和构件化方法。

作为一门学科,软件工程至今仍然处于快速的成长时期,以下四方面是推动软件向前发展的主要力量:

1、更符合人类思维模式的软件模型。

2、支持高效高质量的软件开发。

3、支持高效能、高可靠、易管理的软件运行。

4、更全面、有指导意义的质量评价。

软件到底还是人类智力的产物,不是一种客观存在,且至今软件形态仍处在不断演化的过程中,其上述的特点使得软件的研究面临着许多和传统学科不同的挑战,包括技术上的挑战、研究方法上的挑战和学科基础的挑战。互联网和通信设备的发展,淡化了地狱对软件开发的影响,使得全球化的软件开发成为了可能。全球化的软件开发,有效的利用了各地区的资源,将软件项目分解并把任务分配给各地区完成,进而提高了软件开发的效率,降低了软件项目的开发成本。但其存在的问题是存在着跨地域之间的协调障碍。具体表现在:有效沟通少、成员状态不透明、开发过程工具等不兼容。目前,全球化的软件开发日益成为软件领

域关注的焦点之一。在网络的协同式开发方面,国内有学者踢出了“群体软件工程”的概念:云计算和网联网的发展衍生了超量的信息系统。群体软件工程的开发原则:使用者即设计者,使用者即开发者,使用者即维护者。自从云计算出现后,大量的软件将运行在集中的服务器上,这样就给软件工程带来了新的发展机遇。在云计算的模式下,可以获取到软件运行状况的信息,可以获取到用户的行为,获取开发人员的行为。随着运行平台和使用模式的发展,新形态的软件也在不断出现。对不同类型的软件,既要探求其共性的方法,又要分别研究各自特点,寻找到适合具体类型软件的方法,总的来说,目前软件工程领域的发展有限,需要进一步的去探索。

第三篇:软件工程

2.2软件开发的基本策略

人们都有自己的世界观和方法论,能自然而然地运用于生活和工作中。同样,程序员脑子里的软件工程观念会无形地支配其怎么去做事情。软件工程三十年的发展,已经积累了相当多的方法,但这些方法不是严密的理论。实践人员不应该教条地套用方法,更重要的是学会“选择合适的方法”和“产生新方法”。有谋略才会有好的战术。几千年前,我们的祖先就在打闹之际写下了很多心得体会,被现代人很好地运用于工业和商业。本节讲述软件开发中的三种基本策略:“复用”、“分而治之”、“优化——折衷”。

2.2.1复用

复用就是指“利用现成的东西”,文人称之为“拿来主义”。被复用的对象可以是有形的物体,也可以是无形的成果。复用不是人类懒惰的表现而是智慧的表现。因为人类总是在继承了前人的成果,不断加以利用、改进或创新后才会进步。所以当我们欢度国庆时,要搞清楚祖国远不止50岁,我们今天享用到的财富还有上下五千年人民的贡献。进步只是应该的,不进步则就可耻了。

复用的内涵包括了提高质量与生产率两者。由经验可知,在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。一般地可以相信成熟的东西总是比较可靠的(即具有高质量),而大量成熟的工作可以通过复用来快速实现(即具有高生产率)。勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中,这样才能把工作做得又快又好。

把复用的思想用于软件开发,称为软件复用。据统计,世上已有1000亿多行程序,无数功能被重写了成千上万次,真是浪费哪。面向对象(Object Oriented)学者的口头禅就是“请不要再发明相同的车轮子了”。

将具有一定集成度并可以重复使用的软件组成单元称为软构件(Software Component)。软件复用可以表述为:构造新的软件系统可以不必每次从零做起,直接使用已有的软构件,即可组装(或加以合理修改)成新的系统。复用方法合理化并简化了软件开发过程,减少了总的开发工作量与维护代价,既降低了软件的成本又提高了生产率。另一方面,由于软构件是经过反复使用验证的,自身具有较高的质量。因此由软构件组成的新系统也具有较高的质量。利用软构件生产应用软件的过程如图1.5所示。

软件复用不仅要使自己拿来方便,还要让别人拿去方便,是“拿来拿去主义”。面向对象方法,Microsoft公司的COM规范 [Rogerson 1999],都能很好地用于实现大规模的软件复用。

2.2.2分而治之

分而治之是指把一个复杂的问题分解成若干个简单的问题,然后逐个解决。这种朴素的思想来源于人们生活与工作的经验,完全适合于技术领域。软件人员在执行分而治之的时候,应该着重考虑:复杂问题分解后,每个问题能否用程序实现?所有程序最终能否集成为一个软件系统并有效解决原始的复杂问题?

图1.6表示了软件领域的分而治之策略。诸如软件的体系结构设计、模块化设计都是分而治之的具体表现。软件的分而治之不可以“硬分硬治”。不像为了吃一个西瓜或是一只鸡,挥刀斩成n块,再把每块塞进嘴里粉碎搅拌,然后交由胃肠来消化吸收,象征复杂问题的西瓜或是鸡也就此消失了。

2.2.3优化——折衷

软件的优化是指优化软件的各个质量因素,如提高运行速度,提高对内存资源的利用率,使用户界面更加友好,使三维图形的真实感更强等等。想做好优化工作,首先要让开发人员都有正确的认识:优化工作不是可有可无的事情,而是必须要做的事情。当优化工作成为一种责任时,程序员才会不断改进软件中的算法,数据结构和程序组织,从而提高软件质量。

著名的3D游戏软件Quake,能够在PC机上实时地绘制高度真实感的复杂场景。Quake的开发者能把很多成熟的图形技术发挥到极致,例如把Bresenham画线、多边形裁剪、树遍历等算法的速度提高近一个数量级。我第一次看到Quake时不仅感到震动,而且深受打击。这个PC游戏软件的技术水平已经远胜于我所见识到的国内领先的图形学相关科研成果。这对我们日益盛行的点到完止的研发工作真是莫大的讽刺。所以当我们开发的软件表现出很多不可救药的病症时,不要怨机器差。真的是我们自己没有把工作做好,写不好字却嫌笔钝。

就假设我们经过思想教育后,精神抖擞,随时准备为优化工作干上六天七夜。但愿意做并不意味着就能把事情做好。优化工作的复杂之处是很多目标存在千丝万缕的关系,可谓数不清理还乱。当不能够使所有的目标都得到优化时,就需要“折衷”策略。

软件中的折衷策略是指通过协调各个质量因素,实现整体质量的最优。就象党支部副书记扮演和事佬的角色:“…为了使整个组织具有最好的战斗力,我们要重用几个人,照顾一些人,在万不得已的情况下委屈一批人”。

软件折衷的重要原则是不能使某一方损失关键的职能,更不可以象“舍鱼而取熊掌”那样抛弃一方。例如3D动画软件的瓶颈通常是速度,但如果为了提高速度而在程序中取消光照明计算,那么场景就会丧失真实感,3D动画也就不再有意义了(如果人类全是色盲,计算机图形学将变得异常简单)。

人都有惰性,如果允许滥用折衷的话,那么一当碰到困难,人们就会用拆东墙补西墙的方式去折衷,不再下苦功去做有意义的优化。所以我们有必要为折衷制定严正的立场:在保证其它因素不差的前提下,使某些因素变得更好。

下面让我们用“优化——折衷”的策略解决“鱼和熊掌不可得兼”的难题。

问题提出:假设鱼每千克10元,熊掌每千克一万元。有个倔脾气的人只有20元钱,非得要吃上一公斤美妙的“熊掌烧鱼”,怎么办?

解决方案:化9元9角9分钱买999克鱼肉,化10元钱买1克熊掌肉,可做一道“熊掌戏鱼”菜。剩下的那一分钱还可建立奖励基金。

2.3一些不正确的观念

本节例举并分析一些不正确的软件工程观念,可帮助初学者少犯相似的错误。

观念之一:我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们解决软件开发中遇到的任何问题。

客观情况:好的参考书无疑能指导我们的工作。充分利用书籍中的方法、技术和技巧,可以有效地解决软件开发中大量常见的问题。但实践者并不能因此依赖于书籍,这是因为:(1)现实的工作中,由于条件千差万别,即使是相当成熟的软件工程规范,常常也无法套用。(2)软件技术日新月异,没有哪一种软件标准能长盛不衰。祖传秘方在某些领域很吃香,而在软件领域则意味着落后。

观念之二:我们拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。

客观情况:良好的开发环境只是产出成果的必要条件,而不是充分条件。如果拥有好环境的是一群庸人,难保他们不干出南辕北辙的事情。

观念之三:如果我们落后于计划,可以增加更多的程序员来解决。

客观情况:软件开发不同于传统的农业生产,人多不见得力量大。如果给落后于计划的项目增添新手,可能会更加延误项目。因为:(1)新手会产生很多新的错误,使项目混乱。(2)老手向新手解释工作以及交流思想都要花费时间,使实际开发时间更少。所以科学的项目计划很重要,不在乎计划能提前多少,重在恰如其分。如果用“大跃进”的方式奔向共产主义,只会产生倒退的后果。

观念之四:既然需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活的,随时可以修改。

客观情况:对需求把握得越准确,软件的修修补补就越少。有些需求在一开始时很难确定,在开发过程中要不断地加以改正。软件修改越早代价越少,修改越晚代价越大,就跟治病一样道理。

2.4一些有争议的观念

本节探讨一些有争议的观念,目的不在于得出“正确”或“错误”的评断,而在于争议会激发更多理性的思考。

争议之一:如果软件运行较慢,是换一台更快的计算机,还是设计一种更快的算法?

作者观点:如果开发软件的目的是为了学习或是研究,那么应该设计一种更快的算法。如果该软件已经用于商业,则需谨慎考虑:若换一台更快的计算机能解决问题,则是最快的解决方案。改进算法虽然可以从根本上提高软件的运行速度,但可能引入错误以及延误进程。技术狂毫无疑问会选择后者,因为他们觉得放弃任何可以优化的机会就等于犯罪。

类似的争议还有:是买现成的程序,还是彻底自己开发?技术人员和商业人士常常会有不同的选择。

争议之二:有最好的软件工程方法,最好的编程语言吗?

作者观点:在软件领域永远没有最好的,只有更好的。能解决问题的都是好方法或是好语言。程序员在最初学习Basic、Fortran、Pascal、C、C++等语言时会感觉一个比一个好,不免有喜新厌旧之举。而如今 的Visual Basic、Delphi、Visual C++、Java等语言各有所长,真的难分优劣。开发人员应该根据客观条件,选择自己熟悉的方法和语言,才能保证合格的质量与生产率。

程序设计是自由与快乐的事情,不要发誓忠于某某主义而自寻烦恼。

争议之三:编程时是否应该多使用技巧?

作者观点:就软件开发而言,技巧的优点在于能另辟蹊径地解决一些问题,缺点是技巧并不为人熟知。若在程序中用太多的技巧,可能会留下隐患,别人也难以理解程序。鉴于一个局部的优点对整个系统而言是微不足道的,而一个错误则可能是致命的。作者建议用自然的方式编程,少用技巧。

《狼三则》的故事告诉我们“失败的技巧通常是技俩”。当我们在编程时无法判断是用了技巧还是用了技俩,那就少用。《卖油翁》的故事又告诉我们“熟能生巧”,表明技巧是自然而然产生的,而不是卖弄出来的。卖油翁的绝技是可到中央电视台表演的,而他老人家却谦虚地说:“没啥没啥,用熟了而已”。

争议之四:软件中的错误是否可按严重程度分等级?

作者观点:在定量分析时,可以将错误分等级,以便于管理。微软的一些开发小组将错误分成四个等级 [Cusumano 1996],如表1.1所示。

一级严重:错误导致软件崩溃。

二级严重:错误导致一个特性不能运行并且没有替代方案。

三级严重:错误导致一个特性不能运行但有替代方案。

四级严重:错误是表面化的或是微小的。

表1.1 错误的四个等级

上述分类是非常技术性的,并不是普适的。假设某个财务软件有两个错误:错误A使该软件死掉,错误B导致工资计算错误。按表1.1分类,错误A属一级严重,错误B属二级严重。但事实上B要比A严重。工资算多了或者算少了,将会使老板或员工遭受经济损失。而错误A只使操作员感到厌烦,并没有造成经济损失。另一个示例是操作手册写错,按表1.1分类则属四级严重,但这种错误可能导致机毁人亡。

开发人员应该意识到:所有的错误都是严重的,不存在微不足道的错误。这样才能少犯错误。

2.5小 结

软件工程学科发展到今天,已经有了很多方法和规范,学之不尽。本章只在宏观上讨论了软件工程的一些

思想,更具体的内容将在后面的章节论述。无论是什么好方法,贵在理解与灵活运用,而不可当成灵丹妙药,不象“吃了脑黄金或脑白金,就能使一亿人先聪明起来”。

3程序员与程序经理

工作在第一线的软件开发人员是程序员和程序经理,他们决定着软件的命运。良好的程序员队伍和出色的管理是软件项目成功的必要条件。管理不是管制,不是去卡住人家的脖子,因为程序员不是一群野鸭子。管理的目的是让大家一起把工作做好,并且让各人获得各自的快乐和满足。当一个组织被出色地领导时,雇员甚至不知道他们已被领导。在项目完成时,他们会自豪地说:“看看我们通过努力取得的成绩吧”。所以管理者不能老惦记着自己是一个官,而应时刻意识到自己是责任的主要承担者。

我们经常会听到有经理头衔的人在高谈阔论:“编程我不会,做个项目还不easy?派个人去搞系统分析,回头再叫几个程序员把需求译成程序,不就OK了吗?”

不懂英语的人准以为easy和OK是贬义词。要让软件项目失败很容易,只要符合下列条件之一即可:

(1)项目经理对软件一无所知;

(2)技术负责人对编程不感兴趣;

(3)真真编写代码的程序员是临时雇用的。

如果上述三个条件同时具备,就请放心失败好了。

让我们少幻想自己是比尔·盖茨,先当好程序员和程序经理再说。

3.1了解程序员

早期的程序员干活能从软件直通硬件,个个生猛无比。又因他们的作息时间、言行举止与常人不太一样,久而久之就给人们留下了“神秘”、“孤僻”的印象。如今软件行业被炒得热火朝天,有能耐的程序员即便躲在大山岙的军工厂里也能被挖出来。而更多原本不是程序员的人操起几本“速成”、“二十一天通”等书籍也加入了这个行业。现在国内号称有上百万程序员,这支大军鱼龙混杂,已搞不清那些是正规军,那些是民兵游击队了。

第四篇:《软件工程》

《软件工程》课程分析

本课程是软件技术专业学生必修的一门专业必修课。根据培养软件开发人员的需要,本课程的任务是使学生通过本课程的学习,了解软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法。能在软件工程的理论指导下,开发一个小型管理系统,为今后从事软件工程实践打下良好的基础。

一、课程分析

(一)教学计划的制定和教学内容的选取

根据培养应用技能型人才的总目标,制订本专业教学计划,课程的教材配套,教学、实验、实训、课程设计大纲和指导书等教学文件齐全,近几年来引入了现代教学技术手段,已初步建设、形成了具有特色的全套课堂教学和实验教学课件。

根据该课程的基本教学要求和特点,结合学时的安排,从教材的整体内容出发,有侧重地进行取舍,筛选出学生必须掌握的基本教学内容,较好地解决了教学中质量与数量的矛盾。

(二)教学方法分析

由于该课程是用于指导软件开发的,和实践联系非常紧密。所以采用了理论联系实际的方法进行授课。一方面,让学生模拟软件公司的项目小组进行软件开发;一方面,对学生进行适时的理论指导。既调动了学生的积极性,又让学生了解了该课程的理论内容,收到了一举两得的效果。具体教学过程如下:

第一步:模拟软件公司的开发项目小组,分组,分设角色(项目经理、用户、需求人员、设计人员、程序员、测试人员、软件安装培训维护人员),确定开发题。让每个小组的学生聚在一起,在项目经理的组织下通过调研、讨论来制定自己小组的开发题目,大家感觉就象在软件公司实习一样,非常新鲜,感兴趣。每个学生都积极主动的去完成自己应承担的那部分工作。

第二步:模拟软件项目开发全过程的各个阶段,进行相关的理论授课和实际开发。即对软件开发的每一阶段,首先按照教材内容进行理论授课,然后让学生参照授课内容进行实际的软件开发实践。

在此阶段结束后,每班召开一个模拟方案论证会,由各开发小组选出代表上台讲解本组的开发方案,其他同学模拟用户对开发方案提出意见。由于大家对模拟方案论证会非常感兴趣,发言积极踊跃,论证会结束后,每个小组的设计方案都得到了很好的补充和完善。

第三步:学期末各小组提交各自完成的软件系统及开发文档,并进行总结演示,由任课教师进行讲评。

抽象理论课的教学应理论联系实际,让学生在实际应用中掌握抽象的理论,在兴趣中学习,达到我们高职的双向型培养目标。

二、存在的问题与希望

在上述的教学中,虽然实现了理论联系实际,但也存在着一些问题,比如每个项目小组中总有个别同学存在依赖心理,不参与项目开发,最后抄袭别的同学的项目成果,自己得不到实际的锻炼,影响了大三的毕业设计和日后的软件开发。另外,如果该课程只上课,没有实训的话,实验课时太少,学生很难全面完成一个系统的开发。

第五篇:软件工程

1.软件工程:是指导计算机软件开发和维护的工程学科

2.软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题

3.软件过程:是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤

4.软件生命周期:是指从软件定义、开发、使用、信息”。此外,系统还应该具有“定时取样生理信号”、“更新日志”和“产生病情报告”的功能。为了分析病人生理信号是否超出了医生规定的安全范围,应该存储“患者安全范围”信息。此外,定时记录病人生理信号所形成的“患者日志”,显然也是一个数据存 储。

23.软件危机有那些典型表现?

(1)央一个索引号)。

针对若干个不同的NAME重复执行上述命令序列。

⑫测试系统非正常操作的测试数据 ①用过长的关键字作为命令b的参数:例如,b(reliability software and hardware combined)

预期的输出:系统截短过长的关键字,例如,上列命令中的关键字可能性被截预期的输出:X=1,Y=20,Z=3 ④ 3个判定表达式依次为假、真、真 输入:A=1,B=40,C=60 预期的输出:X=1,Y=20,Z=30 ⑤ 3个判定表达式依次为真、假、假 输入:A=20,B=1,C=1 预期的输出:X=10,Y=2,Z=3 ⑥ 3个判定表达式依次为真、假、真 输入:A=20,B=1,C=60 对软件开发成本和进度的估计常常很不准确。维护到淘汰的全过程

5.软件工程环境:方法与工具的结合,加上配套的软、硬件支持称为软件工程环境

6.模块:是数据说明、可执行语句等程序对象的集合7.模块化:是按规定的原则将一个大型软件分为一个个较小的、相对独立但又相关的模块

8.耦合:是对一个软件结构内不同模块之间互连程度的度量

9.内聚:标志着一个模块内各个元素彼此结合的紧密程度

10.结构程序设计:如果一个程序的代码块只有一个入口和一个出口,则称这个程序是结构化的11.实现:通常指编码和测试

12.软件可靠性:是指程序在给定的时间间隔内,按照规格说明书的规定成功地运行地概率

13.集成测试:是测试和组装软件的系统化技术 14.软件维护:是指软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程

15.对象:在应用领域中有意义的、与所解决的问题有关系的任何事物

16.对象模型:表示静态的、结构化的系统的“数据”性质

17.功能模型:表示变化的系统的“功能”性质 18.面向对象分析:就是抽取和整理用户需求并建立问题域精确模型的过程

19.重用:是指同一事物不作修改或者稍加改动就多次重复使用

20.可行性分析包括:技术可行性、经济可行性、操作可行性

21.北京某高校可用的电话号码有以下几类:校内电话号码由 4 位数字组成„„定义上述电话号码

电话号码=[校内电话号码|校外电话号码]

校内电话号码=非零数字+ 3 位数字 //后面继续定义 校外电话号码=[本市号码|外地号码] 本市号码=数字零+8 位数字

外地号码=数字零+3 位数字+8 位数字 非零数字=[1|2|3|4|5|6|7|8|9] 数字零=0位数字=3{数字}3//3 至 3 个数字 8 位数字=非零数字+7 位数字 7 位数字=7{数字}7 数字=[0|1|2|3|4|5|6|7|8|9]

22.目前住院的病人主要由护士护理,这样做不仅需要大量护士„„写出问题定义,分析可行性 从问题陈述可知,本系统数据源点是“病人”和“护士”,他们分别提供生理信号和要求病情报告的信息。进一步分析问题陈述,从系统应该“定时记录病人情况以形成患者日志”这项要求可以想到,还应该有一个提供日期和时间信息的“时钟”作为数据源点。从问题陈述容易看出,本系统的数据终点是接收警告信息和病情报告的护士。系统对病人生理信号的处理功能主要是“接收信号”、“分析信号”和“产生警告

(2)用户对“已完成的”软件系统不满意的现象经常

发生。

(3)软件产品的质量往往靠不住。(4)软件常常是不可维护的。(5)软件通常没有适当的文档资料。(6)软件成本在计算机系统总成本中所占的比例

逐年上升。(7)软件开发生产率提高的速度,远远跟不上计算

机应用迅速普及深入的趋势

25.银行计算机存储系统的工作过程大致如下:„„请用数据流图描绘本系统的功能,并用实体—联系图描绘系统中的数据对象 26.复印机的工作过程大致如下:未接到复印命令时处于闲置状态„„请用状态转换图描绘复印机的行为

27.用面向数据流的方法设计下列系统的软件结构

(1)机票预定系统(2)患者监护系统 28.耦合包括数据耦合、控制耦合、公共环境耦合、内容耦合29.内聚包括功能内聚、顺序内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚

30.美国某大学有200名教师,校方与教师工会刚刚签订一项协议。按照协议„„

31.画出下列伪代码的流程图,计算它的环形复杂度

32.某图书馆有一个使用CET

终端的信息检索系统,该系统有下列4个基本检索命令:

(1)设计测试数据以全面系统的正常操作

(2)设计测试数据以测试系统的非正常操作

解:⑪测试系统正常操作的测试数据 ①顺序执行下列3个命令:b(KEYWORD)s(L)d(N)

其中KEYWORD是正确的关键字;L是执行命令b后在屏幕上显示的约20个行号中的一个(至少应该使L分别为第一个、最后一个和中央一个行号);N是执行命令s后列出的索引号中的一个(至少应该使N分别为第一个、最后一个和中央一个索引号)。

针对若干个不同的KEYWORD重复执行上述命令序列。

②顺序执行下列2个命令:f(NAME)d(N)

其中,NAME是已知的作者姓名;N是执行命令f后列出的索引号中的一个(至少应该使N分别为第一个、最后一个和中

短为reliability software

②用不正确的关键字作为命令b的参数:例如,b(AARDVARK)

预期的输出:显示出最接近的匹配结果,例如,执行上列命令后可能显示 1.AARON,JULES(book)③用比执行命令b后列出的最大行号大1的数作为命令s的参数

预期的输出:“命令s的参数不在行号列表中”

④用数字和标点符号作为命令b和命令f的参数

预期的输出:“参数类型错”

⑤用字母字符作为命令s和命令d的参数 预期的输出:“参数类型错”

⑥用0和负数作为命令s和命令d的参数 预期的输出:“参数数值错” ⑦命令顺序错:例如,没执行命令b就执行命令s,或没执行命令s就执行命令d 预期的输出:“命令顺序错”

⑧命令语法错:例如,遗漏命令名b、s、d或f;或命令参数没用圆括号括起来 预期的输出:“命令语法错” ⑨命令参数空:例如,b()、s()、d或f()

预期的输出:系统提供默认参数或给出出错信息

⑩使用拼错了的作者姓名作为f的参数 预期的输出:“找不到这们作者的著作”

33.(2)答:经验表明,在类似的程序中,单位长度

里的错误数ET/IT近似为常数。美国的一些统计数字告诉我们,通常

0.5X10-2≤ ET/IT ≤2X10-2

也就是说,在测试之前每1000条指令中大约有5~20个错误。

假设在该程序的每1000条指令中有10个错误,则估计在对它进行测试期间将发现的错误数为

5000X10/1000=50(个)(3)① 使3个判定表达式之值全为假 输入:A=1,B=1,C=1 预期的输出:X=1,Y=2,Z=3 ② 使3个判定表达式之值全为真 输入:A=20,B=40,C=60 预期的输出:X=10,Y=20,Z=30 ① 3个判定表达式之值全为假 输入:A=1,B=1,C=1 预期的输出:X=1,Y=2,Z=3 ② 3个判定表达式依次为假、假、真 输入:A=1,B=1,C=60 预期的输出:X=1,Y=2,Z=30 ③ 3个判定表达式依次为假、真、假 输入:A=1,B=40,C=1

预期的输出:X=10,Y=2,Z=30 ⑦ 3个判定表达式依次为真、真、假 输入:A=20,B=40,C=1 预期的输出:X=10,Y=20,Z=3 ⑧ 3个判定表达式全为真 输入:A=20,B=40,C=60 预期的输出:X=10,Y=20,Z=30 34.软件的可维护性与哪些因素有关:软件的可理解性、可测试性、可修改性、文档描述符合要求、用户文档简洁明确、系统文档完整并且标准

35.面向对象方法是一种运用对象、类、继承、封装、聚合、消息、多态等概念来构造系统的软件开发方法。

面向对象方法的优点是:符合人们习惯的思维方式、稳定性好、可重用性好、可维护性好、容易开发大型的软件产品

下载软件工程进展的读后感word格式文档
下载软件工程进展的读后感.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    软件工程

    填好发给我!!!!一、填空题: 1.面向对象分析的目的是对客观世界的系统进行 __________________,对象就是客观世界的; 2.软件工程方法学包括:工程环境建立、方法、工具和过程; 3.思想概括......

    软件工程

    软件工程—心得体会 摘要 本文结合基层实践教学的实际情况和现实需要,系统地总结了《软件工程》实践教学的特征,详细分析了实践教学过程存在的问题,并提出了该课程实践教学改革......

    软件工程

    软件工程 1. 谈谈你对软件工具的理解,你用过什么软件工具 软件工具是指为支持计算机软件的开发、维护、模拟、移植或管理而研制的程序系统。它是为专门目的而开发的,在软件工......

    软件工程

    一、名词解释 软件: 指计算机系统中的程序及其文档。 支持软件:支持软件的开发和维护的软件。 系统软件:属于计算机系统中最靠近硬件的一层,其它软件一般都通过系统软件发挥作......

    软件工程

    1.软件危机的概念 系统的数据要求,功能需求,性能需求,显示出程序的轮廓。 软件危机是指在计算机软件开发、使用与可靠性需求,可用性需求,出错处理需求,混合方式 维护过程中遇到的......

    软件工程小结

    今天视频看完了,可是没有总结。还是感觉不会总结。一想到50讲的课,怎么总结呢?开始听的时候,是真不知道从哪里下手,因为开始看的时候有种迷迷糊糊的感觉。软件工程,我期待的一门课......

    软件工程名词解释

    Adaptive maintenance适应性维护:为使软件产品在新的环境下仍能使用而进行的维护,称为适应性维护。 Data flow diagram数据流图:描述系统中数据流程的图形工具,它标识了一个系......

    软件工程知识点

    第一章软件工程概述 一、软件的定义和特性(P2—P3) 定义:软件=程序+数据+文档 程序:按照事先设计的功能和性能要求执行的指令或语句序列 数据:程序能正常操纵信息的数据结构 文......