软件工程课程教学大纲

2024-05-14

软件工程课程教学大纲(精选6篇)

篇1:软件工程课程教学大纲

《软件工程课程设计》教学大纲

英文名称: Software Engineering Course Design

学分:3 适用专业:

参考学时:

3周

实验学时: 3周 070472 课程编码:

上机学时:

计算机科学与技术(专升本)

大纲执笔人:

一、课程目标

系(教研室)主任: 李震

《软件工程课程设计》是实践性教学环节之一,是《软件工程》课程的辅助教学课程。通过课程设计,使学生掌握软件工程的基本概念,结合实际的操作和设计,巩固课堂教学内容,使学生掌握软件开发的基本过程,将理论与实际相结合,应用现有的CASE工具和软件开发文档规范,完成一个基于数据库的应用系统(DBAS)的设计与实现,把理论课与实验课所学内容进行综合,并在此基础上强化学生的实践意识、提高学生的综合运用能力和创新能力。

通过本课程学习,使学生掌握软件开发的基本概念、软件开发技术和流程;独立完成所有程序、文档的编写和调试工作;开发一套基于C/S或B/S结构的基于数据库的应用系统。形成数据库设计开发的基本能力;提高综合运用理论知识解决实际问题的能力。

二、基本要求

1、课程设计要求学生按项目分组进行,每个项目组由10人左右组成,可根据分组情况分别担任项目经理、技术经理、软件工程师、测试工程师、配置管理员、数据库管理员等角色。

2、在规定的时间内完成1个小型项目的计划、需求分析、设计、编码、测试和交付的全过程,要求按照软件企业的正规开发流程组织实施,并按照给定的文档规范标准撰写相关文档。

3、每组完成一个项目,题目可为学生信息管理系统、图书管理系统、在线考试系统、网上购物系统、超市管理系统等,也可自拟题目,但要经教师审核。

4、项目实训集中在机房进行,每天考勤,学生每天填写工作日志,每周进行周总结。

三、教学内容与学时分配建议

1、实训内容

(1)选题并制定项目开发计划

1天 由学生自愿或推荐选出项目经理,并成立项目小组,项目经理召集小组成员根据教师提供的题目进行选题,也可自由命题但要经教师审核通过。

针对所选项目讨论开发计划,明确项目的大小、范围、复杂度等,进行任务分解与任务分配,确定任务进度,确定完成项目的环境和工具,由项目经理完成《项目开发计划》。

(2)需求分析

2天

对系统的功能及性能需求进行分析,在项目组内答辩评审后,由任务承担人完成《需求规格说明书》。

(例如采用面型对象的方法进行需求分析,用Rational Rose工具进行UML建模。测试负责人组织书写测试用例。)

(4)概要设计

1天

在项目小组成员的配合下,任务承担人完成项目的初步设计任务,进行答辩评审后完成《概要设计说明书》。

(5)详细设计

3天

项目小组确定系统总体设计方案,建立软件系统的体系结构,并进行总体设计的答辩式评审,然后项目小组成员分工进行详细设计和界面设计,期间应建立数据库、表等,任务承担人完成《详细设计说明书》。

(6)编码及测试

7天

根据前期分析和设计工作进行代码的编写工作,要求给出详细的注释,包括:模块名,模块功能,中间过程的功能,变量说明等。

所有测试过程都要求采用综合测试策略;先作静态分析,再作动态测试。应事先制订《测试计划》,并要求保留所有测试用例,完成《测试分析报告》。

(7)项目交付、总结

1天

在全班范围内教师组织项目评审,项目经理完成项目开发总结报告。

2、提交内容

项目组按照软件工程文档模板要求提交以下文档的打印稿和电子稿:项目开发计划、需求规格说明书、概要设计说明书、详细设计说明书、编码清单(部分或全部)、测试计划、测试分析报告(部分任务)、项目开发中介报告。文档中必须注明完成者(签名)和完成日期。

每位同学要提交工作日志和周总结,需要项目经理签字。

项目经理提供本项目组的任务分工,及本项目组的成员工作评定,小组成员签字。

3、成绩评定 本次实训必须提交正式的针对特定项目的完整的设计文档和报告书。软件综合实训的成绩评定实行优秀、良好、中等、及格和不及格五个等级。优秀者人数一般不得超过总人数的20%。

四、教材及主要参考资料

[1] 史济民,顾春华,郑红.软件工程-原理、方法与应用[M].北京:高等教育出版社,2009.3.[2] 萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社,2000.2.[3] 肖瑞奇.Dreamweaver CS5制作网页[M].北京:人民邮电出版社,2010.7.[3] 吴晨,张亮,张静.ASP.NET+SQL server 数据库开发与实例[M].北京:清华大学出版社,2006.8.请根据项目情况,修改和补充其它参考资料。

篇2:软件工程课程教学大纲

《软件工程课程设计》教学大纲

英文名称

课程代码:

学分:1 分

执笔人:金霜 审定人:

一、前言

《软件工程课程设计》是一个综合的设计性实验,是在学习完核心课程《软件工程》后,对《软件工程》所学内容的一次综合运用;旨在使学生进一步掌握软件工程的方法和技术,树立团队合作精神,培养学生的自主学习能力和创造性的工程设计能力,提高综合分析和解决问题的能力。

