Software Concepts 0002
Software Concepts 0002
(BSE)
(BSE-3RD)
Assignment
TOPICS IN SOFTWARE ENGINEERING
QUESTION 2:
Explain forward engineering, reverse engineering and round-trip engineering.
Differentiate among them.
Answer:
Forward engineering, reverse engineering, and round-trip engineering are all concepts
used in software development and system design. Here’s an explanation of each, along
with their differences:
Forward Engineering:
Forward engineering is the traditional process of moving from high-level abstractions
and logical designs to the physical implementation of a system.
It involves:
Reverse Engineering:
Reverse engineering is the process of analyzing a system to identify the system’s
components and their relationships, and to create representations of the system in
another form or at a higher level of abstraction.
It involves:
This process is often used to understand legacy systems, recover lost documentation,
or to study the behavior of software to find security vulnerabilities.
Round-Trip Engineering:
Round-trip engineering is the combination of forward and reverse engineering.
It involves:
This process supports an iterative development cycle where design and code can
evolve together.
2. Approach:
o Forward Engineering: Top-down (from abstract to concrete).
o Reverse Engineering: Bottom-up (from concrete to abstract).
o Round-Trip Engineering: Iterative and bidirectional (both top-down and
bottom-up).
3. Output:
o Forward Engineering: A working system based on initial designs.
o Reverse Engineering: Documentation, models, and understanding of an
existing system.
o Round-Trip Engineering: Consistent and up-to-date models and
documentation along with the implementation.
4. Usage Scenarios:
o Forward Engineering: New system development.
o Reverse Engineering: Understanding and documenting legacy systems,
finding security vulnerabilities.
o Round-Trip Engineering: Continuous integration and development
processes, maintaining synchronicity between design and code.
In summary, forward engineering is about building systems from the ground up, reverse
engineering is about understanding and documenting existing systems, and round-trip
engineering is about maintaining alignment between design and implementation
throughout the system's lifecycle.
Question 3:
You’re using GRASP principles to design a system using the object-oriented
approach----?
Answer:
2. Explanation:
In GRASP, the Information Expert pattern assigns the responsibility to the class that has
the necessary information to fulfill it. In this scenario:
The Rent class is designed to know about both VideoStore and Video classes.
The Rent class likely handles the responsibility of managing rental information,
which requires knowledge of both the available videos (Video class) and the store
where these videos are located (VideoStore class).
3.Diagram:
4. Evaluation of the Design Approach:
Good Design Aspects:
1. Encapsulation: The Rent class encapsulates the details of renting a video, making the
design modular.
2. Single Responsibility Principle (SRP): Each class has a clear responsibility:
o VideoStore manages video inventory.
o Video contains details and actions related to a specific video.
o Rent handles the process and information related to renting a video.
3. Information Expert: Rent is the Information Expert, as it requires knowledge of both
VideoStore and Video to perform its operations effectively.
Potential Improvements:
1. Cohesion: Ensure that the Rent class does not become overly complex by trying to
handle too many responsibilities. It should focus solely on the rental process and related
calculations.
2. Decoupling: Although Rent needs to know about Video and VideoStore, ensure that the
dependency is not too tight. This can be achieved using interfaces or dependency
injection to reduce coupling and increase flexibility.
3. Maintenance: Consider how changes in VideoStore or Video might affect the Rent class.
Ensure that the design supports easy updates without cascading changes across
classes.
Conclusion:
Overall, the design adheres to the Information Expert pattern of GRASP, which is
appropriate for this scenario. However, attention should be paid to maintaining high
cohesion and low coupling to ensure that the system remains maintainable and
adaptable to future changes.