Skip to main content

Unit - 8

TITLE

Advanced Software Engineering

1. Software Reuse

Software Reuse is an approach where existing software components are reused to develop new systems, improving efficiency and quality.


1.1 Definition

  • Software Reuse is a development approach that:

    • Maximizes the use of existing software components

Goal:

  • Reduce development effort
  • Improve reliability and speed

1.2 Benefits of Software Reuse

  • Increased dependability (already tested components)
  • Reduced development cost
  • Faster system delivery
  • Reduced process risk
  • Better use of specialist knowledge
  • Improved quality due to proven components
  • Standardization of interfaces

1.3 Challenges / Threats

  • Lack of tool support
  • “Not Invented Here” syndrome
  • Difficulty in finding suitable components
  • Maintenance complexity
  • Adapting reusable components to new systems

1.4 Key Factors in Planning Reuse

  • Development schedule
  • Expected software lifetime
  • Team skills and experience
  • Criticality of software
  • Non-functional requirements
  • Application domain
  • Execution platform

1.5 Levels of Reuse

  • Application System Reuse
  • Component Reuse
  • Object and Function Reuse

2. Component-Based Software Engineering (CBSE)

CBSE is an approach that builds software systems by assembling reusable, independent components.


2.1 Components and Component Models

  • Component:

    • A modular unit that can be:

      • Independently developed
      • Deployed
      • Reused
  • Component Model:

    • Defines standards for:

      • Component design
      • Implementation
      • Integration

2.2 Characteristics of Components

  • Standardized → follows defined interfaces
  • Independent → works without depending heavily on others
  • Composable → can be combined with other components
  • Deployable → can be deployed separately
  • Documented → clearly described for reuse

2.3 Component Models

  • Provide rules for:

    • Interface definition
    • Component interaction
    • Deployment mechanisms

Purpose:

  • Ensure compatibility and reuse across systems

2.4 CBSE Processes


2.4.1 Development for Reuse

  • Develop components with the intention of future reuse

Focus:

  • Generalization
  • Standard interfaces

2.4.2 Development with Reuse

  • Build systems by integrating existing components

Focus:

  • Component selection
  • Integration

2.5 Component Formation / Composition

  • Process of combining multiple components into a system

2.5.1 Sequential Composition

  • Components execute one after another

2.5.2 Hierarchical Composition

  • Components organized in a layered or tree structure

2.5.3 Additive Composition

  • Components are combined to add functionality

2.6 Failure Factors in Composition

  • Parameter incompatibility
  • Operation incompatibility
  • Incomplete operations

Result:

  • Improper integration leading to system failure

3. Distributed Software Engineering

Distributed Software Engineering deals with systems where multiple independent computers work together as a single system.


3.1 Distributed Systems Overview

  • A distributed system is:

    • A collection of independent computers
    • That appear as a single coherent system to users

Example:

  • Cloud computing systems

3.2 Distributed System Issues

Designing distributed systems involves handling key challenges:


3.2.1 Transparency

  • System should hide complexity from users

Types:

  • Access transparency
  • Location transparency

3.2.2 Openness

  • System should support:

    • Standard interfaces
    • Interoperability

3.2.3 Scalability

  • Ability to handle:

    • Increased users
    • Increased data
    • Expanded system size

3.2.4 Security

  • Protect system against:

    • Unauthorized access
    • Attacks

Types of attacks:

  • Interception
  • Interruption
  • Modification
  • Fabrication

3.2.5 Quality of Service (QoS)

  • Measures system performance

Includes:

  • Reliability
  • Response time
  • Availability

3.2.6 Failure Management

  • Handle failures gracefully

Includes:

  • Detection
  • Recovery mechanisms
  • Fault tolerance

3.3 Client-Server Computing

  • A common distributed model

Concept:

  • Client requests services
  • Server processes and responds

Layers:

  • Presentation layer
  • Application processing layer
  • Data management layer
  • Database layer

3.4 Architectural Patterns


3.4.1 Master-Slave Architecture

  • Master controls operations
  • Slave systems execute tasks

3.4.2 Two-Tier Architecture

  • Client ↔ Server

3.4.3 Multitier Architecture

  • Multiple layers (e.g., UI, logic, database)

3.4.4 Distributed Component Architecture

  • System built using distributed reusable components

3.4.5 Peer-to-Peer Architecture

  • All nodes are equal
  • No central server

3.5 Software as a Service (SaaS)

  • Software delivered over the internet

Features:

  • Hosted on servers
  • Managed by provider
  • Pay-as-you-use model

Considerations:

  • Configurability
  • Multi-tenancy
  • Scalability

4. Service-Oriented Software Engineering (SOSE)

SOSE focuses on building software systems by composing reusable services that communicate over a network.


4.1 Concept of Service-Oriented Systems

  • Systems are built using independent services