二、教学大纲

1、目的要求

《软件工程》是一门理论性和实践性非常强的课程,学生仅仅通过课堂获取知识是远远不够的,必须加强实践教学,利用具有实际工程背景的软件设计题目,和软件工程设计工具(rose、viso),培养学生对软件系统的需求分析、系统分析、软件测试能力。初步掌握系统分析、系统设计、系统测试的方法,让学生掌握软件工程设计工具(rose、viso)使用方法。

2、主要内容

(1)项目可行研究

☆ 成立项目小组,六人一组,其中4名开发人员,2名测试人员,并选定项目组长一名。

☆ 项目组长召集小组成员选择设计项目

项目可由老师指定,也可以学生自选后报老师审核。

☆ 项目组长召集成员进行项目可行性研究,确定项目的大小、范围和复杂程度等。☆ 确定任务进度、分工和完成项目设计的工具。

☆ 按照《软件工程课程设计报告》的格式要求,完成报告中的《项目可行性研究》部分。(2)需求分析

☆ 根据项目的大小、范围和复杂程度等情况,由全体组员共同完成项目的需求分析,包括项目功能、项目运行环境、项目开发环境、项目角色等。

☆ 使用软件工程设计工具绘制项目总功能图、总用例图,并进行文字阐述。☆ 按照《软件工程课程设计报告》的格式要求,完成报告中的《需求分析》部分。(3)系统概要设计

☆ 项目组长根据需求分析,进行任务分工,由开发人员进行系统概要设计

☆ 开发人员根据自己所分的模块任务,对模块的功能和参与者进行详细阐述,使用软件工程设计工具,绘制模块用例图

☆ 按照《软件工程课程设计报告》的格式要求,完成报告中的《系统概要设计》部分。

(4)系统详细设计

☆ 开发人员根据自己所分的模块的概要设计,进行详细设计

☆ 开发人员对自己所分模块的实现流程进行阐述,并使用软件工程设计工具,绘制类图、活动图(或者是状态图,二选一)。

☆ 组长绘制项目的ER图。

☆ 按照《软件工程课程设计报告》的格式要求,完成报告中的《系统详细设计》部分。

(5)系统测试计划

☆ 根据系统需求分析,由测试人员共同完成测试计划编写。

☆ 按照《软件工程课程设计报告》的格式要求,完成报告中的《测试计划》部分。(6)系统功能测试用例设计

☆ 组长根据测试需求分析,对测试人员进行任务分工。☆ 测试人员根据任务分工,绘制自己所分模块的实现顺序图。☆ 测试人员根据自己所绘制的顺序图,进行系统功能测试用例设计

☆ 按照《软件工程课程设计报告》的格式要求,完成报告中的《系统功能测试用例设计》部分。

(7)答辩(根据进度可选)

☆ 将各部分文档进行整合,完成《软件工程课程设计报告》

☆ 制作PPT,答辩时间5分钟,提问3~5分钟。(8)课时安排参考 ☆ 项目可行研究、需求分析4学时

☆ 系统概要设计、系统详细设计(系统测试需求分析、系统功能测试用例设计)8学时 ☆ 答辩4学时

三、成绩考核与评定

成绩考核由以下几部分组成:

(1)平时考勤占10%。

(2)设计表现占20%。组员的设计表现成绩由组长提供;组长的设计表现成绩由老师根据小组整体完成情况给于。

(3)答辩表现占20%,若没有答辩环节,以考勤分代替。(4)文档完成情况占50%。

成绩评定实行优、良、中、及格、不及格五个等级。

四、重点说明执行本大纲应注意的问题

1、严格审核学生所选项目,提倡项目的新颖性和实用性。

2、严格审核学生的需求分析和任务分工,确保每个学生有足够的工作量。

3、严格考勤,迟到15分钟之内算迟到,迟到2次算旷课1次;迟到15分钟以上算旷课。旷课2次,成绩即为不及格

4、允许学生上网查资料,但严格控制学生不得上网进行玩游戏、看电影等与课程设计无关的活动。

5、答辩主要围绕项目设计的合理性和可实现性提3-5个问题,根据学生回答情况,确定答辩分数。

6、审核文档,允许学生有所借鉴,但不得完全抄袭,一旦发现,以0分计。

附:教学参考书目(添加教材信息)

1、《软件工程》(第4版)人民邮电出版社

张海藩

2、《软件工程概论》 清华大学出版社

郑人杰、殷人昆

3、《软件工程课程设计大纲》由老师提供

4、《软件工程课程设计报告》由老师提供

5、《UML系统建模与分析设计课程设计》 机械工业出版社 刁成嘉、刁奕

篇3:软件工程课程教学改革研究

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、设计模式以及管理、标准、个人技能、团队协作和专业实践等多方面的知识和技能。它是一门理论性和实践性并重的重要学科。

软件工程课程是计算机专业重要的专业基础课。通过软件工程课程的学习, 学生能够了解和掌握软件工程的理论、技术和方法, 具备作为软件工程师所需的专业能力。由于软件工程的课程特点, 传统的教师课堂授课为主、学生被动听讲为辅的教学模式在实践环节上存在很大不足, 软件工程的理论和方法是从众多软件开发实践中总结出来的。但是对于缺乏软件开发实际经验的本科生来说, 单纯地讲授理论知识往往使学生感到枯燥无味且难以理解, 这严重影响了课程的教育质量和教学效果。近年来, 部分学校采用了案例化教学的方式改革软件工程课程教学, 在案例化教学中收集和总结了若干典型的软件开发案例, 将这些案例贯穿于理论知识的讲解中;同时引入“做中学”教学模式, 让学生在实际的项目开发中进一步理解理论知识, 取得了很好的教学效果。[1,2,3,4]

