N. Kokash, Software Engineering course 2011

Slides:



Advertisements
Similar presentations
18 Copyright © 2005, Oracle. All rights reserved. Distributing Modular Applications: Introduction to Web Services.
Advertisements

Component-Based Software Engineering Main issues: assemble systems out of (reusable) components compatibility of components.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 31 Slide 1 Service-centric Software Engineering 1.
Web Service Ahmed Gamal Ahmed Nile University Bioinformatics Group
General introduction to Web services and an implementation example
WEB SERVICES DAVIDE ZERBINO.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Design 2.
Main issues: • Why is reuse so difficult • How to realize reuse
Building an Operational Enterprise Architecture and Service Oriented Architecture Best Practices Presented by: Ajay Budhraja Copyright 2006 Ajay Budhraja,
Seminarium on Component-based Software Engineering Jan Willem Klinkenberg CORBA.
1 Introduction to XML. XML eXtensible implies that users define tag content Markup implies it is a coded document Language implies it is a metalanguage.
Object-Oriented Analysis and Design
1 Introduction to SOA. 2 The Service-Oriented Enterprise eXtensible Markup Language (XML) Web services XML-based technologies for messaging, service description,
Presentation 7 part 2: SOAP & WSDL. Ingeniørhøjskolen i Århus Slide 2 Outline Building blocks in Web Services SOA SOAP WSDL (UDDI)
Latest techniques and Applications in Interprocess Communication and Coordination Xiaoou Zhang.
Introduction To System Analysis and Design
Business Process Orchestration
Web Services Seppo Heikkinen MITA seminar/TUT
Software Engineering Module 1 -Components Teaching unit 3 – Advanced development Ernesto Damiani Free University of Bozen - Bolzano Lesson 2 – Components.
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Web Service What exactly are Web Services? To put it quite simply, they are yet another distributed computing technology (like CORBA, RMI, EJB, etc.).
Component-Based Software Engineering (CBSE) Speaker: Jerry Gao Ph.D. San Jose State University URL:
Introduction to UDDI From: OASIS, Introduction to UDDI: Important Features and Functional Concepts.
SOA, BPM, BPEL, jBPM.
THE NEXT STEP IN WEB SERVICES By Francisco Curbera,… Memtimin MAHMUT 2012.
Systems Analysis and Design in a Changing World, Fifth Edition
L6 - March 1, 2006copyright Thomas Pole , all rights reserved 1 Lecture 6: Software Packaging: Dynamically Integrable Components and Text Ch.
C Copyright © 2009, Oracle. All rights reserved. Appendix C: Service-Oriented Architectures.
1 Introduction CSIE, Da-Yeh University. 2 History of Software Development Traditional Programming Paradigm  Behind schedule, costly, and unreliable.
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
Web Services Architecture1 - Deepti Agarwal. Web Services Architecture2 The Definition.. A Web service is a software system identified by a URI, whose.
1 Core Web Services Standards. 2 (Simplified) Web Service Architecture Registry 1. Service Registers PUBLISH 3. Client calls Service BIND 2. Client Request.
©Ian Sommerville 2000 Software Engineering, 6th edition. Slide 1 Component-based development l Building software from reusable components l Objectives.
What is Service Oriented Architecture ? CS409 Application Services Even Semester 2007.
Web Services Description Language CS409 Application Services Even Semester 2007.
Architecting Web Services Unit – II – PART - III.
Web Services Based on SOA: Concepts, Technology, Design by Thomas Erl MIS 181.9: Service Oriented Architecture 2 nd Semester,
XML Web Services Architecture Siddharth Ruchandani CS 6362 – SW Architecture & Design Summer /11/05.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
1 UNIT –II Architecting Web Service. 2 Why SOA? – business point of view  Information Technology (IT) workers face many challenges, including: Limited.
WebService. Outline Overview of Web Services SOAP (messaging) WSDL (service description) UDDI (registry)
1 Web Services Web and Database Management System.
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
Kemal Baykal Rasim Ismayilov
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
1 G52IWS: Web Services Chris Greenhalgh. 2 Contents The World Wide Web Web Services example scenario Motivations Basic Operational Model Supporting standards.
Course: COMS-E6125 Professor: Gail E. Kaiser Student: Shanghao Li (sl2967)
Service Oriented Architecture + SOAP -Robin John.
Slide 1 Service-centric Software Engineering. Slide 2 Objectives To explain the notion of a reusable service, based on web service standards, that provides.
Lecture VI: SOAP-based Web Service CS 4593 Cloud-Oriented Big Data and Software Engineering.
Copyright 2007, Information Builders. Slide 1 iWay Web Services and WebFOCUS Consumption Michael Florkowski Information Builders.
By Jeremy Burdette & Daniel Gottlieb. It is an architecture It is not a technology May not fit all businesses “Service” doesn’t mean Web Service It is.
Business Process Execution Language (BPEL) Pınar Tekin.
Service Oriented Architecture (SOA) Prof. Wenwen Li School of Geographical Sciences and Urban Planning 5644 Coor Hall
Sabri Kızanlık Ural Emekçi
Service Oriented Architecture
Distribution and components
CHAPTER 3 Architectures for Distributed Systems
Ch > 28.4.
Inventory of Distributed Computing Concepts and Web services
Service-centric Software Engineering
Service-centric Software Engineering 1
Component-Based Software Engineering
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Distributed System using Web Services
Distributed System using Web Services
Presentation transcript:

