web服务器分析与设计(二)
面向对象分析与设计第二步:寻找对象,建立问题域模型
1,用例场景描述
接上一篇中的用例,编写用例场景
U1:
上网者:打开网站(www.xxx.com)
浏览器:连接网站
目标系统:接受连接
检查连接合法性(主要是因为服务端是容易受攻击的,所以需要加入安全检查)
合法,接入连接,等待HTTP请求(不合法看备选流程)
浏览器: 发送GET请求
等待回复
目标系统:收到GET请求
处理GET请求
向浏览器发回请求回复
回复完成,断开连接
备选流程:连接不合法,断开连接。
U2
上网者:点击提交按钮
浏览器:连接网站
目标系统:接受连接
检查连接合法性(主要是因为服务端是容易受攻击的,所以需要加入安全检查)
合法,接入连接,等待HTTP请求(不合法看备选流程)
浏览器: 发送POST请求
等待回复
目标系统:收到POST请求
处理POST请求
向浏览器发回POST请求回复
回复完成,断开连接
备选流程:连接不合法,断开连接。
U3,U4与U1,U2基本一样,不再赘述。
U5 (由于不清楚网站怎么发现,我参考了IIS的新建站点)
网站发布人:打开发布界面
目标系统 :显示发布界面
网站发布人:填写网站配置(主目标,端口等)
确认启用网站
目标系统 :启动网站
开始等待浏览器连接
(突然想到系统还需要提供管理站点的功能,如日常维护等等,不过没有考虑到也不要紧,
在上一遍中已经进行过“需求复核”,确保了我们的目标系统,可以完成重要需求。)
2,用例场景分析:提取对象
利用前辈发明的方法:动名词法。流程中的名词,有可能为系统中重要的实体对象。
U1中的名词:网站 连接 HTTP请求 GET请求 请求回复
U2中的名词:按钮 连接 HTTP请求 POST请求 POST请求回复
U5中的名词:发布界面 网站配置 网站
找到了可能的对象,那么哪些是系统中的对象?
按钮肯定不是。
HTTP请求,GET请求等明显是系统中的对象。
连接是客户端与系统通信的实体,也是系统的对象。
发布界面是提供发布人的操作界面,也是系统中的对象。
网站是什么?实质是用来接收浏览器的连接的,也是系统中的对象。
网站配置可能是网站的一个重要属性。
3,对象分析,建立类型关系
分析对象的共性与修改,用类来归纳它们。下面是用ArgoUML画的类图。

web服务器分析与设计(二)的更多相关文章
- web服务器分析与设计(一)
自己写一个简单的服务器. 面向对象分析与设计第一步:获取需求(基于用例) 功能:1,支持html静态网页,2,支持常用HTTP请求,且容易扩展支持不现请求 3,可以发布站点 补充:至于对动态网页等高级 ...
- web服务器分析与设计(五)--一些总结
随着年龄与经验的增加,对于软件方面的分析与设计也会有一些新的认识.下面做个近期的总结: 1,关于到底用不用作设计的问题: 在最近两个公司,原有人马是不会作设计(我自己的感觉),也察觉不到作设计的任何冲 ...
- web服务器分析与设计(三)
面向对象分析与设计第二步:健壮性分析,完善对象 通过上一篇的分析,已经得到了构建系统中最重要的对象-----实体对象,它们封装着构成系统最重要的数据,实体数据是系统的生命. 但是光有实体还系统是运转不 ...
- web服务器分析与设计(四)
上篇已经开始了系统内部的分析,并且得到一些分析对象.在整个动作场景中,我们得到了一些粗略的对象.有必要对对象进行分析,合并,再抽象. 实质是职责的合理分配,使得系统合乎功能性,同时得到最大的可扩展,可 ...
- java实现简单web服务器(分析+源代码)
在日常的开发中,我们用过很多开源的web服务器,例如tomcat.apache等等.现在我们自己实现一个简单的web服务器,基本的功能就是用户点击要访问的资源,服务器将资源发送到客户端的浏览器.为了简 ...
- goahead(web服务器)分析
一.参考网址 1.源码的github地址 二.网页是采用文件读写方式,还是转换为数组方式? 1)其通过宏定义“WEBS_PAGE_ROM”来区分,我是在websPageReadData()(page. ...
- 嵌入式web服务器BOA的移植及应用
嵌入式web服务器子系统 一.嵌入式web服务器的控制流程 如下图所示,嵌入式web服务器可实现通过网络远程控制嵌入式开发板,便捷实用. 控制流程:浏览器 --->>>嵌入式开发板 ...
- WSGI——python web 服务器网关接口
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826084.html 一:服务器.服务器软件.应用程序(后台) 我们常说“服务器”,实际上服务器是一个很宽 ...
- 移动物体监控系统-sprint4嵌入式web服务器开发
一.BOA嵌入式服务器的移植 step1:下载BOA服务器并解压,进入boa下面的src目录,执行./configure生成必须的配置文件以及Makefile step2:修改Makefile文件 c ...
随机推荐
- python list去重的方法
转载于:http://yxmhero1989.blog.163.com/blog/static/112157956201381443244790/ Python很简洁 我们喜欢简单有效的代码 一. ...
- 用于主题检测的临时日志(383b4f88-5dc7-4b08-a585-27104eb4ee7f - 3bfe001a-32de-4114-a6b4-4005b770f6d7)
这是一个未删除的临时日志.请手动删除它.(1e2a0af2-731b-4f82-9aa0-4e2d10ed7a1a - 3bfe001a-32de-4114-a6b4-4005b770f6d7)
- 如何在Android应用程序中使用传感器模拟器SensorSimulator
原文地址; 如何在Android应用程序中使用传感器模拟器 - 移动平台应用软件开发技术 - 博客频道 - CSDN.NET http://blog.csdn.net/pku_android/arti ...
- swift:类型转换(is用作判断检测、as用作类型向下转换)
类型转换是一种检查类实例的方式,并且哦或者也是让实例作为它的父类或者子类的一种方式. 类型转换在Swift中使用is 和 as操作符实现.这两个操作符提供了一种简单达意的方式去检查值的类型或者转换 ...
- Python转义字符
在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符.有时我们并不想让转义字符生效,我们只想显示字符串原来的意思,这就要用r和R来定义原始字符串.如:print r'\t\r'实际输出为“ ...
- topcoder srm 628 div2 250 500
做了一道题,对了,但是还是掉分了. 第二道题也做了,但是没有交上,不知道对错. 后来交上以后发现少判断了一个条件,改过之后就对了. 第一道题爆搜的,有点麻烦了,其实几行代码就行. 250贴代码: #i ...
- 各浏览器各版本User-agent汇总 欢迎补充
Internet Explorer Internet Explorer 5 Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; WOW64; Trident/ ...
- 使用 google gson 转换Timestamp为JSON字符串
package com.test.base; import java.lang.reflect.Type; import java.sql.Timestamp; import java.text.Da ...
- Windows下免费、开源邮件服务器hMailServer
Windows下免费.开源邮件服务器hMailServer 一.Windows下搭建免费.开源的邮件服务器hMailServer 二.邮件服务器hMailServer管理工具hMailServer A ...
- UVa 11178 (简单练习) Morley's Theorem
题意: Morley定理:任意三角形中,每个角的三等分线,相交出来的三个点构成一个正三角形. 不过这和题目关系不大,题目所求是正三角形的三个点的坐标,保留6位小数. 分析: 由于对称性,求出D点,EF ...