Service-Oriented Architecture Testing Design and Practices

Size: px
Start display at page:

Download "Service-Oriented Architecture Testing Design and Practices"

Transcription

1 Service-Oriented Architecture Testing Design and Practices Alexandre A. dos Santos Júnior André Elia Assad Luiz Felipe S. L. Guimarães C.E.S.A.R / Motorola C.E.S.A.R / Motorola C.E.S.A.R / Motorola Alexandre.Junior@cesar.org.br Andre.Assad@cesar.org.br Luiz.Guimaraes@cesar.org.br Abstract Testing is an indispensable part of software development, and the testing techniques must keep always evolving to address the new behaviors of software applications. The procedural and object-oriented paradigms have been driving the software development for a long time. A new paradigm is been progressively explored: the service-oriented. This new model is composed by three entities that have the following functionalities: to publish a service (the service provider); to find, to invoke a service (the service requester); to bind, and to store available services (the service registry). This paper introduces the concepts of service-oriented architecture, and presents some innovative testing design and practices for verifying and validating serviceoriented applications. Keywords: Service-oriented, unit test, reflection, service API testing, automatic testing, test patterns. 1. Introduction Software applications are gradually evolving from the object-orientation to service-orientation paradigm, this is clearly noted with the success and adoption of web services in a wide variety of enterprise applications. Today there are a number of application frameworks, such as J2EE, ASP.NET, OSGi, RPG and others, that uses Service-Oriented Architecture (SOA) to provide users' applications a collaborative environment where business parties can export and import services. Even though SOA is been gradually integrated on enterprises applications there are a lack of testing techniques designed for SOA applications in the software engineering literature. On this light, new techniques are necessary to verify and validate applications based on SOA concepts. This paper proposes test cases design and practices to be used as a testing pattern in any automatic testing process that aims to evaluate the behavior of SOA applications. These patterns were designed for Java language; however they are somehow agnostic, and can be implemented using other programming languages. This work focuses on unit tests, services contracts tests, and automatic API testing. The proposed SOA testing techniques were designed during the JSR-232 TCK development at C.E.S.A.R. On this project the JCP group worked together with the Mobile Expert Group (MEG) of the OSGi Alliance to standardize the set of mobile services to run on top of OSGi framework. Motorola (as a member of the OSGi Alliance) actively contributed with MEG specifications, and C.E.S.A.R. was responsible for doing the compliance testing of these new services Scope The concept of service-orientation, which is the foundation of this work, is discussed in the next section. Section 3 presents a unit test approach for SOA applications. Section 4 describes techniques for testing services contracts. Section 5 shows how to make automatic API testing by identifying some patterns in the tested methods. Section 6 presents our conclusion about SOA testing design and practices. References are given at section Service-orientation In a service-oriented environment applications are assembled from reusable building blocks [1] called services. On this environment services are described and organized to support their dynamic, automated discovery and use. In this model services can be used by arbitrary clients, and the service providers are not tied to any particular client, instead, the service providers are interchangeable [2]. In a service-oriented environment there are always three entities: service provider, service requester, and the registry. The services provider publishes a service description and provides the implementation for the service; service requesters finds the service description in the service registry, binds, and invokes the service; the service registry is a directory that contains available services, this entity accepts and stores contracts from services providers and provides these contracts to interested service requesters [3]. The contract is the specification of the way a requester of a service will interact with the service provider. It specifies the format of the request and response from the service. Figure 1, shows the architectural design of SOA applications.

2 Service Provider Bind Service Requester test optional services features or not. Figure 2 indicates that test cases should avoid users interactions in order to keep the integrity of the test results. Contract Publish Discover Test Case Service Registry Figure 1 - Service-oriented design 2.1. Service-oriented test guidelines When developing a component, it is indispensable to test the correctness of the code. Therefore, planning and executing test cases are an excellent way to assure a welldone work. However, it is recommended that the tests be done along with the product being developed. In that way, the errors can be detected as early as possible (even in requirements and design phases), avoiding rework. Testing is not the final hurdle to release the code [4], it must be treated as a continuous activity. There are many thoughts to keep in mind when writing test cases for a SOA application, which is quite different from a user oriented application. The table below shows a comparison of these two kinds of applications testing: Table 1 - User Oriented x Service-Oriented User Oriented Bases tests on requirements Tested API is never changed Business process is usually an entity Assumes components will be always present Service-Oriented Bases tests on services contracts Normally extends services interfaces for testing Business process is a set of services Assumes components have a dynamic availability However there are also some good practices of nonfunctional requirements of software engineering that may be considered and sometimes disregarded [5] when writing test cases for SOA applications. We will focus on robustness, performance, ease of use, and coding Robustness Test case developers must always try to perform automatic testing when possible. It is not a good practice to ask users for inputs or any kind of interaction, it may lead to unexpected test results. Users may provide a wrong input to the test case, and this would be very difficult to identify. A separate test case properties file could be used to overcome this problem, this way test cases could get all the input values, and decide whether to Avoid user interaction Get configuration inputs from files Figure 2 - Configuration design On the other hand the tests may disregard some good practices, such as when the test is executed in an environment where the developer can share static variables with the services under test. Sometimes this is the only way a test case can evaluate the behavior of a service after removal of the service reference. For user applications it is not recommended to share static variables among threads and classes because it is not trivial to keep the synchronization of the variable value. However for testing purposes this approach overcomes the problem of getting key values from the service under test after its removal from the registry. Figure 3 shows the design of a test case that shares static variables with services under test in order to get valuable data for the test results. Static Variable Test Case Performance Share Uses Figure 3 - Static variable sharing Test environment Service under Test Performance is not a primary concern when writing test cases, actually there is no non-functional requirement that is more important than generating a good quality test result. For instance test case developers must do all efforts to cleanup a test case state before the execution of another test. Otherwise the unwanted state left on the application may lead the test suit to produce a wrong test result.