N. Kokash, Software Engineering course 2011 Natallia Kokash email: nkokash@liacs.nl Note that the book is misleadingly simple. Just reading the book is like learning to swim without getting wet. N. Kokash, Software Engineering course 2011

Agenda Software reuse Component-based system engineering (CBSE) Service-oriented architecture (SOA) N. Kokash, Software Engineering course 2011

How many professional software developers are there worldwide? + hobbyists N. Kokash, Software Engineering course 2011

How many lines of debugged code does one developer produce in a day's work? From 10 to 200 (sometimes up to 1000) 200++ working days per year From 2000 to 40000 LOC per developer/year 7000000 * 2000 = 14000000000 LOC N. Kokash, Software Engineering course 2011

Software reuse: six perspectives defines the essence of reused items Substance: defines the form and extent of reuse Scope: defines how reuse is conducted Mode: defines the approach that is used to implement reuse Technique: defines how elements will be used Intention: defines what is reused Product: N. Kokash, Software Engineering course 2011

Software reuse: examples Ideas, components, concepts, … Substance: Horizontal, vertical Scope: Systematic, opportunistic Approach: Compositional, generative Technique: black-box, white-box Use: source code, design Product: N. Kokash, Software Engineering course 2011

Vertical vs. horizontal reuse Horizontal domains - parts of a software system are classified according to their functionality: database systems, workflow systems, GUI libraries,… Vertical domains - software systems are classified according to the business area: airline reservation systems, medical record systems… Horizontal assets are reusable across all (or most) applications Vertical assets are parts of a product line Microsof Office: opening a document, saving multiple documents, document preview,… Gmail, Orkut & Gtalk: logging in with Google credentials, exchanging messages, persisting chat,… N. Kokash, Software Engineering course 2011

Compositional vs. generative Compositional reuse: supports bottom-up development of systems from a repository of available lower-level components; classification and retrieval are important; Methods: component composition, code/design scavenging, repositories (e.g., function/class libraries) Generative reuse: often domain-specific; adopting standard system structures (e.g., architectures) and standard interfaces; Methods: application generators, language based generators, transformation systems (e.g., parser generation) A combined approach is also possible. N. Kokash, Software Engineering course 2011

Black-box vs. white-box Black box: only specification is known Glass box: internals may be inspected, but not changed Grey box: part of the internals may be inspected, limited modification is allowed While box: component is open to inspection and modification N. Kokash, Software Engineering course 2011

Software development with reuse Passive Component library evolves randomly N. Kokash, Software Engineering course 2011

Software development for reuse Active Reusable assets are developed, rather than found by accident N. Kokash, Software Engineering course 2011

Software development for reuse Often two separate development processes: Development of components (involving domain analysis) Development of applications (using the available components) Specific forms: Component-based software development Software factory Development according to specific, externally-defined end-user requirements through an assembly process Software product lines N. Kokash, Software Engineering course 2011

Component-based SE (CBSE) Increases quality Shortens development time Approach: Search for components Understand/evaluate found components: Quality information Administrative information (developer, modification history) Documentation Interface information Test information Adapt components if necessary Compose systems from components N. Kokash, Software Engineering course 2011

