UML辅助网站规划和设计指南/1

news/2024/5/20 4:45:26/文章来源:https://blog.csdn.net/weixin_30872499/article/details/95120056
概述
Web网站往往具有复杂与高度动态的特点。为了让Web应用在短时间之内开始运作,开发周期应该尽量地短。许多时候,开发者直接进入编写代码这一阶段,却不去仔细考虑自己想要构造的是什么样的网站以及准备如何构造:服务器端代码往往是毫无准备的即兴式编写,数据库表也是随需随加,整个应用的体系有时候呈现一种无规划状态。然而,只要我们运用一些建模技术和软件工程技术,就能够让开发过程更加流畅,确保Web应用将来更容易维护。
UML(Unified Modeling Language,统一建模语言)是一种通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统的文档。UML适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具。UML能够描述系统的静态结构和动态行为:静态结构定义了系统中重要对象的属性和操作以及这些对象之间的相互关系;动态行为定义了对象的时间特性和对象为完成目标任务而相互进行通信的机制。UML不是一种程序设计语言,但我们可以用代码生成器将UML模型转换为多种程序设计语言代码,或使用反向生成器工具将程序源代码转换为UML模型。
本文介绍用UML为Web网站建模的一些方法。全面采用UML技术是一个复杂的过程,但UML的某些部分很容易使用,而且它能够帮助你用更少的时间构造出更好的系统。
为了示范UML在网站建设中的应用,本文将构造一个支持无线用户、提供各个地区天气报表和交通流量报表的网站。本文不准备详细介绍UML本身。但为了方便起见,附录中简要介绍了常见的UML符号和术语。要了解更多有关UML的信息,请参见文章最后的参考资源。

二、规划阶段


不论你是从头开始构造网站、移植网站还是增加某个重要的功能,为了确保设计决策的最优化,进行一些先期规划是必要的。如果你和其他人协作完成一项工程,就工作总量及其分配达成明确的共识具有不可估量的作用。在规划期间,你应该努力对系统的以下方面形成正确的认识:
  • 用户和角色。
  • 应用需求。
  • 各个界面之间的转换流程。
  • 要用到的工具和技术。

2.1 用户


了解使用系统的用户是很重要的。不仅系统分析要求你接触一些用户(通过问卷调查、email,或者面对面交谈),而且你经常还要让系统能够控制不同的用户角色和权限。通过对用户进行分类并了解他们的需求,你就可以找出线索来确定数据库的安全机制、功能限制方法、用户界面分组、培训和帮助需求、对具体内容的需求,甚至还可以从侧面了解到潜在广告客户的分布。
PlanningSiteWithUML_01.gif
图1:参与者/角色 层次图

上图显示了几组不同的网站用户(在UML中称为Actor,即参与者)。在这里,最普通的用户类型(“Site User”)位于图的顶端,实线箭头表示generalization关系(“泛化”关系,参见本文附录说明,下同),它表示Site User又可以具体分成两类用户:Guest,Registered User。这两类用户共有的特征在“Site User”参与者中说明,而Guest和Registered User各自私有的特征则在对应的参与者中说明。通常,你可以直接为参与者加上说明文档,无需单独编写说明用户的文档,但具体与你所用的UML工具有关。在本例中,Registered User又可以细分为Wireless User和Administrator两种类型,系统对这些用户的处理方式应有所不同。

2.2 定义需求


在正式开始编写代码之前,你应该对准备构造一个怎样的系统有一个清晰的认识。虽然在编写代码的同时也可以逐步完成这一工作,而且这种做法也很有吸引力,但借助图形和文字资料事先集体进行讨论效率要高得多。为网站编写详细的需求说明往往不那么合算,但你应该有时间画出几个草图、写下几段注解去说明网站准备提供的服务。这就要用到Use Case图(用例图)。Use Case可以看成一组功能——它可能对应网站上的一个页面、一个必须编写的程序,或者网站上可能发生的一个动作(比如,验证用户登录,改变用户的配置文件,清除过期的帐号,等等)。下面就是一个能够帮助你规划网站的Use Case图。注意,该图并没有显示出网站的所有Use Case,通常我们需要多个Use Case图才能描述完整的网站功能。
PlanningSiteWithUML_02.gif
图2:Use Case图