3 For example, in a SOA environment this means if a test case may have to register a service for testing, it must be unregistered after the test case execution; otherwise the service registry will contain unwanted services references Ease of use In a SOA environment there are many events that may occur asynchronously. These events may also have to be validated in some test suits. Therefore test case developers should never care about leaving test executers waiting forever for asynchronous events, yet another definition for do not handle timeout. If the tests are to be executed in an embedded device it is not predictable how much time an event will take to occur. So, it is recommended to leave the responsibility of stopping the execution, due to a timeout failure, to the test framework Coding The test cases must validate the services interfaces, not the services implementations. In other words, the test cases developers should not read the services implementation source code in order to write the test cases. One of the key principles of service-orientation is to hide the implementation details, so the only interface between implementers and test case developers are the services specification. In case of a Java services, the JavaDoc of the services interfaces is the main source for writing the test cases. When writing a test suite for many different services, you need to consider whether these services are optional or not. The mandatory services must always be tested: if they do not exist in the service registry, the test case must fail. On the other hand, optional services may not exist and, even so, the test must not fail. It should be shown in the test result as a warning or something similar. It also impacts integration tests, because in a SOA environment the components have a dynamic availability Unit test pattern When writing unit test a good pattern is to separate each method of the tested API in different classes giving the class the same name of the method under test, and each functional aspect in a different test case. Doing this is better than putting many different tests in only one test case, because it improves the readability of the code, facilitating the understanding of what the test case really does. For each test case you can write a specific documentation, associated with a unique identification number, hence that code can be analyzed by everyone. Even the test results should have this identification, avoiding waste of time when finding which test case failed, debugging or anything similar. 3. Unit tests in a service-oriented architecture A unit test is a code that tests individual units of software or hardware. It is done by executing a method and checking if the result was the expected. In case of SOA it can be an interface or a method [6]. Normally, the developer who has created the code writes the unit test while or even before writing the program itself [7]. There are some exceptions, for example, when testing standardized technologies. In this case, it is necessary to have a testing team just for evaluating the compliance of the standards implementation. For SOA test cases, the validations are based on the behavior of a specified service (contracts and use cases), defined by an interface. Thus, you do not know how it is implemented (black-box approach), all you know is the behavior and features of that service [8]. Therefore you cannot ensure anything about that code, even if it seems obvious. Testing services is a bit different from testing objects because you cannot directly instantiate them, you need to get the instances from the service registry before using them. Consequently the services must be registered before being gotten. What you get is defined by the interface, and its implementation is not visible. Figure 4 - Unit test pattern The Figure 4 - Unit test pattern above illustrates this pattern. There is an interface called IntefaceUnderTest (the service being tested) that has two methods, methoda and methodb. In this case would exist a package called IntefaceUnderTest and two classes (called MethodA and MethodB), each one tests its own method. Supposing that you find out three different tests needed to be done for the first method, they would be inside the respective class MethodA and would be called from testmethoda001 to testmethoda003 following the pattern test[class with the same method name][test index with three digits]. There can be some utility methods to be used commonly by these test methods preventing code replication. All of these test methods should be private to its respective class. The unit tests for a given class should

4 be executed by calling a public void method, called run. To facilitate the readability of the testing code this run method should be called from the TestControl class in a method which follows the pattern: test[interface under test][class with the same method name]. In our example it would be called testinterfaceundertestmethoda and testinterfaceundertestmethodb. 4. Services contracts testing In a service-oriented architecture an interface contract is a published agreement between a service provider and a service consumer, the specification of the way the requester will interact with the publisher. During this find and execute process the requester must fulfill a set of preconditions and post conditions, in order to be in conformity with the contract specification. Suppose a service Publisher has a known interface by the service Requester; however every time the Requester access the Publisher, the latter must invoke the Contract 1, which will do some important actions for the application. Although the execution of Contract 1 is hidden from the Requester its execution must not fail, otherwise the whole invocation of Publisher service will fail. Figure 5 - Services contract design shows an overview of a services contract design. Component A Publisher Contract 1 Component B Requester Contract 2 Figure 5 - Services contract design 4.1. Services contracts test pattern Although the contracts are necessarily hidden from other components, for testing purposes it must be transformed from an internal structure to an external structure. Exposing functionalities is strictly bound to public interfaces, so to test the services contracts we must use a tricky technique that uses interfaces inheritance extending the service contracts to expose key values for later evaluation of the service execution. Considering the contract has a published ServiceInterface with methods that will do something for the component. In order to evaluate the execution of each public method a test case developer could extend the ServiceInterface to a ServiceInterfaceTest, which will have a ServiceInterfaceTestImpl implementation, to make public some handy methods that will expose key values of the service execution. Therefore instead of registering a ServiceInterface implementation in the service registry, the test case developer must now register a ServiceInterfaceTestImpl as the implementation for the ServiceInterface contract. The Figure 6 - Services contracts testing pattern shows a pattern that can be used to verify the services contracts implementations. Figure 6 - Services contracts testing pattern For instance, consider a cash-machine service. The service requires that a client validation request contain the account number, amount, and a special system code [9]. The service uses the system code to determine in which internal database to find the account. There is no reason to expose the system code outside the component that validates the client, because the service should identify the database itself based on the functional data passed into it. This information is only necessary for implementation, but the execution will fail if the system code is wrongly generated by the validation component. The extended testing interface that tests the client validation should have a method that returns the hidden system code. Thus, if test case developers use the proposed pattern, the problem of writing a unit test to validate system code generations in client validations services components of cash-machines, can be overcome. 5. Services API testing with reflection Firstly, it is necessary to understand what reflection is and its advantages before understanding its application in services API testing [10]. Reflection in a programming language context refers to the ability to observe and/or manipulate the inner workings of the environment programmatically [11]. For example, it is possible to discover the methods of a given

