1.B] Briefly explain Concurrent models and Specialized Process Models
Answer:
Concurrent Models
The Concurrent Development Model, also known as concurrent engineering, is a software process model that allows multiple activities, tasks, or phases of software development to occur simultaneously, rather than sequentially. This model is particularly useful for complex projects where different aspects of software development need to interact closely with one another.
Key Characteristics:
- Parallelism: Activities such as communication, modeling, and construction are not confined to a strict sequence. They can occur concurrently but in different states.
- State Representation: Each activity can exist in various states, such as “under development,” “awaiting changes,” or “done.” The model allows transitions between these states based on events (like feedback from testing or customer input).
- Event-Driven: The model is driven by events that trigger transitions from one state to another. For example, if a flaw is found in the design, the modeling activity may move from “done” back to “awaiting changes.”
- Flexibility: The concurrent model is flexible and allows iterative development. This makes it suitable for projects that require continuous integration of feedback and iterative refinement.
- Real-Time Representation: It provides an accurate, real-time view of the project’s current state by mapping out the progress of different activities concurrently.
Example:
In early stages, the communication activity might be complete and waiting for changes, while the modeling activity is under development. If a customer requests a change, the modeling activity might revert to “awaiting changes.”
Specialized Process Models
Specialized Process Models are variations of traditional process models designed to address specific needs or circumstances in software development. These models incorporate particular methodologies or approaches to cater to unique requirements, such as safety-critical systems, reusable components, or systems requiring formal verification.
Key Types:
- Component-Based Development (CBD):
- Focuses on building software systems by integrating pre-existing components.
- Steps:
- Component Identification: Find and evaluate existing components.
- Component Integration: Consider integration issues.
- Architecture Design: Create an architecture to accommodate the components.
- Component Integration: Integrate components into the architecture.
- Testing: Conduct comprehensive testing.
- Benefits: Leads to software reuse, reducing development time and costs.
- Formal Methods Model:
- Uses rigorous mathematical notation to specify, develop, and verify software.
- Benefits: Helps in discovering and correcting errors early, ensuring defect-free software.
- Challenges: Time-consuming, requires specialized knowledge, and is difficult to communicate with non-technical stakeholders.
- Application: Often used in safety-critical systems like avionics and medical devices.
- Aspect-Oriented Software Development (AOSD):
- Addresses crosscutting concerns that span multiple parts of a software system (e.g., security, logging).
- Aspects: Modularize concerns that affect multiple components.
- Process: Combines evolutionary and concurrent process models for developing aspects and components.
- Application: Suitable for complex systems where crosscutting concerns need to be managed separately from the main components.
Summary
- Concurrent Models emphasize parallel execution of software development activities, providing flexibility and real-time project management.
- Specialized Process Models are tailored for specific scenarios, such as component reuse, formal verification, or managing crosscutting concerns in complex systems.