Professional Documents
Culture Documents
Architecture modeling involves identifying the characteristics of the system and expressing it as models
so that the system can be understood. Architecture models allow visualization of information about the
system represented by the model.
Different Architecture model:
1. Logical View (Conceptual View):
o Description: The logical view describes the object model of the design.
o Purpose: It focuses on understanding the structure of the system in terms of objects,
classes, and their relationships.
o Components:
Class Diagrams: Represent classes, their attributes, and associations.
Object Diagrams: Show instances of classes and their relationships.
2. Process View:
o Description: The process view captures the activities and interactions within the
system.
o Purpose: It describes how the system behaves over time, emphasizing concurrency and
synchronization.
o Components:
Sequence Diagrams: Illustrate the sequence of interactions between objects.
State Transition Diagrams: Depict how an object’s state changes based on
events.
Activity Diagrams: Represent workflows and processes.
3. Physical View:
o Description: The physical view describes the mapping of software onto hardware and
reflects its distributed aspect.
o Purpose: It ensures that the software system runs efficiently on the chosen hardware.
o Components:
Deployment Diagrams: Show the physical deployment of software components
across nodes (servers, devices).
In summary, these architecture models provide different perspectives on the system, addressing its
structure, behavior, and deployment. They help design robust and scalable object-oriented software
systems.
1. Waterfall Model:
o Description: The Waterfall model follows a linear and sequential approach.
o Process Flow:
1. Requirements: Gather and document requirements.
2. Design: Create system design based on requirements.
3. Implementation: Develop the software.
4. Testing: Execute testing activities (unit, integration, system, acceptance).
5. Deployment: Deploy the software.
6. Maintenance: Address defects and enhancements.
o Advantages: Simple, easy to understand, and suitable for stable requirements.
o Disadvantages: Limited flexibility, late defect detection, and long development cycles.
2. V-Model (Validation and Verification Model):
o Description: The V-Model emphasizes the relationship between development phases
and corresponding testing phases.
o Process Flow: Each development phase is paired with a testing phase (e.g., design with
system testing).
o Advantages: Clear mapping between requirements and tests, early test planning.
o Disadvantages: Rigid, difficult to accommodate changes.
3. Agile Model:
o Description: Agile emphasizes iterative development, collaboration, and flexibility.
o Process Flow: Iterative cycles (sprints) involving requirements, development, and
testing.
o Advantages: Adaptability, frequent feedback, customer involvement.
o Disadvantages: Requires active participation, documentation may be minimal.
4. Spiral Model:
o Description: The Spiral model combines iterative development with risk assessment.
o Process Flow: Iterative cycles with risk analysis, prototyping, development, and testing.
o Advantages: Risk-driven, accommodates changes, early risk identification.
o Disadvantages: Complex, resource-intensive.
5. Iterative Model:
o Description: The Iterative model focuses on incremental development and refinement.
o Process Flow: Repeated cycles of requirements, design, development, and testing.
o Advantages: Progressive refinement, early prototypes, flexibility.
o Disadvantages: Requires frequent iterations, may lack a clear endpoint.
6. Model-Based Testing:
o Description: Model-Based Testing (MBT) uses models to generate test cases.
o Purpose: Early defect detection, lower maintenance costs, and reusable test assets.
o Techniques: Statecharts, Markov Models, Decision Tables.
o Advantages: Early defect detection, lower maintenance costs, and reusable test assets.
In summary, choosing the right testing model depends on project requirements, team dynamics, and
the nature of the software being developed. Each model has its strengths and limitations, so selecting
the most appropriate one is essential for successful software testing
A real-time system means that the system is subjected to real-time, i.e., the response should be
guaranteed within a specified timing constraint, or the system should meet the specified deadline. For
example, flight control systems, real-time monitors, etc.
Types of real-time systems based on timing constraints:
1. Hard real-time system: This type of system can never miss its deadline. Missing the deadline
may have disastrous consequences. The usefulness of results produced by a hard real-time
system decreases abruptly and may become negative if tardiness increases. Tardiness means
how late a real-time system completes its task with respect to its deadline. Example: Flight
controller system.
2. Soft real-time system: This type of system can miss its deadline occasionally with some
acceptably low probability. Missing the deadline have no disastrous consequences. The
usefulness of results produced by a soft real-time system decreases gradually with an increase
in tardiness. Example: Telephone switches.
3. Firm Real-Time Systems: These are systems that lie between hard and soft real-time systems.
In firm real-time systems, missing a deadline is tolerable, but the usefulness of the output
decreases with time. Examples of firm real-time systems include online trading systems, online
auction systems, and reservation systems.
Advantages:
Real-time systems provide immediate and accurate responses to external events, making them
suitable for critical applications such as air traffic control, medical equipment, and industrial
automation.
They can automate complex tasks that would otherwise be impossible to perform manually, thus
improving productivity and efficiency.
Real-time systems can reduce human error by automating tasks that require precision,
accuracy, and consistency.
They can help to reduce costs by minimizing the need for human intervention and reducing the
risk of errors.
Real-time systems can be customized to meet specific requirements, making them ideal for a
wide range of applications.
Disadvantages:
Real-time systems can be complex and difficult to design, implement, and test, requiring
specialized skills and expertise.
They can be expensive to develop, as they require specialized hardware and software
components.
Real-time systems are typically less flexible than other types of computer systems, as they must
adhere to strict timing requirements and cannot be easily modified or adapted to changing
circumstances.
They can be vulnerable to failures and malfunctions, which can have serious consequences in
critical applications.
Real-time systems require careful planning and management, as they must be continually
monitored and maintained to ensure they operate correctly.
Challenges of Real Time System
Timing Constraints: Real-time systems must meet specific deadlines for event processing.
Hardware Considerations: Hardware–software co-design is crucial, especially in embedded
systems.
Task Scheduling: Assigning tasks efficiently to system nodes.
Communication and Synchronization: Distributed real-time systems require effective
communication over networks1.
o
Characteristics of Real-Time Systems:
Time Constraints:
o Real-time systems operate within specific time intervals.
o Tasks must be completed within their allotted time intervals.
Correctness:
o Correct results must be obtained within the given time interval.
o If the result exceeds the time constraint, it is not considered correct.
Embedded:
o Real-time systems are often embedded in specific hardware and software combinations
designed for a particular purpose.
Safety:
o Real-time systems provide critical safety.
o They can operate for extended periods without failures and recover quickly from any
system faults.
Concurrency:
o Real-time systems respond to multiple processes simultaneously.
o They handle various tasks concurrently in short intervals.
Distributed:
o Components of real-time systems are often distributed across different geographical
locations.
o Operations occur in a distributed manner.
Stability:
o Real-time systems maintain stability even under heavy load.
o Results are not delayed significantly, ensuring stability.
Fault Tolerance:
o Real-time systems are designed to tolerate and recover from errors without affecting
performance or output
Components
In software engineering, a component refers to a functionally independent part of a system. These
components perform specific functions and may require input or produce output. Let’s explore this
concept further:
Component-Based Software Engineering (CBSE):
Definition: CBSE focuses on designing and developing computer-based systems using
reusable software components.
Process:
o Component Identification: Identifying candidate components based on their interfaces.
o Component Qualification: Ensuring that components meet architectural requirements to
become reusable.
o Component Adaptation: Making components conform to architectural rules and
conditions.
o Component Composition: Integrating components into a working system.
o Component Update: Ensuring timely updates of reusable components as system
requirements change.
CBSE promotes code reusability, efficient development, and modular design1.
Difference Between Object and Component
rsonal and company data are protected
Certainly! Let’s explore the differences between objects and components in the context of software
engineering:
1. Object:
o An object is a real-world entity that combines data (state) and behavior (methods).
o Characteristics:
States: Objects have specific attributes or properties (e.g., color, size, address).
Behaviors: Objects can perform actions or respond to methods (e.g., opening a
window, calculating a total).
o Creation:
Objects are instances created from classes (which provide the blueprint).
o Granularity:
Objects are at a granular level, representing specific instances.
o Example:
A house object has attributes like address and color, along with behaviors like
opening windows and closing doors.
2. Component:
o A component is a self-contained entity that provides specific functionality.
o Characteristics:
Components can be considered as a series of one or more classes.
They export functionality to their surroundings via well-defined interfaces.
Components can be run locally or in a distributed manner.
o Comparison:
Granularity: Components are larger and more black-box in nature.
Storage: Components use persistent storage.
Intercommunication: Components have a wide range of intercommunication
mechanisms.
Third-Party Composition: Components support third-party composition.
Programming Language: Components can be implemented in any
programming language.
Persistence: Components have persistence.
Static/Dynamic: Components are usually static.
Plug and Play: Components assist third-party plug and play.
Language Dependency: Objects are language-dependent (usually in OOP
languages).
Local State: Objects have a local state.
White Box: Objects are characterized by a white-box approach12.
In summary, objects represent specific instances with states and behaviors, while components provide
self-contained functionality and can be composed into larger systems!
Component Characteristics:
1. Composable
2. Deployable
3. Documented
4. Independent
5. Standardized
Component Model:
1. Interfaces
2. Usages
3. Deployment
The services provided by a component model implementation fail into row categories.
1. Platform services
2. Support service.
Component management is concerned with managing a company reusable component ensuring that
they properly catalogues, stored and made available for reuse.