UNIT1-SW
Software Engineering - Overview
Author: Ian Sommerville
Edition: Tenth
Course Code: BCA213-4
Unit: Principles of Software Development - 2
Chapter 16: Software Reuse
Software reuse is gaining recognition for the development of better quality software efficiently and economically through systematic reuse processes.
Software Reuse: Key Concepts
Systems in engineering are generally designed by utilizing existing components.
Traditional software engineering focused more on original developments rather than reuse.
A shift towards reuse-based development has occurred, enhancing speed and cost-effectiveness.
Types of Reuse-based Software Engineering
System Reuse
Involves reusing complete systems, which may comprise multiple application programs.
Application Reuse
Involves incorporating an application into others without modification or developing application families.
Component Reuse
Components, ranging from subsystems to single objects, are reusable.
Object and Function Reuse
Involves reusing small-scale software components that implement specific functions.
Benefits of Software Reuse
Benefit | Explanation |
|---|---|
Accelerated Development | Speeds up system production by reducing both development and validation time. |
Effective Use of Specialists | Application specialists develop reusable software, minimizing repetitive work. |
Increased Dependability | Reused software is typically more reliable as it has been tested in prior systems. |
Lower Development Costs | Fewer code lines need to be written, directly reducing costs. |
Reduced Process Risk | Known costs of existing software reduce estimation errors in project management. |
Standards Compliance | Reusable components can enhance compliance with user interface standards. |
Problems Associated with Reuse
Creating and Maintaining Component Libraries
Expensive to populate and maintain; development processes must adapt to utilize them effectively.
Finding and Adapting Reusable Components
Requires effort to discover and customize components from libraries.
Increased Maintenance Costs
Higher costs can arise if the source code is unavailable, leading to incompatibility issues with system changes.
Lack of Tool Support
Some tools do not facilitate the development process for reuse effectively.
Not-invented-here Syndrome
Preference for developers to rewrite components due to trust issues or perceived improvement.
Reuse Planning Factors
Considerations for reuse include the development schedule, software lifetime, team background, software criticality, application domain, and execution platform.
Base Systems for Software Product Lines
Core Components
Provide basic infrastructure support, typically unchanged in new product instances.
Configurable Components
Can be modified for specialization with minimal changes.
Specialized Components
Domain-specific components that may be entirely replaced when creating a new instance.
ERP Systems Overview
ERP systems support common business processes and exemplify software reuse.
Core elements adapt through the addition of modules and business process knowledge.
ERP System Architecture
Composed of various functional modules, defined business processes, a common database, and applicable business rules.
ERP Configuration Activities
Selecting functionality, establishing data models, defining business rules, and managing external interactions are critical in configuring ERP systems.
Integrated Application Systems
Combine two or more application systems or legacy systems to meet requirements not addressed by singular solutions.
Component-Based Software Engineering (CBSE)
CBSE utilizes the reuse of 'software components,' aiming for efficient development through integration and easy maintenance through replacement.
CBSE Essentials
Principles include independent, standardized components; middleware support for integration; clear interfaces; and proper documentation.
Component Characteristics
A component must be standardized, independent, composable, deployable, and well-documented.
Component Interfaces
Provides Interface
Defines services offered by the component to other components.
Requires Interface
Specifies services needed from other components.
Glue Code Definition
Glue code integrates diverse components, enabling seamless interaction without altering internal logic.
Types of Component Composition
Sequential Composition
Components are arranged in a sequence where output from one becomes input to another.
Hierarchical Composition
Components are organized in a parent-child hierarchy.
Additive Composition
Combines functionalities of various components to enhance overall system capabilities.
Distributed Software Engineering
Involves independent nodes working collaboratively, appearing as a single cohesive unit to users.
Key Features of Distributed Systems
Includes decentralization, concurrency, transparency, scalability, fault tolerance, and communication through standard protocols.
Benefits of Distributed Systems
Key advantages encompass resource sharing, openness, concurrency, scalability, and fault tolerance.
Challenges in Distributed Systems
Design difficulties, security risks, synchronization demands, and fault handling requirements.
Models of Interaction in Distributed Systems
Procedural Interaction
Systems communicate synchronously, with one waiting for a response.
Message-Based Interaction
Systems send messages independently and process requests asynchronously.
Service-Oriented Architecture (SOA)
SOA facilitates distributed services' development using standard protocols, promoting loosely-coupled, reusable services.
Key Features of SOA
Emphasizes message-based communication, interoperability, reusability, and scalability.
Components of SOA
Involves service registry, communication protocols, quality of service aspects, and business processes management.