0% found this document useful (0 votes)
8 views7 pages

Software Concepts 0002

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views7 pages

Software Concepts 0002

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

CUI ATD

COMSATS UNIVERSITY ISLAMABA


(ABBOTTABAD CAMPUS)

(BSE)
(BSE-3RD)
Assignment
TOPICS IN SOFTWARE ENGINEERING

SYED HUSNAIN KAZMI (SP23-BSE-077)


RAHAT JARRAL(SP23-BSE-094)
MUHAMMAD ADIL(SP23-BSE-104)
CLASS: BSE 3-C
TOPICS IN S.E ASSIGNMENT (2)
ATM Transaction (state diagram):

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:

1. Requirements Gathering: Understanding and documenting what the system is


supposed to do.
2. Design: Creating architectural and detailed designs based on the requirements.
3. Implementation: Writing the code to realize the design.
4. Testing: Verifying that the implementation meets the requirements.
5. Deployment: Releasing the system to the users.
6. Maintenance: Ongoing updates and fixes.

This process is linear and follows a top-down approach.

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:

1. Analysis: Examining the existing system to understand how it works.


2. Extraction: Gathering information about the system's architecture and behavior.
3. Abstraction: Creating higher-level representations (e.g., UML diagrams) from
the extracted information.
4. Documentation: Recording the findings for further use.

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:

1. Forward Engineering: Initially developing the system from specifications.


2. Reverse Engineering: Analyzing the system to understand changes and
updates.
3. Synchronization: Updating the models and documentation to reflect changes
made during the implementation.
4. Iteration: Continuously going back and forth between forward and reverse
engineering to keep the design and implementation in sync.

This process supports an iterative development cycle where design and code can
evolve together.

Differences Among Them:


1. Purpose:
o Forward Engineering: Focuses on creating a system from scratch based
on requirements.
o Reverse Engineering: Focuses on understanding and documenting an
existing system.
o Round-Trip Engineering: Combines both to maintain consistency
between design and implementation over time.

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:

1. Identifying the GRASP Pattern:


The scenario represents the Information Expert pattern of GRASP (General
Responsibility Assignment Software Patterns).

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.

You might also like