A software component: Implements some functionality Has explicit dependencies through provides and required interfaces Communicates through its interfaces only Has structure and behavior that conforms to a component model N. Kokash, Software Engineering course 2011

LEGO analogy Set of building blocks in different shapes and colors Can be combined in different ways Composition through small stubs in one and corresponding holes in another building block LEGO blocks are generic and easily composable LEGO can be combined with LEGO, not with Meccano N. Kokash, Software Engineering course 2011

Component model Defines the types of building block, and the recipe for putting them together Defines standards for: Properties that individual components must satisfy Methods and mechanisms for composing components A component has to conform to some component model N. Kokash, Software Engineering course 2011

Common features of component models Infrastructure (instantiation, binding, communication,…) Instantiation Binding (design time, compile time, …) Communication between components Discovery of components Announcement of component capabilities (interfaces) Development support Language independence Platform independence Analysis support Support for upgrading and extension Support for quality properties N. Kokash, Software Engineering course 2011

A component technology Is the implementation of a component model, by means of: Standards and guidelines for the implementation and execution of software components Executable software that supports the implementation, assembly, deployment, execution of components Examples: EJB, COM+, .NET, CORBA N. Kokash, Software Engineering course 2011

Component technologies Common Object Request Broker Architecture (CORBA) Interface Definition Language (IDL) Corba Component Model (CCM) Enterprise JavaBeans (EJB) Java classes conforming to certain convention (serializable, default constructor, access to properties through Get, Set, Is) Component Object Model (COM) Binary-interface standard for language-neutral way of implementing objects OLE, OLE Automation, ActiveX, COM+ and DCOM technologies .NET Common Language Runtime (CLR) N. Kokash, Software Engineering course 2011

Component forms Component goes through different stages: development packaging distribution deployment execution Across these stages, components are represented in different forms: During development: UML, e.g. When packaging: in a .zip file, e.g. In the execution stage: blocks of code and data N. Kokash, Software Engineering course 2011

N. Kokash, Software Engineering course 2011

Component specification vs. component interface Specification describes properties to be realized: realization contract Interface describes how components interact: usage contract Different in scope: specification is about the component as a whole an interface might be about part of a component only N. Kokash, Software Engineering course 2011

Managing quality in CBSE component, execution platform Who manages the quality: per-collaboration, system-wide Scope: Approaches: Endogenous: Managed per collaboration: left to the designers (e.g. when integrating COTS components) (A) Managed systemwide: model provides standardized facilities for managing qualities (B) Exogenous: Managed per collaboration: component only addresses functionality, quality in surrounding container (C) Managed systemwide: similar to C, but container interacts with platform on quality issues (D) N. Kokash, Software Engineering course 2011

Quality management in CBSE N. Kokash, Software Engineering course 2011

CBSE system development process also considers availability of components Requirements: very similar to what we normally do Analysis and design: less coding, focus on selection of components, provision of glue code Implementation: largely automated Integration: verification of components is necessary Testing: as in classical approaches Release: replace components Maintenance: N. Kokash, Software Engineering course 2011

Languages to describe component compositions Module Interconnection Languages (MIL) Describe the uses relationships among modules Static type checking, version control, C++ like syntax (but not a programming language) Architecture Description Languages (ADL) Focus on conceptual architecture and explicit treatment of connectors See lecture 4 (Software Architecture) N. Kokash, Software Engineering course 2011

Component development process combination of top-down (from system) and bottom-up (generality) Requirements: generality is an issue, assumptions about system (use) must be made Analysis and design: largely determined by component technology Implementation: extensive (no assumptions of usage!), and well-documented Testing: not only executables, also metadata Release: N. Kokash, Software Engineering course 2011

Component maintenance Who is responsible: producer or consumer? Blame analysis: relation between manifestation of a fault and its cause, e.g. Component A requires more CPU time As a consequence, B does not complete in time as required by C, so C issues a time-out error to its user Analysis: goes from C to B to A to input of A Who does the analysis, if producers of A,B,C are different? N. Kokash, Software Engineering course 2011

Architecture and CBSE Architecture-driven: top-down: components are identified as part of an architectural design Product line: family of similar products, with 1 architecture COTS-based: bottom-up, architecture is secondary to components found N. Kokash, Software Engineering course 2011