5 class and invoke any method as necessary. Note that you do not have to know the methods names, and you can also discover how many parameters each method has. Reflection is a powerful tool that can improve the team productivity, the code legibility and as result, the test suit user get an effectiveness tests result that is definitely the goal of a test suit. There are some myths about reflection that must be clarified before using it [11]. Two cases are described below: Reflection is too complex for use in test applications. This assumption is false. It requires a skill that is easily mastered, and at end, you will have reduced the footprint of your test suit. Reflection reduces applications performance This assumption is also false. It depends of the test design. It can actually increase the performance of the code. It can also simplify the source code design and greatly expand the capabilities of the test suit. Besides performance is not a primary requirement of the test cases. At this point, you know what reflection is, so the concepts and patterns of API testing can now be introduced. As said before, there are many advantages of using reflection in test cases design but be careful when choosing what techniques will be used and what will not be used. When using reflection it is hard to forget to test a method but there is a problem when finding and grouping the methods, reflection API will try to return the first instance of a method found dynamically [12]. Therefore, if the methods are overloaded, it is difficult to find the exact method with the right arguments. The most important thing is to identify which methods could be tested. It is necessary to distinguish which methods have the same behavior and group them by what they have in common, for example group all the methods that throw the same exception in a specific class (See Figure 7 - Grouping methods). Figure 7 - Grouping methods Get all the methods that receive one parameter and throw NullPointerException and use a test method to test their exception. It is important to note that each group of method will be tested in a separated test method. Observe that is not common to test methods that have the same actions but are in different classes, it is recommended to group only the methods that are in a common class, otherwise, it will be difficult to identify which test has failed, if it was on class A or class B for example. The other methods that have a specific behavior may continue being tested normally, without using reflection. It is important to remember to only use reflection when the class or interface has many methods with the same behavior. Figure 8 shows the class design of a test case that uses reflection in order to automatically test the services interfaces methods. Figure 8 - API testing with reflection Additionally, that there are some cases, in which the reflection use will not be so clear, such as when there are only two or three methods which have the same behavior. In these cases you can choose to use reflection or not, it is your choice, it depends on your project. For example, if the class has three methods but in a near future is possible to have others methods added to this class, you may choose to use it. It is not recommended to use many control flow statements (such as switch, if/else) inside a reflection test method, if you are using it, you probably should revise your code verifying if you can test them without using reflection or if you have to split them in two or three distinct groups. 7. Conclusion Even though application testers have decades of experience in software testing, there are many mysteries yet to solve, in order to verify and validate complex software. As complexity grows, researchers find more innovative ways to address the problem of software testing. SOA is the latest trend to be solved; it addresses the problem of applications integration, system availability, reliability, scalability, and modularity. As enterprises gradually integrate SOA solutions into their suit of applications, the complexity of these solutions grows, as well as the quality assurance process.

6 Since testing frameworks and practices driven to SOA environments are missing in the software engineering literature, this paper contributes with new testing techniques to evaluate the behavior of SOA applications, such a contribution are the best practices used during the development of the JSR-232 TCK. A part from that, we found no other work related to SOA testing, which made it difficult to evaluate, and compare our solution with other works. 8. References [1] H. Cervantes and R.S. Hall, Autonomous Adaptation to Dynamic Availability Using a Service-Oriented Component Model, Proceedings of the International Conference on Software Engineering, May 2004; [2] H. Cervantes and R.S. Hall, Automating Service Dependency Management in a Service-Oriented Component Model, Proceedings of the Sixth Component-Based Software Engineering Workshop, pp , May 2003; [3] Ali Arsanjani. Service-oriented modeling and architecture, ibm.com/developerworks/webservices/library/ws-soadesign1/, November 2004; [4] Jon Thomas, Matthew Young, Kyle Brown, Andrew Glover, Java Testing Patterns, Wiley, Indianapolis, Indiana, October 2004; [5] Sean Shubin, Test First Guidelines, XP Magazine, January 2002; [6] Bridge Information Technologies, Software Quality Assurance Processes, QA-PROCESS.pdf, 2003; [7] Per Madsen, "Unit testing using design by contract and equivalence partitions", XP2003, Genova, 2003; [8] Tanja Toroi. "How to Test Software". University of Kuopio, March 2002; [9] James McGovern, Sameer Tyagi, Michael Stevens, and Sunil Mathew, Java Web Services Architecture, Chapter 2: Service-Oriented Architecture, Morgan Kaufmann Publishers, May 2003; [10] D. Green, The Java Tutorial: The Reflection API, Sun Microsystems, Inc, ; [11] Michael T. Portwood, Using Java Technology Reflection to improve Design, Java One Conference, San Francisco, 2000; [12] Matthew A. Brown, "Validation Strategy", 9 h Conference on Pattern Language of Programs, Illinois, 2002.

(9A05803) WEB SERVICES (ELECTIVE - III)

(9A05803) WEB SERVICES (ELECTIVE - III) 1 UNIT III (9A05803) WEB SERVICES (ELECTIVE - III) Web services Architecture: web services architecture and its characteristics, core building blocks of web services, standards and technologies available

More information

Java Language Modularity With Superpackages

Java Language Modularity With Superpackages Java Language Modularity With Superpackages Alex Buckley JSR 294 Co-spec lead Sun Microsystems Andreas Sterbenz JSR 294 Co-spec lead Sun Microsystems TS-2401 2007 JavaOne SM Conference Session 2401 Goal

More information

The Open Group SOA Ontology Technical Standard. Clive Hatton

The Open Group SOA Ontology Technical Standard. Clive Hatton The Open Group SOA Ontology Technical Standard Clive Hatton The Open Group Releases SOA Ontology Standard To Increase SOA Adoption and Success Rates Ontology Fosters Common Understanding of SOA Concepts

More information

Chapter 8 Web Services Objectives

Chapter 8 Web Services Objectives Chapter 8 Web Services Objectives Describe the Web services approach to the Service- Oriented Architecture concept Describe the WSDL specification and how it is used to define Web services Describe the

More information

GENERATION TOOL FOR DBMS FOCUSED APPLICATIONS

GENERATION TOOL FOR DBMS FOCUSED APPLICATIONS GENERATION TOOL FOR DBMS FOCUSED APPLICATIONS Carlos del Cuvillo Universidad Politecnica de Madrid Ctra. de Valencia km. 7 E28031 Madrid Hector Garcia Universidad Politecnica de Madrid Ctra. de Valencia

More information

Multi Channel Architecture Model Based on Service Oriented Integration

Multi Channel Architecture Model Based on Service Oriented Integration 82 Multi Channel Architecture Model Based on Service Oriented Integration Ion LUNGU, Davian POPESCU, Anda VELICANU Academy of Economic Studies, Bucharest, România The volume of data and numerous applications

More information

