《软件工程09实现技术.pptx》由会员分享,可在线阅读,更多相关《软件工程09实现技术.pptx(35页珍藏版)》请在第壹文秘上搜索。
1、软件工程2023-5-82第第9章章 实现技术实现技术 实现阶段的一个首要任务就是构造合适的程序架构以实现阶段的一个首要任务就是构造合适的程序架构以使得所有的用户需求能够在未来的系统中得到满足和使得所有的用户需求能够在未来的系统中得到满足和体现。体现。 从设计到代码的转换过程不仅具有针对算法过程的实从设计到代码的转换过程不仅具有针对算法过程的实现,同时还要考虑到每个具体项目的约束条件。现,同时还要考虑到每个具体项目的约束条件。 与实现相关的关键技术:与实现相关的关键技术:数据管理策略和方法、数据数据管理策略和方法、数据持久化、持久化、XML、领域特定语言领域特定语言(DSL)、模型驱动架构、模
2、型驱动架构(MDA)、重构、重构(Refactoring)等等。非功能性需求的实现非功能性需求的实现 由于非功能性需求涉及的范围由于非功能性需求涉及的范围广且类型不尽相同,因此需要广且类型不尽相同,因此需要在设计和实现中根据不同的要在设计和实现中根据不同的要求区别对待。求区别对待。 硬件是提升性能的手段之一,硬件是提升性能的手段之一,但算法、资源利用情况等也需但算法、资源利用情况等也需考虑和监控(必要时)。考虑和监控(必要时)。 质量方面(正确性)的需求:质量方面(正确性)的需求:可测试性、程序结构。可测试性、程序结构。 安全方面的要求:传输安全性安全方面的要求:传输安全性、数据安全性、操作安
3、全性。、数据安全性、操作安全性。(入侵与健壮性)(入侵与健壮性)2023-5-83分布式系统分布式系统 分布系统中存在多个控制点,因为有多个分布系统中存在多个控制点,因为有多个子程序需要同时工作,如操作系统中的进子程序需要同时工作,如操作系统中的进程。程。 进程间信息交换的方式和规则是信息领域进程间信息交换的方式和规则是信息领域中一个较为复杂的问题,解决的方法与条中一个较为复杂的问题,解决的方法与条件要求(关键区域)密切相关,如数据库件要求(关键区域)密切相关,如数据库的事务。的事务。 实现要求:同构与异构、对象在网络中的实现要求:同构与异构、对象在网络中的分布管理、同步调用与异步调用等。分布
4、管理、同步调用与异步调用等。2023-5-84同步与异步调用同步与异步调用 同步调用具有的最大优点是所有的进程相互了解同步调用具有的最大优点是所有的进程相互了解各自在通信过程中所处的状态各自在通信过程中所处的状态 同步调用缺点是需要实现相对复杂的同步通信,同步调用缺点是需要实现相对复杂的同步通信,由于发送方和接收方需要相互等待会使得两个进由于发送方和接收方需要相互等待会使得两个进程在总体上的执行速度变慢。程在总体上的执行速度变慢。 异步调用的执行速度通常是比较快的,因为发送异步调用的执行速度通常是比较快的,因为发送方和接收方可以互相独立的工作。方和接收方可以互相独立的工作。 异步调用容易出问题
5、的地方是当缓冲区满的情况异步调用容易出问题的地方是当缓冲区满的情况,这时整个系统运行变慢或者信息可生丢失。,这时整个系统运行变慢或者信息可生丢失。2023-5-85死锁、竞争与活锁死锁、竞争与活锁 死锁的产生、进程的竞争死锁的产生、进程的竞争 活锁又被称为饿死(活锁又被称为饿死(starvation) 解决的方法:调度问题,在公平性和合理性上做解决的方法:调度问题,在公平性和合理性上做出折衷。出折衷。2023-5-86胖客户、瘦客户、三层架构胖客户、瘦客户、三层架构2023-5-87 三层架构实现了视图、业务和数据的分离,提升系三层架构实现了视图、业务和数据的分离,提升系统可维护性的同时也为系
6、统分布提供更好的选择。统可维护性的同时也为系统分布提供更好的选择。XML XML是由是由W3C委员会定义的一种标准化语言,用来描述数委员会定义的一种标准化语言,用来描述数据模型和数据。据模型和数据。2023-5-88Storage Module49Udo Kelter50 XML结构的描述:结构的描述:DTD(Data Type Definition)和)和XSD(XML Schema Definition)。)。 如果如果XML文档对其标准的文档对其标准的DTD或或XSD进行了说明并进行了约束,进行了说明并进行了约束,则称该文档为则称该文档为well formed,指,指定了该定了该XML文
7、档的有效性文档的有效性。XML程序设计程序设计 对于对于XML文档的存储和处理目前已经出现了很多文档的存储和处理目前已经出现了很多可用的软件包或系统,使得每种编程语言都具有可用的软件包或系统,使得每种编程语言都具有了处理了处理XML文档的能力。文档的能力。 XML的处理方式一般有两种:文档对象模型(的处理方式一般有两种:文档对象模型(DOM)或用于)或用于XML的简单的简单API(SAX)。)。 DOM是复杂对象处理的首选,比如当是复杂对象处理的首选,比如当XML比较比较复杂的时候,或者当需要随机处理文档中数据的复杂的时候,或者当需要随机处理文档中数据的时候。时候。 SAX则是以流的方式从文档
8、的开始通过每一节点则是以流的方式从文档的开始通过每一节点进行移动,以定位一个特定的节点。进行移动,以定位一个特定的节点。2023-5-89程序轮子程序轮子 对于大多数经常出现的问题,可以将常见对于大多数经常出现的问题,可以将常见的解决方法通过库函数的形式提取出来作的解决方法通过库函数的形式提取出来作为一种公共的资源共享。为一种公共的资源共享。 库函数可以是免费或者收费的,应尽量选库函数可以是免费或者收费的,应尽量选取那些使用者较多的函数库,因为存在的取那些使用者较多的函数库,因为存在的缺陷可能也要少些。缺陷可能也要少些。 在对应用进行测试时,通常是在假设函数在对应用进行测试时,通常是在假设函数
9、库正确的基础上进行的,并没有对库函数库正确的基础上进行的,并没有对库函数直接进行测试的必要。直接进行测试的必要。2023-5-810有价值的轮子有价值的轮子 成熟稳定,代码规范,接口友好,功能符合期望;成熟稳定,代码规范,接口友好,功能符合期望; 有相关支持的保证,如文档健全,最好要有实际用有相关支持的保证,如文档健全,最好要有实际用例;例; 社区相对活跃,用户众多,维护频繁,缺陷处理及社区相对活跃,用户众多,维护频繁,缺陷处理及时;时; 松耦合,定制容易;松耦合,定制容易; 价格合适,有适合的使用许可,最好是开源的。价格合适,有适合的使用许可,最好是开源的。2023-5-811组件组件 组件
10、可以理解为一种特殊的对象,组件是对数据组件可以理解为一种特殊的对象,组件是对数据和方法的简单封装。和方法的简单封装。 使用组件可以实现拖放式编程、快速的属性处理使用组件可以实现拖放式编程、快速的属性处理以及真正的面向对象的设计。以及真正的面向对象的设计。 组件是对类库思想的进一步提升,不是仅提供单组件是对类库思想的进一步提升,不是仅提供单一类的功能,而是将某个子应用封装提供使用。一类的功能,而是将某个子应用封装提供使用。 组件可以对接口进行实现,从而提供实现了这些组件可以对接口进行实现,从而提供实现了这些接口的一类对象。接口的一类对象。 使用现成的组件来开发应用程序时,组件一般可使用现成的组件
11、来开发应用程序时,组件一般可以工作在两种模式下:设计时态和运行时态。以工作在两种模式下:设计时态和运行时态。2023-5-812 在设计时态下,组件显示在窗体编辑器下的一个在设计时态下,组件显示在窗体编辑器下的一个窗体中。设计时态下组件的方法不能被调用,组窗体中。设计时态下组件的方法不能被调用,组件不能与最终用户直接进行交互操作,也不需要件不能与最终用户直接进行交互操作,也不需要实现组件的全部功能。实现组件的全部功能。 在运行状态下,组件工作在一个已经实际运行的在运行状态下,组件工作在一个已经实际运行的应用程序中。组件必须能够正确地将自身表示出应用程序中。组件必须能够正确地将自身表示出来,它需
12、要对方法的调用进行处理并实现与其他来,它需要对方法的调用进行处理并实现与其他组件之间有效的协同工作。组件之间有效的协同工作。 设计时态下所有的组件在窗体中都是可见的,但设计时态下所有的组件在窗体中都是可见的,但在运行时态下不一定可见。如在运行时态下不一定可见。如Swing中的中的JTable、JLabel等在运行时态下就可以设置为不可见,但等在运行时态下就可以设置为不可见,但它们均完成了重要的功能。它们均完成了重要的功能。2023-5-813组件的开发组件的开发 自行开发组件与使用组件进行可视化程序开发存自行开发组件与使用组件进行可视化程序开发存在着极大的不同,要求程序员熟知原有的类库结在着极
13、大的不同,要求程序员熟知原有的类库结构,精通面向对象程序设计。构,精通面向对象程序设计。 设计组件是一项艰苦的工作。对于组件的开发者设计组件是一项艰苦的工作。对于组件的开发者,组件是纯粹的代码。,组件是纯粹的代码。 组件的开发一般不是可视化的开发过程,而是用组件的开发一般不是可视化的开发过程,而是用C+等工具严格编制代码的工作。等工具严格编制代码的工作。 创建组件的最大意义在于封装重复的工作,其次创建组件的最大意义在于封装重复的工作,其次是可以扩充现有组件的功能。是可以扩充现有组件的功能。2023-5-814组件的使用组件的使用 组件的使用是一个相对组件的使用是一个相对轻松的工作,除了可以轻松
14、的工作,除了可以使用组件提供的大量功使用组件提供的大量功能外,还可以对它们进能外,还可以对它们进行定制。行定制。 组件的定制通常可以通组件的定制通常可以通过配置文件的形式进行过配置文件的形式进行,常通过一个配置界面,常通过一个配置界面,通过交互的方式对组,通过交互的方式对组件中需要改动的属性进件中需要改动的属性进行指定。行指定。2023-5-815Java bean组件组件 在在Java领域中也存在具体的组件支持机制,即所领域中也存在具体的组件支持机制,即所谓的谓的Java Bean。 Java Bean是一种特殊的类,在组织上要遵照一定是一种特殊的类,在组织上要遵照一定的设计规则,以能够进行
15、配置以及较容易的与所的设计规则,以能够进行配置以及较容易的与所处环境的连接,类似的还有微软的处环境的连接,类似的还有微软的ActiveX等。等。 组件与系统以及组件之间的通讯一般是按照观察组件与系统以及组件之间的通讯一般是按照观察者模式的方式进行组织的。者模式的方式进行组织的。 Java Bean必须存在一个默认的构造函数,即无参必须存在一个默认的构造函数,即无参数的构造函数。对于每个含有的实例变量,必须数的构造函数。对于每个含有的实例变量,必须存在其简单的存在其简单的get和与其类型相符的和与其类型相符的set方法。方法。2023-5-816 该类可实现接口该类可实现接口Serializab
16、le,该接口没有任何函,该接口没有任何函数。一般只能由那些需要对数据进行序列化的类数。一般只能由那些需要对数据进行序列化的类来使用,这样的类通常要求其中的实例变量和类来使用,这样的类通常要求其中的实例变量和类变量(静态变量)的类型也必须实现变量(静态变量)的类型也必须实现Serialization接口。接口。 按照这些要求设计的一个按照这些要求设计的一个Java Bean,如果具有图,如果具有图形化的描述能力,可以直接在形化的描述能力,可以直接在GUI设计中作为一设计中作为一个可视的组件进行使用。个可视的组件进行使用。 另外,另外,Java允许允许Java Bean以一种十分方便的方式以一种十分方便的方式对类的对象进行存储和载入。对类的对象进行存储和载入。 Plain Old Java Object (POJO)2023-5-817对应代码对应代码框架框架 快速、高效和正确的将很多原始的工作积累合成到一快速、高效和正确的将很多原始的工作积累合成到一个更大粒度的半成品式的系统中个更大粒度的半成品式的系统中 程序员只需对它进行必要的参数定制就能够将其打造程序员只需对它进行必要的参数定制就能