1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

56
1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur

Transcript of 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

Page 1: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

1

Emerging Trends in Software Engineering

Prof. R. MallDept. of CSE, IIT, Kharagpur

Page 2: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

2

Introduction Technology developments occur:

To adapt to new environments To respond to new challenges

Few important developments that have occurred over the last decade or so: Desktops have become more powerful

and at the same time more affordable. Internet has become widely accepted. Mobile computing. Outsourcing has become prevalent.

Page 3: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

3

Background Software market has two parts:

Products (General purpose software)

Services (custom software) Total business – appx. $1 Trillion

Half in products and half services Services segment is growing fast

Page 4: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

4

Background cont…

SE goal is to develop software to satisfy user needs. Either generic or one-off.

Customer needs are considered sacrosanct and fixed: Vendor has to find the solution.

Page 5: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

5

Background: A Constraint on Software Engineering

Process

Business Process

Implementation in IT

Time required = T1

Change in Business Process

Change in the IT solution supporting

the business process

Time required = T2

Page 6: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

6

Background: Desired Goals

A. Reduce T1 (and improve quality) B. Reduce T2 A requires:

Process should efficiently capture requirements of the business and then efficiently convert it to code.

B requires: Implementation should be such that

business process changes can be easily accommodated in the software solution.

Page 7: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

7

Challenges Being Faced

Delivery time requirements are shortening: High business velocity requires this. Software is becoming a bottleneck in

implementing business process changes.

Businesses are getting tired of software cost, late deliveries, poor quality, risk,… Hardware and software cost

differentials are becoming more and more glaring.

Page 8: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

8

Challenges Being Faced

cont… Software sizes are further increasing.

How software is to be effectively developed in following contexts is not clear: Distributed platforms Working with Internet Distributed development teams

Page 9: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

9

Noticeable Software Engineering Technology

Trends Following software engineering trends are easily noticeable: Client-server (or Component-based) development

Service-Oriented Architecture (SOA)

Software as a Service (SaaS)

Page 10: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

10

Client-Server Technology

Both clients and servers are pieces of software.

Concepts of Clients and Servers are nothing new --- have existed for ages: Clients are consumers of service. Servers are providers of service.

Why is then a sudden interest seen in client-server software architecture?

Page 11: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

11

Advantages of Client-Server Compared to Traditional

Software Flexibility:

Clients and servers can be easily attached and removed.

Modularity Concurrency Fault-tolerance Clients are cheap computers:

Servers are expensive computers tucked away in some AC rooms.

To use a software you not need not buy expensive server hardware and software.

Page 12: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

12

Client-Server versus Traditional Software

The following two factors are possibly the most relevant:

Component-based software development: To develop a hardware solution an

electronic engineer does not solder transistors and resistors on a PCB --- uses off-the-shelf ICs.

Why not do the same for software. Current trend of mobile computing:

Handhelds can only be clients due to low processing and memory capabilities.

Page 13: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

13

Component Architectures

Two tier architecture: Most obvious

But does not work.

Server 1 Server m

Client 1 Client n

Internet

Page 14: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

14

What are the Problems with the 2-tier Architecture?

Servers can be bottleneck.How to locate servers?Client-Server incompatibility: Analogy: House hunting in Bangalore.

Page 15: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

15

Middleware

Solution: 3-tier Architecture

Server 1

Server m

Client 1

Client n

InternetMiddleware

Page 16: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

16

Middleware Standards

CORBA versus COM/DCOM CORBA (common object request broker architecture) Being advocated by OMG

COM/DCOM: Being advocated by Microsoft

Page 17: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

17

CORBA Architecture

ORB

Server 1 Server m

Skeleton Skeleton

Client 1 Client n

Stub Stub

Object Adapter

DSI DSI

Page 18: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

18

CORBA Architecture

Skeleton: Marshalls client requests

The servers register themselves with the object-adapter.

The ORB delivers the client request to the server.

The Skeleton marshalls the server response.

DII/DSI for dynamic service invocation.