Evolution of programming paradigms Imperative computing (1950-1970s). FORTRAN was the flagship language of this approach Procedural computing (1970-1980s), emphasizes modular software design. Programming languages: Algol, Pascal, and C. Object-Oriented Computing (1980s-…), emphasizes abstraction and code reuse. Programming languages: C++, Java, and C#. Service-Oriented Computing (late 1990s-…). standardization of service interfaces for platform-independent pervasive code reuse. Service discovery is vital to SOC. Programming languages: Java and C#. N. Kokash, Software Engineering course 2011

Service-oriented computing Services are entities that provide some capability to its clients (by exchanging messages) Service description, service communication Service-Oriented Architecture (SOA) Service-Oriented Software Engineering (SOSE) Web service technology N. Kokash, Software Engineering course 2011 © SE;Service orientation, Hans van Vliet

Main characteristics of services Can be discovered Can be composed to form larger services Adhere to a service contract Loosely coupled Stateless Autonomous Hide their logic Reusable Use open standards Facilitate interoperability N. Kokash, Software Engineering course 2011

SOSE Development of software systems by composition of reusable services Shares many characteristics with CBSE (+ locate services at run-time) Approaches: Top-down Bottom-up Agile Analysis Design Development Testing (p. 359) - introduction 1) analysis: (ch 11+12) defines the potential scope of our SOA (service layers; service candidates) 2) design: (ch 13-16) how to build our SOA (standards-driven as industry conventions+SO principles; attention to the orchestration layer, which results in a formalized business process definition 3) development: construction; programming languages+development environments (.NET and J2EE); physical form of services (like web services) and of orchestrated business processes. 4) testing: (not covered, p.360) aimed at reuse and integrability, testing must be rigorous before deployment. Standard testing techniques may apply. 5) deployment: (p.360) installation and configuration of distributed components, service interfaces, middleware. Specific to the technology platform chosen. 6) administration: (p.361) application management issues similar to distributed, component-based applications. Examples concern: monitoring, version control for service description; performance bottlenecks. - SO versus SERVICE: it is during analysis and design that SOA characteristics and SO principles are incorporated into the solution. This makes them specific for SOA development. The “service” phases aim at delivering services implementing the results from previous efforts. - in general, though, each phase requires adaptation as compared with traditional SE. For instance, construction requires specific SOA technology; testing must take into consideration composition with services which are dynamically invoked; etc. Deployment Administration N. Kokash, Software Engineering course 2011 © SE;Service orientation, Hans van Vliet

Service-oriented analysis Step 1: define analysis scope Mature and understood business requirements Can lead to: process-agnostic services (generic service portfolio) services delivering business-specific tasks Models: UML use case or activity diagrams start receive PO validate PO PO valid yes Transform PO no Send notification Import PO stop Send PO to queue N. Kokash, Software Engineering course 2011 © SE;Service orientation, Hans van Vliet

Service-oriented analysis Step 2: Identify automation systems What is already implemented? Models: UML deployment diagram, mapping tables start receive PO validate PO PO valid yes (XML -> native format) currently custom component service candidate Transform PO no Send notification Import PO into accounting system currently custom legacy service candidate stop Send PO to queue N. Kokash, Software Engineering course 2011 © SE;Service orientation, Hans van Vliet

Service-oriented analysis Receive PO document PO processing service Validate PO document (If PO document is invalid,) send rejection notification (and end process) Transform PO document into native electronic PO format <<include>> ... Step 3: Model candidate services Create conceptual models of service candidates How to compose services? Models: BPM, UML use case or class diagrams N. Kokash, Software Engineering course 2011 © SE;Service orientation, Hans van Vliet

Service-oriented modeling styles Circular: message exchange in a circular fashion Hierarchical: certain message exchange routes between consumers and services. Network: establishes “many to many” relationship between services, their peer services, and consumers. Star: the central service passes messages to its extending arms Bus: introduces an intermediary service to connect consumers with service providers N. Kokash, Software Engineering course 2011

Web services XML-based data sharing Description: Web Service Description Language (WSDL) Messages: Simple Object Access Protocol (SOAP) Distribution: Universal Description Discovery and Integration (UDDI) Composition (coordination): Business Process Execution Language (BPEL) Also: Secure communication: WS-Security Quality of Service provision: WS-Policy,… N. Kokash, Software Engineering course 2011

Web service technology N. Kokash, Software Engineering course 2011