即使是在这样一个简单的Use Case图中,我们也能够轻松地表达出大量的信息。例如,include关系说明两个Use Case包含同样的身份验证功能;extend关系说明天气页面可能以WML或者HTML格式显示;generalization关系说明各个具体的表现过程将遵从“Render HTML Page”或者“Render WML Page”所描述的基本行为规则以达到维持统一的风格效果和统一宏观行为模式的目的。
上图也显示出无线用户能够访问网站中其他用户不能访问的某些区域。在这个Use Case图中,只有无线用户能够访问交通流量报表。这是因为我们已经得知只有在旅途中的移动用户才需要交通流量报表,而且不想再花时间把交通流量报表制作成其他标记语言形式。由此,“Get Traffic Report”Use Case不需要分成WML和HTML两种显示形式,它可以直接包含“Render WML Traffic Report”这个Use Case。
一般地,你应该为这些Use Case加上简单的说明。具体地说,你应该描述每一个Use Case里将要发生什么,谁可以使用它,它如何启动、如何停止,以及某些时候可能发生的特殊事件(称为variation,即变化)。

2.3 用户界面组织


在制作Use Case的过程中,你会得到一些指示网站需要哪些用户界面的线索。也许你早就有了设计某些页面的绝妙主意,但Use Case帮助我们从另外一个角度来看问题。用户是否确实需要那么多的界面?某个页面是否过于复杂?网站的导航设施是否简单易用,即从主页访问常用服务是否很方便?在勾画界面草图、制作网站原型之前,你应该先在Use Case图中解决这些问题。
当Use Case逐渐清晰时,我们就可以开始勾画出网站的大致结构。有些人会强调说页面和文件应该用相应的构件图(Component Diagram)建模,其实类图(Class Diagram)工具也很方便。请参见下图:
PlanningSiteWithUML_03.gif
图3:用户界面及其布局

在上图中,各种网站服务被捆绑到了不同的网站区域:
  • / - 网站的根
  • /common/ - 公用的图形、脚本、CSS文件等
  • /maps/ - 地图数据
  • /traffic/ - 交通流量报表
  • /weather/ - 天气报表


该图还显示了在页面之间传递的参数。regionId是一个很重要的参数,它代表着用户感兴趣的地区(可能是一个国家、城市或者省份)。regionId在页面之间传递地区信息,使得用户能够从指定地区的天气报表跳转到交通流量信息。至于网站的common区域,你可以看到指针指向的是整个包(package)而不是区域中的单个文件,这是一种减少混乱的简化方法,因为所有其它的包都要用到大部分(如果不是全部的话)/common/区域中的文件。
用户界面布局图能够帮助你避免网站混乱,它对于规划网站是很有用的。而且,一旦确定了一种有效的网站结构组织方式,它还可以作为一个固定的模式在多个网站上应用。

2.4 工具选择


对于小型网站,选择工具和技术相当简单。特别是由于投资的原因,只有少数几种工具组合才具有现实意义——Apache,MySQL或者PostgreSQL,PHP、Perl或JSP/Servlet。当前最流行的组合是Apache + PHP + MySQL,有许多低价位的Web托管服务支持并主要集中在这种工具组合上。而对于规模较大的网站,在投资应用软件之前,它必须对各种工具进行更严格的评估和测试。下面是一个构件图的例子,它可以用来说明网站的体系结构。这个图形虽然简单,但它已经描述出了当前大多数网站的体系结构,对于你的网站,重新制作该图可能也没有必要,因为再也没有什么与众不同的内容值得加入这个图形了。
PlanningSiteWithUML_04.gif
图4:网站体系结构图

讨论软件的整个生命周期已经超出了本文的范围,但应该指出的是,建立应用原型和界面模型应该在这个时候就开始。务必记下有关网站结构和页面布局的一些想法,因为最终你会想要为布局(菜单,导航条,页面整体布局等)编写一些公用的代码。另外,如果你正在转到新的工具和技术,建立原型的工作能够让你确保设计的可行性,确信已经就新工具的使用对开发组成员进行了足够的培训。

三、设计阶段


设计阶段应该与分析阶段交迭。一旦对自己所要构造的系统有了较多的认识,你就应该开始拟定设计思路。先100%地分析系统再进入设计阶段是没有意义的。需求总是不断地发展,而设计本身有时也会推动需求的发展(反之亦然)。所有的开发者都在进行某种类型的设计——只不过有些开发者直接以编程代码的形式进行设计。虽然这也能够完成任务,但它使得管理复杂工程和在工作组之内分配任务变得非常困难。先花一点时间通过设计图构造系统模型,以后你将获得巨大的回报。