Reference: Java Web Services Architecture James McGovern, Sameer Tyagi, Michael Stevens, and Sunil Mathew, 2003

Reference: Java Web Services Architecture James McGovern, Sameer Tyagi, Michael Stevens, and Sunil Mathew, 2003 CS551: Advanced Software Engineering Service-Oriented Architecture Reference: Java Web Services Architecture James McGovern, Sameer Tyagi, Michael Stevens, and Sunil Mathew, 2003 Yugi Lee STB #560D (816)

More information

What are the characteristics of Object Oriented programming language?

What are the characteristics of Object Oriented programming language? What are the various elements of OOP? Following are the various elements of OOP:- Class:- A class is a collection of data and the various operations that can be performed on that data. Object- This is

More information

SOFTWARE ARCHITECTURE & DESIGN INTRODUCTION

SOFTWARE ARCHITECTURE & DESIGN INTRODUCTION SOFTWARE ARCHITECTURE & DESIGN INTRODUCTION http://www.tutorialspoint.com/software_architecture_design/introduction.htm Copyright tutorialspoint.com The architecture of a system describes its major components,

More information

Object-Oriented Software Engineering Practical Software Development using UML and Java. Chapter 2: Review of Object Orientation

Object-Oriented Software Engineering Practical Software Development using UML and Java. Chapter 2: Review of Object Orientation Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 2: Review of Object Orientation 2.1 What is Object Orientation? Procedural paradigm: Software is organized

More information

Zhifu Pei CSCI5448 Spring 2011 Prof. Kenneth M. Anderson

Zhifu Pei CSCI5448 Spring 2011 Prof. Kenneth M. Anderson Zhifu Pei CSCI5448 Spring 2011 Prof. Kenneth M. Anderson Introduction History, Characteristics of Java language Java Language Basics Data types, Variables, Operators and Expressions Anatomy of a Java Program

More information

An Introduction to Software Architecture. David Garlan & Mary Shaw 94

An Introduction to Software Architecture. David Garlan & Mary Shaw 94 An Introduction to Software Architecture David Garlan & Mary Shaw 94 Motivation Motivation An increase in (system) size and complexity structural issues communication (type, protocol) synchronization data

More information

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz Results obtained by researchers in the aspect-oriented programming are promoting the aim to export these ideas to whole software development

More information

CptS 464/564 Lecture 18

CptS 464/564 Lecture 18 CptS 464/564 Lecture 18 2nd November 2004 Checkpoint What have we covered so far? Paradigms and Models: frameworks for the discussion of DS What is the plan ahead? Next: examples of distributed systems

More information

Software Testing and Maintenance

Software Testing and Maintenance Software Testing and Maintenance Testing Strategies Black Box Testing, also known as Behavioral Testing, is a software testing method in which the internal structure/ design/ implementation of the item

More information

PROCESS DEVELOPMENT METHODOLOGY The development process of an API fits the most fundamental iterative code development

PROCESS DEVELOPMENT METHODOLOGY The development process of an API fits the most fundamental iterative code development INTRODUCING API DESIGN PRINCIPLES IN CS2 Jaime Niño Computer Science, University of New Orleans New Orleans, LA 70148 504-280-7362 jaime@cs.uno.edu ABSTRACT CS2 provides a great opportunity to teach an

More information

D Programming Language

D Programming Language Group 14 Muazam Ali Anil Ozdemir D Programming Language Introduction and Why D? It doesn t come with a religion this is written somewhere along the overview of D programming language. If you actually take

More information

9 th CA 2E/CA Plex Worldwide Developer Conference 1

9 th CA 2E/CA Plex Worldwide Developer Conference 1 1 Introduction/Welcome Message Organizations that are making major changes to or replatforming an application need to dedicate considerable resources ot the QA effort. In this session we will show best

More information

Object-Oriented Software Engineering. Chapter 2: Review of Object Orientation

Object-Oriented Software Engineering. Chapter 2: Review of Object Orientation Object-Oriented Software Engineering Chapter 2: Review of Object Orientation 2.1 What is Object Orientation? Procedural paradigm: Software is organized around the notion of procedures Procedural abstraction

More information

Chapter 9. Software Testing

Chapter 9. Software Testing Chapter 9. Software Testing Table of Contents Objectives... 1 Introduction to software testing... 1 The testers... 2 The developers... 2 An independent testing team... 2 The customer... 2 Principles of

More information

Agent-Enabling Transformation of E-Commerce Portals with Web Services

Agent-Enabling Transformation of E-Commerce Portals with Web Services Agent-Enabling Transformation of E-Commerce Portals with Web Services Dr. David B. Ulmer CTO Sotheby s New York, NY 10021, USA Dr. Lixin Tao Professor Pace University Pleasantville, NY 10570, USA Abstract:

More information

Extended Dataflow Model For Automated Parallel Execution Of Algorithms

Extended Dataflow Model For Automated Parallel Execution Of Algorithms Extended Dataflow Model For Automated Parallel Execution Of Algorithms Maik Schumann, Jörg Bargenda, Edgar Reetz and Gerhard Linß Department of Quality Assurance and Industrial Image Processing Ilmenau

More information

Application Servers in E-Commerce Applications

Application Servers in E-Commerce Applications Application Servers in E-Commerce Applications Péter Mileff 1, Károly Nehéz 2 1 PhD student, 2 PhD, Department of Information Engineering, University of Miskolc Abstract Nowadays there is a growing demand

More information

ICD Wiki Framework for Enabling Semantic Web Service Definition and Orchestration

ICD Wiki Framework for Enabling Semantic Web Service Definition and Orchestration ICD Wiki Framework for Enabling Semantic Web Service Definition and Orchestration Dean Brown, Dominick Profico Lockheed Martin, IS&GS, Valley Forge, PA Abstract As Net-Centric enterprises grow, the desire

More information

Architectural Blueprint

Architectural Blueprint IMPORTANT NOTICE TO STUDENTS These slides are NOT to be used as a replacement for student notes. These slides are sometimes vague and incomplete on purpose to spark a class discussion Architectural Blueprint

More information

Learning to Provide Modern Solutions

Learning to Provide Modern Solutions 1 Learning to Provide Modern Solutions Over the course of this book, you will learn to enhance your existing applications to modernize the output of the system. To do this, we ll take advantage of the

