VIII: Emerging Trends - Software Engineering - BCA Notes (Pokhara University)

Breaking

Monday, January 13, 2020

VIII: Emerging Trends - Software Engineering

Client-Server Software:

A client is basically a consumer of services and the server is a provider of services. A client requests some services from the server and the server provides the required services to the client. Client and server are usually software components running on independent machines. Even a single machine can sometimes act as a client and at other times a server depending on the situations. Thus, client and server are mere roles.

Emerging Trends, Client-server software, CORBA, COM (Component Object Model), DCOM (Distributed Component Object Model), Service-oriented architecture (SOA), Roles Of Service-Oriented Architecture, Guiding Principles of SOA, Components Of Service-Oriented Architecture, Software as a service (SaaS)

Example:

A man was visiting his friend’s town in his car. The man had a handheld computer (client). He knew his friend’s name but he didn’t know his friend’s address. So he sent a wireless message (request) to the nearest “address server” by his handheld computer to enquire his friend’s address. The message first came to the base station. The base station forwarded that message through landline to local area network where the server is located. After some processing, LAN sent back that friend’s address (service) to the man.

Advantages:

There are many advantages of client-server software products as compared to monolithic ones. These advantages are:

a. Simplicity And Modularity:

Client and server components are loosely coupled and therefore modular. These are easy to understand and develop.

b. Flexibility:

Both client and server software can be easily migrated across different machines, in case some machine becomes unavailable or crashes. The client can access the service anywhere. Also, clients and servers can be added incrementally.

c. Extensibility:

More servers and clients can be effortlessly added.

d. Concurrency:

The processing is naturally divided across several machines. Clients and servers reside in different machines which can operate in parallel and thus processing becomes faster.

e. Cost-Effectiveness:

Clients can be cheap desktop computers whereas severs can be sophisticated and expensive computers. To use sophisticated software, one needs to own only a cheap client and invoke the server.

f. Specialization:

One can have different types of computers to run different types of servers. Thus, servers can be specialized to solve some specific problems.

g. Current Trend:

Mobile computing implicitly uses client-server technique. Cell phones (handheld computers) are being provided with small processing power, keyboard, small memory, and LCD display. Cell phones cannot really compute much as they have very limited processing power and storage capacity but they can act as clients. The handhold computers only support the interface to place requests on some remote servers.

h. Application Service Providers (ASPs):

There are many application software products which are very expensive. Thus it makes prohibitively costly to own those applications. The cost of those applications often runs into millions of dollars. For example, a Chemical Simulation Software named “Aspen” is very expensive but very powerful. For small industries, it would not be practical to own that software. Application Service Providers can own ASPEN and let the small industries use it as a client and charge them based on usage time. A client and simply logs in and ASP charges according to the time that the software is used.

i. Component-Based Development:

It is the enabler of client-server technology. Component-based development is radically different from traditional software development. In component-based development, a developer essentially integrates pre-built components purchased off-the-shelf. This is akin to the way hardware developers integrate ICs on a Printed Circuit Board (PCB). Components might reside on different computers which act as servers and clients.

j. Fault Tolerance:

Client-server based systems are usually fault-tolerant. There can be many servers. If one server crashes then client requests can be switched to a redundant server.

Disadvantages:

There are several disadvantages of client-server software development. Those disadvantages are:

a. Security:

In a monolithic application, implementation of security is very easy. But in a client-server based development, a lot of flexibility is provided and a client can connect from anywhere. This makes it easy for hackers to break into the system. Therefore, ensuring security in the client-server system is very challenging.

b. Servers Can Be Bottlenecks:

Servers can turn out to be bottlenecks because many clients might try to connect to a server at the same time. This problem arises due to the flexibility given that any client can connect anytime required.

c. Compatibility:

Clients and servers may not be compatible with each other. Since the client and server components may be manufactured by different vendors, they may not be compatible with respect to data types, language, etc.

d. Inconsistency:

Replication of servers is a problem as it can make data inconsistent.

CORBA:

