有图学习案例浏览器x开发正文.docx
- 文档编号:30095157
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:11
- 大小:215.85KB
有图学习案例浏览器x开发正文.docx
《有图学习案例浏览器x开发正文.docx》由会员分享,可在线阅读,更多相关《有图学习案例浏览器x开发正文.docx(11页珍藏版)》请在冰豆网上搜索。
有图学习案例浏览器x开发正文
一.面向对象软件工程概述
软件工程是一门研究如何用系统化、规范化、产业化等工程原则和方法实施软件的开发和维护的学科。
1968年秋季,NATO的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。
在那次会议上第一次提出了软件工程(SoftwareEngineering)这个概念。
到今年,软件工程整整走过了33年的历程。
软件研究人员不断探索新的软件开发方法,至今已形成八类软件开发方法:
(1)最早的Parnas方法。
这一方法不能独立使用,只能作为其它方法的补充。
(2)1978年,E.Yourdon和L.L.Constan-tine提出的结构化方法,即SASD方法,也可称为面向功能的软件开发方法或面向数据流的软件开发方法。
(3)面向数据结构的软件开发方法。
(4)20世纪80年代末由日立公司提出的问题分析法PAM(ProblemAnalysisMethod)。
(5)面向对象的软件开发方法。
(6)可视化开发方法。
(7)ICASE(IntegratedComputer-AidedSoftwareEngineering)。
(8)软件重用和组件连接。
软件开发的面向对象方法于20世纪60年代后期提出,到20世纪90年代前半期,面向对象软件工程成为开发人员的首选范型。
面向对象方法是一种自底向上和自顶向下相结合的方法,它以对象建模为基础,不仅考虑了输入、输出数据结构,实际上也包含了所有对象的数据结构。
OO技术在需求分析、可维护性和可靠性这三个软件开发的关键环节和质量指标上有了实质性的突破。
面向对象方法的特点有:
(1)自底向上的归纳
(2)自顶向下的分解
(3)基础是对象模型
(4)需求分析彻底
(5)可维护性大大改善
本文将介绍用面向对象方法设计浏览器X的过程。
二.项目概述
浏览器X是一个全功能的通用型网络浏览器,其功能主要有:
(1)浏览。
最基本的功能,保证浏览的正确性。
(2)缓存。
缓存结构保持网站存储结构的原貌。
(3)提供一个系统化的解决方案。
提供网页编辑、收发Email等功能。
(4)离线浏览。
能定义下载的层数,能定义下载的文件类型,能定义是否跨网站下载。
(5)网页内容分析。
通过对网页内容的分析,得出用户关心的网页的主题,获取相关的网页。
我们采用迭代型软件开发模型来开发本软件。
本文描述的是第一轮迭代的原型过程。
在这一轮迭代中,我们要实现的功能是浏览以及缓存(缓存结构要求保持网站存储结构的原貌)。
三.项目设计
1.需求分析
在需求分析阶段,我们的焦点是“做什么”,而不是“怎么做”。
不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统必须做什么”。
主要是确定目标系统必须具备哪些功能。
用户了解他们所面对的问题,知道必须做什么,但是通常不能完整、准确地表达出他们的要求,更不知道怎样利用计算机来解决他们的问题;软件开发人员知道怎样使用软件实现人们的要求,但是对特定用户的具体要求并不完全清楚。
因此在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。
并与软件开发技术人员进行交流,以保证在目前现有的人员条件和技术条件下,用户需求是可实现的,系统逻辑模型是合理可行的。
面向对象分析的目标是开发一系列的模型,这些模型被用来描述满足一组客户需求的计算机软件。
我们首先是与用户交流,获取他们的各种需求。
由于用户以前使用过网络,对IE等主流浏览器使用较多,因此提出的需求也比较细致。
这些需求有的是功能需求,有的是性能需求。
具体如下:
(1)在URL框中输入网址,敲回车键后,在显示框中显示网页,并在Cache文件夹中按网站的组织结构保存网页。
(2)用户点击显示框中的超链接,则显示目标页面,在Cache文件夹中按网站的组织结构保存网页,并在URL框中显示当前网页地址。
(3)用户点击刷新按钮时,重新显示当前页面,并在Cache文件夹中按网站的组织结构保存网页。
(4)当用户点击后退按钮时,显示上一个页面,并在URL框中显示当前网页地址。
(5)当用户点击前进按钮时,显示下一个页面,并在URL框中显示当前网页地址。
(6)打开本地文件,在显示框中显示网页,并在URL框中显示当前网页地址。
(7)点击Cache按钮,则在显示框左侧打开一个树型目录框,显示Cache的结构,点击其中的网页文件名,则在显示框中显示网页。
(8)按下脱机按钮,则浏览时在Cache中获取网页,不上网获取网页。
(9)要求前进和后退可进行10步。
(10)网页显示时内容要快一些出来,不要让用户等待长时间而窗口无任何显示。
(11)要求尽可能使用在本机上缓存的网页,以提高浏览速度。
通过对需求的分析,可以发现该系统的特点是:
(1)纯软件系统。
这就不用考虑硬件环境,这是此软件的简单之处。
(2)没有明显的外部实体。
这对分析找出对象产生了难度。
因此,我们从和此系统打交道的外部实体入手。
确定了四个实体:
(1)用户。
此系统的使用者。
(2)Web服务器。
在网络远端,向用户提供服务。
(3)硬盘。
缓存文件以及向用户提供本机浏览的服务。
(4)显示器。
向用户显示结果。
为了和上述4个外部实体打交道,可由四个基本的对象处理:
(1)输入控制:
与用户打交道。
(2)网页获取:
与远端Web服务器打交道。
(3)缓存管理:
与硬盘打交道。
(4)网页显示:
与显示器打交道。
然后,为了控制系统,协调工作,又确定了系统控制和消息传递两个对象。
对这六个对象建立“类——责任——协作者”模型。
(见附录二4.3)
这些对象的关系如图1所示:
图1对象关系图
根据用户需求,得出事件的流程。
(见附录二图3)
通过进一步分析可知,输入控制和网页显示功能是很单一的,消息传递和系统控制在实现时将会得到环境的支持而变得简单。
网页获取和缓存管理会因情况的不同而作出不同反应,为了保证需求分析的准确性,对上述两个对象的状态转换进行分析。
(见附录二图4与图5)
在对象的划分确定后,为了保证做出来的软件使用户操作起来方便,在获得用户意见的同时参考IE的界面,对浏览器X的界面进行了规定。
(见附录二第五部分)
最后编写数据字典,并对一些问题进行了说明。
在需求分析阶段,我们建立了一系列的模型。
他们是系统结构图、“类——责任——协作者”模型、“对象——关系”模型、“对象——行为”模型(系统事件轨迹图、对象的状态转换图)。
这些模型描述了满足客户需求的计算机软件,也为设计阶段打下了基础。
2.设计
面向对象设计将现实世界的OOA模型转换为可以用软件实现的OOD模型。
设计分为两个阶段:
总体设计阶段与详细设计阶段。
在总体设计阶段,决定如何解决需求问题,确定解决问题的策略以及目标系统需要的程序,并设计软件的结构。
在详细设计阶段,决定怎样具体地实现系统,并设计出程序的详细规格说明。
在总体设计阶段,首先确定了环境,即操作系统以及编译器。
这样,就可以以需求分析说明书为依据,针对环境进行有针对性的设计。
根据需求分析,将系统划分成5个子系统:
(1)用户界面子系统
(2)控制子系统。
进行系统控制及消息传递
(3)网页显示子系统
(4)网页获取子系统。
从远端Web服务器获取文件,以及文件信息
(5)数据管理子系统。
执行数据库管理,以及缓存文件
各子系统间的关系见附录三图1。
然后,依据需求分析中建立的“类——责任——协作者”模型,在各子系统中确定出类。
(1)在用户界面子系统,根据用户界面各元素,划分出8个类:
主菜单类、菜单项类、工具栏类、按钮类、URL标签类、URL输入框类、状态栏类、Cache结构显示类。
这些类全部可以复用编译器提供的控件。
(2)在控制子系统,消息传递交由操作系统完成,不需要特定的类,只需要一个控制类进行系统控制,这个类也可以复用控件。
(3)在数据管理子系统,需要两个类,一个执行数据库管理(有控件可以复用),一个缓存文件。
(4)在网页显示子系统,因为网页显示很复杂,新技术日新月异,所以目前采用IE提供的显示功能进行显示,只需要一个网页显示类,有控件可以复用。
但用IE显示会产生一个问题,就是有时候IE会自动去远端Web服务器获取网页,这对缓存造成了麻烦,也对进一步开发造成了困难。
所以采用对IE设置本机代理的方法,让显示子系统获取的网页全部是由网页获取子系统获取,由数据管理子系统缓存到Cache中的网页。
(5)在网页获取子系统中,要实现代理与远端Web服务器文件获取功能,所以需要两个类。
一个是远程文件获取服务端类,用来接受来自网页显示子系统的请求。
一个是远程文件获取客户端类,用来到远端Web服务器获取文件及文件相关信息。
这两个类都有控件可以复用。
依据需求分析中建立的“对象——关系”模型和“对象——行为”模型,得出各类间的协作关系如图2所示:
图2类协作图
在详细设计阶段,我们发现:
为了实现系统,需要建立几个底层的用于转换类间数据格式的类。
它们是网页获取子系统中的HTTP请求消息类和HTTP响应消息类。
这两个类用来分析和处理HTTP消息包。
在数据管理子系统中增加地址类。
这个类用来进行URL和硬盘路径间的相互转换。
这三个类在系统中的位置如图3和图4所示:
图3地址类位置图
图4HTTP消息请求/响应类位置图
在确定出所有的类后,我们对几个不能复用控件的类进行了详细的规格说明。
(见附录四第三部分)
在设计阶段,我们确定出了系统的总体结构,以及要实现系统所需要的类,并对类进行了说明。
这为编码阶段打下了基础。
3.编码
这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。
并且仔细测试编写出的每一个模块。
在本阶段,我们以设计文档为依据,充分利用操作系统和编译器提供的便利进行编码。
大量的类复用了编译器提供的控件,节省了编码时间。
而对于控制类和起基础作用的几个位于底层的类,严格按照详细说明书的说明进行编码。
各单元编码结束后,进行单元测试。
因为人手有限,我们采用的方法是程序员互相交换代码进行测试,要求做到代码覆盖。
单元测试结束后,进行系统组装,得到了一个完整的软件——浏览器X。
4.测试
这个阶段的关键任务是通过各种类型的测试及相应的调试,使软件达到预定的的要求。
最基本的测试是集成测试和验收测试。
所谓集成测试是根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试。
所谓验收测试则是按照规格说明书的规定,由用户对目标系统进行验收。
本软件的测试是从分析阶段就已经开始了的。
在得出分析模型后,我们对分析模型进行了复审,以确保OOA模型覆盖了用户的所有需求。
在得出设计模型后,对设计模型进行复审,确保OOD模型源于OOA模型,并满足OOA模型的所有需求,然后还与技术人员进行了交流,以确保OOD模型的现实可实现性。
单元编码结束后,进行了单元级测试,做到代码覆盖。
系统集成后,对浏览器X进行系统级测试。
测试的重点是显示功能和缓存到硬盘上的文件组织结构,为此我们选择了一个已知其文件组织结构的网站作为浏览对象。
依据用户提出的需求,编写了测试说明书,然后按照测试说明书对浏览器X进行了测试。
在软件通过测试后,我们得到了浏览器X的可发行版本——浏览器X0.1版。
这个版本将被发行并接受广大用户的测试。
四.设计评估
本软件在分析阶段,从信息域、功能域、行为域多角度分析了用户需求,建立了系统结构图、“类——责任——协作者”模型、“对象——关系”模型、“对象——行为”模型(系统事件轨迹图、类的状态转换图)等大量的模型,这使我们比较正确、全面的理解与表述了用户需求。
设计依据分析说明书,编码依据设计说明书,每个阶段均经过严格的复审,因此做出的软件满足用户提出的需求。
本软件划分的子系统功能明确。
子系统中的类基本上只与同一子系统中的其他类传递信息,子系统间的信息通过控制子系统传递。
设计的各个类功能简单,属性数和方法数少。
类的接口少,独立性非常强,除控制类外,每个类均可被其他的系统复用。
继承类主要继承编译器提供的控件,而该编译器提供的控件库是经典控件库,保证了本系统有着良好的继承关系。
本系统在设计时,以用户需求为根本,同时考虑到了实现环境,因此设计较有针对性。
设计出来的系统在编码时可以大量复用已有控件,大大节省了编码时间,而且降低了错误发生的几率。
软件在设计时,考虑了以后的扩充,在整体结构和数据设计时都为以后的扩充做了准备。
因此,此设计为软件的进一步开发提供了一个比较好的基础。
五.小结
面向对象技术是当今最流行的软件开发技术。
面向对象软件工程在需求分析、可维护性和可靠性这三个软件开发的关键环节和质量指标上有了实质性的突破。
用面向对象方法可以更快的开发出高质量的程序,程序更易于维护,易于进行适应性修改及伸缩。
在本文中,介绍了用面向对象软件工程方法开发浏览器X的思路以及过程。
介绍了面向对象的需求分析、设计、测试、编码过程,并对设计进行了评估。
在整个过程中,需求分析阶段是关键的。
在此阶段不仅要确定用户的需求,而且建立了大量的模型。
“类——责任——协作者”模型、“对象——关系”模型、“状态转换图”和“事件流图”从各方面表述了用户的需求,而且是设计和测试的基础与依据。
在设计阶段,“类——责任——协作者”模型用于类的设计和类间的消息设计;“对象——关系”模型用于类间的消息设计;“状态转换图”和“事件流图”主要用于子系统设计,“状态转换图”也在类的设计中用到了。
在测试阶段,“类——责任——协作者”模型和“状态转换图”用来生成单元测试用例;“事件流图”作为综合测试的依据。
在附录部分,给出了开发过程中产生的文档及关键代码。
感谢Underearth在书写本文时提供的帮助,以及其在设计与实现浏览器X时所付出的努力与辛勤工作。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学习 案例 浏览器 开发 正文
![提示](https://static.bdocx.com/images/bang_tan.gif)