我们在软件工程的授课过程中, 也引入了案例化教学模式。总体来讲, 学生的反应是积极的, 不过也发现了一些问题。

(1) 任课教师本身缺乏使用软件工程方法开发一个完整系统的经验, 仅限于照本宣科地介绍基本原理和实际案例, 不能将当前实际案例和软件工程方法有机地结合在一起, 与实际的软件工程实践有明显的差距。

(2) 大学阶段的课程实践基本以个人编程完成为主, 软件工程方法起到的作用有限。即使面对需要团队协作的作业, 也因为规模小、从头开发和无需维护的特点, 使得学生感觉到使用软件工程方法作用不大, 除了增加工作量外, 没有明显的益处, 无法激发他们进一步学习的兴趣。

(3) 现有的软件实验环境偏重于提供编程工具的支持, 缺少一个完整的软件工程支持环境, 缺少适合教学使用的实验环境和资料, 学生得不到真正的锻炼。

2 教学改革

针对现存的问题, 结合ACM和IEEE联合发布的CCSE2005的相关内容[5], 我们进一步改革课程体系框架和教学内容, 本文将着重介绍我们在软件工程课程教学中的经验和成果。

IEEE发布的软件工程知识体系包括10个知识领域:软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件工程工具和方法、软件工程过程和软件质量。参考这10个领域知识, 根据教学目标, 结合理论知识、软件工具和工程实践等方面组织整个课程内容, 在理论、应用、实践三个层次上建立了软件工程的课程体系。

理论部分以当前流行的统一开发过程RUP和UML语言为核心, 覆盖IEEE发布的软件工程知识体系。包括软件需求、软件设计、软件实现、软件测试、软件演化、软件质量和软件配置管理等内容。

应用部分结合实际案例, 覆盖IEEE的系列软 件工程标 准, 学习RationalRose、ClearCase、ClearQuest、JUnit、MicrosoftProject等常见软件工程工具和环境。

实践部分要求学生以团队的方式协作开发具有一定规模的软件系统, 并且在实践过程中能够熟练使用软件工程工具。实践部分着重培养学生应用软件工程的思想和现代技术解决软件开发问题的能力。

2.1 理论知识

理论部分的教学仍采用教师授课为主的模式, 向学生讲述软件工程的基本理论, 内容力求少而精, 目的是在较短时间内让学生了解现阶段最广泛使用的软件工程技术的理论基础, 为下一步应用部分的学习奠定基础。在具体的授课过程中, 为避免单纯理论学习的枯燥性, 授课内容围绕典型的软件开发案例展开。学生学习的注意力和兴趣是影响教学质量的重要因素。我们使用的案例是从国内著名的软件开发公司得到的真实案例, 学生可以完整地看到项目的全景, 这样既帮助学生认识到学习课程的必要性, 又调动起学生的学习兴趣。

2.2 应用技术

软件工程与其他计算机课程不同, 学生需要面对的不只是单一的软件工具, 而是一组软件工具组成的软件支持环境。为了增强软件工程课的真实性, 我们选用了一组业内流行的软件工程工具, 营造一个适合软件工程课程项目实践的软件工程环境。使用RationalRose完成需求分析与系统分析和设计, 使用ClearCase完成源代码管理, 使用ClearQuest完成缺陷管理, 使用MicrosoftProject完成项目资源调度等。考虑到相关软件工具的复杂性, 为避免学生陷入单纯学习软件功能的误区, 我们坚持“用中学”的方针, 不要求学生面面俱到掌握软件功能, 而是从实用角度出发, 以完成项目为目的, 掌握软件的常用功能。我们会首先演示如何使用相关软件完成典型案例, 然后要求学生模仿示例, 自行创作设计。

2.3 项目实践

大学阶段, 大部分计算机课程实践通过学生的独立编程即可完成, 软件工程课程实践则不同, 软件工程方法和技术的作用必须在完成项目的过程中通过团队合作才能体现出来。

我们刚刚开始教这门课的时候, 为了便于管理, 选择的项目偏小, 一般适合3~5人完成。不过通过几学期的实践, 发现效果不佳。因为规模不大, 通常只会有1~2人来承担主要开发工作, 其他学生通常只起到辅助作用。在开发过程中, 由于核心开发人员少, 口头沟通远要比书面沟通简单有效, 没有认真准备项目文档的动力;而且项目是从头做起, 不需要利用以前文档来了解项目情况, 无法体会到项目文档的重要性。在此种情形下, 学生感觉到引入软件工程只是额外增加了工作负担, 并没有明显的益处。

为了更好地帮助学生认识到这门课的重要性, 我们在实践阶段做了若干改进。

(1) 有意识地扩大了项目的规模, 开发团队的人数也相应增加, 通常开发团队人数在10人左右。人数的增多使得单纯的口头交流很难保证项目的顺利进行, 从而促使学生撰写项目文档。

