Академический Документы
Профессиональный Документы
Культура Документы
12
Software reuse
Aspect-oriented software engineering
Service-oriented software engineering
Usability engineering
Model-driven software engineering
Client-server software engineering
Computer-aided software engineering (CASE)
M12_SE_01_M12.indd 429
6/28/2013 11:21:14 AM
in this way is development with software reuse. Software reuse is an efficient way
of implementing or updating software systems with existing software components.
Software reuse is the process of producing software systems from existing software
systems rather than building software from scratch. Reuse-based software engineering allows producing reusable components only once and saves development
effort multiple times.2
Software reuse has a great impact on achieving high productivity and quality.
Also, if the requirements change, the required component can be added and software
can be modified. Reuse-based development using components/modules improves
the maintainability of software. The production of reusable components requires
more effort and resources than the development of components customized for
one project.3 Reuse requires an extensive upfront planning effort to identify and
avail reusable components. Also, it requires extra time for writing, managing, and
retrieving reusable components, thereby reducing the benefits from writing nonreusable components. Although the benefits of systematic reuse can be high, most
organizations lack success in implementing and getting reuse potential.
Software reuse provides a means for reducing the efforts of developing an application software system. Software reuse is a viable idea but it is not free from an
economic perspective. Reusability is the degree to which a reuse entity can be
reused. It has two major aspects, namely, usability and usefulness. Usability is the
degree to which an asset is easy to use in the sense of the amount of effort that
is needed to use an asset. It involves comprehensibility, compliance with standards, ease of development, etc. Usefulness is the frequency of suitability for use.
It depends on functionality, generality, and quality of the component. Software
reuse can occur at many levels, ranging from the reuse of small functions within an
application system to the reuse of large software across many application systems.
Reuse measures the predictability of time to market a product.
M12_SE_01_M12.indd 430
6/28/2013 11:21:14 AM
431
12.1.2Types of Reuse
These days there is a rapid growth of reuse-related products and services, such as
components, consulting, and library tools that support the design and construction
of reusable software. The success of reuse depends on the types of reuse strategies
implemented in the organization. There are several types of reuse strategies listed
in Table 12.1 from various literatures, with their advantages and disadvantages.6,7
Various types of reuse can be classified with respect to proper management of reuse
mechanism, domain scope, modification of reusable components, development
scope, technical approaches of reuse, and frequently reused entities.
M12_SE_01_M12.indd 431
6/28/2013 11:21:14 AM
Domain
scope
Modifications
Development
scope
Reuse
approach
Reused
entity
Ad hoc
(informal)
Vertical
White box
Internal
(private)
Layered
Source
code
Systematic
(formal)
Horizontal
Black box
(verbatim)
External
(public)
Tailored
Abstract
level
Generative
Instance
level
In-the-small
Customization
reuse
In-the-large
Generic
Adaptive
(porting)
Carried over
M12_SE_01_M12.indd 432
6/28/2013 11:21:14 AM
433
and can be modified by clients. Black-box reuse is preferable over white-box reuse.
Adaptive reuse strategy uses large software structures as invariants and restricts
variability to low-level, isolated locations. Changing arguments to parameterized
modules is an example of adaptive reuse.
Development scope means that reusable components are available either
from a source external or internal to a project. It involves external reuse level and
internal reuse level to identify the development scope of reusable components.
Internal reuse level (also known as private reuse) is the ratio between the number
of lower-level items (not from an external repository) and the total number of
lower-level items (not from an external repository). For example, out of 50 reusable components, there may be a possibility of reusing 30 components from ones
own (i.e., internal) reuse library and remaining from other sources. Here, private
refers to the extent to which modules within a product are reused within the same
product. External reuse level (also known as public reuse) is the ratio between
the number of lower-level items from an external repository in a higher-level item
and the total number of lower-level items in the higher-level item. For example, out
of 50 reusable components for the development of software, there may be a possibility of reusing 30 components from the external reuse repository and 20 from
the in-house reuse repository. In external reuse, the development team considers
theuse of licensed third party reusable components.
Reuse approach refers to different technical methods for implementing reuse.
Layered reuse is used to describe the case where reusable functions or operations
are viewed as abstract primitives. These primitives may be used by the client; for
example, network layered software, runtime kernel, mathematical packages, string
handling utilities, etc. In tailored reuse approach, the configuration of reusable
components is required to interoperate properly with the client software; for
example, the generic data structures that allow the client software to create stack,
queue, lists, etc. Other examples of tailored reuse are database management systems,
spreadsheets, statistical packages, and expert systems. Generative reuse occurs
when the reusable components are used as a generator program rather than being
incorporated directly into the final application system; for example, compilers, test
case generators, fourth generation languages, parser generators, etc. Reuse in-thelarge is the use of large, self-contained packages such as spreadsheets and operating
systems. Reuse in-the-small is the reuse of components which are dependent upon
the environment of the application for full functionality. Carryover reuse occurs
when one version of a software component is considered to be used as is in a subsequent version of the same system.
Reused entity is the type of reused objects used for application development.
Source code reuse is the low-level modification of an existing source to change
its performance characteristics. Abstract reuse is the use of high-level abstractions
within an object-oriented inheritance structure as the foundation for new ideas or
additional classification schemes. Instance-level reuse is the most common form
of reuse that can be defined as simply creating an instance of an existing class.
Customization reuse is the use of object-oriented inheritance to support incremental development. A new application system may inherit information from
M12_SE_01_M12.indd 433
6/28/2013 11:21:14 AM
an existing class, overriding certain methods and adding new behaviors. Generic
reuse is reuse of generic packages such as templates for packages or subprograms.
Reuse repository
Domain
engineering
Product
requirements
Searching
Retrieval
Integration with
development
Reuse
measurement
New software
Domain Engineering
Domain engineering identifies reusable artifacts and operations in a set of related
systems having similar functionalities in specific functional areas, along with the
roles and responsibilities. It provides domain vocabularies, domain models, possibly
reusable components, and classification schemes. A reuse domain is basically a set
of application areas. The content of application domain and the required component of the software product can be characterized by patterns of similarity between
components. The reusable components under domain analysis can be identified by
the domain concepts, techniques, technologies, terminologies, and by reviewing
among peers.
For example, reuse domain can be a business software domain, accounting software domain, banking software domain, telecommunication domain, and system
software domain. From all these domains, developers can design reusable components. Identified reusable components can be classified according to the application
domain. The classified reusable components are stored systematically into physical
devices for faster retrieval to integrate them with the system under development.
The systematic organization of reusable components within the reuse repository
system can reflect in the development activity. Reusable components need to be
M12_SE_01_M12.indd 434
6/28/2013 11:21:14 AM
435
M12_SE_01_M12.indd 435
6/28/2013 11:21:14 AM
M12_SE_01_M12.indd 436
6/28/2013 11:21:14 AM
437
M12_SE_01_M12.indd 437
6/28/2013 11:21:14 AM
M12_SE_01_M12.indd 438
6/28/2013 11:21:14 AM
439
therefore need less effort during porting or adaptation to new hardware and software
environments.
Improvement in the predictability of the process The analyst, along with
domain experts, decides early the availability of reusable components. Inclusion of
reusable components helps in predicting the outcomes of software processes.
In spite of the above advantages of the reuse-based development, there are
certain drawbacks of its implementation. Some of the claims are as follows:
It takes too much effort and time to introduce reuse in an organization.
Reuse of components may lead to legal responsibility in case of software
failure.
Management is not trained in software development methods with reuse.
Risks of wrong component selection
Worry about ongoing support
Tradeoffs require adapting certain components.
Worries about component quality
Uncertain internal costing to compare costs
Availability of quality, high-value components
M12_SE_01_M12.indd 439
6/28/2013 11:21:14 AM
and retrieve suitable assets. In spite of this, there are two basic approaches to
reuse: parts-based reuse and generative reuse. The part-based approach assumes a
software engineer integrating software components into an application. The generative approach considers that domain knowledge is encoded into an application
generator or a programming language so that components can be selected and
integrated automatically.
Psychological Adaptation of new methods and techniques for reuse development may introduce risks. The organization and people involved in reuse need to
build confidence to reuse assets and their quality produced by other developers.
Political The people involved in the reuse program have benefits and powers
over some architectural decisions and authorization. This may lead to provide
advantage to some people and disadvantage to others.
Legal An organization requiring to reuse components to which other entities
have proprietary rights, copyrights, and legal claims will face legal constraints.
Some authentication is required to reuse third-party components. Authentication
avoids any illegal access of the reuse repository by unauthorized people. Also,
reusers of the asset take on the risk of the cost incurred from failure of the reusable
component.
Despite these obstacles, people should concentrate on the following critical
reuse success factors. These conditions assist in determining the reuse potential in
a given context.
Focus on domain analysis and adopt a product line approach The software
must address a domain through domain analysis and adopt a product line approach
that has considerable commonality. This helps to determine the right product line
for the organization and develop domain-specific software.
Focus on achieving black-box reuse White-box reuse incurs a cost in each
modification. Therefore, black-box reuse of components, in which components are
used through specifying parameters, reduces the effort.
Establish reuse-oriented development process and organization Create processes
that support reuse. It is required to have reuse asset certification, reuse repository
management, version and configuration control, and adaptation of reuse.
Adopt reuse in an incremental manner Introduce reuse in an incremental
manner rather than all at one time so that the resources can be managed and
changes can be controlled easily.
Produce large volume of software The majority of reusable components enhance
reuse activity and help to catch the market opportunities. However, the quality of
reusable asset should be kept in consideration.
Certify reuse components to build trust and ensure quality The reuse organization should establish a set of standards, including inspection and metrics for
M12_SE_01_M12.indd 440
6/28/2013 11:21:14 AM
441
M12_SE_01_M12.indd 441
6/28/2013 11:21:14 AM
It is observed that some concerns at the early life cycle phases cannot be mapped
to single modular units but tend to crosscut over multiple modules. The crosscutting concerns cut across multiple abstractions in a program. Aspects at the early
life cycle phases have been termed as early aspects so as to distinguish them from
aspects at the code level. For example, modules could be requirements, use cases,
architectural components, interaction diagrams, etc. Aspects should be identified
early in the software development life cycle, i.e., during the requirements analysis,
domain analysis, and architecture design phases.
Crosscutting concerns are aspects of a program which affect (crosscut) other
concerns.12 These concerns often cannot be clearly distinguished from the rest of
the system, both for design and implementation. This results in either scattering/
tangling of the program or both. For instance, writing an application for handling
medical records, bookkeeping, and indexing of such records is a core concern
while logging a history of changes to the record database or user database or an
authentication system would be crosscutting concerns since they exist in most
parts of the program. Core concern is related to the core or central functionality of
a problem. Crosscut concerns are related to additional information which is associated with the core concern.
M12_SE_01_M12.indd 442
6/28/2013 11:21:15 AM
443
Advice
The method which executes conditionally on happening of an event is called
advice. Advice declaration is used to define the aspect code that runs at join points.
Advice consists of pointcut declaration and a body which gets executed whenever the pointcut matches. The different types of advices are around advice, before
advice, and after advice. These are defined as follows.
Around advice When advice code is run at a join point and it can check the
conditions to control the selection of advice code, it is known as around advice.
Before advice When advice code is run before the method starts running, it is
known as before advice.
After advice When advice code is run at the moment method returns the control,
it is known as after advice.
Introduction
An introduction is a member of a type (class), but it defines or modifies a member
of another type (class). Introduction is a static crosscutting instruction that introduces changes to the classes, interfaces, and aspects of the system. It adds fields
and methods to an existing class, extends an existing class with another, and implements an interface in an existing class.
Weavers
Weavers are a specific kind of compilers used for aspect languages. Many of the
aspect languages are simply the extension of OO languages. Weavers primary task
is to transfer the aspect language program into OO program where the aspect
code is inserted into the OO implementation modules.
Aspect
An aspect is similar to a class by having a type; it can extend classes and other
aspects. An aspect can be abstract or concrete and have fields, methods, and types as
members. It is a modular unit designed to implement a concern. Aspects are
modular units of crosscutting implementation. Aspects define precisely how
behavioral and structural crosscutting has to take place by means of pointcuts
(specifying fix points for behavioral crosscutting), advice (specifying code for
behavioral crosscutting), and introductions (specifying code for structural crosscutting). Furthermore, an ordinary Java member with no crosscutting effects
may be declared, for example, to specify aspect-specific helper methods or to
accommodate aspect-specific state information. Aspects may be specialized by
inheritance. Just like standard UML classes, sub-aspects inherit all features from
their super-aspects; they may override only ordinary Java operations and abstract
pointcuts, though.
AspectJ is an aspect-oriented programming language. AspectJ extends Java
with support for two kinds of crosscutting implementation. It has two additional
M12_SE_01_M12.indd 443
6/28/2013 11:21:15 AM
M12_SE_01_M12.indd 444
6/28/2013 11:21:15 AM
445
M12_SE_01_M12.indd 445
6/28/2013 11:21:15 AM
In SOSE, services are the basic elements for developing applications and software
solutions. The software in this paradigm is presented as a web service known by
the term SaaS (Software as a Service). A web service is a software component
available on the Internet with web interfaces, which is accessed remotely using
Internet protocols and infrastructure.
SOSE is based on service-oriented computing, but it is also evolved to include
cloud computing. In SOSE, a service-oriented architecture (SOA) provides the
architectural style, standard protocols, and interfaces required for application
development whereas cloud computing delivers the needed services to users. SOSE
focuses on the development of software systems by composition of reusable services
provided by other service providers. Since it involves composition, it shares many
features of component-based software engineering, the composition of software
systems from reusable components, but it adds the ability to dynamically locate
necessary services at runtime. These services may be provided by others as web
services, but the essential element is the dynamic nature of the connection between
the service users and the service providers. SOSE utilizes services as fundamental
elements for developing applications and solutions. Important areas of research
within SOSE include service foundations, service composition, service management
and monitoring, and service-oriented engineering.
M12_SE_01_M12.indd 446
6/28/2013 11:21:15 AM
447
UDDI
Service
registry
Publish
(WSDL, XSD)
Search
Service
consumer
Bind
Service
provider
There are three main entities in SOA architecture, namely, a service provider,
a service requester, and a service registry.16 The service provider defines service
descriptions of a collection of services, supplies services with functionalities, and
publishes the descriptions of the services for discovery. The service registry contains
service descriptions and references to service providers and provides mechanisms
for service publishing and discovery, for example, Universal Description Discovery
and Integration (UDDI). The service requester is a client that calls a service provider
which can be an end-user application or other services. A service requester searches
a specific service in the service registry via the service interface description. When
the service interfaces match with the criteria of the service requester, the service
requester will use the service description and make a dynamic binding with the
service provider, invoke the service, and interact directly with the service.
In SOA, services are usually implemented as web services (WS) and delivered
using technologies such as Extensible Markup Language (XML), Web Services
Description Language (WSDL), Simple Object Access Protocol (SOAP), Universal
Description Discovery and Integration (UDDI), and Business Process Execution
Language (BPEL).17 XML is fundamental to web services. It provides a way to
describe information. WSDL is used to describe WS interfaces which define operations and then binds them to one or more protocols. SOAP defines an envelope
and rules for representing information sent in that envelope. SOAP messages
are commonly conveyed using HTTP. UDDI stores registrations describing web
services and provides unique names for elements in the registrations. BPEL is the
standard for assembling a set of discrete services into an end-to-end process flow,
radically reducing the cost and complexity of process integration initiatives.
M12_SE_01_M12.indd 447
6/28/2013 11:21:15 AM
M12_SE_01_M12.indd 448
6/28/2013 11:21:15 AM
449
At the global level, the SOSE life cycle is not much different from the classical
software life cycle. The SOSE life cycle consists of phases such as service-oriented
analysis, service-oriented design, service architecture, service implementation,
and deployment.19,20
Analysis The goal of service-oriented analysis is to capture the characteristics
and requirements of the problem domain and transform them into a set of service
candidates providing the necessary functionality. A service, whether it is simple or
a large composite service, models a business process. The first step in the analysis
phase stipulates the service to include which business process will be handled
by the service, what the start and end are, who the participants are, and input and
output of the process. The first step determines the boundaries for the steps to
follow.
Architecture The architecture phase begins with a decomposition of the process
into its constituent process steps and their interactions. Workflow modelling
notations and languages are used for this purpose. Usage scenarios are devised and
are used to manually test the process flow developed and identify any missing steps.
These usage scenarios then help to decide which services can be grouped into a
composite service. The next step is to compose a specific service-oriented architecture. Service layers, web services standards to be used, as well as rules for how the
web services are to be applied are determined.
Design The design phase is subdivided into two activities such as design of
services and their interfaces. In terms of SOA style, this concerns the detailed
design of the service layers and the coordination layer.
Implementation In the implementation phase, abstract service interfaces are
expressed using platform-specific interface definition languages such as Web
Services Description Language (WSDL). Basic services are realized through
implementation in code or through integration of preexisting tools for composite
services mechanisms like BPEL. .NET framework provides facility to develop web
services.
Deployment In this phase, the service is deployed on a host location from where
it can be accessed by the user.
M12_SE_01_M12.indd 449
6/28/2013 11:21:15 AM
Ease of learning The system should be easy to learn so that the user can rapidly
start getting some work done with the system. Ease of learning is usually assessed
by measuring the time a user spends working with the system before that user can
complete certain tasks in the time it would take an expert to complete the same
tasks. This attribute is very important for novice users.
Efficiency of use The system should be efficient to use, so that once the user
has learned using the system, a high level of productivity is possible. In a specified time duration, maximum speed of user task performance is expected.
The higher the system usability the faster the user can perform the task and
complete the job.
Memorability The system should be easy to remember, so that a casual user is
able to return to the system after some time, without having to learn everything all
over again. Memorability can be measured by performing a standard user test with
casual users who have been away from the system for a specified amount of time,
and measure the time they need to perform some typical test task.
Error frequency and severity How many errors do users make, how severe are
these errors, and how easily can they recover from the errors? Error frequency and
severity reflects how well the user remembers how the system works after a period
of non-usage. Users should make as few errors as possible when using a computer
system. The systems error rate is measured by counting the number of errors made
by users while performing some specified task.
Satisfaction How pleasant is it to use the design? This shows a users subjective
impression of the system. Subjective satisfaction might be measured by simply
asking the users their subjective opinion.
Usability engineering is a discipline that provides structured methods for
achieving usability in user interface design during product development.23 It is
a methodical engineering approach to user interface design and evaluation,
involving practical, systematic approaches to developing requirements, analyzing
a usability problem, developing proposed solutions, and testing those solutions.
Usability engineering deals with design of websites, computer portals, computer
keyboard design, car dashboard design, TV remote key layouts, washing machine
front panel layout, etc.
There are various principles of usability. Some of the important principles of
usability are as follows.
Visibility It specifies what the software looks like to the user.
Feedback It is the response from the users. The system should send back to the
user information about what action has actually been done and what result has
been accomplished.
Structure The system should be designed in such a way that a user can easily
control the system. There should be proper icons and exit points.
M12_SE_01_M12.indd 450
6/28/2013 11:21:15 AM
451
Reuse The system should be consistent so that it can be reused in other environment.
Simplicity System should be simple and help users to diagnose the errors and to
overcome them.
M12_SE_01_M12.indd 451
6/28/2013 11:21:15 AM
Requirements analysis In this phase, we understand the users and their needs,
expectations, interests, behaviors, and responsibilities, all of which characterize
their relationship with the system. Here, user profiles are conceived. Two important
activities are performed at this stage: task analysis and platform capabilities and
constraints. Task analysis reveals task requirements and the current workflow as
well as specific conditions of use. Task analysis describes a set of techniques people
use to get things done. Platform capabilities and constraints are recognized at this
phase. Usability benchmarks are defined to assess the value of usability attributes
for the system under development.
Conceptual model design It includes reengineering the workflow and writing
down the application structure. In the conceptual design phase, we define the basic
user-system interaction and the objects in the UI and the contexts in which the
interaction takes place. The findings of the user and task analysis are the basis for
conceptual design. The deliverables from this phase are typically paper prototypes
such as pencil drawings or screen mock-ups and a specification which describes
the UIs behavior.
Prototyping Prototypes are crucial for performing usability testing in early
development phases. The design of prototypes is important because abstract technical specifications are ineffective way of communicating with users. We create
prototypes to test them on the user through usability evaluation techniques. Prototyping techniques employ paper mock-ups, Wizard of Oz technique, scenarios,
storyboards, and snapshots.
Implementation At this stage, the user interface is finally developed for the
system. After implementation, it is delivered and installed at the customer site.
Evaluation and refinement Requirements lead to an update of the product,
repeating the usability engineering process. Usability evaluation is performed
in the usability process. It can determine the current versions usability level and
whether the design works.
M12_SE_01_M12.indd 452
6/28/2013 11:21:15 AM
453
M12_SE_01_M12.indd 453
6/28/2013 11:21:15 AM
artifacts in all phases of development process, from system specification and analysis
to design and testing. In MDSE, software developers concentrate on the problem
space (models) and not on the (platform-specific) solution space. MDSE is the
application of model-driven engineering to software engineering, i.e., it consists of
systematically using models as primary engineering artifacts throughout the software engineering life cycle. Model-driven engineering (MDE) refers to the use of
generative and transformational techniques for software engineering where system
implementations are semi-automatically derived from models or specifications.28
Model-driven engineering is supported by model-driven architecture (MDA).
Applications are modeled at a platform-independent level and are transformed by
means of model transformations to platform-specific implementations. The most
common types of models of software systems used today are UML models and
several types of formal models. The three primary goals of MDA are portability,
interoperability, and reusability through architectural separation of concerns. Therefore, a system should be specified independently from the platform that supports it.
Based on platform specifications and the choice of a specific platform the system
specification should be transformed into the specific platform. In general, transformations can be between any types of models, for example, platform-independent
models to platform-specific models and also from models to code.
The main focus of MDSE is to achieve greater productivity in creating new
software. There are numerous applications of MDSE. Model-driven engineering
technologies offer a promising approach to address the inability of third generation
languages to alleviate the complexity of platforms and express domain concepts
effectively. MDSE is useful in data-centric applications. That is, model describes
the data, constraints, relationships, and workflow. The forms, form validation, SQL
code, correct control flow, etc., are all generated from domain model. MDSE is also
useful in function critical applications to perform model checking. Also, it is widely
used in mobileapplicationdevelopment; that is, writing the same application for
multiple platforms.
M12_SE_01_M12.indd 454
6/28/2013 11:21:15 AM
455
Application
domains
Modeling standards
and transformation tools
Finance
CORBA
Telecom
eCommerce
UML
.NET
Model-driven
architecture
MOF
COM1
XML
Concrete
execution
platforms
Java EE
Healthcare
...
M12_SE_01_M12.indd 455
6/28/2013 11:21:15 AM
Model
Transformation
Platform-specific model
Code
by the software community.29 CIM model is a view of a system from a computationindependent viewpoint. The intended meaning is less about abstracting from
computation but about details about the structure of a system. PIM model is
independent of the features of a platform of any particular type. PIMs can be
targeted for a technology-neutral virtual machine, a general kind of platform, or
an abstract platform. PSM model is targeted for a specific platform. It is derived
from a platform-independent model by a transformation, thereby combining
the platform-independent specification with platform-specific details. A PSM
provides details (more or less) depending on its purpose. If it comprises all the
details needed for automatically generating an implementation from the model,
then it represents a platform-specific model of the implementation. The resulting
code is then obtained by serializing the model. Otherwise, a PSM may require
further refinements before getting a platform-specific implementation model.
Model transformations are important within any MDA style of development. Model transformations involve using a model as one of the inputs in
the automation process to produce outputs as another model or varying levels
of executable code. There are three common model transformations: refactoring transformations, model-to-model transformations, and model-to-code
transformations.30 Refactoring transformations reorganize a model based on
some well-defined criteria. The output is a revision of the original model called
the refactored model. Model-to-model transformations convert information from
one model or models to another model or set of models, typically where the flow
of information is across abstraction boundaries; for example, the transformation of
a set of entity classes into a matched set of database schema and XML-formatted
mapping descriptor files. Model-to-code transformations are familiar to anyone
who has used the code generation capability of a UML modeling tool. These transformations convert a model element into a code fragment. Model-to-code transformations can be developed for nearly any form of programming language or
declarative specification; for example, generating Data Definition Language (DDL)
code from a logical data model expressed as a UML class diagram.
M12_SE_01_M12.indd 456
6/28/2013 11:21:15 AM
457
Finance, insurance,
loan automation, etc.
Analysis model
System
M12_SE_01_M12.indd 457
6/28/2013 11:21:16 AM
meaningful validation and empowers domain experts. Also, it has certain limitations.
The MDA approach introduces a lot of rigidity in development. The roles of
project members are quite different. Sometimes there is a difficulty to support
version control. The requirements team needs to understand what is allowed
and what is not.
Server
M12_SE_01_M12.indd 458
6/28/2013 11:21:16 AM
459
Two-Tier Architecture
Two-tier architecture is the simplest of the architecture types, consisting of only the
server and the client application. It is shown in Figure 12.7. With the two-tier architecture, the user system interface is usually located in the clients environment and
the database management services are usually in a server, which is a more powerful
machine that services many clients. Processing management is split between the
client environment and the database management server environment. The database management server provides stored procedures and triggers.
Client application
Database
Internet
Database server
Client application
Client environment
Two-tier software architectures are used extensively in non-time critical information processing, where management and operations of the system are not
complex. This design is used frequently in decision support systems where the
transaction load is light. Two-tier software architectures require minimal operator
intervention. The two-tier design is simple to adopt. The two-tier architecture is a
good solution for distributed computing when work groups are defined as a dozen
to 100 people interacting on a LAN simultaneously. The two-tier architecture does
have a number of limitations. The most important limitation of the two-tier architecture is that it is not scalable because each client requires its own database session.
When the number of users exceeds 100, performance begins to deteriorate. A second
limitation of the two-tier architecture is the implementation of processing management services using vendor proprietary database procedures restricts flexibility and
choice of database management systems (DBMS) for applications.
Three-Tier Architecture
Three-tier architecture (also known as multi-tier architecture) emerged to overcome the limitations of the two-tier architecture. In the three-tier architecture, a
middle tier was added between the user system interface client environment and
the database management server environment. There are a variety of ways of
implementing this middle-tier such as transaction processing monitors, message
servers, or application servers. The middle tier can perform queuing, application
execution, and database staging. The three-tier architecture is shown in Figure 12.8.
M12_SE_01_M12.indd 459
6/28/2013 11:21:16 AM
Client application
Database server
Internet
Business logic
Database
Client application
Business tier
Client tier
Data tier
For example, if the middle tier provides queuing, the client can deliver its request
to the middle layer and disengage because the middle tier will access the data and
return the answer to the client. In addition, the middle layer adds scheduling
and prioritization for work in progress. Three-tier architecture has been shown
to improve performance for groups with a large number of users and improves
flexibility when compared to the two-tier approach. Flexibility in partitioning can
be as simple as dragging and dropping application code modules onto different
computers in some three-tier architectures. A limitation with three-tier architectures
is that the development environment is reportedly more difficult to use than the
visually-oriented development of two-tier applications.
M12_SE_01_M12.indd 460
6/28/2013 11:21:16 AM
461
M12_SE_01_M12.indd 461
6/28/2013 11:21:16 AM
M12_SE_01_M12.indd 462
6/28/2013 11:21:16 AM
463
Quality
assurance tools
Project management
tools
Configuration
management tools
Documentation
tools
Central
repository
System
software tools
Reengineering
tools
Database
tools
Coding tools
Testing tools
Prototyping
tools
Project planning
tools
M12_SE_01_M12.indd 463
6/28/2013 11:21:17 AM
Analysis and design tools These tools help to produce analysis and design
models of the system to be built. These models describe the problem and the solutions
of the system in the context.
Programming tools Compilers, editors, debuggers, programming environments,
fourth generation languages, graphical programming environments, applications
generators, and database query generators are the programming tools used for
programming purposes.
Integration and testing tools These tools are basically used for data preparation,
static and dynamic measurements, simulation, and test planning.
Project planning tools These tools are useful for cost and effort estimation and
project scheduling activities.
Prototyping tools These tools help to design screen layouts, data design, and
report generation.
Reengineering tools Reengineering tools are used during system migration
from an old platform to a new platform. There are various reengineering tools such
as reverse engineering to specification tools, code restructuring and analysis tools,
and online system reengineering tools.
System software tools There are various tools that assist to work in desktop and
network systems. For example, network system software, object management
services, distributed component support, and communications software.
Documentation tools These tools are useful to produce documentation of the
work products that pave the software development process.
Software configuration management tools The configuration management
tools assist configuration management activities such as configuration identification,
version control, change control, auditing, status accounting, etc.
Quality assurance tools The quality assurance tools are the auditing tools used
to determine compliance with language standards or to ensure the quality of software
being built.
M12_SE_01_M12.indd 464
6/28/2013 11:21:17 AM
465
SUMMARY
In this chapter, we have focused on the emerging software engineering
approaches. The main aspects are software reuse, aspect-oriented software engineering, service-oriented software engineering, usability engineering, model-driven
software engineering, client-server software engineering, and computer-aided
software engineering (CASE).
The development of faster, better, and cheaper software products can be
achieved with software reuse. Software reuse is an efficient way of implementing or
updating software systems with the existing software components. Software reuse
is the process of producing software systems from the existing software systems
rather than building software from scratch. Reuse-based software engineering
allows producing reusable components only once and saves the development effort
multiple times.
Aspect-oriented approach is a new paradigm that deals with the separation of
concerns in software development. It provides unique and advance techniques
of structuring and modularization for programs. Aspect-oriented development
techniques results in better implementation and have positive impact on many
quality attributes such as reusability and complexity.
Service-oriented software engineering deals with theories, principles, methods,
and tools for building enterprise-scale solutions as the collaboration of looselycoupled application services that provide particular business functionality and are
distributed within and across organizational boundaries. In this approach, services
are the basic elements for developing applications and software solutions. The
software in this paradigm is presented as a web service known by the term SaaS
(Software as a Service). A web service is a software component available on the
Internet with web interfaces, accessed remotely using Internet protocols and
infrastructure. It is based on service-oriented computing, which is supported by
service-oriented architecture (SOA), which provides the architectural style, standard
protocols, and interfaces required for application development. Service-oriented
software engineering focuses on the development of software systems by composition
of reusable services provided by other service providers.
Software usability is a quality attribute that assesses how easy user interfaces
are to use. Usability relates to how the system interacts with the user of the system.
M12_SE_01_M12.indd 465
6/28/2013 11:21:17 AM
Usability has five quality components: ease of learning, efficiency of use, memorability,
error frequency and severity, and satisfaction. Usability engineering is defined as a
discipline that provides structured methods for achieving usability in user interface
design during product development.37 Usability engineering deals with design of
websites, computer portals, computer keyboard design, car dashboard design, TV
remote key layouts, washing machine front panel layout, etc.
Model-driven software engineering advocates the use of models as the key
artifacts in all phases of the development process, from system specification and
analysis to design, and implementation and testing. Here, software developers
concentrate on the problem space (models) and not on the (platform-specific)
solution space. MDSE consists of systematically using models as primary engineering artifacts throughout the software engineering life cycle. Model-driven
engineering is supported by the model-driven architecture (MDA). In MDA,
applications are modeled at a platform-independent level and are transformed by
means of model transformations to platform-specific implementations.
The concept of client-server software engineering is important in a networkbased software development. Client-server describes the relationship between
two computer programs. The client makes a service request from another program
and the server fulfils the request. The client-server model is designed for large
networks, where users are localized and connected from a variety of outside places.
Client-server architectures can be defined by how these components are split up
among software entities and distributed on a network.
The CASE tools are the supporting tools for software development, management, and maintenance activities. The use of the CASE tools eases and reduces the
development, management, and maintenance effort. Automated tools speed up the
development activities. Some of the widely used tools are project planning tools,
project management tools, analysis and design tools, documentation tools, system
software tools, quality assurance tools, database tools, software configuration management tools, prototyping tools, coding tools, testing tools, reengineering tools, etc.
EXERCISES
1. Choose the correct answer:
(i) What is advantage of software reuse?
(A) Increase in productivity
(B) Increase in reliability
(C) Reduction in development cost and time
(D) All of the above
(ii) Which is a reusable artifact?
(A) Documentation
(B) Data
(C) Test cases
(D) All of the above
M12_SE_01_M12.indd 466
6/28/2013 11:21:17 AM
467
(iii) _________ is the reuse of reusable components without any modification such as standardization, wrapping techniques, etc.
(A) White-box reuse
(B) Black-box reuse
(C) Adoptive reuse
(D) None of the above
(iv) A _______ is a kind of software library where reusable components are managed systematically for easy access for future development.
(A) Reuse support system
(B) Reuse management system
(C) Reuse repository system
(D) None of the above
(x) ________ is the extent to which a product can be used by specified users to achieve
specified goals with effectiveness, efficiency, and satisfaction in a specified context of use.
(A) Reusability
(B) Usability
(C) Understandability
(D) Operability
(xii) Which one of the following is the model of the MDSE approach?
(A) Platform-independent models
(B) Platform-specific models
(C) Computation-independent models
(D) All of the above
M12_SE_01_M12.indd 467
6/28/2013 11:21:17 AM
(xv) Which is not present in the two-tier client-server architecture?
(A) Data tier
(B) Business tier
(C) Application tier
(D) None of the above
(xvi) Which is a part of the three-tier architecture?
(A) Data tier
(B) Business tier
(C) Application tier
(D) All of the above
(xvii) CASE stands for
(A) Computer-aided software engineering
(B) Component-aided software engineering
(C) Component-aided system engineering
(D) Computer-aided system engineering
(xviii) ______ is a tool support for software development, management, and maintenance
activities.
(A) UML
(B) CORBA
(C) CASE
(D) EJB
(xix) _______tool is used to design project schedule, activity plan, etc.
(A) Project management
(B) Analysis and design
(C) Testing
(D) Configuration
(xx) Which is a component-based technology?
(A) CORBA
(B) COM/DCOM
(C) JavaBeans
(D) All of the above
2. What is software reuse? What can be reused? What are the benefits and limitations of reuse-based
development?
3. What are different types of reuse? Explain with examples.
4. Describe an approach to software development with reuse? Explain its different aspects.
5. What is the purpose of reuse measurement? Explain the metrics for reuse size and cost estimation.
6. Explain the success and failure factors of software reuse.
7. What is the purpose of aspect-oriented software engineering? Explain its various components.
8. What are the major phases of aspect-oriented software engineering? Explain each of them.
9. What is service-oriented software engineering? Explain the service-oriented architecture for
service-oriented software engineering.
10. Describe the principles of services in service-oriented software engineering.
11. What are the different phases in service-oriented software engineering? Explain each with its
purpose.
12. Define usability and usability engineering. How does usability engineering differ from HCI?
13. Discuss the various phases of the usability engineering process. What methods are used in the
usability engineering process?
14. What is model-driven software engineering? Enumerate the importance of model-driven
software engineering.
15. What is MDA? Describe the pattern of MDA.
M12_SE_01_M12.indd 468
6/28/2013 11:21:17 AM
469
16. Discuss the process of model-driven software engineering. What tools and technologies are
used in the model-based software development?
17. What is client-server software architecture? Differentiate between two-tier and three-tier clientserver architectures.
18. What are the approaches to and technologies of client-server software engineering? Explain.
19. Discuss the applications, advantages, and limitations of client-server software architectures.
20. What is CASE? What are its advantages?
21. What are various CASE tools? Describe various CASE tools.
Answers
1. Choose the correct answer:
(i) D
(ii) D
(iii) B
(iv) C
(v) A
(vi) C
(vii) C
(viii) A
(ix) B
(x) B
(xi) D
(xii) D
(xiii) B
(xiv) A
(xv) B
(xvi) D
(xvii) A
(xviii) C
(xix) A
(xx) D
REFERENCES
1. Berry Boehm, Some Future Trends and Implications for Systems and Software Engineering
Processes, Systems Engineering, vol. 9, no. 1, Wiley Periodicals, Inc., 2006.
2. E. Lee, Software Reuse and Its Impact on Productivity, Quality and Time to Market, IEEE
Software, Texas, September 1999.
3. Ivar Jacobson, M. Griss, and Patrick Jonsson, Software Reuse: Architecture, Process and Organization for Business Success, Pearson Education, New Delhi, 2004.
4. Ibid.
5. Ibid.
6. E. Lee, Software Reuse and Its Impact on Productivity, Quality and Time to Market, IEEE
Software, Texas, September 1999.
7. Ivar Jacobson, M. Griss, and Patrick Jonsson, Software Reuse: Architecture, Process and Organization for Business Success, Pearson Education, New Delhi, 2004.
8. U. Suman and M. Ingle, Designing Reuse Repository System for an Effective Software Development with Reuse, PCTE Journal of Computer Science, vol. 2, issue 2, pp. 3847, Ludhiana, July
December 2006.
9. U. Suman and M. Ingle, Systematic Software Reuse: Reuse Factors, Productivity and Quality,
Proc. of International Conference on Information and Communication Technology, IICT07,
pp. 967973, Dehradun, India, 2628 July 2007.
M12_SE_01_M12.indd 469
6/28/2013 11:21:17 AM
10. Ivar Jacobson, M. Griss, and Patrick Jonsson, Software Reuse: Architecture, Process and Organization
for Business Success, Pearson Education, New Delhi, 2004.
11. U. Suman and M. Ingle, Systematic Software Reuse: Reuse Factors, Productivity and Quality,
Proc. of International Conference on Information and Communication Technology, IICT07,
pp. 967973, Dehradun, India, 2628 July 2007.
12. J. Brichau and T. D. Hondt, Aspect-Oriented Software Development (AOSD) - An Introduction, Wiley Encyclopedia of Computer Science and Engineering, 2008.
13. Kirti Muley, U. Suman, and M. Ingle, Representing Join Point in UML Using Pointcuts, Proc.
of International Conference on Computer and Communication Technology, ICCCT10, IEEE
Xplore, pp. 557561, Allahabad, India, 1719 September 2010.
14. J. Brichau and T. D. Hondt, Aspect-Oriented Software Development (AOSD) - An Introduction,
Wiley Encyclopedia of Computer Science and Engineering, 2008.
15. Zoran Stojanovic and Ajantha Dahanayake, Service-Oriented Software System Engineering:
Challenges and Practices, Idea Group Publications, 2005.
16. T. Erl., Service-Oriented Architecture: Concepts, Technology & Design, Prentice Hall International,
Boston, 2005.
17. Ibid.
18. Ibid.
19. Zoran Stojanovic and Ajantha Dahanayake, Service-Oriented Software System Engineering:
Challenges and Practices, Idea Group Publications, 2005.
20. T. Erl., Service-Oriented Architecture: Concepts, Technology & Design, Prentice Hall International,
Boston, 2005.
21. Ergonomic Requirements for Office Work with Visual Display Terminals, ISO 9241-11, ISO,
Geneva, 1998.
22. Xavier Ferr et al., Usability Basics for Software developers, IEEE Software, pp. 2229, January/
February 2001.
23. Ibid.
24. The HCI Space, The Usability Engineering Life Cycle, http://www.tauweb.de/hci/space/x11.html,
1999.
25. Ergonomic Requirements for Office Work with Visual Display Terminals, ISO 9241-11, ISO,
Geneva, 1998.
26. The HCI Space, The Usability Engineering Life Cycle, http://www.tauweb.de/hci/space/x11.html,
1999.
27. Jakob Nielsen, Usability Engineering, Academic Press, Boston, 1993.
28. Sami Beydeda, Matthias Book, Volker Gruhn, Model-Driven Software Development, Springer
Verlag, Berlin Heidelberg, 2005.
29. Ibid.
30. Stephen J. Mellor et al., MDA Distilled: Principles of Model-Driven Architecture, Addison Wesley,
2004.
M12_SE_01_M12.indd 470
6/28/2013 11:21:17 AM
471
31. Sami Beydeda, Matthias Book, Volker Gruhn, Model-Driven Software Development, Springer
Verlag, Berlin Heidelberg, 2005.
32. Stephen J. Mellor et al., MDA Distilled: Principles of Model-Driven Architecture, Addison Wesley,
2004.
33. Rajib Mall, Fundamentals of Software Engineering, Third Edition, PHI, 2011.
34. R. S. Pressman, Software Engineering: A Practitioners Approach, International Edition, Tata
McGraw Hill, 2005.
35. Ibid.
36. Rajib Mall, Fundamentals of Software Engineering, Third Edition, PHI, 2011.
37. The HCI Space, The Usability Engineering Life Cycle, http://www.tauweb.de/hci/space/x11.html,
1999.
M12_SE_01_M12.indd 471
6/28/2013 11:21:17 AM
M12_SE_01_M12.indd 472
6/28/2013 11:21:17 AM