第一篇:软件工程课程心得
软件工程设计总结
在我们整个软件工程过程中,我体会到了许多,也学到了许多。
在项目要进行自由分组后,我们的项目小组便诞生了。我们小组由七个成员组成,在相互商量后我们也确定了我们组的项目,是做一个图书管理系统。我们也随即做了分工,由于我们团队只有我和另一名成员有类似的项目开发经验,所以我们便要担负起更重的任务。最后由于在整个团队中,对于界面开发这一块只有我的开发经验较深,所以我便担任了主要的界面设计人员。我们的项目也正式开始了。
对于文档在软件工程中的作用,我在这次项目开发过程中有了更加深刻的理解。文档在软件开发过程中是很有用的,文档是一项必不可少的东西,但文档也不能太多,太过繁琐,如果是那样就不太好了。首先我们要明确开发过程中为什么要写这些文档,文档的最根本的作用是为了更好的沟通。一个项目或产品可能需要延续很长的时间,开发过程中可能需要很多的环节,可能会遇到很多的问题和很多的解决的方法,这时,我们需要文档的帮助,我们需要有一个东西来记录,我们需要有一个共同的声音。文档完整即可,每一份文档说明一个问题,无需将多个文档的内容放在一个文档的里面。除了重要阶段形成文档,其它部分都只是讨论或者说是想法。不要让文档成为累赘,如果真是这样,我认为就是该考虑写这些文档的必要性的时候了。我们在文档的时候,一定要明白为什么要写这些。
在这一周里,我还对软件工程有了新的理解。在我以前的理解当中,软件工程,无非就是一个人或者几个人或一个团队集中在一起进行编写代码的工作,以实现开发出所用的软件。但现在我明白了,软件工程的作用,就是告诉人们怎样去开发软件和管理软件。具体地讲,它表现在与软件开发和管理有关的人员和过程上。所以,软件工程就不仅仅是单一的编程过程了。它包括了系统分析->建模->概要设计->详细设计->编码->测试->维护。编码可以理解为编程,这个只占总时间的20%左右。编程只是其中的一小部分。
当然,在这次项目过程中我也发现了自己的一些问题。如现在的网站开发技术还不够强,在和小组成员相互沟通上还不够积极等。我希望以此为契机,在将来的项目开发中能做得更好。
第二篇:软件工程课程心得
软件工程项目总结
在我们整个软件工程过程中,我体会到了许多,也学到了许多。
在项目要进行自由分组后,我们的项目小组便诞生了。我们小组由七个成员组成,在相互商量后我们也确定了我们组的项目,是做一个校园 b2c电子商务网站。我们也随即做了分工,由于我们团队只有我和另一名成员有类似的项目开发经验,所以我们便要担负起更重的任务。最后由于在整个团队中,对于界面开发这一块只有我的开发经验较深,所以我便担任了主要的界面设计人员。我们的项目也正式开始了。
需求调研和分析对于软件开发过程至关重要。我们在开发时如果不进行调研和分析,那么对于后来的项目进展将产生致命的后果。我们在项目的开发中便遇到了这样的问题。老师作为我们的客户,他对这个校园 b2c电子商务网站的要求便是我们必须了解的,我们也必须以客户的要求为根本构建我们的这个系统。我们开始自己随意的计划整个网站的设计,然后报给老师,老师作为一个客户并不是全部认同,随后我们也必须按着客户的要求更改我们的设计报告。我也明白了,再做一个系统时,必须随时和客户保持沟通,随时了解他们需要什么,他们想要什么功能。如果我们不去和客户沟通,不去调研客户的需求,做出来的系统即使在我们看来是一个很好,很完美的产品,但是如果客户不认同,那么我们所做的一切都是徒劳,还要返工去修改,费时费力。所以在做任何一个项目时,前期的需求调研和需求分析都是必须的,这是在做一个项目的基本,是关系成败的重要一环。
对于一个项目,它的需求设计也非常重要。在我们的校园 b2c电子商务网站开发的过程中,遇到了一些问题,如客户提交购买确认后,我们如何确定应该以什么方式将货物给客户,还有以什么确定货物的送达地点,客户的订单在哪里处理,订单以什么方式惊醒处理,在管理员应该实现的功能上反复增删等,这些问题很多都是由于设计不够清晰,不够完善而导致的。出现的这些问题很多都是非常棘手的,我们为了解决这些棘手的问题浪费了大量的时间,我们不得不在工程代码上改了又改,在数据库里增表、删表、加数据、减数据,当然,在文档里也要做出相应的修改以适应新的功能。还好,我们能及时地发现问题,通过相互
沟通讨论,问题也得到了解决。通过总结,我们也意识到,我们大家在做需求分析和进行需求了解时仅仅考虑了一些基本的功能,而至于管理员和客户之间的联系,以及具体的一些流程我们都没有深究,而导致我们到后期花费了大量的时间用于修复之前没有考虑周全而带来的问题。如果我们的需求设计能够比较清晰和完善,那么我们在开发过程中便会很明白的知道我们应该实现什么样的功能,在数据库里应该怎样建表,以什么方式插入数据,从而可以避免反复修改工程的问题,也能避免出现可能毁坏整个工程的问题。整个工程的需求设计对于一个项目的顺利进展至关重要。
对于文档在软件工程中的作用,我在这次项目开发过程中有了更加深刻的理解。文档在软件开发过程中是很有用的,文档是一项必不可少的东西,但文档也不能太多,太过繁琐,如果是那样就不太好了。首先我们要明确开发过程中为什么要写这些文档,文档的最根本的作用是为了更好的沟通。一个项目或产品可能需要延续很长的时间,开发过程中可能需要很多的环节,可能会遇到很多的问题和很多的解决的方法,这时,我们需要文档的帮助,我们需要有一个东西来记录,我们需要有一个共同的声音。文档只不过是一个准绳,将开发中的各个树枝树叶扶正。如果,这个准绳太多太紧,大树可能会发育的很高很直,但是就是有些畸形,如果这个准绳太少太松,大树可能就会变成灌木丛。文档的多少、繁简是有度的,绝对不能说越多越好。我觉得,文档需要说明解决问题的方法而不是解决问题的理论,因为解决问题的理论是在文档形成中做到的。文档完整即可,每一份文档说明一个问题,无需将多个文档的内容放在一个文档的里面。除了重要阶段形成文档,其它部分都只是讨论或者说是想法。不要让文档成为累赘,如果真是这样,我认为就是该考虑写这些文档的必要性的时候了。我们在文档的时候,一定要明白为什么要写这些。
在整个项目开发过程中,我们也同时遇到了许多程序接口问题,页面和功能相结合的问题,数据库建表的问题,这些问题都是源于我们项目小组成员之间的沟通不足。我深刻认识到,在项目开发时,项目小组中各个成员之间的相互沟通是非常重要的。如果我们要在功能方面作出修改,那么程序人员和页面人员及数据库人员就必须相互沟通,共同对整个程序作出相应的修改,这样才能避免最终整合时出现问题。
在这十个周里,我还对软件工程有了新的理解。在我以前的理解当中,软件工程,无非就是一个人或者几个人或一个团队集中在一起进行编写代码的工作,以实现开发出所用的软件。但现在我明白了,软件工程的作用,就是告诉人们怎样去开发软件和管理软件。具体地讲,它表现在与软件开发和管理有关的人员和过程上。所以,软件工程就不仅仅是单一的编程过程了。它包括了系统分析->建模->概要设计->详细设计->编码->测试->维护。编码可以理解为编程,这个只占总时间的20%左右。编程只是其中的一小部分。
在这次项目里我完成了许多工作,在界面设计上我完成了,首页、全部的商品页面、全部的用户页面及部分管理员页面的制作,在后期项目整合过程中修改了功能和界面结合时出现的bug,还有数据库插入数据及解决数据库集中整合时出现的问题。这些工作我都顺利完成了,虽然并不能算是非常的出色,但也算是尽力了。现在看到自己辛劳的成果,我感到很欣慰。
当然,在这次项目过程中我也发现了自己的一些问题。如现在的网站开发技术还不够强,在和小组成员相互沟通上还不够积极等。我希望以此为契机,在将来的项目开发中能做得更好。
第三篇:软件工程课程
软件工程专业本科生课程设置
时间:2009-03-22 08:47 来源: 作者: 点击:1059
学院在课程体系制定、课程计划安排上制定了严格的规定与规范的操作程序。课程体系、教学计划由学院主管院长负责,对国内外大学、大型IT企业进行调研、分析,确定社会对人才的需求和人才知识、能力、素质的构成,而后由主管院长召集相关教师起草方案,再经学院教学指导委员会专家和企业专家进行论证,并报学校教务处审核、批准,由此形成本科生、硕士研究生的培养方案。同时,根据学科发展和社会需求的变化,学院通过增加或变更选修课、开设讲座等方式动态调整。目前,软件学院主要课程设置按课程体系关键域分类如下。
1)数学基础(本科):大学数学I、概率论与数理统计、数值分析、离散数学等。
2)软件基础(本科):数据结构、汇编语言程序设计、面向对象编程与设计、可视化程序设计基础、操作系统、数据库系统、C/C++程序设计、算法分析与设计、编译原理、软件工程等。
3)硬件基础(本科):数字电子技术、计算机系统基础、数字通信原理、微机原理与技术、计算机网络原理等。
4)专业技术(本科):大型数据库技术、软件体系结构、系统级编程技术、数据挖掘、嵌入式系统、J2EE应用开发、.NET架构软件开发、设计模式、建模与测试、信息安全、软件开发案例分析、并行程序设计、多媒体技术及应用、网络与分布式计算、计算机图形学等。
5)工程管理(本科):软件开发项目管理、软件质量管理与控制、企业管理、网络营销、商务谈判技巧、软件度量及应用、心理学、商务英语等。
6)数学基础(双证硕士):应用统计、组合数学、应用数学方法等。
7)软件理论基础(双证硕士):现代软件工程、面向对象与构件技术、高等计算机算法、移动计算等。
8)数学基础(工程硕士):运筹学、工程数学基础、应用数学方法等。
9)软件理论基础(工程硕士):分布式系统、现代软件工程、软件重用与构件技术、软件工程实例分析等。
第四篇:软件工程心得
学习软件工程这门课程已经有一个学期了,整一个学期下来,应该说还是有许多值得肯定的地方的,其实在我看来,软件工程与其说是一门课程,不如说是一门思想。是一个如何去分析和处理问题的过程,应该说其范畴已经远远不止局限于该门课程,成为了一个综合的一个能够解决问题的思想集合。
在上课的时候我还是很认真地去听老师所讲述的内容的,我觉得他的思想和我一向而来的培养计算机学生综合素质的理解还是在一定程度上不谋而合了,所谓的需求获取,那就是一个谈判,辩论,交流的过程,已经不是单纯的编编程序就能解决的问题了。从我所看到的听到的来说,我最怕的就是计算机系的学生被别人说成是个带着厚眼镜的,只能够在电脑前编编程序的,在交际场上不知道说什么而一个字都说不出来的人。我觉得这样的人进入社会之后是没有什么前途的,起码他们缺乏了与人沟通交流的能力。而这门课程在一定程度上给了我们这些学生一个机会来锻炼自己在另一方面的能力,设想一下,一个又有技术又能够与人交流合作的人所取得的成就自然要比一个单单只会编程序的人要大得多。
其次,这门课程教给了我们在完成一个实际项目时的一般程序及过程,我认为这是一份非常具有实际意义的教学内容。当我们在毕业之后,这是我们实际要运用的一项非常有用的技能,而且不仅仅局限于软件工程的范畴,我们即使是从事与其它行业,不也是要从需求获取开始,一直有条有理地到最后成品的出炉吗?应该说这就是这门课的价值所在。无论是在上课,还是在学生会里面做学生工作,我都深深地感觉到,技术性的工作就好比变魔术,其实原理是非常简单的,甚至可以说简单的可笑,但是当你就是做出这么一个简单的东西出来之后,一些外行们有时候会用崇拜的眼光看着你,觉得你很厉害,很高深莫测。但是制作的过程他们却不知道,也许知道之后他们只是会哑然失笑,原来这个东西的制作过程是如此的简单。这个可以说就是技术的魅力了,而作为需求获取及之后的一系列过程则是类似于魔术揭秘的过程,但是作为这个秘密我们并不需要一揭到底,至于揭的程度如何那就是我们那就是我们学出的程度如何了,我们要让对方知道我们在做什么?以及如何去做?这些东西需要我们以一定的技巧叙述出来,所起到的作用就是能够让对方了解自己的进度,却又能够不让对方来干涉自己的工作过程。因为我们是技术员,对方只是外行,即使对方知道了这个魔术的操作过程,也并不代表他们就能够向变着魔术的我们来随便修改这个魔术的变法,况且我们能够用不同的过程来得出一个同样的结果,这个过程的得出的主动权如何掌握在我们的手上,就看我们如何以高明的方式来揭开这个魔术的谜底了。
当然了,在纯粹的理论上,我觉得开设这样一门课程是很成功的。但是毕竟现实里有太多的不确定的因素。最重要的因素就是授课的老师和听课的学生。这两个可以说是这门课成与败的决定性的因素。
作为老师方面来说,我觉得给我们上试验课的老师非常的优秀,作为一名了有十几年工作经验的老船长,看问题的确是有他自己独特的一套方法,我的话对他也是非常崇拜的。但是周日晚上的课程我还是有比较大的意见,首先,作为学生来说,最不希望上课的时间就是周五的晚上和周日的晚上,因为这是个我们进行调整的时候,前者的调整是为了假期的到来,后者的调整是为了准备学习的开始,这个时候的上课一般来说都是学生比较反感的。其次,对于我来说,原来小的时候非常崇拜那些有着高学历的人才,什么硕士,博士,博士后都是被放在神坛上的人物,觉得他们很厉害,走路都会散发光环。但是在我上了他们这些人的课之后我发觉我真的是很失望。作为一个具有高学历的人来说,他能够自己迅速的吸收知识这点的确是令人敬佩,但是他能不能够把自身所吸收的知识传授给他的学生,那就是一个未知之数了,虽然的确这是一门枯燥的课程,但是并不代表老师就可以在讲台上讲课没有一点激情,或者说没有一点能够让我们想听下去的欲望,这个不得不说是一件非常讽刺的事情。子不教,父之过;教不严,师之惰。虽然学生们也有一部分的责任,但是把一切责任都推到学生们的身上那也是非常的不公平的。
作为我们学生来说,当然也应该负起比较主要的责任。在大学里有了太多的基础课程,基础课程大多都比较枯燥无味,也许在第一个学期里我们还能够保持着新鲜感,但是在5个学期之后,可以说再有新鲜感就是一件比较困难的事情了,我们都已经开始变得迟钝了,现在出现了一门新鲜的课程,可能同学们比较难把那样不好的状态一下子改变过来。其次的,学生们没有认识到这门课程的价值。这门课的价值我已经在上面说过了,是不言而喻的。但是并不是每个同学毕业之后都回从事计算机行业,也不是每个同学都知道这门课程的意义已经不仅仅局限于计算机这个范畴,但是他们不知道,无知者无畏也。既然和我没什么关系,那我就不听,反正听了也没什么用,很多同学报着的就是这么个心态。对于这样的心态,我表示理解,也表示悲哀。在没有彻底了解一件事物的本质之前,我们是没有资格向这件事物随便的指手画脚的。最怕的就是在没有了解之前就把这件事物否定。如果有了这样先入为主的思想,那就比较没救了。所以作为我们来说,还是更需要得深入了解下这门课所起到的作用之后再下结论也不迟。只是有一点我还是觉得比较奇怪,现在被人嗤之以鼻的传销在当时能够吸引如此大的一批人,而且那些受害者明知道这件事情是不好的但是还会去做,就是因为“洗脑者”的口才说服了他们,那作为老师来说,如何来说服学生们来上一门正确的课程应该说是要相对的容易很多吧,但是我觉得这样的过程在我们的大学课程里真的是少之又少啊。今天在这里写了很多,算是我对软件工程这门课程的一点点心得体会,也许是正确的,也许在一定的程度上存在着观点的偏激错误,但是起码这些东西是我觉得存在着的一些问题,但愿软件工程这门课程能够开的越来越好,让更多的学生们能够从这门课程中受益,在以后社会残酷的竞争之中存活下来!
第五篇:软件工程”课程小结
“软件工程”课程小结
一、软件工程学科体系
软件工程的学科体系为1234567:
1、一条主线:
软件工程的生存周期
2、二个技术层面:
软件工程开发技术、软件项目的管理技术。
3、三大活动过程:
《ISO/IEC 12207信息技术—软件生存期过程》中将软件开发需要完成的活动概括为:
主要过程、支持过程、组织过程
4、四种软件开发方法:
结构化分析与设计方法(SADT)、面向对象的开发方法、构件组装的软件开发方法、软件形式化开发方法。
5、五个内容层次:
工具和环境层
方法和技术层
过程和模型层
标准和规范层
质量和核心层
软件工程内容的层次结构
6、六大主要软件开发模型
瀑布模型、快速原型化演化模型、增量模型(螺旋模型)
面向对象模型(喷泉模型)、基于构件的开发模型、形式化开发模型。
7、软件工程的7条基本原则。
二、软件工程课程分章小结
第一章 概论
掌握和理解的概念:
软件的定义、软件的特点、软件的分类、软件危机、软件工程的定义、软件工程的框架、软件生存周期、软件过程、软件过程模型。
第二章系统工程
掌握和理解的概念:
系统元素、业务过程工程、产品工程、系统工程的任务、可行性分析
第三章需求工程*
掌握和理解的概念:
什么是软件需求、软件需求的分类、需求工程的目标、任务、需求工程的主要活动、需求获取活动的目标与任务、需求分析活动的目标与任务、需求建模的方法。
第四章 设计工程
掌握和理解的概念:
软件设计的目标、任务、软件设计的基本原则(抽象与逐步求精、模块、模块化、模块独立性、模块内聚、模块耦合、信息隐藏、软件体系结构)。
第五章 结构化分析与设计*
1、掌握和理解的概念:
结构化分析的思想、结构化分析的过程、数据流、分层数据流图、数据字典、加工描述。结构化设计的思想、结构化设计的过程、变换型数据流图、事务型数据流图、软件系统结构图(SC图)
2、掌握和应用的基本方法:
(1)结构化分析的建模方法。
采用分层DFD、DD、加工描述等工具建立系统的需求模型。
(2)结构化设计方法:将数据流图采用变换分析方法、事务分 析方法转换为软件结构图的过程
第六章面向数据结构的分析与设计
掌握和理解的概念:面向数据结构方法的基本思想
第七章面向对象的分析与设计
1、掌握和理解的概念:(知识点)
对象、类、消息、方法、继承、面向对象方法的目的、面向对象方法的特点、统一建模语言UML、用例图、类图、活动图、状态图、顺序图
2、掌握的方法:
(1)面向对象分析的建模方法。
采用统一建模语言UML构造面向对象的软件系统的需求模型(用例图)。
(2)面向对象设计的建模方法。
构建系统的设计模型:类图、活动图、顺序图、状态图
第八章基于构建的软件开发
掌握和理解的概念:构件的概念、构件的三大标准、构件软件工程的基本方法
第九章人机界面设计
掌握和理解的概念:界面的概念、界面设计遇到的问题、界面的黄金原则
第十章程序设计语言和编码
掌握和理解的概念:
程序设计语言、程序设计语言的3种评价观点(技术的观点、工程的观点、心理的观点)、语言的分类、选择语言的准则、程序设计风格(良好的编程习惯)、编程的标准和规范。第十一章软件测试
1、掌握和理解的概念:(知识点)
软件测试的定义、软件测试的目的和原则、白盒测试、黑盒测试、测试用例、单元测试、集成测试、确认测试、系统测试。
2、掌握和应用的基本方法:
基于白盒测试的测试用例的构造方法(逻辑覆盖)
基于黑盒测试的测试用例的构造方法(等价类划分构造法)第十二章软件维护
掌握和理解的概念:
什么是软件维护、软件维护过程的开始和结束的时间点、软件维护的类型
三、建模基本技能实例:
1、结构化分析建模方法
(1)某机票预定系统业务活动如下:旅行社把预定机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进该系统,系统为旅客安排航班,打印出取票通知和帐单,旅客在飞机起飞的前一天凭取票通知和帐单交款取票,系统核对无误后打印出机票给旅客。用SA法对它进行分析,画出DFD图,给出DD及加工说明。
(2)设想一个简单的全屏幕编辑器(Editor),至少完成4种编辑功能(如插入、删除、替换等功能)用SA方法对它进行分析,并画出系统得分层DFD图,并写出DD和加工说明。
2、结构化设计建模方法
3、面向对象分析建模方法
4、软件测试方法
文件:乘客信息、航班信息、取票、。。
源和宿:旅客、航空公司、系统管理员、银行。。
加工:预定、安排航班、取票、打印通知和取票、打印机票
数据流:
1,乘客--------(个人信息、订票信息)------->预定乘客信息
2,乘客信息---(旅行时间、出发地、目的地)安排航班-打印—>乘
客
3,