第一篇:软件 工程的学习心得
学习软件工程的心得体会
学习了这门课程, 还有老师们的多元化教课,不但使我们从理论上掌握软件工程,还有从不同的实例,让理论和实践得到了很好的结合,老师主要是从六个方面来描述软件工程,分别是信息和多媒体,JAVA编程技术,数据库系统,布线系统,管理信息系统,网络编程.有很多都是老师们多年的工作经验的总结,下面是我听课后自己的一点心得和自己对软件开发一点感想,我知道还有好多的不懂,只有通过不断的学习才能一一解开.信息和多媒体
课中老师给出一些案例,其中主要展示了Authorware,Visual Basic软件,让我了解信息多媒体中,用Authorware开发出的一些管理系统,并用在触摸屏上,而在实际的生活中是很多见的,比如在什么展览厅中,在开发这类软件中特别要注意的地方是界面方面和功能方面要一目了然,要想像一下别人在用你系统的时候是用手指去触摸操作而不是鼠标,特别在数据库后台的时候是整机的,所以在设计时一定要求完美,做成系统就不应该有什么要改的,还有要有扩展性,可方便的与各种外部设备挂接,实现数据交换,所以在这方面开发的时候,一定要从用户的角度来看,思维不能用传统的开发思想,我认为做这类系统时候,并不是开发环境的难点,最重要的是思维的转变,这样才能做出用户用得满意的系统.JAVA 这门语言的发展是相当迅速的,老师关键讲了Jsp,目前流行的四种开发WEB页语言,Jsp,Asp,Php,Asp.net,而Jsp是从JAVA语言中派生出来的,继承了JAVA的优良性,所以Jsp的强大之处就在这了,轻松的跨越操作系统的平台,而且他不像Asp, 所有的解析全部由IIS 来完成, 量过大时,IIS就无能为力,Jsp和Tomcat的组合是相当完美的,Tomcat的强大之处就在他在处理请求页面的时候实现了多线程分配,这样就能保证访问量不会过量占用内存和CPU,在开发Jsp的时候,老师给我们一款式Jcreater,可以看到JAVA的开发工具界面都是非常友好,Jsp与Asp有许多相类的地方,相比较,Jsp有两方面的优点,首先,动态部分用JAVA编写,而不是VB Script或其他Microsoft语言,不仅功能更强大而且易于使用.第二,Jsp应用可以移植其它的操作系统和非Microsoft的web服务器上.再者Jsp的安全性和访问速度也是在其它几个web开发语言中出类拨萃,JAVA语言的纯面向对象让我们在Jsp中得到真正的体现,Jsp的后台数据库很随意,不过Mysql是最佳选择,其实在掌握了Asp的开发后,我认为Jsp的开发就是在于语言的不同,数据库的开发思想都是相通,最重要是做些开发,慢慢的就知道其中的一些技巧和经验.数据库系统
计算机中最重要就是数据,现在数据库中比较大型号的系统就是SQL SERVER,MY SQL,ORACLE,在windows下最常用的是SQL SERVER,从数据库的设计到数据库的实现, DBMS的研制包括研制DBMS本身以及以DBMS为核心的一组相互联系的软件系统。研制的目标是扩大功能、提高性能和提高用户的生产率, 数据库设计的主要任务是在DBMS的支持下,按照应用的要求,为某一部门或组织设计一个结构合理、使用方便、效率较高的数据库及其应用系统,在我们使用的SQL SERVER中,其实是把数据库原理都己封装好,所以我们就只是新建Database,再建Table,我们只是需要调用就行,再用SQL语句来实现,读取,添加,删除,修改,更新等功能,数据库对于用户来说就是这些基本的功能,数据库理论主要集中于关系数据的规范化理论,关系数据理论,但随着人工智能与数据库理论的结合,新的数据库理论如演绎数据库系统,知识库系统,随着数据库的发展,以后的各个领域都将有数据库系统的存在,数据库将和我们的生活紧密相连,新型数据库理论的出现必将有新的数据库系统,而新的系统将趋于界面简洁化,使用简单化,功能强大化,可扩展性强,还有就是智能性强!JAVA 这门语言的发展是相当迅速的,老师关键讲了Jsp,目前流行的四种开发WEB页语言,Jsp,Asp,Php,Asp.net,而Jsp是从JAVA语言中派生出来的,继承了JAVA的优良性,所以Jsp的强大之处就在这了,轻松的跨越操作系统的平台,而且他不像Asp, 所有的解析全部由IIS 来完成, 量过大时,IIS就无能为力,Jsp和Tomcat的组合是相当完美的,Tomcat的强大之处就在他在处理请求页面的时候实现了多线程分配,这样就能保证访问量不会过量占用内存和CPU,在开发Jsp的时候,老师给我们一款式Jcreater,可以看到JAVA的开发工具界面都是非常友好,Jsp与Asp有许多相类的地方,相比较,Jsp有两方面的优点,首先,动态部分用JAVA编写,而不是VB Script或其他Microsoft语言,不仅功能更强大而且易于使用.第二,Jsp应用可以移植其它的操作系统和非Microsoft的web服务器上.再者Jsp的安全性和访问速度也是在其它几个web开发语言中出类拨萃,JAVA语言的纯面向对象让我们在Jsp中得到真正的体现,Jsp的后台数据库很随意,不过Mysql是最佳选择,其实在掌握了Asp的开发后,我认为Jsp的开发就是在于语言的不同,数据库的开发思想都是相通,最重要是做些开发,慢慢的就知道其中的一些技巧和经验.布线系统
课上老师从他做过几个工程来讲,其中自上而下的设计思路很是有用,就是从顶层开始,网络服务,NetwokrSystem,硬件系统,OA_CA_BA,网络系统,综合布线,楼层,设计是从上而下,而实施时是从下而上的,这样就有一个比较开放的设计模式,在以后的大楼中,都会是楼宇自动化和智能大厦,而综合布线系统则更是要考虑各方面的困素,如楼层的设计,你设计出来的布线系统一定要符合大楼的实际情况,这样才能做到因地制宜,从根本上做好.综合布线系统可划分成六个部分,其中三个子系统:配线(水平)子系统;干线(垂直)子系统;建筑群子系统;外加三个部分:工作区、设备间、管理 独立的需要设置终端设备的区域宜划分为一个工作区。工作区应由配线布线系统的信息插座延伸到工作站终端设备处的连接电缆及适配器组成。工作区的每一个信息插座均应支持电话机、数据终端、计算机、电视机及监视器等终端的设置和安装.配线子系统应由工作区的信息插座、信息插座至楼层配线设备(FD)的配线电缆或光缆、楼层配线设备和跳线等组成.干线子系统应由设备间的建筑物配线设备(BD)和跳线以及设备间至各楼层配线间的干线电缆组成, 干线子系统应由设备间的建筑物配线设备(BD)和跳线以及设备间至各楼层配线间的干线电缆组成.设备间是在每一幢大楼的适当地点设置电信设备和计算机网络设备,以及建筑物配线设备,进行网络管理的场所。对于综合布线工程设计,设备间主要安装建筑物配线设备(BD)。电话、计算机等各种主机设备及引入设备可合装在一起。
设备间内的所有总配线设备应用色标区别各类用途的配线区 上面都所都是书上的一些慨念性知识,在设计上划分这些子系统时就是从这些慨念来区分,这样就能在本质上区别他们之间的不同,就像老师所说,跟着别人做一次工程,就什么都明白了,设计布线系统一定要从做实际出发,做过几次后,一些程序都会明白,所以一定要多实践!管理信息系统 信息系统(Information System, IS):基于计算机技术、网络互联技术、现代通讯技术和各种软件技术,各种理论和方法于一体,提供信息服务的人机系统.它的组成是信息源,信息处理器,信息用户,信息存储器,信息管理者和传输通道.在信息系统中
信息管理者起着主导作用,做一个信息系统是要靠几个人一起合作的,信息系统开发的阶段可分为,规划阶段,分析阶段,设计阶段,实施阶段,支持阶段,其中最重要的就是第一阶段,它是由系统分析员,也是总体的设计师设计师完成,而我们传统的思想中的程序员写的代码应该是很重要的,但是事实上并不是这样,代码的编写是在实施阶段,所以不要以为在做系统时,代码是很重要的,可能我们在做系统时,从规划到实施都是一个人来完成,所以并没有意识到设计的重要性,只有一个好的设计才能从根本做一个好的系统!网络编程
在网络编程中可以用到的语言有很多,VB,VC,C++,JAVA,Delphi, 还有就是微软VS.net,它是从框架的模式来总估设计,最新的Delphi2005也是支持.net框架,框架的慨念我个认为是,.net框架的核心是通用语言运行,.net框架中的类为开发人员提供了统一的,面向对象的,层次化的,可扩展性的类库集(API),现今,C++开发人员使用的是微软基础类库,JAVA人员使用的是WINDOWS基础类库,而Visual Basic用户使用的又是Visual Basic API集.就是说.net框架统一了微软当前同的框架,这样,开发人员不再而需要学习多种框架就能顺利编程.还有就是通过创建一个公共的跨编程语言的API集,.net框架可实现跨语言继承性,错误处理功能和调试,实际上,从Jscript到C++的所有编程语言都是相互的,开发人员可以自由选择理想的编程语言.网络编程在现在己成为一种流行的趋势,互连网的迅猛发展让网络编程成为程序员发展的新空间,而以后什么语言最流行,可能就是JAVA,VS.net,Delphi这三种语言占大数了,记得比尔盖次曾经说过,我们的编程水平还是非常的低,在以后的时间将有很大的发展空间,很可能我们以后所用的系统也许就高语音识别,或人的触觉来操作.而在我们身边,QQ这个软件可以说是中国人开发的最为成功的网络软件,不但是方便使用而且成为当前互连网上最可靠的点到点的网络传输工具,还记得原来用的第一款QQ软件,就只能单纯发文字,当然也是互连网的发展给了QQ一个非常好机遇,网络编程的发展让我们在互连网通讯越来越方便,对我们学计算机的人也是机遇和挑战.并存.以上就是学习这门课程的心得,软件工程并不是教你怎么写程序而是教你在理论上如何设计最为成功的软件开发,学完后也许认为什么都没有学到,但是在做软件开发上它能给你指导,设计出可靠,可行,可实施的方案.
第二篇:《软件工程》学习心得
《软件工程》学习心得
时光匆匆,不知不觉间《软件工程》的课程已经快学完,虽说没有具体的项目来开发应用,但我们知道软件工程是将系统化的,规范化的,可度量的方法应用于软件的开发,运行和维护的过程,在整个学习期间,总的来说还是学到了很多实用的东西,老师的介绍,教会我们如何去分析和处理问题,教会我们编写项目软件的流程和注意事项,总的来说还是获益匪浅的。
初学软件工程,或许很多人都会迷茫,不知道软件工程学有何用,其实,软件工程还没有精确地定义,但老师的实例我是深有体会,比如巧用建筑学知识,软件工程可以指导你分析出框架结构,项目实现的大体步骤及具体的细节等等,高效的开发、使用及维护软件,软件工程是必不可少的。
下面我来回顾一下各章的内容,第一章初识软件工程,这一章主要讲解的是一些概念性和基础性的内容,例如软件的概念、特性,软件危机的主要表现,软件工程的概念以及软件生存期、典型生存期模型等等。第二章软件需求分析,这一章主要讲了需求分析的任务,需求分析的步骤及各种描述工具、分析文档;需求的各种描述工具有实体关系图、数据流图、数据字典、等等;这是软件项目开发的第一步。第三章软件设计,本章详细介绍了概要设计、详细设计及用户界面设计,我们掌握概要设计方法及详细设计方法。第四章程序编码,这一章重点讲解了结构化程序设计,设计风格及效率,程序设计语言的选择。第五章面向对象技术,这一章重点讲解了面向对象的概念、分析及设计,掌握什么是面向对象,面向对象有哪些优缺点,了解面向对象的分析和设计方法。第六章统一建模语言UML,本章讲解了静动态建模机制,理解UML的形成、内容、特点及应用领域并掌握例图、类图进行静态建模的方法。第七章软件测试,本章详细介绍了软件测试方法及黑白盒测试用例设计方法,还讲解了软件测试步骤。第八章软件维护,本章主要介绍软件维护的任务、软件维护活动以及软件维护方法进行了介绍。
在学习软件工程过程中,或许有诸多不解,我们要从整体概念上较好地理解和把握、学好软件工程,学习时要注意多看多练要注意结合实际,更要多思考,面对错误不要一范就问,要尝试自己去解决。但是还要注意什么都学,肯定是什么都学不透的,要集中精力打攻坚战,学习软件工程首先要明白自己的学习目标究竟是什么,根据自己的实际工作出发,有针对性的在相应的学习方向上进行提高,制定出详细的学习规划。还要注意与其他科目的相辅相成,就像我们在学习面向对象分析的时候要结合大一学习的面向对象及其方法学这一专业科目进行研究拓展,多思多想,把从各个科目学到的知识通汇贯通。
在写软件的时候,我们首先要有整体的结构和思路,这样才能照着一定的思想一定思路去写下去,有人说其实写软件并不难,只要给你一个思路你就可以不断地往下写。我觉得确是如此,其实我们平时写软件我觉得并不是很难的事,平时即使遇到处理不了的技术问题,哪里编译出现错误等等其实都可以在网上提问。技术问题一般我们都可以在网上得到答案,但软件的思想不是我们看了一下就能真正理解的。写软件一般都是在沿着现有思路一步一步地写下去,而软件工程注重于宏观的来构思整个软件的思路,重在创新。所以说软件工程最重要的核心就是——创新。任何产品的成功出现都是因为它成功的创新,虽然创新的程度不一样,而软件也一样最重要的不是代码的编写而是软件的分析与整体构思。学习软件工程对软件工程有了初步的认识,带着软件工程的思维或说是眼光在做项目的同时不断积累经验,总会有能够独立分析与构思整个软件系统能力的那天。但并不是说可以独立分析软件系统就是软件工程的最终目标,毕竟学无止境,知识是无尽头的,我们仍需要不懈的努力。
下面我们来了解一下软件工程的开发流程,生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤如软件工程开发流程图1,软件工程过程主要包括开发 过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规 约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。
软件工程开发流程图 1 在学习的过程中,老师让我们开发一个图书管理系统,让我们第一次通过团队做项目开发,我们都有很多的体验,知道团队的合作非常重要,争议固然存在,但需要的是通过讨论、协商,群策群力,在不断地磨合中达成一致与默契,应该注意的是团队的合作要合理的分工;在一个团队中,团队的成员能力各有高低,应该互相尊重,各取所长,不宜妄自菲薄;组长需要多加协调,组员积极配合才能合作愉快,才能完全的发挥出团体的实力。
软件工程课程虽已结束,但我对于软件工程的学习才刚刚开始,张老师的课让我受益匪浅。我体会到项目管理的重要性,随着软件规模、复杂度的不断增加,项目开发中更多的是协作、管理和控制。我学习到很多一般性的方法,例如:需求获取、模块化、分治、估算、计划等等。有了软件工程基本的知识,我们无论是做项目还是写软件都有了一套方法,这将是解决问题的有效途径,我们要学会合理的利用。
在这个飞速发展的软件时代,随着软件应用的日益广泛,软件规模日益扩大,《软件工程》显得格外的重要,《软件工程》强调基本概念和基本知识的理解掌握,又侧重软件项目的分析、设计、实现和维护的基本技能;我们已经学到理论的知识,但是软件的开发测试对逻辑思维、学习能力、反应思维要求很高,我们仍需要不断地锻炼严密和逆向的思维,在具体的项目中获得实践的经验,实践才是检验真理的唯一标准,只有将理论与实践结合,才能发挥我们所学的知识的作用,才能更直接的创造效益,才能为国家和社会有所贡献。
最后,要感谢辛勤付出的张老师,是你让我学到这么多实用的知识,让我获益良多,在此说一声“谢谢你!”
第三篇:软件工程学习心得
学习软件工程的过程的学习
【摘要】:软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发系统系统平台,标准方面。在现代科学发展中软件应用的范围越来越广。一款软件的黄金寿命有线。而大家主要玩的是软件。苹果的手机卖得很贵的一个原因是因为它的软件。大家玩的就苹果的软件和知识产权。
关键词:软件工程、学习、学习心得
【正文】
1)我们专业是软件服务外包。这学期的学习课程有数据结构、java语言、软件服务外包与软件企业成长、CMM体系还有软件工程。而这些学科是辅助软件工程开发项目的条件。
2)软件是一种特殊的产品,认们通常看到的是它的载体,而真正具有意义的是载体上的计算机或信息
软件既不同于通常的精神产品,也不同于常见的物质产品。作家的作品是一种精神产品,它没有使用价值却可以供人阅读欣赏。若把软件也看成是一种作品,却发现其价值在于供人们使用,无人喜欢读它的源代码
一、明确目的1我们要明确说明是软件工程。它的实质,还有他包含的内容。软工程包括的几个方面。
3)可靠性:明确对系统进行修改而不增加原系统的复杂性
4)有效性:系统能最有效地利用计算机的时间资源和空间资源
5)可靠性:能防止因概念、设计和结构等方面的不完善造成的软件系统失效,具有挽回因操作不当造成软件系统失效的能力。
6)可理解性:可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植或重用。
二、软件开发的过程
1)软件工程的7条原理
用分阶段的生命周期计划严格管理、坚持进行阶段评审、实行严格的产品控制、采纳现代程序设计技术、结果应能清楚地审查、开发小组的人员应少而精、承认不断改进软件工程实践的必要性【1】
用分阶段的生命周期计划严格管理。应该把软件生命周期分成若干阶段,并相应制定出切实可行的计划,然后严格按照计划对软件的开发和维护进行管理。玻姆认为,在整个软件生命周期中应指定并严格执行6类计划:项目概要计划、计划、项目控制计划、产品控制计划、验证计划、运行维护计划。
实施严格的产品控制。当需求变动时,其它各个阶段的文档或代码随之相
应变动,以保证软件的一致性。开发人员的素质和数量是影响软件质量和开发效率的重要因素,应该少而精。
2)软件过程的目标、在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。追求这些目标有助于提高软件
【2】产品的质量和开发效率,减少维护的困难。
3软件上的的生存周期
1可行性研究:根据用户提出的工程项目的性质、目标和规模,进一步了解用户的要求及现有的环境及条件,从技术、经济和社会等多方面研究并论证该项目的可行性。
2需求分析:任务是用户对软件的功能需要,指定系统必须提供的服务。通过需求分析,指定出相应的性能。还包括可靠性、可用性、出错处理需求、接口需求等。尽可能的明确当前系统的系统开发范畴。
3概要设计:概要设计建立的是目标系统的逻辑模型,与计算机无关。概要设计有多种方法。在早期有模块化方法、功能分解方法;在60年代后期提出了面向数据流和面向数据结构的设计方法;近年来又提出面向对象的设计方法等。
4详细设计:详细设计的工具包括图形工具、表格工具、语言工具等来辅助详细设计文档。概要设计是详细设计的基础,必须在详细设
5实现:是对软件文档变成计算机表现形式。编码的主要任务是根据详细设计规格说明,用某种选定的程序设计语言把详细设计的结果转化为机器可运行的源程序模块,这是一个编程和调试程序的过程。
6组装测试:测试系统各模块间的连接是否正确,系统或子系统的正确处理能力、容错能力、输入/输出处理是否达到要求。
7验收测试:按照验收测试计划和准则对软件系统进行测试,看其是否达到了需求规格说明中定义的全部功能和性能等方面的需求。
8使用与维护:,软件在使用的过程中,应及时收集被发现的软件错误,并定期撰写“软件问题报告
三、学习要求
1、老师要求
掌握软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法,能用软件工程的方法参与软件项目的分析、设计、实现和维护,为更深入地学习和今后从事软件工程的实践打下良好的基础。按5个人一个小组。进行项目开发。做自己的软件,编写自己的文档。完成论文。
2个人对软件工程的看法
20世纪末开始流行的Internet给人们提供了一种全球范围的信息基础设施,形成了一个资源丰富的计算平台,未来如何在Internet平台上进一步整合资源,形成巨型的、高效的、可信的虚拟环境,使所有资源能够高效、可信地为所有用户服务,成为软件技术的研究热点。Internet平台具有一些传统软件平台不具备的特征:分布性、节点的高度自治性、开放性、异构性、不可预测性、测试系统各模块间的连接是否正确,系统或子系统的正确处理能力、容错能力、输入/输出处理是否达到要求。
连接环境的多样性等。这对软件工程的发展提出了新的问题。软件工程需要新的理论、方法和技术和平台来应对这个问题。目前投入很大精力研究的中间件技术就是这方面的典型代表。
综上所述,Internet及其上应用的快速发展与普及,使计算机软件所面临的环境开始从静态封闭逐步走向开放、动态和多变。软件系统为了适应这样一种发展趋势,将会逐步呈现出柔性、多目标、连续反应式的网构软件系统的形态。面对这种新型的软件形态,传统的软件理论、方法、技术和平台面临了一系列挑战。从宏观上看,这种挑战为我们研究软件理论、方法和技术提供了难得的机遇,使我们有可能建立一套适合于Internet开放、动态和多变环境的新型软件理论、方法和技术体系。从微观的角度来看,Internet的发展将使系统软件和支撑平台的研究重点开始从操作系统等转向新型中间件平台,而网构软件的理论、方法和技术的突破必将导致在建立新型中间件平台创新技术方面的突破
【1】 Xx老师课件
【2】 软件工程与实践
第四篇:软件工程学习心得
软件工程学习心得
在本学期的软件工程课程的学习中,我们学习了十一章的内容。
第一章软件与软件工程的概念,这一章主要讲解的是一些概念性和基础性的内容,例如软件的概念、特性,软件危机的主要表现,软件工程的概念以及软件生存期、典型生存期模型等等。第二章软件工程方法与工具,这一章主要对软件工程方法进行介绍,包括三种方法:传统方法、面向对象方法、形式化方法。还引出了工具UML。第三章软件需求获取与结构化分析方法,本章详细介绍了需求获取与需求分析阶段的任务以及结构化分析方法,画分层的数据流图、E-R图以及状态图式本节的重点。第四章结构化分析方法,这一章重点讲解了使用变换型映射方法和事务型映射方法生成初始的模块结构以及模块结构的改进。第五章编码,这一章重点讲解了编码的风格及规范,还告诉我们编码规范说带来的好处,并告诫我们将来一点要形成好的编码风格。第六章软件测试方法,本章讲解了软件测试相关的概念及重要性,软件测试与开发各个阶段的关系;还介绍了白盒测试技术以及黑河测试技术。第七章统一建模语言UML概述,本章详细介绍了UML的基本模式、事物、关系及建模时用到的各种图进行了介绍。第八章面向对象分析,这一章主要讲解了面向对象分析的3种模型,包括功能模型、静态模型和动态模型。第九章软件体系结构与设计模式,本章对软件体系结构的基本概念、典型风格等进行了讲解。第十章面向对象设计,本章的重点是对面向对象分析时建立的对象模型进行调整和细化。第十一章软件维护,本章主要介绍软件维护的任务、软件维
护活动以及软件维护方法进行了介绍。
要学习软件工程,学会如何系统的思考,以及养成良好的编码习惯,想学好软件工程,就必须知道软件工程的目标、过程和原则:软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。
软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。
软件工程的原则是指围绕工程设计、工程支持以及工程管理在软
件开发过程中必须遵循的原则。
我们学习了详细设计的方法,其原则是过程描述是否易于理解、复审和维护,进而过程描述能够自然地转换成代码,并保证详细设计与代码完全一致。包括程序流程图、N-S图、PAD图、HIPO图
程序流程图:程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。在流程图中只能使用下述的五种基本控制结构:顺序型;选择型;while型循环;until型循环;多情况型选择。
N-S图:一种符合结构化程序设计原则的图形描述工具,称为盒图,又称为N-S图。在N-S图中,为了表示五种基本控制结构,规定了五种图形构件。顺序型;选择型;WHILE重复型;UNTIL重复型;多分支选择型。
PAD图:它是用结构化程序设计思想表现程序逻辑结构的图形工具。PAD也设置了五种基本控制结构的图示,并允许递归使用。
HIPO图:HIPO图是由一组IPO图加一张HC图组成。它是美国IBM公司在软件设计中使用的主要表达工具。
HC图既是层次图,用于表示软件的分层结构。HC图中的每一个模块,均可用一张IPO图来描述。IPO 图由输入、处理和输出三个框组成,需要时还可以增加一个数据文件框,这种图形的优点,是能够直观地显示输入—处理—输出三者之间的联系。
还有测试方法:按照测试过程是否在实际应用环境中来分,有静态分析与动态测试。测试方法有分析方法(包括静态分析法与白盒法)与非分析方法(称黑盒法)。
静态分析技术:不执行被测软件,可对需求分析说明书、软件设
计说明书、源程序做结构检查、流程分析、符号执行来找出软件错误。
动态测试技术:当把程序作为一个函数,输入的全体称为函数的定义域,输出的全体称为函数的值域,函数则描述了输入的定义域与输出值域的关系。
还学习了其他很多工具、语言、方法等,虽然不是都学得很透彻,但我相信在今后的学习中一定会慢慢的完善的。
软件工程对于初学者来说,知识基础较薄弱,对一些应用操作、概念、工具方法等理解起来较为困难,要能从整体概念上较好地理解和把握、学好软件工程,不是仅仅把几本专业书籍细致地看几遍,然后上机练习几次就可以成功,学习过程中要注意多看多练要注意结合实际,更要多思考,面对错误不要一范就问,要尝试自己去解决。但是还要注意什么都学,肯定是什么都学不透的,要集中精力打攻坚战,学习软件工程首先要明白自己的学习目标究竟是什么,根据自己的实际工作出发,有针对性的在相应的学习方向上进行提高,制定出详细的学习规划。还要注意与其他科目的相辅相成,就像我们在学习面向对象分析的时候要结合大一学习的面向对象及其方法学这一专业科目进行研究拓展;在学习语言时,要看看与C语言的联系,多思多想,把从各个科目学到的知识通汇贯通。
在软件工程的学习中,我了解到了软件并非是一些代码这么简单,在开发软件的过程中,编写代码的工作量其实只占不到所有工程量的30%,而后期的管理和维护更是占了60%到80%之多。一个完整的项目规划须包括,软件的定义,可行性分析报告,项目开发计划,软件需求说明书,概要设计说明书,详细设计说明书,用户操作手册,测试
计划,测试分析报告,开发进度报告,项目开发总结报告,软件维护手册,软件问题报告,软件修改报告,等多个文档,每个文档都要上级验收审查,而文档数量众多,要做好这点真的不是很容易,而恰恰写好文档正能保证完成软件工程其中一个目的的关键,既研究如何用最小的开销做出生存期较长的软件,再加上各个阶段都要进行周密的策划、详细的分工部署和人员安排,且各阶段要据具体情况不断的反复才能达成,所以代码只是开发软件这个浩大的工程的一个小小的过程。
而编码的学习中,我更了解到形成自己独特的规范的编码风格是非常重要的事。因为这影响到了软件后期繁重的维护,大家都要阅读你的程序,如果你写的程序毫无规范可言,那么别人怎么能读懂你的程序?读不懂程序,维护又从何谈起呢?所以,我们在今后的学习中,一定要注意这方面的培养,在写程序的过程中,要逐步的在规范的基础上形成属于自己的风格,即方便自己的修改,也方便日后他人的阅读。
在学习中,我们还要注意比较三种方法的优缺点,例如:传统方法虽然使软件摆脱了混乱和无序,但其在适应需求变化的方面不够灵活,而且传统方法要么面向行为,要么面向数据,缺乏两者的有机结合。而面向对象方法的程序设计和问题求解更符合人们日常自然的思维习惯,适合大型、复杂及交互性比较强的系统。形式化方法则是一中基于形式化数学变换的软件开发方法,它可将系统的规格说明转换为可执行的程序。
在今后的学习中要注意多读书、多思考、多练习、多讨论,不断熟悉书本的基础,并以此为基础将其扩散开来,应用于今后的实践。不断锻炼自己,向一名合格的程序设计师迈进。
班级:计科091姓名:赵俊采学号:0920020200
第五篇:软件工程实践学习心得
软件工程实践学习心得
这学期学习了软件工程实践这门课,我觉得这是对上学期的软件工程课程学习的检验,上学期学习软件工程只是我们浅显的认识,相比之下,这学期就更加全面的说明了开发一个项目所需要的步骤以及开发项目过程中所需要注意的诸多细节。如果说上学期的课程注重理论基础的话,那么这学期的软工实践,顾名思义,就是侧重我们动手操作的能力。
原来我认为开发一个项目最重要的就是写代码,似乎整个软件都是编代码,因为自己动手能力不强所以就很排斥做项目。可是经过我们学习软工课程到团队做项目再到学习软件工程实践课程之后,我才真正意识到实施一个软件工程项目并不是说简单的会编码就能够解决问题的,因为一个软件的生命周期分为三个时期:软件定义时期、开发时期、维护时期,而这三个时期整体又分为七个阶段,他们分别是:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试,由此可看出,当我们开发一个项目时,更多的精力不是放在编码上,编码只是一个很小的模块,而是项目的整体结构上。
在写软工实践体会之前,我想在这里总结一下上学期三人团队做 项目的相关事宜。上学期我们三人团队根据软件开发的步骤开发一个名为“西大老乡‘荟’”的社交系统,主要是为西大学子提供一个找老乡的平台。虽然只进行到详细设计阶段,没有进一步实现,但是我还是从中学到很多东西的。首先要先确定项目主题,也就是这个项目用来做什么,可以解决什么问题。接着就是这个项目是否有研究的必要以及是否有解决的办法,针对我们的项目,我们对西大的一些学生做了问卷调查,并从调查中继续完善系统本身的做用户。第三步根据我们确定的项目主题进行需求分析,这一步骤当时做的不是很好,比如所画E-R图、数据流图等都有考虑不周的问题,导致接下来的概要设计、详细设计进行的很困难,有些步骤甚至还需要返工。
从我们在需求分析中出现的问题,使我们明白了软件定义阶段对于一个项目的开发是至关重要的,当软件定义阶段完成时必须要用正式的文档准确的地记录目标系统的需求。只有前期的准备工作做得好,后面的工作才能顺利进行。虽然项目最后没有完全实现,但是起码我们已经初步体会到软件项目开发的步骤,以及每一步所需要完成的文档等内容。
这学期的软件工程实践虽然不是亲自动手开发一个系统,但是张元平老师以“物联网物流仓储管理系统”为主给我们讲解了一个真实系统的开发过程,从计划到项目系统的发布实施,以及每一步必须生成的文档。我主要从以下五个方面谈一下我的心得体会。
第一、行业背景说明方面
对于一个软件系统的开发,第一步就是问题定义,了解所开发系统的行业背景,制定计划。当我们计划确定以后就要对项目系统本身进行可行性研究,主要从技术可行性、经济可行性和操作可行性三个方面着手。就比如《物联网物流仓库管理系统》的行业背景说明文档中非常详细地分析了当下物联网物流行业的整体业务说明、应用背景、未来发展趋势以及相关应用案例等四个方面,项目团队中系统分析员就可以根据这份文档以及相关的调查资料对将要开发系统的进行定义等工作。
原来我们写这类文档的时候就是草草了事,不会做得这么详细,而这次看到大型项目的行业背景说明也是这么详细,也让自己认识到不管是软件开发的那个阶段都要认真对待,这些琐碎的文档都是后期开发项目的支撑,只要它们做的透彻,后面的开发工作才能更顺利的进行。
第二、项目需求说明方面
这部分项目需求说明就是软件定义时期中需求分析阶段,而该阶段的主要目的就是了解用户的需要,根据用户的需要确定系统必须完成那些工作,并对目标系统提出完整、准确、清晰、具体的要求。在需求分析结束之前系统分析人员要写出一份需求规格说明,即为《物联网物流仓储管理系统》项目需求说明文档。我们可以看出该文档也是非常详细,相比之下我们之前做项目时写的需求规格说明书就非常 不合格,不仅格式不正确内容也是少之又少。
在这方面,这篇文档给我启发很大。首先就是文档的格式,要美观整齐,让人看着舒服方便。其次就是文档的内容,原来它不是很重要,写文档的时候也不知道怎么写就借鉴下网上的内容,结果根本就没有把自己项目的需求写明白,以至于自己最后都有些糊涂,所以根据以前的经验教训我会对这部分更加重视。
第三、系统概要设计方面
这部分内容分说的是软件设计时期的概要设计阶段,该阶段的主要目的就是实现系统的功能、设计软件的结构、模块组成以及模块之间的关系。在概要设计阶段,我们可以站在全局的高度上,花较少的成本,从抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的结构。在这个阶段还会具体画出E-R图、数据流图等方面的设计。
比如《物联网物流仓库管理系统》的系统概要设计从项目概述、设计约束、功能单元与功能模块设计、数据E-R图设计、总体设计、界面设计等六个方面介绍,通过读这个文档,我觉得最重要的还是总体设计,分别从逻辑架构设计、物理架构设计、技术架构设计设计系统。在这个阶段中模块要做到高内聚低耦合,这样开发出来的系统才会具有更高的独立性。
在原来做项目时没有编写过这类文档,在该阶段只是画了结构图、层次图以及相关的模块划分,对该类文档尚未重视。通过张老师的讲解和自己的学习,我相信在以后做项目的时候一定会注意到这类文档的编写。
第四、详细设计与分析方面
详细设计阶段就是把概要设计阶段的每个模块进一步设计,确定每个模块所需要的算法和数据结构。在这个阶段还是需要我们设计出程序的详细规格说明,而不是编写程序。在详细设计阶段,系统设计人员可以通过使用程序流程图、盒图、PAD图等过程设计的工具和Jackson图等面向数据结构的设计工具进一步设计系统相关接口,主要包括界面设计接口、业务单设计接口、单元模块设计接口等,这些对于以后的编码工作都是极其重要的。
第五、编码和测试方案方面
关于编码,我认为编码要想做的完美必备条件就是前面的软件定义和软件设计时期要按部就班的做,文档一定要按要求书写,不能偷懒也不能草草书写。对于编码也要有相应的文档书写规范,要使源程序代码的逻辑简明清晰、易读易懂。这样尽管我们不是设计系统的人员,当看到源程序代码的时候也能容易读懂代码的意思。
其次就是测试的内容,从测试的文档中我们可以得出,其实测试在软件开发中同样占据了重要的地位,它主要就是尽可能多的找到问题并排除其中的潜藏的错误,最终把一个高质量的软件系统交给用户 使用。它要求测试人员也要有很高的技术水平。