《软件设计与体系结构论文.doc》由会员分享,可在线阅读,更多相关《软件设计与体系结构论文.doc(21页珍藏版)》请在三一办公上搜索。
1、软件设计与体系结构非卷面试题设计题目 快餐店多功能点餐系统院 系 电子与信息工程学院专 业 计算机科学与技术学生姓名 学生学号 任课教师 倪 启 东快餐店多功能点餐系统摘 要随着计算机软件行业的发展和互联网的普及,软件进入到人们生活的各个行业之中。在这个软件爆炸的时代,软件系统有一个好的设计与结构显得尤为重要。通过快餐店多功能点餐系统的设计,将软件体系结构与设计的所学的知识,运用到实际系统中,是对知识、技术的巩固,也是能力的提升。本系统主要运用增量模型,随着知识的学习同步进行系统的开发。主要采用了策略模式、观察者模式、装饰者模式、工厂模式、单例模式。同时,伴随着设计原则的思想,使得系统更加稳定
2、而高效。关键词 点餐系统;体系结构;设计模式;java目录第1章 绪论11.1引言11.2系统开发目标11.3开发环境1第2章 需求分析32.1项目概述32.2功能需求32.2.1用户需求32.2.2系统需求32.3非功能需求32.3.1产品需求32.3.2 外部需求42.4业务需求42.4.1业务要求42.4.2客户与用户42.4.3特性4第3章 结构设计53.1整体设计53.1.1普通用户活动图53.1.2会员活动图63.1.3管理员活动图73.2详细设计73.2.1模块划分73.2.2简单业务流程设计8第4章 设计模式94.1工厂模式94.1.1模式说明94.1.2模式类图104.1.3
3、所用原则104.2抽象工厂模式104.2.1模式说明104.2.2模式类图114.2.3所用原则114.3观察者模式124.3.1模式说明124.3.2模式类图134.3.3所用原则134.4策略模式134.4.1模式说明134.4.2模式类图144.4.3所用原则144.5单件模式154.5.1模式说明154.5.2模式类图154.5.3所用原则15结 论16致 谢17参 考 文 献18第1章 绪论1.1 引言当今世界已进入信息时代,Internet成为21世纪最受关注的行业之一,它的飞速发展和在全球范围的普及应用正在给人类生活带来革命性变化。网络技术的发展也取得了巨大的成就,为网站开发提供
4、了很好的技术支持。正基于这个背景,产生了快餐店多功能点餐系统。就我而言,主要是想通过快餐店多功能点餐系统的开发,让自身在软件开发的知识水平提升一个档次,特别是对软件开发形成一种概念。也正如Head First设计模式中所说,对象村里的每个人都在使用设计模式。对于刚刚入住对象村的我,需要有一个和大师交流的机会,而快餐店多功能点餐系统无疑是我跻身上流社会的一个桥梁。“把模式装进脑子里,然后在你的设计和已有的应用中,寻找何处可以使用他们。”使用设计模式的最好方法。把自己学到的模式和原则,套用到开发的系统之上,在开发系统的同时也掌握的设计模式的基本思想。在起初没有使用设计模式的系统中,更能明显的看出设
5、计模式的威力所在。1.2 系统开发目标为快餐行业的网互联化提供支持,使商家和定餐者都能便捷高效的完成自己的需求和响应。具体目标如下:用户能够在没有经过培训以及不了解原有系统的情况下使用系统;系统应将订单处理流程加快20%以上;用户可以节省一半的查看菜单详细信息;当用户在快餐店用餐时,可以仅用没有系统所用时间的30%来完成订餐;当用户叫外卖时,不需要再找外卖单以及订餐电话;会员得知优惠的效率提高90%以上。1.3 开发环境本系统采用目前最流行的web开发技术之一J2EE进行开发。主要开发语言采用Java,网页采用JSP、css以及javascript,后台处理采用servlet技术,数据库使用的
6、是MySQL5.5,服务器使用的是Tomcat7。可以配置在Windows,Linux,Unix等常用操作系统平台。第2章 需求分析2.1 项目概述适用于快餐店的多功能点餐系统,实现会员记录的增、删、查、改、存、读、的基本功能,根据功能,指导系统的模式。分别对于普通用户、会员、管理员开设系统。对于普通用户,有管理个人信息、查看菜单、订餐、结帐四种操作。对于会员,在普通用户的基础上,可以查看优惠信息、使用优惠券。对于管理员,可以进行管理员管理、普通用户管理、会员管理、菜单管理。2.2 功能需求快餐店多功能点餐系统在功能上应满足三类用户的需求,使得用户使用更加方便而高效。2.2.1 用户需求管理员
7、可以通过网络进行菜单更新、会员管理、普通用户管理、发布优惠信息、查看选定时间段的营业情况;所有用户可以选定菜单的特定子集进行查看菜单;普通用户可以查看今日特价、查看菜单、查看菜目详情、预订菜目、查看消费金额;会员在普通用户功能的基础上能够查看会员优惠、使用优惠券;普通的浏览者可以浏览菜单。2.2.2 系统需求系统能将用户每次的消费设置唯一的标识符记录到用户的信息上;系统可以提供适当的浏览器供用户查看电子邮件等;2.3 非功能需求为了使用用户能够更好的使用系统,系统应具有的性能需求分为以下几个方面。2.3.1 产品需求系统应在30秒之内响应用户的所有请求;系统每周7天、每天24小时都可以使用;对
8、于一个没有使用经验的管理员而言,可以经过20分钟的培训使用系统;对于没有使用经验额普通用户和会员能够直接使用系统;系统的安全性、稳定性和可靠性可以让用户放心的使用;系统应具有良好的可移植性。2.3.2 外部需求系统的设计应具有较高道德用户体验度以及较高的互操作性。2.4 业务需求快餐店多功能点餐系统为快餐行业服务,需要为快餐店的管理员、会员与普通用户服务。2.4.1 业务要求具体业务要求如下:l 各种菜目的预订、查询和管理;l 使用计算机实现菜单的日常管理,提供工作效率和服务质量;l 用户通过网络来实现订餐,改变原有的预订方式;l 会员通过网络来进行优惠查询与管理,更加方便和高效;l 管理员可
9、以更直观的管理用户和会员,分析其数据,可以更好的辅助决策。2.4.2 客户与用户快餐店的所有者或者管理员、普通用户、快餐店的会员。2.4.3 特性能够在网络上完成订餐与优惠管理,使普通用户和会员更加方便。快餐店管理员可以通过电子邮件给会员发送优惠信息,大大节省了人力物力。第3章 结构设计3.1 整体设计通过分析整个系统的需求,结合UML建模语言,对系统整体用例图分析如图3.1.1所示。图3.1.1 系统用例图3.1.1 普通用户活动图普通用户可以进行菜单查看,点单,查看消费金额等活动,系统活动图如图3.1.2所示。图3.1.2 普通用户活动图3.1.2 会员活动图会员在普通用户的基础上可享受更
10、多优惠,系统活动图如图3.1.3所示。图3.1.3 会员活动图3.1.3 管理员活动图管理员可以进行菜单管理、普通用户管理、会员管理等活动,系统活动图如图3.1.4所示:图3.1.4 管理员活动图3.2 详细设计对于系统的设计,根据软件工程的相关理论,遵循模块化原则,使得系统在“高内聚、低耦合”的要求之下更加稳定、已扩展,在后期的维护方面可以更加方便。3.2.1 模块划分按照系统开发的要求,可以分为前台与后台。前台与用户交互的界面设计应满足简洁大方,以小清新为主题风格。后台代码实现应条理清晰,方便之后的扩展与管理。具体模块及关系如图3.2.1所示。图3.2.1 模块划分图3.2.2 简单业务流
11、程设计对于整个系统的业务流程,主要包括三个主要参与方。订餐者的点餐信息通过服务器的处理可以反馈给管理员,而管理员发布相关的优惠也是通过服务器的处理通知给会员。业务流程图如图3.2.2所示。图3.2.2 简单业务流程图第4章 设计模式4.1 工厂方法模式4.1.1 模式说明工厂方法模式,就是定义一个创建产品对象的工厂接口,让子类决定实例化哪一种实例对象,也就是将实际创建实例对象的工作推迟到子类当中,核心工厂类不在负责具体产品创建。实质上是通过继承的方式实现应用程序的解耦。 应用在本系统中,有一个数据库的操作类工厂,名字叫DAOFactory,有四个数据库操作类,UserDAO、DishesDAO
12、和TableDAO,分别对用户、菜单和餐桌消息进行管理。4.1.2 模式类图图4.1.1 工厂方法模式类图4.1.3 所用原则 “开闭”原则一个软件实体应对扩展开放,对修改关闭。在设计软件模块的时候应该使这个模块可以在不修改的前提下被扩展。在本系统中,将Dao类的实现推迟到对象子类中实现。 依赖倒置原则不论工厂还是产品都依赖于抽象,而不是具体的实现类。这样以来,无论底层组件怎么变化,只要抽象组件不变,高层组件就不会发生变化。4.2 抽象工厂模式4.2.1 模式说明抽象工厂模式提供了一个接口,用于创建相关或者依赖对象的家族,而不需要制定具体的实现类。抽象工厂模式允许客户使用抽象接口来创建一组相关
13、的产品,客户类和工厂类分开,客户需要任何产品的时候,只需要向工厂请求即可,客户无需修改就可以获得新产品,这样一来,客户就从具体产品中解耦。实质上是通过对象组合的方式实现应用程序的解耦。而这样的模式正好适用于订餐者的点餐:快餐店生产食物的工厂;各种食物工厂生产的产品;订餐者客户。角色关系如下图4.2.1所示。图4.2.1 抽象工厂模式角色关系图4.2.2 模式类图图4.2.2 抽象工厂模式类图4.2.3 所用原则(1) 多用对象组合,少用继承所谓对象组合,就是让对象作为类的成员变量,通过构造函数或者set方法给类的对象的实例变量赋值。在本系统中,在订餐者的类中存在一个FastFactory抽象工
14、厂类型的实例变量,订餐者类通过构造方法将对象传入。(2) 针对抽象编程,而不是针对实现编程当设计一个软件系统的时候,要尽可能的对软件系统中出现的事物进行抽象,从而建立基础的抽象底层,这样做的目的就是让软件的结构更加框架化、系统化,系统结构更加灵活,易维护、易扩展。(3) 产品对象通过对象暴露的方法创建一个软件系统要达到“高内聚、低耦合”的要求,应尽量避免在对象实例中使用new关键字创建其他对象实例。在客户类中,没有创建对象实例的语句,而是调用抽象工厂暴露的方法获得对象实例,创建对象实例的工作全部都是在具体工厂中实现的。4.3 观察者模式4.3.1 模式说明观察者模式(发布/订阅模式),定义了对
15、象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖他的对象都将得到通知并自动更新。在本系统中,会员与管理员之间便是这种关系:管理员被观察的对象,会员观察者。当管理员发布优惠信息的时候,主动发出对每个会员的通知。在具体的实现中,让被观察者管理观察者的对象的接口类型,然后调用接口方法更新观察者。4.3.2 模式类图图4.3.1 观察者模式类图4.3.3 所用原则(1) “开闭原则”观察者对象将自己注册到被观察者的容器中时,被观察者不过问观察者的具体类型,而是使用观察者的接口。(2) 单一职责原则在该模式中,一个被观察者可以对应多个观察者,观察者对象都是基于接口而不是具体的实现,这一点
16、为程序提供了更大的灵活性。当被观察者发生改变时,他可以将消息注意发送给观察者;而每一个观察者关注于处理各自的内容,不与其他观察者对象产生任何影响,这就是所谓的单一职责原则。(3) 依赖倒置原则在观察者模式中,抽象观察者角色定义了更新的接口,在被观察者对象中,存储的是该抽象类型的集合。4.4 策略模式4.4.1 模式说明策略模式定义了一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户应用而独立变化。策略模式使用多个类来区分不同的行为,使用策略模式避免暴露复杂的、与算法相关的内部数据结构。在本系统中,快餐店的促销优惠策略就是用了这种策略模式,其中,各种菜目的促销
17、方式就是具体的策略,而订餐者最终的消费金额就是通过每一种优惠策略的算法计算得到的。4.4.2 模式类图图4.4.1 策略模式类图4.4.3 所用原则(1) “开闭”原则在策略模式中,可以在客户端程序运行的时候动态设置需要的具体策略,进行算法的运算,而不需要修改客户端的应用程序就能达到不同算法的行为。每一种算法用一个独立的类实现,更加易于系统的扩展,增加一种策略只需要新增一个实现抽象策略的接口即可达到目的。(2) 单一职责原则在策略模式中,每一种策略都是使用一个类来实现的,因此各种算法之间没有任何干扰,各种算法都专注于实现自身的处理逻辑,这使得功能模块的耦合度降低,有效的防止了因修改一个策略对其
18、他策略的影响。4.5 单件模式4.5.1 模式说明单件模式是指确保每个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在本系统中,数据库连接类只能有一个实例,该类自行创建这个实例,同时该类自行向整个系统提供这个实例,因此,数据库连接类无疑满足了单件模式。4.5.2 模式类图图4.5.1 单件模式类图4.5.3 所用原则(1) 确保某个类只有一个实例一个类保证有一个实例,首先要将构造方法设置为private,这样就保证了类不能被外部应用创建;其次是提供一个方法,该方法供外部应用使用,获得单件对象。(2) 自行实例化并向整个系统提供这个实例单件模式的设计,必须要有类自身提供那个获得单件对象
19、的方法,而不能由外部应用程序创建对象。在提供单件对象时,首先应设置一个类的静态实例对象。结 论经过这段时间的努力,快餐店多功能点餐系统论文终于完成了。在整个设计过程中,出现过很多的难题,但都在老师和同学的帮助下顺利解决了,在不断的学习过程中我体会到:写论文是一个不断学习的过程,从最初刚写论文时对设计模式的问题的模糊认识到最后能够对该问题有深刻的认识,我体会到实践对于学习的重要性,以前只是明白理论,没有经过实践考察,对知识的理解不够明确,通过这次的论文,真正体会到理论加实践的威力之大。同时,在这次设计中,我也发现了自己的许多不足。首先,本系统是之前自己开发的一个不很完整的系统,现在重新修改时,由
20、于设计模式的掌握还不算很全面,走了不少弯路。其次,由于考虑不是很全面,所以系统功能扩充时,碰到不少困难。再次,我还应该多掌握些制作网站方面技术,不断提高自己开发软件的能力。总之,通过这次非卷面的考试,我深刻体会到要做好一个完整的事情,需要有系统的思维方式和方法,对待要解决的问题,要耐心、要善于运用已有的资源来充实自己。同时我也深刻的认识到,在对待一个新事物时,一定要从整体考虑,完成一步之后再作下一步,这样才能更加有效。致 谢行文至此,我的这篇论文已接近尾声;岁月如梭,我这半年的大学时光也即将敲响结束的钟声。回想着我们的第一堂课、看着一门门课程的结束,心中难免思绪万千,一种感恩之情油然而生。生我
21、者父母。感谢生我养我,含辛茹苦的父母。是你们,为我的学习创造了条件;是你们,一如既往的站在我的身后默默的支持着我。没有你们就不会有我的今天。谢谢你们,我的父亲母亲!在这半年中,老师的谆谆教导、同学的互帮互助使我在专业技术和为人处事方面都得到了很大的提高。感谢电子学院在对我的教育与培养,感谢我的老师,没有你的辛勤劳动,就没有我今日的满载而归,因为有你,使我在这一段宝贵的时光中,既增长了知识、开阔了视野、锻炼了心态,又培养了良好的实验习惯和科研精神。感谢曾经帮助过我的所有同学。在此我向你们表示最衷心的感谢。参 考 文 献1. Head First设计模式 中文版 2. 设计模式解析 Alan Shalloway、James R. Trott (著)3. 软件体系结构及实践分析 余雪丽 (主编)4. 软件体系结构理论及应用 李金刚、赵石磊、杜宁 (主编)5. 软件秘笈设计模式那点事 郑阿奇 (主编)6. 设计模式之禅 秦小波 (著)7. 设计模式的艺术软件开发人员内功修炼之道 刘伟 (著)8. 需求工程基础、原理和技术 Klaus Pohl (著) 9. 软件工程及实践 窦万峰 (主编)10. 软件工程标准手册 石柱 (编著)