2023年12月25日发(作者:)

项目管理的基本思想在软件工程课程教学
第一篇:项目管理的基本思想在软件工程课程教学
目录
一、引言
二、课程特点及项目管理核心概念
三、项目管理的重要思想
四、过程管理应用于组织教学的方法
五、结语 参考文献 摘要 关键词
一、引言
软件工程是计算机相关专业一门重要专业必修课程,具有很强的实践性。软件工程中的技术、方法和原理往往比较复杂,难以掌握,从而导致学生在学的过程中极易产生枯燥乏味的感觉和学不会、不想学的思想,教师也会觉得该课程教起来相当困难,要想达到较好的教学效果、培养学生较强的实践能力十分困难。笔者在讲授软件工程专业课程时,将软件工程中项目管理的原理和方法应用于软件工程教学,注重学生人员的组织、任务划分、学习过程管理以及结果考核,在教学内容、教学方法和手段以及考核等方面进行了一些尝试和探究,取得了很好的效果。
二、课程特点及项目管理核心概念 1.软件工程课程特点
本课程是为了解决软件开发和维护过程中所遇到的一系列严重问题,而产生的一门新兴的工程型学科,目的在于提高软件的质量与生产率,最终实现软件的工业化生产。软件工程课程中所讨论的原理、方法和技术来源于软件开发和维护的实践和经验,并且是经过时间的检验而证明是正确的或者是当前最好的技术和方法,具有抽象性、复杂性和高度的时效性。正因如此,软件工程课程不同于一般的计算机专业课程,它具有自身的特点。
(1)综合性。软件项目开发是一项综合的系统工程,是对所学专业知识和能力的综合运用,包括:程序设计、数据结构、操作系统、数据库等,同时,还涉及工程学、管理学、经济学、数学、心理学等
多个领域的知识。
(2)时效性。随着IT行业的飞速发展,新的软件工程的原理、方法和工具也是层出不穷。为了使学生所学的软件工程知识和技能在软件行业中能真正发挥作用,因此,在授课时,除了讲解基本概念、原理和方法外,更重要的是,对一些不再流行的方法和技术需要进行大量的裁减,而补充一些最新的方法和技术,以适应技术的发展。
(3)实践性。软件工程包括大量的软件开发实践的经验和教训,具有很强的实践性。因此,在教学过程中,不仅要注重基本的概念、原理和方法,而且要进行具体的软件开发实践活动,这样才能将理论与实践相结合,使学生真正学以致用。2.项目管理的核心概念
软件项目管理主要包括4个要素:人员(People)、产品(Product)、过程(Process)和项目(Project),正好构成软件项目管理的“4P”要素。
(1)人员。相对于开发工具和技术来说,软件人员的素质和组织管理显得尤为重要。对于大型的软件项目更是需要整个团队的共同努力和协作,因此对开发人员的组织和管理将是一项十分重要的工作,组织和管理的好坏直接影响到整个项目的成败。
(2)产品。作为软件项目的最终目标,必须在规定的时间和预算内完成产品。经验表明,影响软件产品的主要因素是软件需求的不确定和需求规格说明的不准确。
(3)过程。软件产品从无到有,需要经过一系列复杂的过程,对这些过程中所使用的技术、方法、活动和工具进行有效的管理、跟踪和控制,必要时进行有效复用,是管理学中的一个重要目标。
(4)项目。为了实现项目的目标,项目管理者需要在有限的资源约束下,运用系统的观点、方法和理论,对软件项目的全过程进行计划、组织、协调、控制和评价。
三、项目管理的重要思想
所谓的软件项目管理,就是指通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以便在预定成本和期限内开发出符合客户需求的软件。[1]其重要思想在于:开展任何活动,必须在事前
进行认真计划和规划,在执行过程中进行过程跟踪和控制,在活动完成后进行相应的质量评价。
在计划时期,首要的任务是要明确当前活动的目标,据此设计活动的具体过程、步骤、人员组织形式以及监控和评价方式。在活动的执行过程中,要有相应的评价指标,据此对活动过程的各个环节进行有效地监控和管理。在结束阶段,要对活动的执行情况进行质量的评审,确保得到的是合格的中间产品,或者说,达到了预先设定的活动目标。
四、过程管理应用于组织教学的方法 在软件工程课程的教学实践活动中,根据软件项目管理中的核心概念和重要思想来设计教学内容和方法,一方面,教学本身体现了软件工程思想,另一方面,使得教学活动易于设计和实现,同时增加了教学的趣味性和教学质量的可管理性。1.教学设计的指导原则
根据项目管理的核心概念和基本思想,在我们的实践教学活动中,制定了以下教学指导原则。
(1)学时比例:讲授和实践比例达到1:1,对于一次2学时的课程,讲授和课堂实践各占一半;(2)组织形式:针对实践环节,教师充当客户,学生以自愿形式组成开发团队,每组5~6人,每组推选组长一名,成员要有不同的分工和角色,包括项目组长、编码员、测试员、分析员、设计员、质检员等角色;
(3)实践题目:为了强化实践训练的目的,实践性环节分为课堂实践和课后综合训练:课后综合训练,以一个完整的软件项目作为实训内容,与教学进度相应,进行任务的阶段划分和实施。课堂实践以小型的单元实践为主,题目要有相对独立性,避免前后依赖,增加可操作性,类型可以包括分析型、设计型、训练型、讨论以及争议性的话题等。选题必须切合学生的专业背景和实际情况,且具有一定的实践价值和社会意义。
(4)管理与考核:管理过程采用模拟公司的分级管理方式,各个小组组长向教师负责项目的完成和进展,而组内每个成员向小组组长负责自己所担当角色的任务完成。考核可采用多种形式,如答辩、交
叉考核、展示、提问或者综合评审等。2.具体实施方案(1)教学内容规划 在正式课程开始教学之前,需要根据教学计划和大纲进行认真的教学规划,包括学时分配、教学进度安排、阶段性教学目标和实践内容的设计,如表1所示。在正式教学之前,将此教学
第二篇:软件工程课程
软件工程专业本科生课程设置
时间:2009-03-22 08:47 来源: 作者: 点击:1059
学院在课程体系制定、课程计划安排上制定了严格的规定与规范的操作程序。课程体系、教学计划由学院主管院长负责,对国内外大学、大型IT企业进行调研、分析,确定社会对人才的需求和人才知识、能力、素质的构成,而后由主管院长召集相关教师起草方案,再经学院教学指导委员会专家和企业专家进行论证,并报学校教务处审核、批准,由此形成本科生、硕士研究生的培养方案。同时,根据学科发展和社会需求的变化,学院通过增加或变更选修课、开设讲座等方式动态调整。目前,软件学院主要课程设置按课程体系关键域分类如下。
1)数学基础(本科):大学数学I、概率论与数理统计、数值分析、离散数学等。
2)软件基础(本科):数据结构、汇编语言程序设计、面向对象编程与设计、可视化程序设计基础、操作系统、数据库系统、C/C++程序设计、算法分析与设计、编译原理、软件工程等。
3)硬件基础(本科):数字电子技术、计算机系统基础、数字通信原理、微机原理与技术、计算机网络原理等。
4)专业技术(本科):大型数据库技术、软件体系结构、系统级编程技术、数据挖掘、嵌入式系统、J2EE应用开发、.NET架构软件开发、设计模式、建模与测试、信息安全、软件开发案例分析、并行程序设计、多媒体技术及应用、网络与分布式计算、计算机图形学等。
5)工程管理(本科):软件开发项目管理、软件质量管理与控制、企业管理、网络营销、商务谈判技巧、软件度量及应用、心理学、商务英语等。
6)数学基础(双证硕士):应用统计、组合数学、应用数学方法等。
7)软件理论基础(双证硕士):现代软件工程、面向对象与构件技术、高等计算机算法、移动计算等。
8)数学基础(工程硕士):运筹学、工程数学基础、应用数学方法等。
9)软件理论基础(工程硕士):分布式系统、现代软件工程、软件重用与构件技术、软件工程实例分析等。
第三篇:软件工程课程教学的一些体会
《软件工程》课程教学的一些体会
陈中育
(浙江师范大学计算机学院,浙江金华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
ds: 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结束语
以上这些思考只是从软件工程教学中容易被忽视的一些问题,希望以此话题引起同行们的思考和争鸣。
作者简介:陈中育(1964--),男,浙江浦江人,浙江师范大学计算机学院副教授,研究方向:软件工程、数据库。
第四篇:《软件工程》课程教学大纲
《软件工程》课程教学大纲
第一部分
大纲说明
一、课程性质、目的与任务
《软件工程》是计算机应用专业教学计划中一门综合性和实践性很强的核心课程,主要内容包括软件工程概述、可行性分析、需求分析、概要设计、详细设计、面向对象分析与设计、编码、软件质量与质量保证、项目计划与管理。
根据培养基层应用型人才的需要,本课程的目的与任务是使学生通过本课程的学习,了解软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法,为更深入地学习和今后从事软件工程实践打下良好的基础。
二、先修课要求
计算机的基础知识、程序设计的知识
三、课程的教学要求
基本概念和基本知识:软件与软件工程,生存周期与软件开发模式,结构化分析、设计与编码,面向对象分析、设计与编码,软件的评审、测试与维护,项目计划与项目管理。
基本技能:能用软件工程的方法参与软件项目的分析、设计、实现和维护
重点:系统分析、系统设计、系统实现、系统维护
难点:需求分析、软件测试
四、课程的教学方法和教学形式建议
1.本课程概念较多,因此教学形式以讲授方式(面授和电视录像)为主。
2.为加强和落实动手能力的培养,每章课后应安排作业,作业应让学生尽可能在CASE环境下进行。
3.对课程中关键性概念、设计思想方面的问题可辅以课堂讨论的形式。
4.如条件许可,应利用网络技术进行授课、答疑和讨论。
五、教学要求的层次
课程的教学要求在每一章教学内容之后给出,大体上分为三个层次:了解、理解和掌握。了解即能正确判别有关概念和方法;理解是能正确表达有关概念和方法的含义;掌握是在理解的基础上加以灵活
应用。
第二部分
教学媒体与教学过程建议
一、课程教学总学时数、学分数
课程教学总学时数为72学时,其中授课时间为50学时(含面授、录像学时),大作业课时为22学时。总学分数为4学分。
二、文字教材与音像教材的配合
1.课程以文字教材为主(包括主教材和实验教材两部分),•文字教材担负起形成整个课程体系系统性和完整性的任务,是学生学习的主要媒体形式。因此教材要概念清晰、便于自学。在内容上要使所用的名词术语符合国家通用标准,突出重点、兼顾一般,反映当代最新技术及应用。
2.录像教材作为文字教材的强化媒体,配合文字教材讲授课程的重点、难点以及问题的分析方法与思路。两者互相补充,彼此配合。
3.努力实现网上教学。
三、主要教学媒体的使用与学时分配
教学内容
<一> 软件工程概述 <二> 可行性分析 <三> 需求分析 <四> 概要设计 <五> 详细设计
<六> 面向对象分析与设计方法 <七> 编码
<八> 软件质量与质量保证 <九> 项目计划与管理 合 计
授课学时2 6 6 6 8 6 10 2 50 第三部分 教学内容和教学要求 软件工程概述
教学内容
1.1 软件
1.1.1软件的发展
1.1.2软件的定义
1.1.3 软件的特点
1.1.4软件的种类
1.2 软件工程的概念
1.2.1 软件危机与软件工程的定义
1.2.2 软件工程的目标
1.2.3 软件工程的原则
1.3 软件生存周期与软件开发模型
1.3.1 瀑布模型
1.3.2 原型模型
1.3.3 螺旋模型
1.3.4 基于四代技术模型
1.3.5 面向对象与组件模型
1.3.6 混合模型
教学要求
掌握:软件和软件工程的基本概念
了解:软件生命周期及软件开发的各个模型 2 可行性分析
教学内容
2.1 可行性研究的任务
2.2 可行性研究的步骤
2.3 系统流程图
2.4 成本/效益分析
教学要求
了解:可行性分析的步骤 3 需求分析
教学内容
3.1 需求分析的任务与步骤
3.1.1 需求分析的任务
3.1.2 需求分析的步骤
3.1.3 需求分析的原则
3.2 需求分析方法
3.2.1面向数据流的分析方法
3.2.1.1 基本符号
3.2.1.2 基于数据流的分析方法
3.2.1.3 数据字典
3.2.2 面向数据结构的分析方法
3.2.2.1 Jackson系统开发方法
3.2.2.2 Warnier-Orr方法
3.3 需求规格说明与评审
教学要求
掌握:需求分析的方法
理解:需求分析的任务和原则 4 概要设计
教学内容
4.1 概要设计的任务与步骤
4.1.1 概要设计的任务
4.1.2 概要设计的步骤
4.2 软件设计的概念与原则
4.2.1 模块化
4.2.2 抽象
4.2.3 信息隐藏和局部化
4.2.4 模块独立性
4.2.5 结构设计的评价原则
4.3 概要设计的方法
4.3.1 面向数据流的设计方法
4.3.1.1 基本概念
4.3.1.2 变换分析
4.3.1.3 事务分析
4.3.1.3 设计优化原则
4.3.2 面向数据结构的设计方法
4.3.2.1 Jackson方法
4.3.2.2 Warnier-Orr方法
4.4 概要设计文档与评审
教学要求
掌握:软件设计的概念与原则,概要设计的步骤、方法
了解:概要设计文档与评审 5 详细设计
教学内容
5.1 详细设计的任务与原则
5.1.1 详细设计的任务
5.1.2 详细设计的原则
5.2 详细设计的方法
5.2.1 程序流程图PFC
5.2.2 N-S图
5.2.3 PAD图
5.2.4 HIPO图
5.2.5 过程设计语言PDL
5.2.6 详细设计方法的选择
5.3 详细设计规格说明与评审
教学要求
掌握:详细设计方法
了解:详细设计规格说明与评审 6 面向对象的分析与设计方法
教学内容
6.1 面向对象方法的基本概念和特征
6.2 面向对象分析
6.2.1 确定对象
6.2.2 确定属性
6.2.3 定义操作
6.2.4 对象间通信
6.3 面向对象设计
6.3.1 面向对象设计概念
6.3.2 面向对象设计方法
6.3.3 程序构件及接口
6.3.4 细节设计
6.4 UML方法
6.4.1 UML的发展与特点
6.4.2 UML的表示法
6.4.3 UML的开发步骤
6.5 面向对象实例分析与设计
6.5.1 建立用例
6.5.2 确定表
6.5.3 设计对象的交互作用
6.5.4 指定联系
6.5.5 寻找继承
6.5.6 分析对象行为
6.5.7 设计系统的体系结构
教学要求
1.掌握:面向对象的基本概念和特征
2.了解:面向对象分析与设计方法及UML的开发方法 7 编码
教学内容
7.1 程序设计语言
7.1.1 程序设计语言分类
7.1.2 程序设计语言特点
7.1.3 程序设计语言选择
7.2 编程风格
7.3 编程效率
7.4 编程安全
7.5 面向对象编程技术
教学要求
1.掌握:一般的编码原则
2.了解:面向对象编程的特点 8 软件质量与质量保证
教学内容
8.1 软件质量的定义
8.2 影响软件质量的因素
8.3 软件质量保证策略
8.4 软件质量保证活动
8.5 软件质量保证标准
8.6 软件评审
8.7 结构化的软件测试
8.7.1 软件测试的概念和原则
8.7.1.1 测试的概念
8.7.1.2 测试的原则
8.7.1.3 测试的方法
8.7.2 软件测试技术
8.7.2.1 白盒测试
8.7.2.2 黑盒测试
8.7.3 软件测试的步骤
8.7.3.1 软件测试过程
8.7.3.2 软件测试步骤
8.7.3.3 单元测试
8.7.3.4 综合测试
8.7.3.5 确认测试
8.7.3.6 系统测试
8.7.4 纠错技术
8.8 面向对象的软件测试
8.8.1 面向对象分析和面向对象设计的模型测试
8.8.1.1 面向对象分析和面向对象设计模型的正确性
8.8.1.2 面向对象分析和面向对象设计模型的一致性
8.8.2 面向对象的测试策略
8.8.2.1 面向对象的单元测试
8.8.2.2 面向对象的组装测试
8.8.2.3 面向对象的确认测试
8.8.3 面向对象软件测试用例设计
8.8.3.1 测试用例设计蕴涵面向对象的概念
8.8.3.2 传统测试用例设计方法的适用性
8.8.3.3 基于故障的测试
8.8.3.4 面向对象编程对测试的影响
8.8.3.5 测试用例与类的分层
8.8.3.6 基于脚本的测试设计
8.8.3.7 测试外部结构和内部结构
8.8.4 可用于类层次上的测试方法
8.8.4.1 面向对象类的随即测试
8.8.4.2 类层次的分割测试
8.8.5 类间测试用例设计
8.8.5.1 多重类测试
8.8.5.2 按行为模型导出的测试
8.9 软件测试计划与测试分析报告
8.10 软件维护
8.10.1 软件维护的定义、分类、特点
8.10.2 软件维护步骤及组织
8.10.3 软件的可维护性
8.10.4 软件维护的副作用
8.10.5 逆向工程和再生工程
教学要求
1.掌握:软件质量保证的概念、策略和方法,软件评审或测试的方法和步骤。
2.了解:软件维护过程 9 项目计划与管理
教学内容
9.1 软件项目特点、管理的特殊性及软件管理功能
9.2 确定项目的工作要求
9.3 确定软硬件资源
9.4 人员的计划及组织
9.5 成本估算及控制
9.6 进度计划
9.7 软件配置管理
9.8 软件管理方案
教学要求
了解:项目计划与管理的基本内容
第四部分 课程大作业
为了进一步巩固课堂所学的知识及实际的应用,配合讲课,设置以下课程大作业:
1.结构化分析
2.概要设计
3.详细设计
4.测试
5.面向对象分析与设计
6.面向对象编程
7.面向对象测试
实施要求:
1.课程大作业的1-4使用传统的软件工程方法;5-6使用面向对象的软件工程方法;可以设计一个大例子,用两种方法来做,也可以分别做两个例子。
2.建议大作业之前有作业辅导,2学时。
3.建议作业完成后进行讨论,对这两种方法进行总结,2学时。
4.建议使用CASE平台及其他工具平台。
第五篇:软件工程课程总结
软件工程课程总结
学习软件工程这门课程已经有一个学期了,整整一个学期下来,应该说还是有许多值得肯定的地方的。其实在我看来,软件工程与其说是一门课程,不如说是一门思想,是一个如何去分析和处理问题的过程,应该说其范畴已经远远不止局限于该门课程,成为了一个综合的能够解决问题的思想集合。
学习软件工程能够加强人的整体思维能力,对人的综合素质有所提高,培养良好的分析规划和团队意识。学习了软件工程,我们可以在给定成本、进度的前提下,开发出具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性、可互操作性和满足用户需求的软件产品。追求这些目标有助于提高软件
产品的质量和开发效率,减少维护的困难。
在这学期的软件工程课上,我每次都认真听老师讲课,跟着老师的脚步,领悟老师的思想,学习态度还算认真。一刚开始还觉得这门课有点枯燥乏味,但后来静下心来看这本书感觉书上的知识对以后无论是在生活、学习还是在工作上都有很大的好处,对自身也是一种完善,因为这里面的思想博大精深,值得学习。从此我就认真地学习这门课程。尽管在学习的过程中遇到了很多困难,但经过与老师和同学的积极交流终于把问题解决了,从中学到了更深层次的知识,而这些知识又是对书本知识的补充,对学习书本知识有很大的好处。当然,学习理论知识就是用来指导实践的,也只有把理论知识运用到实践才能充分发挥理论的作用。所以在业余时间,我们尝试着把所有知识串起来,并根据自身的实践经验完成了相关的系统分析报告,让知识能更加驻留我心。
在本学期的软件工程课程的学习中,我们学习了十章的内容。第一章软件工程概述,这一章主要讲解的是一些概念性和基础性的内容,例如软件的概念、特性,软件危机的主要表现。了解软件工程的的工作对象、发展背景、内容、目标。还介绍了三个常用的软件工具Microsoft Visio、PowerDesigner和Rational Rose。第二章软件开发过程模式,这一章主要让我们了解软件生存周期,认识到了软件开发过程,熟悉了几种常用的软件过程模式的特点与用途。此章介绍了6种模式:瀑布模式、原型进化模式、增量模式、螺旋模式、迭代模式和组件复用模式。第三章软件项目管理,本章详细介绍了项目管理内容(对项目的管理、对项目成果的管理),让我们学会如何制定项目计划,并学习使用甘特图、任务网络图(由Microsoft Project创建)制定项目计划。第四章计算机系统工程,这一章让我们熟悉如何从全局的计算机系统角度考察软件问题,熟悉如何对软件项目做可行性分析。该章还涉及系统初步建模,其中的系统框架图、系统流程图,可由Microsoft Visio中的基本流程图创建。第五需求分析,这一章重点讲解了需求分析任务及过程,让我们学会如何获取业务需求、建立业务模型、进行需求验证。可通过Microsoft Visio中的组织图创建业务
树,通过Rational Rose创建业务用例、业务活动。第六章结构化分析建模,这一章重点讲解了使用变换型映射方法和事务型映射方法生成初始的模块结构以及模块结构的改进。说明了建立分析建模的原因和方法。我们可通过PowerDesigner创建实体联系图,通过Microsoft
Visio创建数据流图,通过Rational Rose创建事件状态图。第七章基于UML的面向对象分析建模,本章详细介绍了UML的基本模式、事物、关系及建模时用到的各种图进行了介绍。可通过Rational Rose进行面向对象分析建模。第八章概要设计,这一章主要讲解了概要设计任务及过程,介绍了系统构架、数据结构、程序结构等概要设计内容。第九章结构化设计建模,本章介绍了结构化设计建模的工具,让我们学会如何基于数据流进行程序结构映射和如何对程序结构进行优化。该章中的程序结构图由Microsoft Visio创建。第十章基于UML的面向对象设计建模,本章讲解了面向对象设计建模内容,让我们学习使用UML建立面向对象设计模型(逻辑结构、动态过程、物理装配与部署)。通过Rational Rose进行设计建模。
学习了这门课程之后,我发现无论是在上课,还是在学校里面做学生工作,技术性的工作就好比变魔术。其实原理是非常简单的,甚至可以说简单的可笑,但是当你就是做出这么一个简单的东西出来之后,一些外行们有时候会用崇拜的眼光看着你,觉得你很厉害,很高深莫测。但是制作的过程他们却不知道,也许知道之后他们只是会哑然失笑,原来这个东西的制作过程是如此的简单,这个可以说就是技术的魅力了。就比如说软件工程中所谓的需求获取,从字面上来看好像是一件很难的事,而其实就是一个谈判,辩论,交流的过程,只不过这个交流过程可能针对性比较强。所以说软件工程就是对生活的平凡小事的升华,它来自于生活却高于生活。当我们在毕业之后,软件工程是我们实际要运用的一项非常有用的技能,而且不仅仅局限于软件工程的范畴,即使我们是从事其它行业,不也是要从需求获取开始,一直有条有理地到最后成品的出炉吗?应该说这就是这门课的价值所在,它让我们既学会了管理又学会了技术。
在整个学期的学习过程中,我收获了不少,能够解决一些较为简
单的问题,在建模方面的能力有所加强。原来一直以为学好这门课程最重要的是会编写程序,其实则不然。我了解到软件并非是一些代码这么简单,在开发软件的过程中,编写代码的工作量其实只占不到所有工程量的30%,而后期的管理和维护更是占了60%到80%之多。一个完整的项目规划须包括:软件的定义、可行性分析报告、项目开发计划、软件需求说明书、概要设计说明书、详细设计说明书、用户操作手册、测试计划、测试分析报告、开发进度报告、项目开发总结报告、软件维护手册、软件问题报告、软件修改报告等多个文档,每个文档都要上级验收审查,而文档数量众多,要做好这点真的不是很容易,而恰恰写好文档正能保证完成软件工程其中一个目的的关键,既研究如何用最小的开销做出生存期较长的软件,再加上各个阶段都要进行周密的策划、详细的分工部署和人员安排,且各阶段要据具体情况不断的反复才能达成,所以代码只是开发软件这个浩大的工程的一个小小的过程。当然自己也有很多的不足之处,比如自己动手操作能力比较弱,实践经验匮乏,思维不紧密,不注重细节,耐心不够,每次遇到问题就去问老师,实战精神不强,所以导致很多知识学得也只是模模糊糊的。所以在以后的学习中我要加强自身综合素质的培养,要注意多看多练要注意结合实际,更要多思考,面对错误不要一范就问,要尝试自己去解决,这样才能学到这门课程的精华。我觉得学好软件工程首先要明白自己的学习目标究竟是什么,根据自己的实际工作出发,有针对性地在相应的学习方向上进行提高,制定出详细的学习规划。还要注意与其他科目的相辅相成,就像我们在学习语言时,要看看与C语言的联系,多思多想,把从各个科目学到的知识融汇贯通。
在本学期我们班每位同学都做了管理信息系统分析报告,其中就用到了软件工程中的不少知识。比如项目来源,项目任务,项目规划,系统需求分析,系统结构设计,系统详细设计,系统测试,系统维护等等。而我做的是酒店客房管理信息系统的分析报告,其中涉及到了以上几个方面,需要明确任务目标,准备相应的项目资源,对项目实施合理的规划,进行业务需求和功能需求分析,制定出数据字典,设
计出软件结构,并对其进行详细设计,比如算法设计,数据库设计和界面设计。画出进度安排表,组织结构图,业务流程图,数据流图,利用UML建模画出图形,通过这些图形能更直观地看出各个实体之间的关系,对系统有个比较整体的体现。
总之,在今后的学习中要注意多读书、多思考、多练习、多讨论,不断熟悉书本的基础,并以此为基础将其扩散开来,应用于今后的实践。不断锻炼自己,成为社会的可用之才,回馈社会。