3.1 为未来而设计


许多开发者花费在代码调试和改写上的时间超过了编写代码的时间,如果从一个以上网站的建设来看这个问题,情况就尤其严重了。好的网站设计能够以结构、组织方式和代码重用的形式应用到多个网站上。然而,如果代码只是匆匆忙忙堆砌而成,从现有代码长期获益的机会就减少了。要对网站进行设计规划,一种很有效的方法是画出类图(Class Diagram)。下图显示了类图通常要用到的许多重要关系。
PlanningSiteWithUML_05.gif
图5:类图

说明如下:


  • Renderer类是一个抽象类(用斜体字显示)。这意味着Renderer类不能直接使用,程序只能创建其子类的实例(即new Region())。为了满足把页面内容显示到不同类型浏览器的需要,所有用来生成内容的页面都必须从Renderer类派生。

  • WeatherReport类创建并拥有Region对象,这通过代表聚合关系(Aggregate Relationship)的黑色菱形显示出来,它表示一个对象拥有并创建其他对象。

  • 方法名字前面的加号(“+”)表示该方法是公用方法,可以被其他对象或者函数调用;减号(“-”)表示方法或者变量是私有的,只能由同一对象内部的成员函数访问。在PHP中方法和变量是公用的,但我们应该总是把变量看成私有,避免从对象外部直接访问变量。

  • HTMLWeatherReport类依赖于HTMLUtils类。依赖关系(dependency)表示一个类要创建另一个类的实例或者调用另一个类的方法。

  • 类图中的每一个类应该注明:所有的方法(以及所有的变量,如有的话),方法的访问属性(public,private或者protected),方法的返回值类型,方法的参数,变量的类型。函数写在前面,如果类有变量的话,则一般随后在一个分开的方框中列出。


即使你所构造的不是一个面向对象的系统,你仍就可以用类图建立系统的模型。类能够方便地描述出各种包含关系和你所编写的函数文件。虽然此时类图不再显示继承、构成/聚合等面向对象系统特有的关系,但它可以用依赖关系描述出文件之间的调用关系。

转载于:https://www.cnblogs.com/cheatlove/articles/382016.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_780326.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站优化的几个方面

充分利用网页标题这适用于网页本身的主标题,也适用于浏览器标题栏中出现的标题。无论何时,要尽可能确保每一张网页都带有独一无二、可描述网页特征的标题。举例说明,如果您的网站是"Buffy 沙发商店",访问者或许希望将您…

在浏览器中输入网站域名并按下回车的详细过程

主要有以下几个部分: 1 DNS解析,获取Web服务器IP 2 建立TCP连接 3 向Web服务器发送HTTP请求 4 Web服务器收到请求并处理 5 Web服务器返回响应 6 浏览器对响应解码,并显示数据 7 页面显示完成后,浏览器发送异步请求 8 关闭TCP连接 …

【web标准设计】学习、提高、欣赏网站推荐

警告文章包含的一些粗俗、庸俗、恶心的言语可能造成您阅读后的不适感,请谨慎选择是否阅读。如你自愿阅读本文,因粗俗、庸俗、恶心的言语给您所造成的任何后果,本文作者不负任何责任。 华丽的中指基础知识的学习 XHTML、CSS、JavaScript的基础…

30个让人兴奋的视差滚动(Parallax Scrolling)效果网站

视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验。作为今年网页设计的热点趋势,越来越多的网站应用了这项技术。今天这篇文章就与大家分享30个视差滚动效果的…

向网页设计师推荐15个很棒的网站

网络上各种各样的社区网站数不胜数,但专注于创意设计的很少。今天这篇文章收集了15个非常好的专注于设计的网站推荐给设计师们,不管是学习先进的设计理念,还是寻找免费资源与工具,这些网站都是很不错的去处,记得推荐和…

【转载】Asp.Net MVC3网站并成功的连接了MongoDB

http://www.cnblogs.com/leo_wl/archive/2012/02/10/2345890.html 我们已经创建了一个简单的Asp.Net MVC3网站并成功的连接了MongoDB。但只实现了创建和显示的功能。本回实现了完整的增删改查。 创建的部分,上次的代码中存在一些错误,造成了每个属性都会…

关于window2003服务器网站访问缓慢!

