这一章我们要详细分析软件工程中的各种步骤的组织方式,以便我们协调各种活动。面对的主要问题有如何理解过程模型,如何应对软件开发过程中的种种状况,为此我们首先要解释过程模型的意义,然后为大家介绍各种模型的思想,为了响应变化和规避风险,会涉及到原型化和迭代开发的思想。关键在于思想的理解,模型是固化的,思想运用是灵活的。本章重点在过程与生命周期和过程模型。
章节框架:
过程与生命周期过程的定义一组有序的任务,它涉及活动、约束和资源使用的一系列步骤,用于产生某种想要的输出。
过程不仅仅是步骤,过程是步骤的集合,它将步骤组织起来使人们能够生产满足一系列目标和标准的产品。
软件生命周期软件开发过程描述了软件产品从概念到实现、交付、使用和维护的整个过程,因此,有时把软件开发过程称为软件生命周期。
过程的重要意义
它强制活动具有一致性和一定的结构。
过程结构允许我们分析、理解、控制和改进组成过程的活动,并以此来指导我们的活动。
它使我们获取经验并把经验传授给他人。
过程模型为何需要为过程建立模型:
达成共识:开发团队在记录开发过程的描述时,自然的对软件所涉及到的活动,资源,约束等达成共识, ...
当我学到这个跟我专业名字一模一样的课程时,我的心情真是很复杂:一方面不知不觉已经学到了我专业的本命课程,这个大一时看课程计划觉得无比重要的课,倍感岁月不饶人;另一方面,当我们学完这学期再审视这门课,又觉得它像Apple的一句广告:“说简单,也高深”。说它简单,觉得它在一开始复习时恍惚有种背政治的感觉,比起烧脑的程序设计和巧妙计算来说真的很轻松;说它高深,是因为如果让所有就业的软件工程毕业生投票自己最后悔没好好学的课,它一定是champion。
当你抱着一颗佛系的心看这些知识时,你会觉得它那么教条;但当你真的准备干点大事,带着挚友们开发个软件时,你会觉得它说的是那么针针见血:如果你是负责人,你如何知道你需要什么招什么样的人来组成一个开发团队?你就是有了合适的团队你靠什么告诉客户你会花多长时间多少钱去完成这个项目才让他们放心把项目交给你?你就是拿到了项目你怎么让客户客观理性准确无误地告诉你他们的需求是什么?你就是得到了明确无疑的需求你怎么确定为了实现这个你该怎么设计这些功能?你就是得到了一份巧夺天工的设计你怎么保证你的程序员们能高效合作地把这些设计准确实现出来?你就是有了一批勤恳踏实的程 ...
数据链路层保证了数据在相邻节点的可靠传输,网络层关注的是如何将源端数据包经过网络上的节点一路送到接收方。为了实现这个目标,网络层必须知道网络拓补结构,并从中选出适当的路径。本章包含到路由算法、拥塞控制、服务质量、网络互连和IP 协议。
上图为本章考试重点,非原书结构,仅供参考。
网络层两类服务
无连接服务——数据报网络
特点:所有的数据包都被独立地注入到网络中,并且每个数据包独立路由,不需要提前建立任何设置。在这样的上下文中,数据包通常称为数据报,对应的网络称为数据报网络。
面向连接服务——虚电路网络
特点:发送数据报前,首先建立一条从源到目标的路径,每条报文都沿这条路径传送。这个连接称为虛电路,对应的网络称为虚电路网络。
路由算法——基于最优路径的路由算法最优化原则遵循最优化原则以破除环路,方便设计路由算法。
最优化原则:如果J 在从I 到K 的最优路径上,那么从J 到K 的最优路径也必定遵循相同的路由。即最优路径的子路径还是最优路径。
汇集树:依照最优化原则,从所有的源到一个指定目标的最优路径的集合构成一颗以目标节点为根的树。
泛洪算法泛洪路由的基本想法是源节点将消 ...
该层是用来确定多路访问信道下一个使用者的协议属于数据链路层的一个子层,称为介质访问控制(Medium Access Control) 子层,也叫MAC 子层。注意这章的标题是“子层”,也就是说这一章的内容还是属于数据链路层,是它的一个子层,虽然出现的章节比第三章要晚,但实际上却是整个数据链路层的底层。
因为在同一介质中相同频率波段的传输信号会相互干扰,导致无法得到有效的信号,而采用频率,时间区别不同信号又无法最大限度地利用资源,这时候就希望有种协议可以协商三个以上的机器如何可以在没有统一调度的前提下“遵守秩序”“不打断别人”地发言,让介质顺利被利用不产生冲突。数据链路层的两点之间可靠传输有个前提,首先要确定到底是哪个点可以获得信道开始传输。所以说这一章内容是数据链路层的底层。
上图为本章考试重点,非原书结构,仅供参考。
多路访问协议ALOHA 系统纯ALOHA用户有数据就发送,不考虑信道是否空闲,只管发。用户如果发现有冲突,则随机等待一段时间后再发。它的意义在于提出了非协调用户竞争使用单个共享信道的系统的问题,现实中已不使用,详见P203。
分槽ALOHA为了提高发送的容量,将 ...
数据链路层是基于物理层不可靠的传输向上层提供可靠的传输,它提供的是相邻两个节点之间可靠的数据传输。本章将学习网络模型中的第二层(即数据链路层)的设计原则。学习内容涉及两台相邻(指两台机器通过一条通信信道连接起来)机器实现可靠有效的完整信息块(称为帧)通信的一些算法,而不像物理层那样只关注单个比特传输。解决通信线路中出错的情况、关于有限的数据传输率、发送时间和接受时间存在的非零延迟等问题。
本章内容结构:
首先介绍数据链路层的关键设计问题,并学习如何考察错误的本质以及如何检测和纠正这些错误。
然后,我们将学习一系列复杂性逐步递增的协议,每个协议解决了本层中越来越多的问题。
最后会给出一些数据链路层协议的例子。
上图为本章考试重点,非原书结构,仅供参考。
数据链路层的设计问题数据链路层使用物理层提供的服务在通信信道上发送和接受比特。完成一些功能:
向网络层提供一个定义良好的服务接口。
处理传输错误。
调节数据流,保证慢速的接收方不会被快速的发送方淹没。
为实现这些目标:,数据链路层从网络层获得数据包,并将之包装成包含:帧头+ 有效载荷(存放数据包)+ 帧尾的帧(frame ...
物理层是网络协议模型的最底层,该层定义了比特作为信号在信道上发送时相关的电气、时序和其他接口,是构建网络的基础。物理信道的不同特性决定了其传输性能的不同(比如,吞吐量、延迟和误码率),所以物理层是我们展开网络之旅的最好始发地。
本章内容结构:
首先从数据传输的理论分析出发,探讨决定信道传输的自然局限。
接着给出三类传输介质:有线(铜线和光纤)、无线(陆地无线电)和卫星。每种技术都有其自身独特的性质,而这将影响到采用这些传输技术的网络设计和性能。这部分内容为我们理解现代网络的关键传输技术提供了背景知识。
然后讨论数字调制解调技术,主要解决如何把模拟信号转换成数字比特以及将数字比特还原成模拟信号。在此基础上,引入多路复用方案,探讨如何在同一个传输介质上同时进行多个会话而彼此不会干扰。
最后将关注三个被广泛应用于计算机广域网的通信系统实例:(固定)电话系统、移动电话系统和有线电视系统。
该篇博客将讨论后两部分。
上图为本章考试重点,非原书结构,仅供参考。
数字调制有线和无线信道运载模拟信号,模拟信号可表示成诸如连续变化的电压、光照强度或声音强度。为了发送数字信息,我们必须设法用 ...
物理层是网络协议模型的最底层,该层定义了比特作为信号在信道上发送时相关的电气、时序和其他接口,是构建网络的基础。物理信道的不同特性决定了其传输性能的不同(比如,吞吐量、延迟和误码率),所以物理层是我们展开网络之旅的最好始发地。
本章内容结构:
首先从数据传输的理论分析出发,探讨决定信道传输的自然局限。
接着给出三类传输介质:有线(铜线和光纤)、无线(陆地无线电)和卫星。每种技术都有其自身独特的性质,而这将影响到采用这些传输技术的网络设计和性能。这部分内容为我们理解现代网络的关键传输技术提供了背景知识。
然后讨论数字调制解调技术,主要解决如何把模拟信号转换成数字比特以及将数字比特还原成模拟信号。在此基础上,引入多路复用方案,探讨如何在同一个传输介质上同时进行多个会话而彼此不会干扰。
最后将关注三个被广泛应用于计算机广域网的通信系统实例:(固定)电话系统、移动电话系统和有线电视系统。
该篇博客将讨论前两部分。
上图为本章考试重点,非原书结构,仅供参考。
数据通信的理论基础概念
带宽(bandwidth):在传输中不会明显减弱的频率的宽度,通常引用的带宽是指从0 到使得接收能量 ...
计网是四大件之一,在计算机基础中占重要地位,对于相关学习者来说是绕不开的一部分。
以此系列博客记录一下我大三上学期计网的学习过程,期间用到的教材是第五版龙书,有需要电子版的朋友可以联系我。(因为是由英文原书翻译过来的,有些看起来荒谬冗长的语句需要大家联想纠正)
博客内容主要是考试重点,有很多不完整的部分建议看原书。
上图为本章考试重点,非原书知识结构,仅供参考。
基本概念
计算机网络(computer networks):表示一组通过单一技术相互连接起来的自主计算机集合。
分布式系统(distributed system):分布式系统是建立在网络之上的软件系统,有高度的内聚性和透明性。内聚性:每一个数据库分布节点高度自治,有本地数据库管理系统透明性:每个数据库分布节点对用户应用来说是透明的,用户感觉不到数据是分布的
Internet 是最著名的计算机网络,万维网是最著名的分布式系统,万维网(软件)运行于Internet(硬件)上
虚拟专用网络(VPN,virtual private networks):一种可以将不同地点的单个网络联结成一个扩展网络的技术。
P2P 与CS( ...
博客加载速度一直较慢,在查阅了配置文件之后发现可以用CDN提升加载速度,于是乎了解了一下CDN并运用到自己的配置中。
CDN是什么CDN英文全称Content Delivery Network,中文翻译为内容分发网络。它是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。CDN应用广泛,支持多种行业、多种场景内容加速,例如:图片小文件、大文件下载、视音频点播、直播流媒体、全站加速、安全加速。
借用上图阿里云官网的例子,来简单介绍CDN的工作原理。假设通过CDN加速的域名为www.a.com,接入CDN网络,开始使用加速服务后,当终端用户(北京)发起HTTP请求时,处理流程如下:
当终端用户(北京)向www.a.com下的指定资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。
LDNS检查缓存中是否有www.a.com的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。
当授权DNS解析www.a.com时,返回域名CNAME www.a.tbcdn.com对应IP地址。
域名解析请求发送至阿里云DNS调度系统,并为 ...
计网是四大件之一,在计算机基础中占重要地位,对于相关学习者来说是绕不开的一部分。以此系列博客记录一下我大三上学期计网的学习过程,期间用到的教材是第五版龙书,有需要电子版的朋友可以联系我。(因为是由英文原书翻译过来的,有些看起来荒谬冗长的语句需要大家联想纠正)
这里将网络层的拥塞控制这一章节详细展开讲述
拥塞的发生网络中存在太多的数据包导致数据包被延迟和丢失,从而降低了传输性能,这种情况称为拥塞(congestion)。网络层和传输层共同承担着处理拥塞的责任,在这里,我们将着眼于拥塞控制在网络层方面的处理。
图5-21 描绘了拥塞的发生。当主机发送到网络的数据包数量在其承载能力范围之内时,送达的数据包数与发送的数据包数成正比例增长。如果发送量增加了两倍,则送达量也增长了两倍。然而,随着负载接近承载能力,偶尔突发的流量填满了路由器内部的缓冲区,因而某些数据包会被丢失。这些丢失的数据包消耗了部分容量,因此,送达的数据包数量低于理想曲线。网络现在开始拥挤了。
拥塞控制的途径拥塞的出现意味着负载暂时大于资源可以处理的能力。很自然人们能想到两个解决方案:增加资源或减少负载。
如图5-22 ...