Page 19: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

19

IDL: Interface Development

Language Interfaces between clients and servers can be specified.

Similar to C++ or Java: But no executable statements.

Interface clock{

set-time(int hh, int mm, int ss);

get-time(int hh, int mm, int ss);

}

Page 20: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

20

How to Develop Component-Based

Applications? Divide application into components.

Determine component interfaces: Define using IDL.

Get available components: Build the ones not available

Integrate the components and test

Page 21: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

21

CORBA Implementations

VisigenicIonaOrbixJava IDL …

Page 22: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

22

COM/DCOM COM used when application runs

on a single machine: DCOM for distributed machine.

Concepts are similar to CORBA: Though terminologies are different. Proxy on client side. More usable than CORBA.

What is a component in COM/DCOM? A .exe or .dll component Created using VB or VC++

Page 23: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

23

COM/DCOM versus CORBA

COM/DCOM strong on client side: CORBA on server side. Java Beans an attempt to bridge

this gap. COM/DCOM more usable:

If your application is to run only on Microsoft operating systems, better use COM/DCOM.

If your application needs to run on heterogeneous platforms, better use CORBA.

Page 24: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

24

Service-Oriented Architecture

(SOA)

Page 25: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

25

SOA: Introduction

Service-orientation principles have their roots in the object-oriented designing.

Many claim that service-orientation will replace object-orientation: Others think the two are complementary paradigms.

Page 26: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

26

What is SOA? Build applications by composing

software services. What is a software service?

Essentially software components. Typically implement functionality most

humans would recognize as a service. Examples of services:

Filling out an online application Viewing an online bank-statement Placing an online booking

Page 27: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

27

Service: More Formally

A service is a contractually defined behavior: Implemented and provided by a component for use by an application developer.

Page 28: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

28

SOA vs. Component Model

Several things common between services and components: Multiple-use Non-context-specific Composable Encapsulated i.e., non-investigable through its interfaces

A unit of independent deployment and versioning

Loose coupling

Page 29: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

29

SOA vs. Component Model

cont…Several things different.Compared to components:

SOA's atomic-level objects are often 100 to 1,000 times larger.

Services may be developed and hosted separately. Possibly pay per use.

Page 30: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

30

SOA vs. Component Model

cont… Instead of services embedding

calls to each other in their source code: They use defined protocols which

describe how services can talk to each other.

This architecture relies on a business process expert: Links and sequences services, in a

process known as orchestration, to meet a new business requirement.

Page 31: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

31

SOA vs. Component Model

cont… SOA targets fairly large chunks of

functionality to be strung together to form new services: Built almost entirely from existing

software services. The larger the chunks:

The fewer the interfacings required; Faster development; However, very large chunks may

not prove easy to reuse.

Page 32: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

32

SOA: Nitty Gritty SOA is a collection of services:

That communicate with each other.

The services are self-contained: Do not depend on the context or state of the other service.

Each service works within a distributed-system architecture.

Page 33: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

33

SOA : Nitty Gritty cont…

A paradigm for utilizing distributed capabilities: May be under the control of different ownership domains.

Provides a uniform means: To offer, discover, interact with and use capabilities to achieve desired results.

Page 34: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

34

SOA: Nitty Gritty cont…

SOA would fundamentally change the way we construct software systems. SOA involves statically and

dynamically plugging-in services to build software.

SOA players: BEA Aqua logic, Oracle Web services

manager, HP Systinet Registry, MS .Net, IBM Web Sphere, Iona Artrix, Java composite application suite.

Page 35: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

35

SOA: Nitty Gritty cont…

Views software as providing a set of services: Each service composed of smaller services.

Leverages the Internet and emerging standardization on it for interoperability

Hopes that a market place for different predefined services can emerge: Not tied to any specific vendor

An app can be built using these services: And building the “missing” ones.

Page 36: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

36

Principles of Service-Orientation: Services

Services: Abstract the underlying data and logic

Composable Autonomous Share a formal contract Loosely coupled Stateless Discoverable