(2) 分组时, 根据学生的能力和水平, 明确学习任务, 进行合理有效的分工。在一个项目组内, 应该有项目经理、系统分析师、软件工程师、配置管理员、测试工程师等角色。同一名学生在不同的开发阶段可能会承担不同的角色。

(3) 项目开发也分为两个阶段, 第一阶段完成后, 我们会再提出一份更新的需求, 要求在第一阶段的成果上继续开发。项目组的成员也不是一成不变的, 第二阶段时每个项目组至少更换50% 的成员。

在项目开发过程中, 我们会监控项目的开发过程, 参与项目阶段成果的评审工作。项目开发过程尽可能模拟真实软件企业的开发过程, 最终使学生完成需求分析、设计、代码编写、测试、部署全过程, 培养学生的合作意识、责任感和集体荣誉感。学生在开发过程中遇到问题, 我们也不会直接给出答案, 会建议他们自行讨论来解决, 提高他们的沟通交际能力, 培养其团队合作精神。

在教学过程中, 理论部分、应用部分和实践部分并不是相互独立, 而是有机地结合在一起。我们在该课程教学初期, 首先给学生若干项目课题进行选择, 题目选定后, 以自主结合的方式完成分组。这样做可以有效地增强学生学习时的目的性。在重要章节的教学过程中, 遵循先理论知识、再应用技术、最后实践部分的次序进行。完成某章节的学习后, 就应该在规定时间内提交项目相应阶段的工作成果。例如, 需求分析章节的理论知识学习安排在第2周、应用技术部分安排在第3周、需求分析说明书要求在第5周提交;系统分析的理论知识学习安排在第4周、应用技术部分安排在第5周、系统分析报告要求在第7周提交。我们会及时对每一部分的工作成果进行评讲, 指出缺陷和不足, 保障项目开发的顺利进行。在期末考试结束之前, 结束第一阶段的开发工作。随后, 我们会给出项目的新增需求, 并调整项目成员, 开始第二阶段的开发工作。由于第二阶段是在所有课程考试结束之后, 学生有条件在固定地点集中上机, 因此第二阶段的工作将尽可能模仿软件公司的开发模式。首先, 项目经理必须和组员共同讨论出一份可行的项目开发计划。我们将根据该计划监控项目进展过程, 并在重要节点抽查该项目的进展情况。项目计划的重大变化, 必须及时更新项目开发计划。其次, 在项目进展过程中, 每个开发阶段的工作成果都必须经过评审。不评审或者评审不合格, 不可以开始下一阶段的工作。最后, 每个项目成员必须每天提交工作进展报告, 内部会议也要有会议记录。所有这些项目管理相关文档和项目本身的文档都需要在项目结束时一并提交。评定成绩时结果和过程并重, 项目管理相关文档是过程的重要体现。

3 考核方法和教学效果分析

为突出实践环节的重要性, 我们将项目实践部分的考核比例增加至总成绩的50%, 即成绩标准为项目实践成绩 (50%) + 笔试成绩 (30%) + 平时成绩 (20%) 。其中第一阶段的项目实践成绩占20%, 第二阶段占30%。在对学生的实践环节考核中, 我们更侧重于对学生的实践操作能力、文档编写能力、团队合作和沟通能力的考核。为避免浑水摸鱼, 在评定成绩时, 根据贡献不同, 组中的不同成员会有不同的权重, 每个学生的最终成绩是团队成绩和权重的乘积。采用新的考核方法后, 极大地调动了学生参与项目实践的热情, 取得了良好的学习效果。在随后的毕业设计和程序设计比赛中学生都体现出较强的团队开发能力。

4 结语

软件工程是一门理论和实践并重的课程, 只有加强实践环节的训练, 理论知识才能得到有效巩固。我们在教学过程中, 始终把项目实践放在突出的地位, 通过增大项目规模和引入两阶段项目开发, 让学生主动认识到软件工程课程的重要作用。实践证明, 现阶段软件工程的教学改革工作, 有效地提高了学生的学习兴趣, 增强了学生使用软件工程方法和技术解决实际问题的能力, 培养了学生团队合作精神。下一步我们准备通过“校企合作”, 增强项目实践的真实性, 使软件工程的项目实践更加合理、完善。

摘要:软件工程课程是计算机专业重要的专业基础课, 由于其实践性较强, 历来是教学的难点。我们基于案例化教学模式, 设计并实施了一套综合理论知识、应用技术和项目实践的教学模式。实践表明, 这种新的教学模式有利于培养学生的团队合作精神与运用软件工程技术和方法解决实际问题的能力。

关键词:软件工程,实例化教学,项目实践

参考文献

[1]张剑波, 方芳, 袁国斌.软件工程专业实践教学体系改革[J].计算机教育, 2013 (12) :37-41.

[2]王卫红, 杨良怀, 江领.软件工程优势专业的建设与发展[J].计算机教育, 2013 (10) :1-4, 9.

[3]汤淼.软件工程专业“项目驱动”实验教学模式研究[J].实验技术与管理, 2012 (4) :267-271.

[4]吴建斌, 陈中育, 叶荣华.软件工程类课程教学模式改革探索[J].中国信息技术教育, 2013 (5) :119-121.

篇4:软件工程课程教学方法探索

