通信软件设计心得体会
通信软件设计课程总结
关于这门课程,有很多话想说,对崔老师说的话、对队友们说的话、对自己说的话。这门课程应该算是我上大学以来最享受的一门课程,它不仅仅让我学到了知识、学到了技能,它更是一次宝贵的团队合作的项目经历,它带给了我太多太多的东西。
首先总结一下这门课程学到的知识和技能。1.
学到了软件工程的相关知识。对于软件有了更清晰的认识,不只是文档+程序+数据,我通过听老师的讲课以及查阅书籍(《软件工程概论》张海藩著),还懂了什么是软件过程,我们的课程完成的就是瀑布模型中计划、需求分析、和设计的过程。此外还了解了软件工程诞生的过程,软件危机又是怎么回事。书中还有讲2.
整个软件研发的过程中相关的管理学知识,由于课程比较近,还没有读过。面向对象的编程思想。这个也应属于软件工程相关知识,单独提出来是因为我对这个有更深刻的理解。之前无论是大一的C++,大二的数据结构,大三的汇编语言,我见识到的几乎都是面向过程思想编出来的程序,C++虽然有讲,但也没有少实践经历,印象不太深刻。而这一次UML建模语言几乎完全是针对面向对象思想设计程序的,通过建类、建对象画时序图、类图等,我对面向对象=对象+继承+消息传递的结论有了理解得更透彻清晰。同时组长为我揭开了JAVA这种之前最熟悉而又最神秘的程序设计语言的面纱,我想抽时间自学一下Java的相关内容,以更好地理解面向对象编程思想。3.
UML建模语言。之前从来没有听说过这三个英文字母的组合。直到听到老师的第四节课,我才恍然大悟原来我们这个课程主要是来学这个东西的。通过一学期的学习,现在对这个有了以下认识:
(1)UML是用来帮我们进行程序设计的,尤其是在编写较大较复杂的项目(诸
如飞鸽传书、简单的网页浏览器、一些小的PC程序)时才更能体会出它
的方便性。
(2)UML中的各种图中最重要的是类图,也是和我们编写代码相关性最大的
一种图。其他的图大都是帮我们理清设计思路,从而更准确地设计类图。比如时序图和协作图强调的是各个类之间的交互关系;活动图是从先后步骤地角度来理清程序设计思路,它是一种面向过程的设计思路,此外活动图还可以用来做我们程序编写时的流程图,用它来绘制要比之前用
word绘制方便得多。
(3)UML语言带给了我们一种从表层逐步深入分析程序设计的思路,也是一
种多角度看待程序的思路。从用例图到时序图、再到活动图、状态图、组件图、最后到类图,逐步求精;从时间先后、对象交互、状态变换的
多角度看待问题。
4.Rose软件。Rose软件和UML是分不开的,但Rose绝不会像别的一些课程学到的软件一样,用完就会被删去,因为除了有助于以后编程的方便外,它还可以帮助我思考一些复杂的问题,组织一次班会的流程等。
网络编程相关知识。因为我们编写的是通信软件,也就是涉及网络的编程,为了更准确地设计类图,在组长的指导下,我们查阅了不少网络编程的相关书籍。初步地理解了网络编程的机制,从最开始丈二和尚摸不到头脑地看到socket这个东西,到开始思考文件传输和即时聊天采用TCP还是UDP协议实现,再到确定采
5.用C++语言编写windows上运行的程序后阅读MFC编程的相关知识,到最后建立了CSocketFile和CArchive这两个类用于文件传输,都是我们不断查阅相关资料、整理更新思路的成果。尤其是我这个之前编程经验很少的人看到采用MFC竟然可以如此方便地编写程序,直接就在画完时序图后兴奋地将两个书上的MFC编程的小案例在机器上实现了一下。
我个人感觉查阅网络编程知识是我在整个课程学习工程中收获最大的部分。之前我是个遇到编程题目就很头疼的学生,大一大二的C++,数据结构课程没有少copy别人的代码,也不是自己不想编,可能是一直对编程有恐惧心理,潜意识里认为自己编不出来,觉得编程好难,是件大牛才能做到的事情。幸好这次有我们编程经验很丰富的组长的督促和指导,让我一点点地认识到设计、编写程序其实并没有那么恐怖,而且对这个过程产生了极大的兴趣。再说一些在这门课程学习过程中收获的一些其他的东西。
我们学到了采用SCRUM的团队工作方式来完成一个项目的方法。在学习过程中我们采用了任务分配、任务认领,定期会议总结讨论经验得失,深切体会到了SCRUM确实是一种很高效的团队协作模式,而且能使整个团队保持良好的氛围,将成员间民主、公平的关系解决得很好,也能调动起大家的积极性。此外我们一直保持着两人一组操作同一台电脑的工作方式,不但高效,而且两个人遇到问题可以商量解决,感觉要比一个人做容易得多,而且也不易出现一个人把图画得乱七八糟,使别的队友都看不懂的情况。
再有,在老师不断地强调、和组长的敦促下,我逐渐树立起了一个以用户为上帝的思想。以前无论是编程还是学习、写作业,我都是按照自己的想法在做事情,因为觉得学习是我自己的事情,我觉得怎样学好就怎么学,写作业也是这样,从来没有考虑过我提交的作业是要给老师看的,我应该考虑到老师的感受。插一句题外话,感觉我们八零九零的一代年轻人做事情似乎都有这个恶习,就是不知道多替别人着想。回忆起自己之前做的事情,好像只有过一次是在为别人着想的指导思想下做事情,就是准备高考的时候,但那时我还不屑地认为我只是为了考个好大学而应试,是教育体制的症结决定的,我还是崇尚按照自己的想法来做事情。
但这一次彻底地改变了我的想法,而且我确定老师您倡导的、我们组长一直坚持的这种理念是正确的。我们在编程是在为用户提供服务,只有我们的服务好,用户才会采纳我们的方案,我们才能挣到钱有饭吃。我们平常都爱去就餐环境好、服务态度好的店里吃饭,因为作为用户都会更喜欢为自己着想更多的东西。所以以后无论是编写程序、还是提交作业、还是进行演讲、组织会议,都要始终将对方的感受放在心里,这样一来可以赢得对方的喜爱很信任,更重要的是这是对对方的一种尊重。
最后写一些我们团队合作过程中的一些“花絮”。首先强调一下我们的组长(张昕)真的很牛,无论是技术能力、管理能力、表达能力都是我远远不能及,只好膜拜的程度。每次我们遇到技术难题,都可以放心地提交给他,他或者根据自己的经验、或者去查看资料、或者和老师进行交流都可以将问题解决。此外每次开会都非常准时,准备充分,承担了N次写会议记录的工作。我在他身上看到了一个项目开发团队领袖所具备的品质,也感觉自己无形中学到了很多东西。总之一句话,对组长很感谢很膜拜。再有老宿(宿晨曦)几乎在每一个过程中都和我在一起工作,他的努力和细致都令我钦佩,很多我认为不重要可以模糊处理的细小的东西,他都会很细致地辨析,力求准确。此外小乔(乔雅楠)在开会的时候总可以在我们表述不清,争论不清的时候一针见血地指明问题之所在,这个能力给我留下了很深刻的印象。总之,我们是个很厉害的组长带领下的很努力很和谐的团队,我很荣幸能在这个团队中做出了微薄的贡献,并学到了很多东西。
总之,这门名叫通信软件设计的课程,就在很风趣很博学的崔老师的讲授下,很专业很善言的组长的带领下,很和谐很努力的团队共同学习中完成了。我很享受这个学习过程,要不是在其他科目疯狂的时间瓜分压榨下,我们还可以做得更好、学得更多一些。但通过这门课程,我树立了对设计、编写程序的信心,培养了对编程的爱好,更加坚定了以后从事软件方面研究、工作的想法。
扩展阅读:通信软件设计总结
第一章
1、通信就是在两个或多个实体之间传递或交换信息
2、通信的要素:通信实体(自然人、计算机、通信中断等)、传输信道(电路、无线信道、卫星信道、计算机网络等)、交换网络(PSTN、INTERNET等)、通信协议(七号信令、TCP/IP、SIP等)
3、通信的分类:1、基于连接的通信(需要在通信实体之间建立通信连路或连接,如电话、传真等)2、基于无连接的通信(在通信实体之间不需要建立通信链路或连接,如短信、即时消息等)
4、通信软件:能够实现在两个或多个实体(计算机、电信终端、交换设备等)之间传递或交换信息功能的软件称为通信软件5、通信软件的特点:1、基于通信协议或者信令系统2、运行时间长(电信软件)3、基于有限状态机4、大部分是嵌入式软件
6、通信协议:在计算机网络中,为了在两个或多个通信实体之间准确、完整地交换信息,必须对信息交换的顺序和条件、交换信息的格式和内容等做出约定,这一整套约定就称为通信协议
7、通信软件开发过程1、需求分析解决“做什么”问题分析用户要求、系统与外界交互信息情况和软件运行环境等2、概要设计解决“系统架构”问题设计系统结构、模块间信息交互情况以及数据结构等3、详细设计解决“如何做”问题描述系统行为、制定测试计划等4、代码生成解决“系统实现”问题代码自动生成、人工编码、编译调试、系统生成
第二章
1、协议开发过程1、开发新的协议(协议环境分析、协议功能设计、协议元素设计、形成协议文本、协议描述、协议验证)2、实现具体协议(协议分析、协议设计、协议描述、协议验证、协议实现、协议测试、协议维护)3、两者最大的区别:1、开发新的协议是从无到有,产生一个新的协议。成果是协议标准文本,具有可实现性2、实现具体协议时在具体应用环境下实现一个协议。成果是协议软件,具有可运行性、可维护性的特点2、协议分析1、协议环境分析1、n层用户的要求2、(n-1)层通道的性质3、n层协议实体的工作模式2、协议功能分析1、连接控制管理2、通讯方式管理3、数据发送/接收管理4、数据安全与可靠性5、发送/接收控制6、中继与路由选择7、通道管理8、其他功能
3、连接管理需求(有连接服务、无连接服务、永久连接服务);连接管理:建立、撤销、复位、恢复
4、广播与组播需求1、广播:指一个n层用户发出的数据报,在同一个网络中的其他用户都能够接受到2、组播:指一个或多个n层用户发出的数据报,在网络中有一组用户可以接收到该数据报,授权用户可以加入或退出该组
5、协议接口:服务原语(SAP)=服务动作+原语类型1、服务请求原语:x-request:用户协议2、服务指示原语:x-indication:协议用户3、服务响应原语:x-response:用户协议4、服务证实原语:x-confirm:协议用户6、服务证实方式类型1、用户证实方式2、协议证实方式3、无证实方式4、三种特殊方式(查询类服务、设置类服务、告警类服务)7、通讯方式需求1、单工/半双工/全双工2、同步/异步8、数据需求1、数据形式(块、流、批处理)2、数据长度(定长、不定长)9、服务质量指标:
1、安全性:鉴权、访问控制、保密性、完整性2、可靠性:完全性、非二义性、时间有序3、性能:吞吐率、时延、抖动、差错率10、(n-1)层通道形成方式1、独占方式:实体之间分别建立连接2、共享方式:多个协议实体共享一条连接3、无连接方式:协议实体利用下层提供的无连接服务进行通讯11、(n-1)层通道部分指标1、RTT(roundtriptime)2、数据的可靠性3、通道可靠性4、报文最大长度5、通道工作方式
12、n层协议实体的工作模式1、点到点模式2、多点模式3、主从模式4、平衡模式5、中转和路由13、连接控制管理1、连接的建立、维护及释放的管理2、连接的合法性检查3、密钥交换4、QoS协商5、资源分配与回收6、连接目标名与地址的翻译
14、传输控制协议(TCP)具有连接控制管理功能;用户数据报协议(UDP)则提供无连接的数据包传输15、通讯方式管理1、半双工通讯:n层协议要进行“发信权”管理2、全双工通讯:n层协议要具有并发的收发功能16、数据发送/接收管理1、PDU的封装/解封装2、SDU分段/装配3、SDU拼接/分离17、术语解释:1、SDU(服务数据单元):服务原语中携带的用户信息2、PDU(协议数据单元):分为数据PDU和控制PDU3、PCI(协议控制信息)18、数据安全与可靠性1、加密2、解密3、校验和(奇偶校验、累加和校验、CRC校验)4、前向纠错(FEC)19、哈明码*
20、发送/接收控制1、顺序控制2、重发控制3、速率流控4、抖动控制5、窗口流控21、中继与路由选择1、中继网关(传输层)、路由器(网络层)、网桥(数据链路层)、中继器(物理层)2、路由选择(静态、动态)22、通道管理1、通道的形成2、监视通道状态3、处理通道故障4、共享通道控制
第三章
1、协议设计内容(协议结构、协议机制、协议元素、协议状态机)
2、协议结构设计:为实现协议功能,从总体上来考虑协议实体的结构框架(结构类型、结构风格)、功能块组成、功能块之间的关系
3、协议的结构可以从三个方面考虑:分层、分阶段、分类4、协议分层设计1、将协议实体分成多个子层来实现2、通过划分子层可以使复杂协议的结构变得清晰3、分层增加了子层间的通信,协议效率会受到一定影响4、协议分层的例子:局域网中的数据链路层分成链路控制子层(LLC)和介质访问控制子层(MAC)5、协议分阶段设计1、协议分阶段是指把协议分成多个运行阶段,每个阶段只需要部分协议功能工作2、协议分阶段的依据是协议的运行过程具有明显的阶段性3、协议分阶段的例子:传输层协议分成三个阶段:建立连接阶段、数据传输阶段、释放链接阶段
6、协议分类设计1、协议分类指的是当协议需要满足不同用户的要求或需要适应不同的下层通道时,把协议分成不同的类别,每类协议只适用于一定用户和一定通道2、协议分类可以起到简化协议的作用7、协议机制设计1、协议机制指的是实现协议功能所采用的方法、策略、算法等2、设计协议机制时,除了保证实现协议功能外,需要重点关注:1、协议运行效率:是否满足实时性要求2、资源利用率:主要指存储资源的利用率,这涉及到协议的运行效率和吞吐量3、异常处理:正确处理异常情况,才有可能保证协议的可靠运行8、TCP协议建立连接的实现机制1、采用三次握手方式2、连接的双方同时发起连接请求的连接建立过程9、TCP协议释放连接的实现机制1、双方分别关闭本方的输出流2、关闭本方输出流后仍可接收对方法来的PDU3、先释放连接的一方收到对方最后一个PDU后,要延迟一段时间才结束,以保证确认PDU达到对方
10、TCP协议重发控制机制(TCP采用自适应方式确定定时长度)1、测量RTT2、计算平均值3、计算变化量11、协议元素设计1、一般来说,协议有以下六种元素组成:1、服务原语和服务原语时序;2、协议数据单元(PDU)和PDU交换时序;3、协议状态;4、协议事件;5、协议变量;6、协议行为12、服务原语是协议与用户的接口,用户通过服务原语得到协议提供的服务,协议实体功过服务原语得到服务要求和返回结果
13、服务原语有四种类型:请求、指示、响应和证实14、不同的服务动作决定了不同的服务要求15、PDU和PDU交换时序1、对等协议实体之间交换信息均以PDU为单位,PDU格式严格定义了信息的内容和含义2、PDU格式设计:定义每个PDU的数据结构、字段格式和信息含义等3、PDU交换时序设计1、即规定一方收到某个PDU后应该回送什么PDU或可以回送哪些PDU2、PDU的交换时序必须包括正常情况和各种异常情况16、协议状态是指协议在运行过程中等待输入事件时所处的状态17、协议状态可分为:1、局部状态:只涉及单个协议实体,反映单个协议实体所处的状态2、全局状态:参与执行某个协议功能的所有协议实体(包括下层通道)的状态之和18、协议状态设计应遵守的原则:1、当协议实体向对方发送不同的PDU,等待对方响应时,应设置新的状态2、当协议实体占用资源情况发生变化时,应设置新的状态3、当下层通道状态发生变化时,协议状态也应改变
19、协议事件是指协议的输入或激励。协议的输入包括三部分:1、来自本方的服务原语;2、来自对方协议实体的PDU;3、来自内部的定时器信号(超时)20、协议事件设计就是列出所有的协议输入事件
21、由于服务原语和PDU已经设计好,这里只需要设计定时器及定时时长,定时时长可以根据RTT来确定
22、协议变量是指协议中用到的各种变量都可以称为协议变量
23、与其他软件一样,协议软件中的变量也分为全局变量、局部变量和临时变量
24、协议行为是指协议在状态转换(迁移)过程中执行的操作。这些操作包括:1、输出信息(SDU和PDU);2、设置定时器(开始计时);3、复位定时器(停止计时);4、修改协议变量;5、执行一系列动作(操作)的过程(函数);6、其他操作(如读、写文件等)25、在有些情况下,协议过程中一些协议动作的执行是有条件的,描述这些约束条件的语句称为谓词。谓词一般用布尔表达式来表示26、协议状态机1、描述协议状态的迁移情况2、反映协议元素之间的关系:在什么协议状态下,什么输入事件驱动什么协议过程,协议过程在什么条件下执行什么协议动作,协议状态如何改变等3、事件状态表4、有限状态机
27、协议事件状态表举例1、TCP协议事件状态表2、TCP协议输入事件表3、TCP协议输出事件表28、有限状态自动机S:系统状态集,状态数有限I:系统初始状态,i∈SE:输入字母集
T:转移函数集,是从SxE到S的映射29、扩展有限状态自动机S:系统状态集,状态数有限I:系统初始状态,i∈SE:输入事件集
T:转移函数集,是从SxE到S的映射
30、扩展有限状态自动机举例:TCP协议的有限状态机
第四章
第六章1、SDL(specificationanddescriptionlanguage)是ITU-T提出的一种形式化描述语言,由ITU_TZ.100建议定义
2、SDL的应用领域是实时系统3、SDL基于的数学模型1、系统行为:环境←信号→SDL系统系统、环境、交互、信号
4、系统的行为可通过可通信的扩展有限状态自动机来描述:1、系统由扩展的有限状态自动机组成2、扩展的有限状态自动机具有与外界通信的能力:输入/输出动作5、SDL中的基本概念:SDL系统结构、SDL文法概述6、SDL的基本语法:1、包(package):包中定义的内容是可重用的,SDL201*允许各种图都可引用包。包定义还可以引用另一个包2、系统(system):
1、SDL系统:完整地描述一个真实系统或一个真实系统中的相对独立的一部分。2、一个系统可以划分为若干个功能块;功能块之间以及功能块之间用信道连接3、系统各功能块之间以及功能块与环境之间可以使用信号通道;信号通过信道来传递3、信号定义1、信号是SDL系统中进程之间通信的基本单位2、信号必须在信道中传输3、要利用信号来通信,必须:1、信号定义:在相关代理图的文本域中定义信号2、信号与信道关联:在信道的信号列表域中列出信号,说明信号可以在哪些信道中传递4、信号可以定义参数,定义过的信号可以用来定义信号列表。信号列表的定义也放在文本符中5、在信道上列出信号和/或信号列表时,信号列表标识符要用圆括号括起来,以区别于信号4、信道定义1、信道是用在代理与代理之间或代理与系统环境或信关之间传递信号的通道2、信道分为单向和双向两种,在每个方向上序列出在该方向上传递的所有信号,这些信号用方括号括起来,标在信道的箭头处。3、信道分为:1、延迟信道:表示信号从源端到目的端要经过一定延迟,延迟时间是不确定的,但信道上的信号仍是有序的2、非延迟信道:表示信号从源端发出后直接到达目的地,没有延迟5、功能块1、功能块可以再分成多个功能块,也可以由一个或多个并发进程组成2、功能块的交互域描述文本功能块中功能块或进程的组成及交互关系3、在功能块图的边界上,要标出与本功能块相连的信道标识4、功能块文本域定义本功能块内部信号、信号列表、数据类型等内容6、进程1、进程是系统的基本组成单位,系统的行为主要由进程来描述2、在进程图中,系统行为用状态机图来描述3、在系统中,进程是以进程实例的形式出现,每个进程实例都有一块私有存储空间,记录进程实例各变量的值及实例所处的状态等4、进程实例一旦被创建,就拥有了一个惟一的进程标识,称为pid(processidentifier)。通过以下四种pid表示式可以得到进程实例的pid:1、self返回本进程实例的pid2、sender返回发送最近被消耗信号的进程实例的pid3、parent返回创建本进程实例的进程实例(父进程)的pid4、offspring返回最近被本进程创建的进程实例(子进程)的pid7、状态机可以包含:开始域、状态域、输入域、输出域、任务域、创建域、过程调用域、分支域、定时器操作等
友情提示:本文中关于《通信软件设计心得体会》给出的范例仅供您参考拓展思维使用,通信软件设计心得体会:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。
《通信软件设计心得体会》
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/727345.html
- 上一篇:数据结构课程总结
- 下一篇:设计师技术达人分享会总结