Key Ideas:

  • Reusability of services
  • Loose coupling between components
  • Separation of concerns

👉 Extends concepts of component-based software engineering


4.2 Service-Oriented Design Process


4.2.1 Service Candidate Identification

  • Identify functionalities that can be converted into services

Goal:

  • Define reusable service units

4.2.2 Service Interface Design

  • Define how services interact

Includes:

  • Input/output specifications
  • Communication protocols

4.2.3 Service Implementation and Deployment

  • Develop and deploy services

Includes:

  • Coding
  • Hosting on servers

4.2.4 Legacy System Services

  • Integrate existing systems as services

Purpose:

  • Reuse old systems without redesigning them

4.2.5 Workflow Design and Composition

  • Combine multiple services into a workflow

Goal:

  • Achieve complete system functionality

4.2.6 Service Testing

  • Test services individually and as part of workflows

Focus:

  • Functionality
  • Interaction between services
  • Performance

5. Real-Time Software Engineering

Real-Time Software Engineering deals with systems that must respond to inputs within strict time constraints.


5.1 Definition

  • Real-time systems are those where:

    • Correctness depends on both output and timing of output

👉 Used in systems that require immediate response


5.2 Types of Real-Time Systems


5.2.1 Hard Real-Time Systems

  • Strict timing constraints
  • Missing a deadline = system failure

Examples:

  • Aircraft control systems
  • Medical devices

5.2.2 Soft Real-Time Systems

  • Timing constraints are flexible

Effect:

  • Delays are acceptable but reduce performance

Examples:

  • Multimedia systems
  • Online streaming

5.3 Characteristics

  • Time-critical operations
  • Deterministic behavior
  • High reliability
  • Continuous interaction with environment
  • Event-driven execution

5.4 Stimulus / Response Systems

  • Real-time systems operate based on stimulus (input) → response (output)

5.4.1 Periodic Stimuli

  • Occur at regular intervals

Example:

  • Sensor readings every second

5.4.2 Aperiodic Stimuli

  • Occur at irregular intervals

Example:

  • User input or unexpected events

5.5 Design Considerations


5.5.1 Real-Time Programming

  • Writing programs that:

    • Meet strict timing constraints
    • Handle concurrent tasks

5.5.2 Process Management

  • Managing multiple processes efficiently

Includes:

  • Synchronization
  • Resource allocation

5.5.3 Scheduling

  • Decide execution order of tasks

Goal:

  • Ensure deadlines are met

5.5.4 Interrupt Handling

  • Handle external/internal interrupts quickly

Purpose:

  • Ensure immediate response to critical events

6. Systems Engineering

Systems Engineering is an interdisciplinary approach used to design, develop, and manage complex systems throughout their lifecycle.


6.1 Definition

  • Systems Engineering focuses on:

    • Designing
    • Integrating
    • Managing systems over their lifecycle

👉 It combines engineering, management, and process methodologies


6.2 Lifecycle Focus


6.2.1 Design

  • Define system architecture and specifications

Goal:

  • Ensure system meets requirements

6.2.2 Integration

  • Combine subsystems into a complete system

Focus:

  • Ensure components work together correctly

6.2.3 Management

  • Manage system development and operation

Includes:

  • Planning
  • Risk management
  • Resource allocation

6.3 System Engineering Tools and Models

  • Tools include:

    • Strategies
    • Procedures
    • Techniques
  • System Models:

    • Represent real-world systems using:

      • Conceptual models
      • Mathematical models
      • Physical models

Purpose:

  • Aid decision-making and system analysis

6.4 System Engineering Process


6.4.1 Task Definition

  • Define system requirements and objectives

6.4.2 Conceptual Stage

  • Develop high-level system concepts

6.4.3 Design Stage

  • Create detailed system design

6.4.4 Implementation Stage

  • Build and deploy the system

7. Systems of Systems (SoS)

Systems of Systems (SoS) refers to a collection of independent systems that work together to achieve greater functionality.


7.1 Definition

  • SoS is a system formed by integrating multiple independent systems

Key Idea:

  • Each system can operate independently but also contributes to a larger goal

7.2 Characteristics

  • Each system is:

    • Independent
    • Capable of standalone operation
  • Combined systems:

    • Provide enhanced capabilities
    • Are loosely coupled
  • Dynamic and evolving structure


7.3 Communication Structure

  • Systems communicate through:

    • Defined interfaces
    • Data exchange mechanisms

Goal:

  • Enable coordination and interoperability among systems

7.4 Types of Systems of Systems


7.4.1 Virtual

  • No central authority
  • No clearly defined common purpose

7.4.2 Collaborative

  • Systems voluntarily work together
  • Share common goals

7.4.3 Acknowledged

  • Recognized objectives
  • Some level of central coordination

7.4.4 Directed

  • Centrally managed
  • Built and controlled for a specific purpose