【关键词】软件工程课程 案例教学 项目综合实践

【中图分类号】G712.4【文献标识码】A 【文章编号】2095-3089(2016)01-0010-01

1.引言

软件工程是一门采用工程化原则指导高质量且有效的软件开发过程的课程。软件工程课程是信息专业重要的专业基础课,除了加深学生程序设计语言和数据库知识的掌握,更重要的是培养他们在软件开发管理、设计模式、系统开发工具和团队协作等多方面的技能。

传统的软件工程教学注重理论教学,没有很好地结合理论与实际应用,虽然教学过程中也引入的案例和实践环节,但没有做到有机的结合和及时的监控,往往留于形式 教学效果并不理想[1,2]。

2.教学方法探索思路

2.1 理论知识的案例教学与”一页讲义”教学

软件工程理论知识的教学还是以教师授课为主,向学生教授软件工程的基本理论和设计原则,内容力求少而精,目的是在较短时间内让学生了解现阶段最广泛使用的软件工程技术的理论基础,为下一步应用部分的学习奠定基础。首先,在教学过程中结合具体的软件开发案例,我们选择的案例不是孤立的个案,而是一组精心设计的能够贯穿软件设计开发过程的整体案例,我们选择的是一个基于Web的图书馆管理系统,由于学生对该系统业务流程和功能及操作都很熟悉,易于理解。教师在理论讲述时同步结合图书馆管理开发的各阶段进行讲解,通过这种边做边教的模式使得学生能够理论结合实际,加深印象;其次在每个章节学习之前我们都会给学生发一张“一页讲义”,讲义的内容分为两部分,一部分是本章的知识提要和重点的知识点,据此,学生即能掌握本章学习内容框架,并对学习的重点难点有所了解。另一部分是少量的课堂练习题,包括选择、填空和问答题,课堂中会抽10-15分钟作课堂练习并进行讲解讨论,及时巩固学习的理论知识。我们发现纸质的课堂练习题学生的参与度比互动性比仅使用PPT要高,且许多设计思路学生会直接记在上面,将来是比较好的复习资料。案例教学与”一页讲义”教学能较好地帮助同学认识软件开发引入工程化思想的必要性并提高学习的积极性。

2.2 拓展实践与强调团队协作

课程实践对软件工程课程具有非常重要的作用,通过实践,学生能够增强运用软件工程基础知识的能力,对系统设计技能进行训练、培养软件项目的开发能力和团队协作意识。实践环节包括两方面内容:基础实验和综合实践。

基础实验通过CASE(计算机辅助软件工程)工具的学习并运用这些工具加深学生对软件生命周期各阶段的理解,着重培训学生对需求分析、概要设计、详细设计以及软件测试阶段相应辅助工具的掌握,并运用这些工具进行各阶段辅助设计。例如:运用Microsoft Visio绘制软件结构图、程序流程图等;使用ERWin辅助数据库设计;运用Rational Rose完成需求分析与系统设计中的用例图、类图、顺序图和部署图等绘制。基础实验主要实现软件工程各生命周期阶段教学内容的延伸与应用,强调CASE工具的运用,使得软件开发能够更高效、标准地进行。

2.3 培养工程管理与应用能力

软件工程强调使用工程化原则指导软件开发,因此对于软件开发过程中的项目管理也是学生需要关注和学习的内容。除了理论教学中需要对软件项目管理进行讲述外,在基础实验和综合实践环节,我们也加入了项目管理内容的实践,通过Microsoft Project学习项目资源的合理调度,通过VSS(Microsoft Visual SourceSafe)进行代码管理,防止各成员间代码版本的冲突,并且要求学生在综合实践环节必须使用这些工具,并作为考核的一项内容。

2.4 创造实践环境

在软件工程学习过程中可以让学生接触一些现成的软件系统,通过对商业化软件系统的观摩,能够让学生认识复杂系统的集成方案,加深对整体框架的理解,同时对真正软件系统的界面设计、出错处理、系统管理等方面有所了解,学习软件设计开发过程中注重软件的可用性、可操作性、健壮性和可维护性。由于我们专业特点,与医院和医用软件公司有长期的合作关系,可以免费获得一些成熟的软件系统(如:医院信息系统),这为学生创造了一定的实践环境。计算机或其他信息相关专业的教师也可以根据自身专业特点有意识的收集具有代表性的系统,供学生参观学习。

3.教学方法具体实践

在教学方法实践过程中,理论和实践部分并不是相互独立的,应当根据理论教学的推进,结合相应的案例并且逐步实现各阶段的文档。我们在课程教学初期,首先给以自主结合的方式完成分组,选定相应需要开发的子系统并分配给各小组。题目选定后,随着理论教学的推进,要求各小组逐步提交各阶段文档,而不是学期末一起上交,这样能规范各模块的开发按照先文档,后设计再编码的步骤进行,避免系统编码完成后再补充文档的尴尬。部分文档提交后需要集中小组长进行一定的讨论,特别是整体数据库的设计需要所有小组共同分析讨论来完成,教师旁听并指导,指出缺陷和不足,并综合得到最终设计结果。各模块接口设计由相关模块小组长共同讨论完成。在学期末专门安排一次课用于综合实践答辩,由小组代表对软件的设计和开发进行总结汇报并演示开发的系统。

