面向对象分析与设计第二步:健壮性分析,完善对象

通过上一篇的分析,已经得到了构建系统中最重要的对象-----实体对象,它们封装着构成系统最重要的数据,实体数据是系统的生命。

但是光有实体还系统是运转不起来的,这里通过健壮性分析来发现边界,控制对象,以大致完成系统对象的发现。

健壮性分析同样是以用例为单位。通过对每一个用例的分析,从中发现以及抽象出边界对象,控制对象。

边界对象:接收外部命令;控制对象:程序逻辑;实体对象:重要数据;

从用例1(U1)开始分析:

上网者:打开网站(www.xxx.com)                                                                        【需要边界接收这个命令,但是边界是浏览器的,不需要构建】

  浏览器:连接网站                                   【需要边界接收这个命令,边界对象:网站】

目标系统:接受连接                                  【程序逻辑,控制对象:接受连接】 

检查连接合法性(主要是因为服务端是容易受攻击的,所以需要加入安全检查)   【程序逻辑,控制对象:检查连接】

合法,接入连接,等待HTTP请求(不合法看备选流程)                                【程序逻辑,控制对象:等待请求】

  浏览器: 发送GET请求                                                                                    【这个命令需要边界接收,边界对象:连接】

等待回复                                                                                          【无】

目标系统:收到GET请求                                                                                  【这个和等待请求是一个意思,等待请求就说明会收到请求】

处理GET请求                                                                                  【程序逻辑,控制对象:处理】

向浏览器发回请求回复                                                                       【程序逻辑,控制对象:发回回复】

回复完成,断开连接                                                                          【无,这种很简单的操作没有必要抽象成对象】

  备选流程:连接不合法,断开连接。                                                                     【无,其实断开更适合做连接的一个方法/接口】

画图表示:

其它的用例同样也要分析。但是千万不要陷于分析瘫痪。只要大致分析出就可以,不完善的地方,在开始迭代过程中可以改进。

web服务器分析与设计(三)的更多相关文章

  1. web服务器分析与设计(五)--一些总结

    随着年龄与经验的增加,对于软件方面的分析与设计也会有一些新的认识.下面做个近期的总结: 1,关于到底用不用作设计的问题: 在最近两个公司,原有人马是不会作设计(我自己的感觉),也察觉不到作设计的任何冲 ...

  2. web服务器分析与设计(一)

    自己写一个简单的服务器. 面向对象分析与设计第一步:获取需求(基于用例) 功能:1,支持html静态网页,2,支持常用HTTP请求,且容易扩展支持不现请求 3,可以发布站点 补充:至于对动态网页等高级 ...

  3. web服务器分析与设计(二)

    面向对象分析与设计第二步:寻找对象,建立问题域模型 1,用例场景描述 接上一篇中的用例,编写用例场景 U1: 上网者:打开网站(www.xxx.com) 浏览器:连接网站 目标系统:接受连接 检查连接 ...

  4. web服务器分析与设计(四)

    上篇已经开始了系统内部的分析,并且得到一些分析对象.在整个动作场景中,我们得到了一些粗略的对象.有必要对对象进行分析,合并,再抽象. 实质是职责的合理分配,使得系统合乎功能性,同时得到最大的可扩展,可 ...

  5. Web服务器处理动态程序三种方式及Apache配置

    模块.CGI.FastCGI三种方式介绍 以PHP脚本为例: 模块方式是指Web服务器通过libphp5.so模块调用PHP服务,模块将相关函数嵌入Web服务请求处理流程,不需要额外解释器进程.注意, ...

  6. java实现简单web服务器(分析+源代码)

    在日常的开发中,我们用过很多开源的web服务器,例如tomcat.apache等等.现在我们自己实现一个简单的web服务器,基本的功能就是用户点击要访问的资源,服务器将资源发送到客户端的浏览器.为了简 ...

  7. goahead(web服务器)分析

    一.参考网址 1.源码的github地址 二.网页是采用文件读写方式,还是转换为数组方式? 1)其通过宏定义“WEBS_PAGE_ROM”来区分,我是在websPageReadData()(page. ...

  8. nginx web服务器详解1(转)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://freeloda.blog.51cto.com/2033581/1285332 大 ...

  9. 移动物体监控系统-sprint4嵌入式web服务器开发

    一.BOA嵌入式服务器的移植 step1:下载BOA服务器并解压,进入boa下面的src目录,执行./configure生成必须的配置文件以及Makefile step2:修改Makefile文件 c ...

随机推荐

  1. ORA-12571 : TNS : 包写入程序失败

    错误原因 解决方案 修改D:/oracle/ora92/network/admin目录下sqlnet.ora,将”NAMES.DEFAULT_DOMAIN =” 这一行用#注释掉,将“SQLNET.A ...

  2. Linux 动画显示

    Linux最强大的一个特征就是它有大量的各种小命令工具,这也可以称做是它最有趣的一个地方了.在这些大量的有用的命令和脚本中,你会发现有少部 分命令工具不那么有用的——如果你不愿意说是完全没用处的话.你 ...

  3. C#ShowCursor光标的显示与隐藏

      使用using System.Runtime.InteropServices; [DllImport("user32.dll" , EntryPoint = "Sho ...

  4. BCB遍历所有窗体的组件

    for(iFormIdx=0; iFormIdx<Screen->FormCount; iFormIdx++) { TForm *pForm = Screen->Forms[iFor ...

  5. Google发布SSLv3漏洞简要分析报告

    今天上午,Google发布了一份关于SSLv3漏洞的简要分析报告.根据Google的说法,该漏洞贯穿于所有的SSLv3版本中,利用该漏洞,黑客可以通过中间人攻击等类似的方式(只要劫持到的数据加密两端均 ...

  6. sql server删除数据后空间无变化处理方法

    删除数据库表 第一步: 执行 delete from doc.115sou.com        #删除数据,执行效率低 drop table doc.115sou.com          #删除表 ...

  7. Java中hashcode,equals和==

    hashcode方法返回该对象的哈希码值. hashCode()方法可以用来来提高Map里面的搜索效率的,Map会根据不同的hashCode()来放在不同的位置,Map在搜索一个对象的时候先通过has ...

  8. cocos2d-x 2.1.2 bug发现

    1.在做屏蔽触摸时发现 extensions中的CCScrollView类 void CCScrollView::registerWithTouchDispatcher() { CCDirector: ...

  9. 修改placeholder属性

    input::-webkit-input-placeholder{ font-size:12px;}input:-ms-input-placeholder{ font-size:12px;}input ...

  10. angular js 实例参数学习

    <!DOCTYPE html> <html> <head> <meta name="description" content=" ...