WSDL Data types (using XML Schema) Interfaces (portType) Messages (Messages) Bindings define transport and format details for the operations and messages Services (end points for accessing a service): a service can have several ports of the same type with different bindings N. Kokash, Software Engineering course 2011

XML schema language Allows the content of an element or attribute to be validated against a data type. Provides a set of 19 primitive data types (e.g., anyURI, boolean, date, string) Allows new data types to be constructed from these primitives by three mechanisms: restriction (reducing the set of permitted values), list (allowing a sequence of values), and union (allowing a choice of values from several types). N. Kokash, Software Engineering course 2011

WSDL example: Hello service N. Kokash, Software Engineering course 2011

N. Kokash, Software Engineering course 2011

Analysis of the example Definition: HelloService Type: Using built-in data types and they are defined in XMLSchema. Message: sayHelloRequest : firstName parameter sayHelloresponse: greeting return value Port Type: sayHello operation that consists of a request and response service. Binding: Direction to use the SOAP HTTP transport protocol. Service: Service available at http://www.examples.com/SayHello/ . Port: Associates the binding with the URI http://www.examples.com/SayHello/ where the running service can be accessed. N. Kokash, Software Engineering course 2011

UDDI XML-based registry for businesses worldwide to list themselves: White pages – address, contact, and known identifiers; Yellow pages – industrial categorizations based on standard taxonomies; Green pages — technical information about services exposed by the business. A mechanism to register and locate web services Public vs. private regsitries N. Kokash, Software Engineering course 2011

UDDI registry entry businessEntity – information about the organization: name, description, a unique identifier, etc. businessServices – information about actual provided services bindingTemplates – technical information to link services to implementation information (e.g., pointer to a web site or service description) N. Kokash, Software Engineering course 2011

UDDI registry entry N. Kokash, Software Engineering course 2011

UDDI tModel N. Kokash, Software Engineering course 2011

SOAP A protocol specification for exchanging structured (XML-based) information Relies on application layer protocols: Hypertext Transfer Protocol (HTTP) Simple Mail Transfer Protocol (SMTP) Characteristics: Extensibility (WS-security and WS-routing are among the extensions under development), Neutrality (SOAP can be used over any transport protocol) Independence (SOAP allows for any programming model) N. Kokash, Software Engineering course 2011

SOAP Processing model - defines the rules for processing a SOAP message Extensibility model - defines the concepts of SOAP features and SOAP modules Underlying protocol binding – describes the rules for defining a binding to an underlying protocol that can be used for exchanging SOAP messages between SOAP nodes (e.g., sender, receiver, intermediary) Message construct - defines the structure of a SOAP message N. Kokash, Software Engineering course 2011

SOAP N. Kokash, Software Engineering course 2011

BPEL OASIS standard (Organization for the Advancement of Structured Information Standards) Executable language for specifying actions within business processes with web services Used to model the behavior of both executable and abstract processes Orchestration vs. choreography: Orchestration - specifies an executable process that involves message exchanges with other systems (central control, by conductor) Choreography - specifies a protocol for peer-to-peer interactions (distributed system, dancing team) BPEL is an orchestration language N. Kokash, Software Engineering course 2011

BPEL provides Facilities to enable sending and receiving messages A property-based message correlation mechanism XML and WSDL typed variables An extensible plug-in model to allow writing expressions and queries Structured-programming constructs: if-then-elseif-else, while, sequence (commands in order) and flow (commands in parallel) A scoping system to allow the encapsulation of logic with local variables, fault-handlers, compensation-handlers and event-handlers Control concurrent access to variables N. Kokash, Software Engineering course 2011

BPEL example: HelloWorld N. Kokash, Software Engineering course 2011

N. Kokash, Software Engineering course 2011

Summary Software reuse: Component-based SE Service-Oriented Computing: We can reuse different things: code, design, … Reuse can be systematic or opportunistic Component-based SE Various component models exist Service-Oriented Computing: SOA is an architectural style Most important characteristic: dynamic discovery of services N. Kokash, Software Engineering course 2011

Homework Read chapters 17-19 Try to develop/reuse components/services for your assignment (using different technologies e.g., .NET, Web Services) … 12. Software Design 13. Software Testing 14. Software Maintenance 17. Software Reusability 18. Component-Based Software Engineering 19. Service Orientation 20. Global Software Development N. Kokash, Software Engineering course 2011