More information

QoS-aware model-driven SOA using SoaML

QoS-aware model-driven SOA using SoaML QoS-aware model-driven SOA using SoaML Niels Schot A thesis submitted for the degree of MSc Computer Science University of Twente EEMCS - TRESE: Software Engineering Group Examination committee: Luís Ferreira

More information

Appendix A - Glossary(of OO software term s)

Appendix A - Glossary(of OO software term s) Appendix A - Glossary(of OO software term s) Abstract Class A class that does not supply an implementation for its entire interface, and so consequently, cannot be instantiated. ActiveX Microsoft s component

More information

Service-Oriented Programming

Service-Oriented Programming Service-Oriented Programming by Guy Bieber, Lead Architect, ISD C4I, Motorola ABSTRACT - The Service-Oriented Programming (SOP) model is the most exciting revolution in programming since Object Oriented

More information

An Introduction to Software Architecture By David Garlan & Mary Shaw 94

An Introduction to Software Architecture By David Garlan & Mary Shaw 94 IMPORTANT NOTICE TO STUDENTS These slides are NOT to be used as a replacement for student notes. These slides are sometimes vague and incomplete on purpose to spark a class discussion An Introduction to

More information

Develop Unified SNMP, XML, CLI, and Web-based Management for Embedded Real-Time Systems with MIBGuide

Develop Unified SNMP, XML, CLI, and Web-based Management for Embedded Real-Time Systems with MIBGuide 1 Overview Develop Unified SNMP, XML, CLI, and Web-based Management for Embedded Real-Time Systems with MIBGuide SNMP Research International, Inc. Knoxville, Tennessee 1 Overview Support for remote management

More information

Verification and Validation. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1

Verification and Validation. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1 Verification and Validation Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1 Verification vs validation Verification: "Are we building the product right?. The software should

More information

Software Design and Analysis for Engineers

Software Design and Analysis for Engineers Software Design and Analysis for Engineers by Dr. Lesley Shannon Email: lshannon@ensc.sfu.ca Course Website: http://www.ensc.sfu.ca/~lshannon/courses/ensc251 Simon Fraser University Slide Set: 1 Date:

More information

1: Introduction to Object (1)

1: Introduction to Object (1) 1: Introduction to Object (1) 김동원 2003.01.20 Overview (1) The progress of abstraction Smalltalk Class & Object Interface The hidden implementation Reusing the implementation Inheritance: Reusing the interface

More information

Chapter 4 Defining Classes I

Chapter 4 Defining Classes I Chapter 4 Defining Classes I This chapter introduces the idea that students can create their own classes and therefore their own objects. Introduced is the idea of methods and instance variables as the

More information

Towards a Common Java LDAP API

Towards a Common Java LDAP API Towards a Common Java LDAP API Emmanuel Lecharny Apache Software Foundation elecharny@apache.org Ludovic Poitou Sun Microsystems ludovic.poitou@sun.com Abstract. When it comes to access LDAP from the Java

More information

Chapter 1 Getting Started

Chapter 1 Getting Started Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different

More information

Position Paper on the Definition of SOA-RM

Position Paper on the Definition of SOA-RM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 Position Paper on the Definition of SOA-RM Authors: C. Matthew MacKenzie (mattm@adobe.com), Duane A.

More information

Introduction and Overview Socket Programming Higher-level interfaces Final thoughts. Network Programming. Samuli Sorvakko/Nixu Oy

Introduction and Overview Socket Programming Higher-level interfaces Final thoughts. Network Programming. Samuli Sorvakko/Nixu Oy Network Programming Samuli Sorvakko/Nixu Oy Telecommunications software and Multimedia Laboratory T-110.4100 Computer Networks October 16, 2008 Agenda 1 Introduction and Overview Introduction 2 Socket

More information

Verification and Validation. Assuring that a software system meets a user s needs. Verification vs Validation. The V & V Process

Verification and Validation. Assuring that a software system meets a user s needs. Verification vs Validation. The V & V Process Verification and Validation Assuring that a software system meets a user s needs Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 6th edition. Chapters 19,20 Slide 1

More information

Black Box Testing. EEC 521: Software Engineering. Specification-Based Testing. No Source Code. Software Testing

Black Box Testing. EEC 521: Software Engineering. Specification-Based Testing. No Source Code. Software Testing Black Box Testing EEC 521: Software Engineering Software Testing Black-Box Testing Test-Driven Development Also known as specification-based testing Tester has access only to running code and the specification

More information

International Journal of Software and Web Sciences (IJSWS) EVALUATING TESTABILITY OF OBJECT ORIENTED SYSTEM

International Journal of Software and Web Sciences (IJSWS)   EVALUATING TESTABILITY OF OBJECT ORIENTED SYSTEM International Association of Scientific Innovation and Research (IASIR) (An Association Unifying the Sciences, Engineering, and Applied Research) ISSN (Print): 2279-0063 ISSN (Online): 2279-0071 International

More information

CS 251 Intermediate Programming Methods and Classes

CS 251 Intermediate Programming Methods and Classes CS 251 Intermediate Programming Methods and Classes Brooke Chenoweth University of New Mexico Fall 2018 Methods An operation that can be performed on an object Has return type and parameters Method with

More information

CS 251 Intermediate Programming Methods and More

CS 251 Intermediate Programming Methods and More CS 251 Intermediate Programming Methods and More Brooke Chenoweth University of New Mexico Spring 2018 Methods An operation that can be performed on an object Has return type and parameters Method with

More information

TEST AUTOMATION. Excel Global Solutions Inc. All Rights Reserved.

TEST AUTOMATION. Excel Global Solutions Inc. All Rights Reserved. TEST AUTOMATION Table of Contents Introduction... 3 Automation Frameworks:... 3 Uses for a framework:... 3 Advantages of Test Automation over Manual Testing:... 3 Principles of Test Automation:... 4 Choosing

More information

Configuration Provider: A Pattern for Configuring Threaded Applications

Configuration Provider: A Pattern for Configuring Threaded Applications Configuration Provider: A Pattern for Configuring Threaded Applications Klaus Meffert 1 and Ilka Philippow 2 Technical University Ilmenau plop@klaus-meffert.de 1, ilka.philippow@tu-ilmena.de 2 Abstract