Common Object Request Broker Architecture (CORBA) is an architecture and specification for creating, distributing, and managing distributed program objects in a network. It allows programs at different locations and developed by different vendors to communicate in a network through an "interface broker." CORBA was developed by a consortium of vendors through the Object Management Group (OMG), which currently includes over 500 member companies. Both International Organization for Standardization (ISO) and X/Open have sanctioned CORBA as the standard architecture for distributed objects (which are also known as components). CORBA 3 is the latest level.

Emerging Trends, Client-server software, CORBA, COM (Component Object Model), DCOM (Distributed Component Object Model), Service-oriented architecture (SOA), Roles Of Service-Oriented Architecture, Guiding Principles of SOA, Components Of Service-Oriented Architecture, Software as a service (SaaS)

The essential concept in CORBA is the Object Request Broker (ORB). ORB support in a network of clients and servers on different computers means that a client program (which may itself be an object) can request services from a server program or object without having to understand where the server is in a distributed network or what the interface to the server program looks like. To make requests or return replies between the ORBs, programs use the General Inter-ORB Protocol (GIOP) and, for the Internet, it’s Internet Inter-ORB Protocol (IIOP). IIOP maps GIOP requests and replies to the Internet's Transmission Control Protocol (TCP) layer in each computer.

A notable hold-out from CORBA is Microsoft, which has its own distributed object architecture, the Distributed Component Object Model (DCOM). However, CORBA and Microsoft have agreed on a gateway approach so that a client object developed with the Component Object Model will be able to communicate with a CORBA server (and vice versa).

Distributed Computing Environment (DCE), a distributed programming architecture that preceded the trend toward object-oriented programming and CORBA are currently used by a number of large companies. DCE will perhaps continue to exist along with CORBA and there will be "bridges" between the two.

COM (Component Object Model):

Component Object Model (COM) is a simple Microsoft specification method that defines a binary standard for exchanging code between two systems, regardless of the OS or programming language. COM provides access to distributed client object services and is used to share cross-platform binary code and programming languages.

Emerging Trends, Client-server software, CORBA, COM (Component Object Model), DCOM (Distributed Component Object Model), Service-oriented architecture (SOA), Roles Of Service-Oriented Architecture, Guiding Principles of SOA, Components Of Service-Oriented Architecture, Software as a service (SaaS)

COM interactivity occurs via interfacing with expandable COM software components that do not have an impact on underlying implementation objects. COM uses one intra and interprocess communication model for developer transparency. Developers increase efficiency by modifying service implementation. COM machine components also share memory, which increases efficiency and provides superior error handling and debugging.

Dynamic-link library (DLL) or EXE files contain COM object classes. The client uses one or more COM interfaces to access COM object services, defined as COM object classes or CO class memory instances. A 128-bit globally unique identifier (GUID), known as a class identifier (CLSID), is associated with each CO CLASS and interface for unique COM object identification.

Clients access COM objects through one or more supported interfaces, which are actual contracts specifying COM object service availability. The COM object interface is not tied to any programming language and is usually written in an interface definition language.

Because the COM object can have more than one set of available services, COM objects may expose more than one interface to clients. Because two interfaces may have the same name, a GUID is used to uniquely assign COM object references for client access.

The primary COM module feature is expandability. COM objects continuously incorporate new functions and present new client interfaces for access to old and new services.

Advantages:

1. COM promotes component-based software development.
2. COM promotes code reusability.
3. COM promotes Object-oriented programming (OOP).
4. COM comprises the necessary mechanisms for COM components to communicate with each other.
5. COM helps to access components loaded in different machines on the network.

DCOM (Distributed Component Object Model):

DCOM is a programming construct that allows a computer to run programs over the network on a different computer as if the program was running locally. DCOM is an acronym that stands for Distributed Component Object Model. DCOM is a proprietary Microsoft software component that allows COM objects to communicate with each other over the network. (Network OLE was the precursor to DCOM if anyone remembers seeing that in Windows 3.1.)

Emerging Trends, Client-server software, CORBA, COM (Component Object Model), DCOM (Distributed Component Object Model), Service-oriented architecture (SOA), Roles Of Service-Oriented Architecture, Guiding Principles of SOA, Components Of Service-Oriented Architecture, Software as a service (SaaS)

An extension of COM, DCOM solves a few inherent problems with the COM model to better use over a network:

Emerging Trends, Client-server software, CORBA, COM (Component Object Model), DCOM (Distributed Component Object Model), Service-oriented architecture (SOA), Roles Of Service-Oriented Architecture, Guiding Principles of SOA, Components Of Service-Oriented Architecture, Software as a service (SaaS)

1. Marshalling:

Marshalling solves a need to pass data from one COM object instance to another on a different computer – in programming terms, this is called “passing arguments.” For example, if I wanted Zaphod’s last name, I would call the COM Object LastName with the argument of Zaphod. The LastName function would use a Remote Procedure Call (RPC) to ask the other COM object on the target server for the return value for LastName(Zaphod), and then it would send the answer – Beeblebrox – back to the first COM object.

2. Distributed Garbage Collection:

Designed to scale DCOM in order to support high volume internet traffic, Distributed Garbage Collection also addresses a way to destroy and reclaim completed or abandoned DCOM objects to avoid blowing up the memory on webservers. In turn, it communicates with the other servers in the transaction chain to let them know they can get rid of the objects related to a transaction.

3. Using DCE/RPC As The Underlying RPC Mechanism:

To achieve the previous items and to attempt to scale to support high volume web traffic, Microsoft implemented DCE/RPC as the underlying technology for DCOM – which is where the D in DCOM came from.

Service-Oriented Architecture (SOA):

Service-Oriented Architecture (SOA) is an architectural approach in which applications make use of services available in the network. In this architecture, services are provided to form applications, through a communication call over the internet.

1. SOA allows users to combine a large number of facilities from existing services to form applications.

2. SOA encompasses a set of design principles that structure system development and provide means for integrating components into a coherent and decentralized system.

3. SOA based computing packages functionalities into a set of interoperable services, which can be integrated into different software systems belonging to separate business domains.

Emerging Trends, Client-server software, CORBA, COM (Component Object Model), DCOM (Distributed Component Object Model), Service-oriented architecture (SOA), Roles Of Service-Oriented Architecture, Guiding Principles of SOA, Components Of Service-Oriented Architecture, Software as a service (SaaS)

Roles Of Service-Oriented Architecture:

1. Service Provider:

The service provider is the maintainer of the service and the organization that makes available one or more services for others to use. To advertise services, the provider can publish them in a registry, together with a service contract that specifies the nature of the service, how to use it, the requirements for the service, and the fees charged.

2. Service Consumer:

The service consumer can locate the service metadata in the registry and develop the required client components to bind and use the service.

Emerging Trends, Client-server software, CORBA, COM (Component Object Model), DCOM (Distributed Component Object Model), Service-oriented architecture (SOA), Roles Of Service-Oriented Architecture, Guiding Principles of SOA, Components Of Service-Oriented Architecture, Software as a service (SaaS)

Services might aggregate information and data retrieved from other services or create workflows of services to satisfy the request of a given service consumer. This practice is known as service orchestration another important interaction pattern is service choreography, which is the coordinated interaction of services without a single point of control.

Guiding Principles of SOA:

1. Standardized Service Contract:

Specified through one or more service description documents.

2. Loose Coupling:

Services are designed as self-contained components, maintain relationships that minimize dependencies on other services.

3. Abstraction:

A service is completely defined by service contracts and description documents. They hide their logic, which is encapsulated within their implementation.

4. Reusability:

Designed as components, services can be reused more effectively, thus reducing development time and the associated costs.

5. Autonomy:

Services have control over the logic they encapsulate and, from a service consumer point of view, there is no need to know about their implementation.

6. Discoverability:

Services are defined by description documents that constitute supplemental metadata through which they can be effectively discovered. Service discovery provides an effective means for utilizing third-party resources.

7. Composability:

Using services as building blocks, sophisticated and complex operations can be implemented. Service orchestration and choreography provide solid support for composing services and achieving business goals.

Components Of Service-Oriented Architecture:

The service-oriented architecture stack can be categorized into two parts - functional aspects and quality of service aspects.

Emerging Trends, Client-server software, CORBA, COM (Component Object Model), DCOM (Distributed Component Object Model), Service-oriented architecture (SOA), Roles Of Service-Oriented Architecture, Guiding Principles of SOA, Components Of Service-Oriented Architecture, Software as a service (SaaS)