在课程的考核方式上进行优化,强调实践能力,因此综合实践的部分的考核比例增加至40%,理论考试占40%,而平时分占20%。为了避免部分学生“浑水摸鱼”,我们会根据小组成员对项目开发做出的贡献进行度量,设置相应的权重,综合实践的考核分数根据贡献权重计算得到。这样能够激发学生的实践热情,并合理的体现各学生工作量。

4.结束语

软件工程课程非常强调理论联系实践程,在理论教学中引入贯穿整个学习过程的具体案例,能够提高理论的实用性;“一页讲义”式的教学能够帮助学生对整体知识框架的把握,配合具体的课堂练习能够及时对理论知识进行巩固。在教学过程中,我们始终把实践环节放在主要的地位,通过综合系统子模块开发,让学生认识到模块化设计和团体协作的重要作用;我们同时也关注项目管理知识的传授。教学结果证明,通过上述教学方法的探索与改革,能有效地提高了学生的学习兴趣,增强了学生使用软件工程方法和技术解决实际问题的能力,培养了学生团队合作精神。

参考文献:

[1]张剑波,方芳,袁国斌.软件工程专业实践教学体系改革[J]. 计算机教育,2013(12):37-41.

[2]王卫红,杨良怀,江领.软件工程优势专业的建设与发展[J]. 计算机教育,2013(10):1-4,9.

[3]吴建斌, 陈中育,叶荣华.软件工程类课程教学模式改革探索[J].中国信息技术教育,2013(5):119-121.

[4]Hay P,Katsikitis M.The expert in problem-based and case-based learning: necessary or not[J]. Medical Education, 2001, 35(1):25-30

篇5:软件工程课程教学大纲

课程编码:030551007 学时/学分:2周/4

一、大纲使用说明

本大纲根据计算机科学与技术专业2010版教学计划制订。

(一)适用专业

计算机科学与技术专业。

(二)课程设计性质

生产实习。

(三)主要先修课程和后续课程

1、先修课程:C语言程序设计

2、后续课程:毕业设计

二、课程设计目的及基本要求

软件工程课程设计是软件工程的配套课程,是软件工程课程的后继教学环节,是一个重要的、不可缺少的实践环节。通过分析、设计和实现一个小型应用软件,进行一个从软件问题定义、需求分析、设计、编码、测试等软件开发全过程的训练,使学生能够针对具体软件工程项目,全面掌握软件需求分析、软件概要设计、软件详细设计、软件测试等阶段的方法和技术。

通过实践,让学生了解和掌握软件项目整体开发方法,并掌握在开发过程的不同时期所使用的具体方法及各种文档描述工具。要求学生具有较强的独立分析、设计、编程及测试能力,具有良好的程序设计风格,并能形成完备的软件开发文档。

三、课程设计内容及安排

软件工程课程设计学时为2周,采取集中方式,安排在授课完成后进行。学生每2-5人成立一个开发小组,自由组合,共同完成一个设计题目。每组选出小组项目负责人,并对小组成员按任务进行分工。每个小组在教师的指导下以软件设计为中心,独立地完成从需求分析、软件设计、编码到软件测试运行的软件开发全过程,并完成相应的文档。

具体安排如下:

 第一阶段(1-2天):需求分析。

准确地了解需要解决的问题,分析系统的可行性,建立系统的数据模型(ER图)、功能模型(DFD图)和行为模型(状态图),并生成相关文档。

 第二阶段(2-3天):概要设计。

分析、细化系统的数据流图,确定其类型并映射出软件体系结构,结合实际情况对结果加以优化,同时生成相关文档。

 第三阶段(2-3天):详细设计。

完成数据库设计、界面设计和模块内部算法设计,用过程设计工具(如程序流程图、PAD图、N-S图等)描述算法过程。

 第四阶段(3-4天):编码和测试。

选定编程语言,根据算法编写代码。采用综合测试策略对代码进行测试,先用黑盒测试法进行单元测试,再用白盒测试法进行系统测试。制订完善的测试计划,并记录测试用例和结果。对发现的错误可采用蛮干法、回溯法、原因排除法等基本方法进行调试。

 第五阶段(1-2天):撰写报告。整理各阶段文档,完成课程设计报告。

四、指导方式

课程设计期间,指导教师进行全程指导,随时解答学生的疑问。

五、课程设计考核方法及成绩评定

课程设计完成后,统一安排答辩,并且每人提交一份软件工程课程设计报告。教师将根据学生的程序运行情况、答辩水平、报告的质量及平时的学习态度、出勤情况进行综合考核并给出最终成绩。

六、课程设计教材及主要参考资料

《软件工程导论(第5版)》,张海藩编,清华大学出版社,2008.2 《软件工程面向对象和传统的方法(第7版)》,Stephen R.Schach编,邓迎春译,机械工业出版社,2007.8 《UML系统建模与分析设计课程设计》,刁成嘉编,机械工业出版社,2008.1 《软件工程实验教程》,窦万峰编,机械工业出版社,2009.5

编写人:祁燕 关启学 王纪

篇6:软件工程课程教学的一些体会

陈中育

(浙江师范大学计算机学院,浙江金华321004)

摘要:在分析软件工程课程教学特点的基础上,讨论了软件工程课程教学对学生软件开发习惯的一些影响,提出了软件工程课程教学对教师素质的一些基本要求。