More information

Chapter 4: Writing Classes

Chapter 4: Writing Classes Chapter 4: Writing Classes Java Software Solutions Foundations of Program Design Sixth Edition by Lewis & Loftus Writing Classes We've been using predefined classes. Now we will learn to write our own

More information

JCP Training: General Session. 5 May 2008 JavaOne - San Francisco Harold Ogle

JCP Training: General Session. 5 May 2008 JavaOne - San Francisco Harold Ogle JCP Training: General Session 5 May 2008 JavaOne - San Francisco Harold Ogle Overview What is the JCP? JCP Versions Types of Participation JSR Timeline Using the site Q&A 2 Confidential 2006 Sun Microsystems

More information

METADATA INTERCHANGE IN SERVICE BASED ARCHITECTURE

METADATA INTERCHANGE IN SERVICE BASED ARCHITECTURE UDC:681.324 Review paper METADATA INTERCHANGE IN SERVICE BASED ARCHITECTURE Alma Butkovi Tomac Nagravision Kudelski group, Cheseaux / Lausanne alma.butkovictomac@nagra.com Dražen Tomac Cambridge Technology

More information

Incorporating applications to a Service Oriented Architecture

Incorporating applications to a Service Oriented Architecture Proceedings of the 5th WSEAS Int. Conf. on System Science and Simulation in Engineering, Tenerife, Canary Islands, Spain, December 16-18, 2006 401 Incorporating applications to a Service Oriented Architecture

More information

OBJECT ORIENTED PROGRAMMING

