1.简述C/S软件系统和B/S软件系统各自特点和发展趋势。
(10分)B/S结构的优点(1)具有分布性特点,可以随时随地进行查询、浏览等业务处理。
(2)业务扩展简单方便,通过增加网页即可增加服务器功能。
(3)维护简单方便,只需要改变网页,即可实现所有用户的同步更新。
(4)开发简单,共享性强B/S 模式的缺点(1)个性化特点明显降低,无法实现具有个性化的功能要求。
(2)操作是以鼠标为最基本的操作方式,无法满足快速操作的要求。
(3)页面动态刷新,响应速度明显降低。
(4)无法实现分页显示,给数据库访问造成较大的压力。
(5)功能弱化,难以实现传统模式下的特殊功能要求。
C/S的结构是,客户端/服务器端B/S的结构是,浏览器/服务器端C/S的程序通常也叫胖客户端,也就是一个程序的大部分功能,都在客户端实现,而服务器端只实现一小部分功能。
通过这点不难看出,C/S的程序大部分在客户端实现,对于服务器端的压力相对小一些,服务器端可以节省一些。
而且C/S的程序用窗口来做,个人认为开发效率上快一点。
但C/S的程序一大弊端就是,必须要在客户端安装并部署程序才能运行,也就是用户必须得到客户端程序才可以运行。
所以得考虑不同系统之间的安装与配置。
B/S的程序通常也叫瘦客户端,与C/S相反。
B/S的程序大部分功能都要在服务器端实现,客户端只用来做辅助的控制功能。
B/S应用程序最近大受欢迎,因为B/S的程序直接部署安装在服务器上。
用户只需要有浏览器,并知道网址就可以使用程序。
客户端不必做任何配置和安装,即可使用应用程序。
而B/S也是有缺点的,首先B/S大部分功能都要在服务器端实现,对于服务器的要求就很高。
服务器同时要应付用户访问与程序处理,所以服务器的配置必须能够应付。
另外就是B/S的程序是浏览器中执行,所以B/S的程序操作客户端电脑的硬件,一般就得安装ActiveX等插件在客户端才可以操作。
因此B/S的程序对于操作硬件,优势没有C/S的程序要好。
发展趋势:C/S结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。
早期的软件系统多以此作为首选设计标准。
B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。
这种结构更成为当今应用软件的首选体系结构。
2.EJB(Enterprise Java Bean)的接口分Local接口和Remote接口,简述其差异和应用场景。
(15分)local是本地接口,remote是远程接口。
web层调用app层使用remote接口。
session bean 和entity bean之间调用使用的是local接口。
如果Bean类实现了一个接口,这个接口被认为是Bean类的业务接口,默认是本地业务接口。
local 是同一个容器调用的,remote可以跨容器调用。
Local接口适用于一个JVM中,而Remote接口适用于不同的JVM中。
Bean类被允许有多个接口,必须清楚地使用Local或者Remote注释或者使用部署描述器标识业务接口:供远程访问的接口,与普通接口基本相同,需要使用元注释声明:@Remote;供本地访问的接口,使用元注释:@Local。
当@Local和@Remote的EJB注释都不存在时,会话Bean实现的接口默认为Local接口。
如果在本机调用EJB(确保客户端与EJB容器运行在同一个JVM),采用Local接口访问EJB 优于Remote接口,因为Remote接口访问EJB需要经过远程方法调用,而Local接口访问EJB直接从JVM 中返回EJB的引用。
Bean的提供者可以用@Remove注释来标记任何SFSB 的方法,以说明这个方法被调用之后bean的实例将被移除。
同样,规范组织仍然在讨论是否要有一种机制来处理这种特殊的情况,即当这个方法出现异常的情况下bean的实例是否被移除。
3.敏捷软件开发的主要思想和实现步骤是什么?(15分)敏捷软件开发宣言具体表达了敏捷开打的具体思想:•个体和交互胜过过程和工具•可以工作的软件胜过面面俱到的文档•客户合作胜过合同谈判•响应变化胜过遵循计划虽然右项也具有价值,但认为左项具有更大的价值。
实现步骤:4.简述基于构建软件开发的主要技术分类和各自技术特点。
(20分)1)面向对象技术。
具有封装性、继承性、多态性、自然模拟客观世界的能力,是建立可复用构件的主要基础;面向对象的开发方法也是形成基于构件的软件开发方法的主要基础,其是最核心的支撑技术。
2)设计模式。
设计模式(design patterns)是指在特定场合下,对某一类问题的通用解决方案,表现为一组对象间的组合和交互的特定方式。
设计模式是建立可复用构件的重要方法,是把专家级的设计思路用于构件设计的快捷方法。
3)重构技术。
重构(refactoring)就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
有助于从遗产系统中发现可复用构件,也是已有构件进化的重要手段。
4)范型编程技术。
范型编程(generic pro~gramming)技术是一种典范(paradigm),专注于将型别(type)抽象化,形成功能需求方面的一个精细接口,并复用这些需求来实现算法。
由于算法为其所操作型别定义了严格、精细的接口,因此相同的算法可用于广泛的型别集。
在构件的生产中,范型技术是实现构件体的重要工具。
5)形式化方法。
可以分为:形式化描述和建立在形式化描述基础之上的形式化开发。
形式化的描述就是用形式化的语言(具有严格的语法语义定义的语言)做描述。
形式化的软件开发,就是用形式化的语言来描述软件需求和特征,并且通过推理验证来保证最终的软件产品是否满足这些需求和具备这些特征。
形式化方法是建立精确、一致的构件模型和构件描述语言等的基础。
6)软件工程的基础理论。
软件工程是采用工程的概念、原理、技术和方法来开发和维护软件,把经过考验证明是正确的管理技术与能得到的最好的技术方法结合起来进行软件开发。
基于软件工程的基础理论,根据自身特点和要求形成实用的软件工程方法,是基于构件的软件开发研究和获得成功的必然之道。
7)软件体系结构。
又被称为构架,是软件系统的高级抽象,体现了系统开发中最早做出的决策,它体现了根本性的系统设计思路,对系统起着最为深远的影响,是一种可预制和可复用的软件框架结构。
8)领域分析方法。
领域分析是在软件开发过程中对应用领域的信息进行收集、抽象和组织,识别和构造出各种可重用的信息,使得这些信息能够在开发该领域的软件构件时得到最大限度的利用。
合适的领域分析方法是抽象领域基本特征,获得可重用资产的关键。
9)人工智能技术。
人工智能是关于知识获取、知识的描述、理性推理和学习的科学和技术,在构件模型描述和自动组装等多方面有着广泛的应用。
5.简述UML语言实现面向对象软件开发的主要过程和相应的UML图例。
(20分)过程包括设计对象和类、设计系统结构、设计问题域子系统、设计人-机交互子系统、设计任务管理子系统、设计数据管理子系统和设计优化。
6.就课堂讨论的主题,谈谈你对其中某一个主题的认识。
(10分)7.下面两个E-R图是数据建模的概念模型,请指出各自应用场景?并简述理由。
(10分)1.EJB(Enterprise Java Bean)的分类和各自应用场景。
(15分)EJB3中:会话Bean:有状态会话Bean、无状态会话Bean——状态会话Bean是一种保持会话状态的服务,每个实例都与特定的客户机相关联,在与客户机的方法调用之间维持对话状态。
与之相反,无状态会话Bean不保存与特定客户的对话状态。
因此状态会话Bean比无状态会话Bean具有更多的功能,而无状态会话Bean实例可以通过EJB容器自由地在客户机之间交换,从而少量的会话Bean就可以服务于大量的客户机。
实体(通过JPA访问):代表商务上的实体,比如商务数据,应该包含与数据相关的逻辑。
实体Bean是对应到数据库中的一个视图,一个实体Bean实例和底层数据库完全是一回事。
因此,一个简单的实体bean实例代表一个特殊的记录。
更复杂的实体bean可以代表数据库表间关联视图。
消息驱动Bean:通过允许容器去聚合并且管理消息驱动Bean实例,以此来提供传入JMS 消息的并发处理。
2.比较Java EE架构和.Net架构的特点。
(15分)Java EE应用都大致可以分为如下三层:表现层,业务逻辑层,数据持久层。
轻量级Java EE架构以Spring IoC容器为核心,承上启下:其向上管理来自表现层的Action,向下管理业务逻辑层,同时负责管理业务逻辑层所需的DAO对象.满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。
这种基于组件,具有平台无关性的J2EE 结构使得J2EE 程序的编写十分简单,因为业务逻辑被封装成可复用的组件,并且J2EE 服务器以容器的形式为所有的组件类型提供后台服务. 因为你不用自己开发这种服务, 所以你可以集中精力解决手头的业务问题.通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise JavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。
.NET架构,其特点是:1. 一致的编程模型2. 简化的编程方式3. 可靠的版本机制4. 轻便的部署管理5. 广泛的平台支持6. 无缝的语言集成7. 简便的代码重用8. 自动化的内存管理(垃圾收集)9. 坚实的类型安全10. 丰富的调试支持11. 统一的错误报告12. 全新的安全策略13. 强大的互操作能力3.SOA(Service-Oriented Architecture)主要特点和优势是什么?(15分)SOA从面向构件开始,面向构件从SOA开始——服务是构件与生俱来的,而以前的开发语言却不是;因此以构件为单元的应用软件就与生俱有了服务的能力,也就是服务别人的能力和享用别人服务的能力。
面向构件这个开发方式是最好的服务的制造方式,它所造出的构件和业务构件是全粒度的服务。
面向构件就是最好的应用软件构造方法,并能把SOA企业架构下的企业服务资源很好地应用起来。
SOA生命周期中,我们将设计时、运行时和变更时看做是松散耦合系统中正在建设的业务过程或服务的三个阶段。
SOA的一个优势是有能力实现系统分拆,大大节省了成本,增加了灵活性,将开发和测试团队移动到更多的并行开发周期中。