Unit - 8
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