OBJECT ORIENTED PROGRAMMING 1. Programming Paradigms OBJECT ORIENTED PROGRAMMING A programming methodology defines the methodology of designing and implementing programs using the key features and other building blocks (such as key

More information

Classes, interfaces, & documentation. Review of basic building blocks

Classes, interfaces, & documentation. Review of basic building blocks Classes, interfaces, & documentation Review of basic building blocks Objects Data structures literally, storage containers for data constitute object knowledge or state Operations an object can perform

More information

Make sure you have the latest Hive trunk by running svn up in your Hive directory. More detailed instructions on downloading and setting up

Make sure you have the latest Hive trunk by running svn up in your Hive directory. More detailed instructions on downloading and setting up GenericUDAFCaseStudy Writing GenericUDAFs: A Tutorial User-Defined Aggregation Functions (UDAFs) are an excellent way to integrate advanced data-processing into Hive. Hive allows two varieties of UDAFs:

More information

Com S/Geron 415X Gerontechnology in Smart Home Environments Lecture 9 Intro to Service Computing. Dr. Hen-I Yang ComS Dept., ISU

Com S/Geron 415X Gerontechnology in Smart Home Environments Lecture 9 Intro to Service Computing. Dr. Hen-I Yang ComS Dept., ISU Com S/Geron 415X Gerontechnology in Smart Home Environments Lecture 9 Intro to Service Computing Dr. Hen-I Yang ComS Dept., ISU Feb. 22, 2011 Reflection Peeking Ahead Today (2/22) Introduction to Service

More information

Chapter 1: Programming Principles

Chapter 1: Programming Principles Chapter 1: Programming Principles Object Oriented Analysis and Design Abstraction and information hiding Object oriented programming principles Unified Modeling Language Software life-cycle models Key

More information

CS112 Lecture: Defining Instantiable Classes

CS112 Lecture: Defining Instantiable Classes CS112 Lecture: Defining Instantiable Classes Last revised 2/3/05 Objectives: 1. To describe the process of defining an instantiable class 2. To discuss public and private visibility modifiers. Materials:

More information

B2SAFE metadata management

B2SAFE metadata management B2SAFE metadata management version 1.2 by Claudio Cacciari, Robert Verkerk, Adil Hasan, Elena Erastova Introduction The B2SAFE service provides a set of functions for long term bit stream data preservation:

More information

JAVASCRIPT AND JQUERY: AN INTRODUCTION (WEB PROGRAMMING, X452.1)

JAVASCRIPT AND JQUERY: AN INTRODUCTION (WEB PROGRAMMING, X452.1) Technology & Information Management Instructor: Michael Kremer, Ph.D. Class 4 Professional Program: Data Administration and Management JAVASCRIPT AND JQUERY: AN INTRODUCTION (WEB PROGRAMMING, X452.1) AGENDA

More information

Part 5. Verification and Validation

Part 5. Verification and Validation Software Engineering Part 5. Verification and Validation - Verification and Validation - Software Testing Ver. 1.7 This lecture note is based on materials from Ian Sommerville 2006. Anyone can use this

More information

Coding and Unit Testing! The Coding Phase! Coding vs. Code! Coding! Overall Coding Language Trends!

Coding and Unit Testing! The Coding Phase! Coding vs. Code! Coding! Overall Coding Language Trends! Requirements Spec. Design Coding and Unit Testing Characteristics of System to be built must match required characteristics (high level) Architecture consistent views Software Engineering Computer Science

More information

Using JBI for Service-Oriented Integration (SOI)

Using JBI for Service-Oriented Integration (SOI) Using JBI for -Oriented Integration (SOI) Ron Ten-Hove, Sun Microsystems January 27, 2006 2006, Sun Microsystems Inc. Introduction How do you use a service-oriented architecture (SOA)? This is an important

More information

Learning Objective. Project Objective

Learning Objective. Project Objective Table of Contents 15-440: Project 1 Remote File Storage and Access Kit (File Stack) Using Sockets and RMI Design Report Due Date: 14 Sep 2011 Final Due Date: 3 Oct 2011 Learning Objective...1 Project Objective...1

More information

Quality - The Key to Successful SOA. Charitha Kankanamge WSO2 February 2011

Quality - The Key to Successful SOA. Charitha Kankanamge WSO2 February 2011 Quality - The Key to Successful SOA Charitha Kankanamge WSO2 February 2011 WSO2 Founded in 2005 by acknowledged leaders in XML, Web Services Technologies & Standards and Open Source Producing entire middleware

More information

Lecture Notes on Contracts

Lecture Notes on Contracts Lecture Notes on Contracts 15-122: Principles of Imperative Computation Frank Pfenning Lecture 2 August 30, 2012 1 Introduction For an overview the course goals and the mechanics and schedule of the course,

More information

Component-Based and Service-Oriented Software Engineering: Key Concepts and Principles

Component-Based and Service-Oriented Software Engineering: Key Concepts and Principles Component-Based and Service-Oriented Software Engineering: Key Concepts and Principles Hongyu Pei Breivold, Magnus Larsson ABB AB, Corporate Research, 721 78 Västerås, Sweden {hongyu.pei-breivold, magnus.larsson}@se.abb.com

More information

describe the functions of Windows Communication Foundation describe the features of the Windows Workflow Foundation solution

describe the functions of Windows Communication Foundation describe the features of the Windows Workflow Foundation solution 1 of 9 10/9/2013 1:38 AM WCF and WF Learning Objectives After completing this topic, you should be able to describe the functions of Windows Communication Foundation describe the features of the Windows

More information

The goal of the Pangaea project, as we stated it in the introduction, was to show that

The goal of the Pangaea project, as we stated it in the introduction, was to show that Chapter 5 Conclusions This chapter serves two purposes. We will summarize and critically evaluate the achievements of the Pangaea project in section 5.1. Based on this, we will then open up our perspective

More information

Services in the IMS ecosystem

Services in the IMS ecosystem 285 23-3109 Uen Rev A Services in the IMS ecosystem February 2007 White Paper Different services have different demands and require different approaches Contents 1 Executive summary. 3 2 Introduction..

More information

Instance generation from meta-models (for model transformation testing)

Instance generation from meta-models (for model transformation testing) Instance generation from meta-models (for model transformation testing) Robbe De Jongh University of Antwerp Abstract Testing model transformations is a tedious job. One needs to make a representative

More information

An Approach to Software Component Specification

An Approach to Software Component Specification Page 1 of 5 An Approach to Software Component Specification Jun Han Peninsula School of Computing and Information Technology Monash University, Melbourne, Australia Abstract. Current models for software

More information

SOA Architect. Certification

SOA Architect. Certification SOA Architect Certification SOA Architect The new generation SOACP program from Arcitura is dedicated to excellence in the fields of contemporary service-oriented architecture, microservices, service APIs

More information

CHAPTER 5 GENERAL OOP CONCEPTS

CHAPTER 5 GENERAL OOP CONCEPTS CHAPTER 5 GENERAL OOP CONCEPTS EVOLUTION OF SOFTWARE A PROGRAMMING LANGUAGE SHOULD SERVE 2 RELATED PURPOSES : 1. It should provide a vehicle for programmer to specify actions to be executed. 2. It should

More information

B16 Object Oriented Programming

B16 Object Oriented Programming B16 Object Oriented Programming Michael A. Osborne mosb@robots.ox.ac.uk http://www.robots.ox.ac.uk/~mosb/teaching.html#b16 Hilary 2013 This course will introduce object-oriented programming (OOP). It will

More information

Introduction to User Stories. CSCI 5828: Foundations of Software Engineering Lecture 05 09/09/2014

Introduction to User Stories. CSCI 5828: Foundations of Software Engineering Lecture 05 09/09/2014 Introduction to User Stories CSCI 5828: Foundations of Software Engineering Lecture 05 09/09/2014 1 Goals Present an introduction to the topic of user stories concepts and terminology benefits and limitations

More information

Middleware. Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004

Middleware. Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004 Middleware Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004 Outline Web Services Goals Where do they come from? Understanding middleware Middleware as infrastructure Communication

More information

Asynchronous Event Handling and Safety Critical Java

Asynchronous Event Handling and Safety Critical Java Asynchronous Event Handling and Safety Critical Java Andy Wellings* and Minseong Kim * Member of JSR 302 Structure Threads or event handling Why JSR 302 decided to use event handlers The JSR 302 concurrency

More information

Java Modularity Support in OSGi R4. Richard S. Hall ApacheCon (San Diego) December 14 th, 2005

Java Modularity Support in OSGi R4. Richard S. Hall ApacheCon (San Diego) December 14 th, 2005 Java Modularity Support in OSGi R4 Richard S. Hall ApacheCon (San Diego) December 14 th, 2005 Modularity What is it? What is Modularity? (Desirable) property of a system, such that individual components

More information

No Source Code. EEC 521: Software Engineering. Specification-Based Testing. Advantages

No Source Code. EEC 521: Software Engineering. Specification-Based Testing. Advantages No Source Code : Software Testing Black-Box Testing Test-Driven Development No access to source code So test cases don t worry about structure Emphasis is only on ensuring that the contract is met Specification-Based

More information

2.5.1: Reforms in Continuous Internal Evaluation (CIE) System at the Institutional Level

2.5.1: Reforms in Continuous Internal Evaluation (CIE) System at the Institutional Level D Y Patil Institute of Engineering and Technology, Ambi, Pune Address:Sr.No.124 & 126, A/p- Ambi, Tal-Maval, MIDC Road, TalegaonDabhade, Pune-410506, Maharashtra, India Tel: 02114306229, E-mail : info@dyptc.edu.in

More information

Introduction and Overview Socket Programming Lower-level stuff Higher-level interfaces Security. Network Programming. Samuli Sorvakko/Nixu Oy

Introduction and Overview Socket Programming Lower-level stuff Higher-level interfaces Security. Network Programming. Samuli Sorvakko/Nixu Oy Network Programming Samuli Sorvakko/Nixu Oy Telecommunications software and Multimedia Laboratory T-110.4100 Computer Networks October 5, 2009 Agenda 1 Introduction and Overview 2 Socket Programming 3

More information

Educational Fusion. Implementing a Production Quality User Interface With JFC

Educational Fusion. Implementing a Production Quality User Interface With JFC Educational Fusion Implementing a Production Quality User Interface With JFC Kevin Kennedy Prof. Seth Teller 6.199 May 1999 Abstract Educational Fusion is a online algorithmic teaching program implemented

More information

Complexity. Object Orientated Analysis and Design. Benjamin Kenwright

Complexity. Object Orientated Analysis and Design. Benjamin Kenwright Complexity Object Orientated Analysis and Design Benjamin Kenwright Outline Review Object Orientated Programming Concepts (e.g., encapsulation, data abstraction,..) What do we mean by Complexity? How do

More information

Federal Plain Language Guidelines

Federal Plain Language Guidelines Federal Plain Language Guidelines March 2011 Revision 1, May 2011 Table of Contents Introduction... i Revision 1 Changes... ii Table of Contents... iii I. Think about your audience... 1 a. Identify and

More information

A web application serving queries on renewable energy sources and energy management topics database, built on JSP technology

A web application serving queries on renewable energy sources and energy management topics database, built on JSP technology International Workshop on Energy Performance and Environmental 1 A web application serving queries on renewable energy sources and energy management topics database, built on JSP technology P.N. Christias

More information

LDAP Stored Procedures and Triggers in ApacheDS

LDAP Stored Procedures and Triggers in ApacheDS LDAP Stored Procedures and Triggers in ApacheDS Ersin Er The Apache Software Foundation & Department of Computer Engineering, Hacettepe University ersiner@apache.org & ersin.er@cs.hacettepe.edu.tr Abstract

More information

Lecture 15 Software Testing

Lecture 15 Software Testing Lecture 15 Software Testing Includes slides from the companion website for Sommerville, Software Engineering, 10/e. Pearson Higher Education, 2016. All rights reserved. Used with permission. Topics covered

More information

Introduction and Overview Socket Programming Higher-level interfaces Final thoughts. Network Programming. Samuli Sorvakko/Nixu Oy

Introduction and Overview Socket Programming Higher-level interfaces Final thoughts. Network Programming. Samuli Sorvakko/Nixu Oy Network Programming Samuli Sorvakko/Nixu Oy Telecommunications software and Multimedia Laboratory T-110.4100 Computer Networks October 9, 2006 Agenda 1 Introduction and Overview Introduction 2 Socket Programming

More information

RSL Reference Manual

RSL Reference Manual RSL Reference Manual Part No.: Date: April 6, 1990 Original Authors: Klaus Havelund, Anne Haxthausen Copyright c 1990 Computer Resources International A/S This document is issued on a restricted basis

More information

Stand: File: gengler_java_e. Java Community Process: Not perfect, but operating very successfully

Stand: File: gengler_java_e. Java Community Process: Not perfect, but operating very successfully Stand: 14.04.03 File: gengler_java_e Java Community Process: Not perfect, but operating very successfully While Sun Microsystems was the original sole driving force behind Java at one time, the company

More information

Exploiting peer group concept for adaptive and highly available services

Exploiting peer group concept for adaptive and highly available services Computing in High Energy and Nuclear Physics, 24-28 March 2003 La Jolla California 1 Exploiting peer group concept for adaptive and highly available services Muhammad Asif Jan Centre for European Nuclear

More information

Software Design and Analysis for Engineers

Software Design and Analysis for Engineers Software Design and Analysis for Engineers by Dr. Lesley Shannon Email: lshannon@ensc.sfu.ca Course Website: http://www.ensc.sfu.ca/~lshannon/courses/ensc251 Simon Fraser University Slide Set: 9 Date:

More information

Introduction to Object-Oriented Programming

Introduction to Object-Oriented Programming 1/9 Introduction to Object-Oriented Programming Conception et programmation orientées object, B. Meyer, Eyrolles Object-Oriented Software Engineering, T. C. Lethbridge, R. Laganière, McGraw Hill Design

More information

Software Paradigms (Lesson 10) Selected Topics in Software Architecture

Software Paradigms (Lesson 10) Selected Topics in Software Architecture Software Paradigms (Lesson 10) Selected Topics in Software Architecture Table of Contents 1 World-Wide-Web... 2 1.1 Basic Architectural Solution... 2 1.2 Designing WWW Applications... 7 2 CORBA... 11 2.1

More information

Equinox OSGi: Pervasive Componentization

Equinox OSGi: Pervasive Componentization Equinox OSGi: Pervasive Componentization Thomas Watson Equinox Development Lead IBM Lotus Jeff McAffer, Eclipse RCP and Equinox Lead IBM Rational Software 10/3/2006 Why is Eclipse interesting? Extensible

More information

Object- Oriented Design with UML and Java Part I: Fundamentals

Object- Oriented Design with UML and Java Part I: Fundamentals Object- Oriented Design with UML and Java Part I: Fundamentals University of Colorado 1999-2002 CSCI-4448 - Object-Oriented Programming and Design These notes as free PDF files: http://www.softwarefederation.com/cs4448.html

More information

Incompatibility Dimensions and Integration of Atomic Commit Protocols

Incompatibility Dimensions and Integration of Atomic Commit Protocols The International Arab Journal of Information Technology, Vol. 5, No. 4, October 2008 381 Incompatibility Dimensions and Integration of Atomic Commit Protocols Yousef Al-Houmaily Department of Computer

More information

Programming II. Modularity 2017/18

Programming II. Modularity 2017/18 Programming II Modularity 2017/18 Module? Lecture Outline Evolution and history of programming languages Modularity Example History of Programming Programming Paradigms How and why languages develop? How

More information

JAVA: A Primer. By: Amrita Rajagopal

JAVA: A Primer. By: Amrita Rajagopal JAVA: A Primer By: Amrita Rajagopal 1 Some facts about JAVA JAVA is an Object Oriented Programming language (OOP) Everything in Java is an object application-- a Java program that executes independently

More information

Supplemental Handout: Exceptions CS 1070, Spring 2012 Thursday, 23 Feb 2012

Supplemental Handout: Exceptions CS 1070, Spring 2012 Thursday, 23 Feb 2012 Supplemental Handout: Exceptions CS 1070, Spring 2012 Thursday, 23 Feb 2012 1 Objective To understand why exceptions are useful and why Visual Basic has them To gain experience with exceptions and exception

More information

Abstract 1. Introduction

Abstract 1. Introduction Jaguar: A Distributed Computing Environment Based on Java Sheng-De Wang and Wei-Shen Wang Department of Electrical Engineering National Taiwan University Taipei, Taiwan Abstract As the development of network

More information