关键词:软件工程;课程教学;开发习惯;教师素质

Some Pedagogical Experience of SE Curriculum Instruction

Chen Zhong-yu

(Institute of Computer Science of Zhejiang Normal University, Jinhua321004, China)

Abstract: Analyses the characteristic of SE curriculun instruction, Discusses the influence of SE curriculun instruction upon the develop style of the students, Presents some basic requirement of teacher culture about SE curriculun instruction.Keywords: SE;Curriculum Instruction;Develop Style;Teacher Culture

0引言

《软件工程》是计算机科学与技术专业必修的一门专业课程。本人从事大学计算机专业本科生《软件工程》课程教学近十年,在教学过程中深感学习该课程的重要性,这不仅是因为软件工程与计算机专业其他先行基础课程的密切关联,更为重要的是软件工程掌握的好坏直接关系到学生毕业以后的软件开发思路和工作规范,甚至关系到我们国家整体软件产业在世界软件产业中的生存空间。

当前国内各大高校纷纷开办软件学院,其中一个非常重要的趋势就是先行开设软件工程专业,这也说明软件工程知识是整个计算机软件领域的核心内容。本文作者试图根据自己在教学中的一些体会和认识来分析在软件工程课程教学中我们到底应该坚持让学生着重学习哪些知识、使学生得到什么能力的培养。

1软件工程课程教学特点

(1)课程特点

《软件工程》课程是一门要求基础课程较多、应用实践性较强、与产业标准行业规范衔接、概念多、涉及面广的课程。属于在高年级开设的专业必修课程,要求学生学习软件工程的基本原理、概念和技术方法;自觉遵循软件工程方法论中的一些规范和工业领域中的一些行业标准;目的是提高软件开发的生产率,减少软件开发和维护中的错误,确保最终用户软件产品的质量。

(2)要求基础课程较多

要求学生在学习软件工程之前已经完成高级语言程序设计、数据结构、数据库系统概论、操作系统、计算机网络等先行课程的学习。这些课程都是计算机专业的一些重要基础课程,也是衡量一个学生是否具备计算机领域开发的技术能力。

任何大规模的软件项目开发最终是由很多开发组织、很多开发人员的集体参与、协作完成。具体的技术工作就是依赖于这些先行课程的能力,而软件工程所涉及的却是从工程技术、工程组织、工程管理、软件体系框架上的一系列难题。

(3)应用实践性较强

我们认为目前高校大多数计算机专业的培养目标应当定位在软件工程师,而不是计算机科学家,这应该是大多数高校计算机专业教学改革的出发点和根本点。作为软件工程师一个根本的能力就是实际软件开发能力问题,在课程学习尤其是软件工程的课程学习必须坚持软件开发技术开发能力的培养。在教学中必须强调理论学习与应用实践的结合,把握软件工程的发展方向,为学生在社会实践、毕业论文、毕业设计中能理论联系实际参与实际项目开发打下基础。

(4)与产业标准行业规范衔接

随着信息时代的到来,软件产业已经成为全球高科技产业发展的最主要的推动力。对于中国的软件业而言,如何抓住机遇,跻身国际软件强国之列,已经成为一个首要的问题。毫无疑问,现实的中国软件产业面临着巨大挑战,国情与我们类似的印度经过短短的十几年发展时间,印度以其软件公司的规范化和软件开发实力占有了全球市场的相当大份额,印度的软件出口额几乎是中国的30倍。目前,中国软件企业有5000家,是印度的5倍以上,但其中80%是小作坊式企业,不能形成较大的规模,一个根本的原因是我们的开发没有很好地执行软件规范化和行业标准所造成的。

造成这种局面,我们的软件教学体制也有责任,我们必须在软件工程的课程教学中认真学习软件开发的通行规范和标准,课程教学与与产业标准行业规范衔接。

2软件工程课程教学对软件开发习惯的影响

(1)什么是软件开发习惯

其实从某种程度上讲行为习惯与做事风格是等同的两个概念,记得在史济民主编的《软件工程原理、方法与应用》一书中是这样描述风格的。所谓风格,就是作家、画家和程序员在创作中喜欢和习惯使用的表达自己作品题材的方式。

从70年代以来,软件工程发展到今天,编码的目的从最初的强调程序执行效率到强调程序结构清晰到对象封装。伴随着程序设计语言从过程设计到面向对象的程序设计,随着软件工程技术的深入研究、发展和运用,人们逐步认识到,在大型系统的开发中,规范一致的开发习惯非常重要,增进成员之间的相通讯交流,减少因不协调而引起的问题,提高软件重用程度,软件开发的习惯也从过去的个人作坊到团队合作,从过去的强调过程代码编写到强调流程管理,从过去的强调代码实现到强调规范化文档编写,从过去的过程模块技术到现在的组件技术、构件技术、应用中间件技术。

(2)程序设计语言选择习惯

任何软件系统的实现都必须选择至少一种程序设计语言来完成,选择语言工具一个重要的评价标准就是看它能不能很好的解决所需要解决的问题,而不是开发小组成员能否使用某种语言工具。我们在实际教学中遇到很多学生选择语言上主要看自己是否喜欢和掌握程度来决定,虽然这样的大多数语言能解决大多数问题,但这样的选择原则是错误的,也不利于跟踪和利用最新软件开发工具和环境。软件工程是发展的,随着新技术新方法的出现,我们的开发方式也必须随之变化。