Functional Aspects:

1. Transport:
It transports the service requests from the service consumer to the service provider and service responses from the service provider to the service consumer.

2. Service Communication Protocol:
It allows the service provider and the service consumer to communicate with each other.

3. Service Description:
It describes the service and data required to invoke it.

4. Service:
It is an actual service.

5. Business Process:
It represents the group of services called in a particular sequence associated with the particular rules to meet the business requirements.

6. Service Registry:
It contains the description of data which is used by service providers to publish their services.

Quality Of Service Aspects:

1. Policy:
It represents the set of protocols according to which a service provider make and provide the services to consumers.

2. Security:
It represents the set of protocols required for identification and authorization.

3. Transaction:
It provides the surety of consistent result. This means, if we use the group of services to complete a business function, either all must complete or none of the complete.

4. Management:
It defines the set of attributes used to manage the services.

Advantages:

1. Service Reusability:

In SOA, applications are made from existing services. Thus, services can be reused to make many applications.

2. Easy Maintenance:

As services are independent of each other they can be updated and modified easily without affecting other services.

3. Platform Independent:

SOA allows making a complex application by combining services picked from different sources, independent of the platform.

4. Availability:

SOA facilities are easily available to anyone on request.

5. Reliability:

SOA applications are more reliable because it is easy to debug small services rather than huge codes.

6. Scalability:

Services can run on different servers within an environment, this increases scalability.

Disadvantages:

1. High Overhead:

A validation of input parameters of services is done whenever services interact this decreases performance as it increases load and response time.

2. High Investment:

A huge initial investment is required for SOA.

3. Complex Service Management:

When services interact they exchange messages to tasks. The number of messages may go in millions. It becomes a cumbersome task to handle a large number of messages.

SaaS (Software as a Service):

Software as a service (SaaS) is a software distribution model in which a third-party provider hosts applications and makes them available to customers over the Internet. SaaS is one of three main categories of cloud computing, alongside infrastructure as a service (IaaS) and platform as a service (PaaS).

Emerging Trends, Client-server software, CORBA, COM (Component Object Model), DCOM (Distributed Component Object Model), Service-oriented architecture (SOA), Roles Of Service-Oriented Architecture, Guiding Principles of SOA, Components Of Service-Oriented Architecture, Software as a service (SaaS)

SaaS removes the need for organizations to install and run applications on their own computers or in their own data centres. This eliminates the expense of hardware acquisition, provisioning and maintenance, as well as software licensing, installation and support.

Advantages:

1. Lower Up-Front Cost:

SaaS is generally subscription-based and has no up-front licence fees resulting in lower initial costs. The SaaS provider manages the IT infrastructure that is running the software, which brings down fees for hardware and software maintenance.

2. Quick Set Up And Deployment:

SaaS application is already installed and configured in the cloud. This minimises common delays resulting from often lengthy traditional software deployment.

3. Easy Upgrades:

The SaaS providers deal with hardware and software updates, deploying upgrades centrally to the hosted applications and removing this workload and responsibility from us.

4. Accessibility:

All we need to access a SaaS application is a browser and an internet connection. This is generally available on a wide range of devices and from anywhere in the world, making SaaS more accessible than the traditional business software installation.

5. Scalability:

SaaS providers generally offer many subscription options and flexibility to change subscriptions as and when needed, e.g. when our business grows, or more users need to access the service.

Disadvantages:

1. Lack Of Control:

In-house software application gives businesses a higher degree of control than hosted solutions where control resides with a third party. Typically everyone has to use the latest version of the software application and cannot defer upgrades or changes in the features.

2. Security and Data Concerns:

Access management and the privacy of sensitive information is a major consideration around cloud and hosted services.

3. Limited Range of Applications:

While SaaS is becoming more popular, there are still many applications that don't offer a hosted platform.

4. Connectivity Requirement:

Since the SaaS model is based on web delivery, if our internet service fails, we will lose access to our software or data.

5. Performance:

SaaS may run at somewhat slower speeds than on-premise client or server applications, so it's worth keeping performance in mind our software isn't hosted on a local machine.

No comments:

Post a Comment

If you have any doubt, then don't hesitate to drop comments.