Page 37: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

37

Service Consumer

Service Provider

Contract Registry

SOA Entities

Page 38: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

38

SOA Implementation Web services can implement a service-oriented architecture.

Web services make functional building blocks Accessible over standard Internet protocols

Independent of platforms and programming languages.

Page 39: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

39

Service Orchestration

Requires metadata in sufficient detail to describe: The characteristics of the services, Also the data that drives them.

The services are typically described by WSDL.

Communications protocols by SOAP.

Data and meta data by XML

Page 40: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

40

SOA Vision Have a marketplace for services: It will automatically improve quality and reduce prices.

To build an application: Use off-the-shelf services and possibly build some.

Cost of building reduces; Also cost of ownership (which is quite large for regular software) reduces.

Page 41: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

41

Great Promise of SOA

The cost of creating the n-th application is near-zero, As all of the software services required already exists.

Only orchestration required to produce a new application.

Page 42: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

42

SOA Challenges Building services and

infrastructure Composing services – formal

theory and algebra, languages, semantics

Testing and verification Trust Non Functional properties Changes Business level modeling and

translation Developing the marketplace

Page 43: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

43

Software as a Service (SaaS)

Page 44: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

44

Challenge Faced Owning software is very expensive:

An Rs. 50 Lakh software running on an Rs. 1 Lakh computer is common place.

As with hardware, owning software is the business tradition: Both products and services bought

and used. Most of IT budget now goes in

supporting the software assets.

Page 45: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

45

Background To have water supply at home:

Do you install system to pump water from river directly to your home?

To get electricity supply: Do you install a thermal or hydro

electric generator? It would lead to wastage:

You do not need to have all the water pipes open all the time.

Unnecessarily expensive proposition.

Page 46: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

46

Background cont…

Should you own Rational Suite paying Rs. 50 Lakhs: If you use it only 10 hours every month

One hour of usage costs Rs. 100/-

Also frees use from maintenance and data storage costs --- Given that maintenance is usually a severe overhead.

Page 47: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

47

SaaS Lets customers pay for what they need and when: With price reflecting market place supply and demand.

SaaS includes: Elements of outsourcing and Application service provisioning

Page 48: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

48

SaaS SaaS is a model of software delivery: Software owner provides maintenance, daily technical operation, and support for the software.

Services are provided to the clients on amount of usage basis.

Page 49: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

49

SaaS vs. SOA SaaS is a software delivery model: SOA is a software construction model.

SaaS counters the concept of a user as the owner: Owner is a vendor who hosts the software and lets the users execute on-demand charges per usage units.

Page 50: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

50

SaaS versus SOA Despite significant differences:

Espouse closely related architecture models.

SaaS and SOA complement each other: SaaS helps to offer components for

SOA to use. SOA helps to help quickly realize SaaS.

Main enabler of SaaS and SOA: Internet and web services

technologies.

Page 51: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

51

Key Characteristics

Network-based access and management of commercially available (not custom) software.

Activities managed from central location and not at customer site, Enabling customers to access applications

remotely via the Web. Application delivery follows a one-to-

many model (single instance, multi-tenant architecture): In contrast to a one-to-one model.

Page 52: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

52

Business Model Shift "ownership" of the software:

From the customer to a service provider. Shift responsibility for hardware and

software management: From the customer to the provider

Reduce the cost of providing software services: Through specialization and economy of

scale. Target the "long tail" of small customers

Page 53: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

53

Current Business Model

Page 54: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

54

SaaS Business Model

Page 55: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

55

SaaS Architecture…

Meta-Model

Data

Player

Designer

Application Instance

Play/Edit

Edit

Client 1

Client 2

Client n

Page 56: 1 Emerging Trends in Software Engineering Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

56

Summary Some of the basic assumptions of

software are changing This is leading to some different

paradigms for software delivery. Component-based development:

Expected to reduce development time, cost and at the same time improve quality.

SaaS is changing the way software is delivered.

SOA conceives a component based assembly model with independent component vendors.