值得一提的是,就软件工程现状而言,我认为任何从事软件开发的人员都必须掌握两种语言。其中C是非常基础的语言,它对于培养软件开发的基本思维方式,培养良好的软件开发习惯,培养模块化、结构化等基本软件开发技能都具有非常重要的作用。同时,掌握了C,也就获得了通向程序底层环境的通行证,可以在需要的时候深入到任何的层次,解决需要解决的各种问题。而C++的最大特点,除了对C的基本特性的继承外,最重要的就是他可以培养程序员完整的面向对象编程的概念,及基本的技巧,还可以使得开发人员充分了解WINDOWS等多任务操作系统上程序运行的基本原理,从而为实际的应用开发提供最基础的思维模式。

(3)善于合作开发的习惯

我们必须看到,现在的软件业已经不是发展初期的软件业了,如今软件业的产业化规模已经相当大,要想在市场上取得成功,一个产品需要有非常多的人力、物力、财力的投入。什么是产业?它是一个通过计划、合作、创新,通过市场化的运作来创造价值的活动。对于

一个产业来说,个人作坊式个人英雄主义色彩几乎是中国软件产业的一个软筋。

我们发现高年级的学生大都积累了编程经验,也参与过一些开发实践,但是我们在软件工程教学中要求学生自由组合、合作开发、团队作战等思想时,他们马上感到无所适从,觉得自己一身编程能力无法得到发挥。教师在课堂上必须给学生说明:每个人的技术特长需要封装在软件开发的各个阶段细节上,一个成功的产品,必须经过严格的产业化运作,包括规划、开发、测试、包装、宣传、营销、客户服务。必须强调编程高手孤高倨傲、急功近利是非常有害的。

(4)用软件工程观点思考问题的习惯

我们周围很多从事计算机教学、科研和开发的专业人员有一种普遍的错误认识,认为软件开发主要的是技术问题,认为“不采用软件工程”也能做好软件产业化工作,这正是我们国内软件产业界落后思想的表现,也是软件企业短视、个人自由散漫、高傲自大的表现。如果这样的思想被多数人认可,将是我们软件产业界的一大悲哀。

曾经有一位同事这样评价软件工程这们课程,说软件工程其实就象是教育学,当然他的态度是教育学并不重要软件工程也不重要。如果我们的计算机教师都是这样的观点,那么我们怎么能让学生正确认识软件工程的重要性呢?

我们的问题决不在于需不需“软件工程”的争论,这本身就是无可置疑的。问题在于怎样去利用软件工程的思想和方法服务于我们的软件开发工作,这才是关键之关键。如果没有真正理解软件工程的根本思想,生搬硬套一些规程、一套文档格式和一些方法,只能给软件开发工作带来干扰和破坏,不会产生任何建设性作用。

所以,我们在教学中首先应该普及的是软件工程的基本思想,把它灌输到每一个学生的头脑之中,那么,软件工程的基本思想究竟是什么?我想也会有许多不同的观点,但我认为这样几点应该是共同的:(1)软件的开发一定要以产业化的思想来看待,强调合作和规范,杜绝随意性;(2)软件的开发过程一定要采用某种方法进行进度和成本的控制;(3)软件的质量必须得到保证,保证的措施一是提高开发过程的质量,二是通过严格测试;(4)客户的需求永远是软件开发的终极目标,客户的需求一定要准确,并且一丝不苟地满足;(5)软件开发的所有成果必须存在于容易理解的书面文件中,而不是仅仅存在于软件开发人员的头脑中。

3软件工程课程教学对教师素质的一些特殊要求

(1)丰富的大型软件系统开发经验

软件工程本身是一门实践性很强的课程,没有实践开发经验、大型系统分析能力的教师

很难胜任软件工程课程教学任务,这是软件工程教师应该具备的一个很重要的素质,目前无论业界还是高校计算机专业最缺的正是这样的专业人员。

(2)良好的语言沟通和文字表达能力

虽然作为教师本身就应该有这样的素质,但是软件工程教学中这种素质尤为重要,面对用户需求理解和表达,面对计划报告的书写,面对合作团队的组织、沟通和协调,等等,都必须具备这方面的素质。

(3)一定的市场运作能力

我们必须明确地告诉学生,你所开发的软件产品必须被用户接受被市场认可,了解市场把握市场善于运作市场也是教师应该具有的素质之一。

(4)较强的工程经济分析能力

软件作为一个工业产品,它应当赚取足够的利润,才能使软件开发组织生存下去。因此,从事软件开发的软件工程师应当具有较强的工程经济分析能力,能够分析软件产品的市场前景和经济价值,并做出合理的投资效益预测。

(5)健康的心理素质

开发软件本身就是一项艰苦的脑力和体力劳动,成功开发一个软件产品,要经过反复修改,要花费大量的进间和精力,这些都要求软件人员有较好的心理承受能力、团队合作精神、成果分享精神。

4结束语

以上这些思考只是从软件工程教学中容易被忽视的一些问题,希望以此话题引起同行们的思考和争鸣。

上一篇:笑话段子下一篇:劳务合同书(返聘退休人员用)