2019独角兽企业重金招聘Python工程师标准>>> 最近几天发现网站访问缓慢,有时会出现超时,检查后发现没有受到攻击,ping tracert 都很正常,最好发现需要磁盘整理,经过整理后正常了,待观察!!!!!!!! 转载于:https://my.oschina.net/yangalbert/blog/64684

Piwik 1.8.4 发布,网站访问统计系统

Piwik 1.8.4 发布,该版本主要是 bug 修复,显著降低中大型网站的内存占用,另外包含一些新特性和可用性的提升,详细的改进记录请看此处的图文说明。 注意:这个版本包含一些数据库结构的改动,请小心运行更新脚…

Linux怎么运行lisp,Lisp - Ubuntu 中的编程语言_Linux编程_Linux公社-Linux系统门户网站...

LispLisp 语言在2010年6月编程语言排行榜中排名第十六位。下面就是 GregorianTest.lisp 程序:安装 GNU Common Lisp 软件包,gcl 可以作为交互窗口,也可编译源程序(使用 –compile 参数),还可以解释执行(使用 –f 参数)&#xff1a…

浅谈网站流量劫持防范措施

前几天上网打开163首页时,发现页面底部莫名其妙的出现一个边框。这在以前可是未曾有过的,而且以后也绝不可能会有这么丑陋的设计。 趋于好奇心,立刻在边框上点了右键审查元素。尼玛,不看不知道,网易首页的HTML何时变得…

恶搞别人电脑输入百度网址出现搜狐的网站--关于Hosts文件一些运用

在学习搭建Web服务器和Apache服务器的原理和运用的时候,用到了虚拟主机技术.于是就涉及到了Hosts文件.然后就小小学习了一点点.然后觉得挺好玩的.下面给分享一下这个文件的作用和一些简单的运用.首先科普一下,hosts文件的定义. Hosts是一个没有扩展名的系统文件,可以…

Java系的大网站架构-LinkedIn和淘宝

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份…

Nginx配置虚拟机网站根目录

为什么80%的码农都做不了架构师?>>> 今天一个网友叫我帮他在我的vps上配置nginx虚拟机时,发现我更改虚拟机的根路径后,nginx只会执行,nginx默认的配置的根目录下的index.php,但是index.html的,…

如何把qq聊天工具加入到网站中

自己建立了一个网站,很想和一些访问者实现互动交流,可是没机会。其实,我们可以通过一些聊天软件来实现,如我们熟悉的QQ和雅虎通就可以,下面我们就来介绍一下怎么样实现。把QQ添加在网站首先我们登陆QQ,在QQ…

网站内容和外链在优化中的占比

随着互联网的发展,很多人对网站优化中外链和内容的着重程度有着摇摆不定的态度,不知该侧重于哪一个。那么在这里就这个问题将和大家做一下探讨。 一、相对于新站来说,自从百度算法的更新后,刚建的新站内容却显得越来越重要了&…

angularjs php电商网站,AngularJs应用:实现类似购物页面的一个小例子(附代码)...

本篇文章给大家带来的内容是关于AngularJs应用:实现类似购物页面的一个小例子(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。写个小应用,熟练一下AngularJs.。Page Titlevar myAppangular.mo…

屏蔽某些网站软件方法

今年不知道怎么回事,也许是年纪大了,自己的注意力越来越难易集中了,经常在上班的时候开小差,看那些和工作无关的网站,例如微博,知乎,虎嗅、36氪等,一看就十几分钟,开始不…

细谈PHP多语种建站

2019独角兽企业重金招聘Python工程师标准>>> 公司产品网站不可能局限于中文,因为你的网站注册客户也许是美国人,韩国人,西班牙人等,你不得不面临网站多语种解决问题。 其实多语言网站很多,如谷歌网站&#…

网站性能构建

网页性能管理详解 你遇到过性能很差的网页吗? 这种网页响应非常缓慢,占用大量的CPU和内存,浏览起来常常有卡顿,页面的动画效果也不流畅。 你会有什么反应?我猜想,大多数用户会关闭这个页面,改为…

招聘网站需求分析

网站定位:建筑行业专业性盈利性招聘网站。 一、主页设计 用户明确要求以下三点: 1、主色调:蓝色。 2、有不同尺寸的广告位。 3、自动刷新。 其余参照以下网站: 4,个人用户注册页面 5,企业注册页面 二、求职…