SD LabReport07

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

PANGASINAN STATE UNIVERSITY BS COMPUTER ENGINEERING

CpE116 Software Design Laboratory Report No. 07

LABORATORY REPORT NO. 07

Designing for Reusability and Maintainability

OVERVIEW

The goal of this laboratory session is to explore the principles and techniques for
designing software systems that prioritize reusability and maintainability. Reusability allows
for the efficient utilization of existing components, reducing development time and effort.
Maintainability ensures that software remains adaptable and easy to modify over its lifespan.
In this lab, we will examine strategies and best practices to create software designs that
promote reusability and maintainability, leading to more efficient and sustainable
development processes.

OBJECTIVES

• Understand the importance of designing for reusability and maintainability in software


development.
• Explore the principles and patterns for achieving reusable and maintainable designs.
• Gain practical experience in applying reusability and maintainability concepts to
software design.
• Analyze the impact of reusable and maintainable designs on development productivity
and software quality.

ABSTRACT

Chapter 11 of "Software Engineering" by Ian Sommerville (10th edition) provides an


in-depth exploration of the techniques and principles involved in designing software systems
that prioritize reusability and maintainability. The chapter emphasizes the importance of these
qualities in software development and discusses various principles and patterns that can be
applied to achieve reusable and maintainable designs. Key topics covered include
modularity, abstraction, information hiding, and separation of concerns. Practical guidance is
provided on designing interfaces, identifying reusable components, and organizing code to
promote reusability and maintainability. The chapter highlights the positive effects of such
designs, including facilitating system evolution, improving code understandability, and

PANGASINAN STATE UNIVERSITY 1


PANGASINAN STATE UNIVERSITY BS COMPUTER ENGINEERING

CpE116 Software Design Laboratory Report No. 07

reducing development time and effort. Throughout the chapter, the impact of reusable and
maintainable designs on development productivity and software quality is underscored.

DISCUSSION

Several areas for improvement were identified after analyzing our project's initial
design for reusability and maintainability. Our software components underwent examination,
along with their degree of coupling and the implementation of design patterns. Along with
this, attention was given to code readability and relevant documentation to make the
necessary changes.

Limitations were discovered in the initial design due to its tight coupling. Tightly
coupled systems can have a ripple effect where modifications to one component necessitate
modifications to others. The result is a less adaptable system that is challenging to maintain.
Additionally, the portability of individual components is restricted by tight coupling, which
reduces their reusability in alternative contexts.

A significant issue that arose in the system's maintenance was insufficient


documentation. It became clear when our team began to struggle with comprehending
specific portions of the code, particularly those created in earlier stages of the project.
Furthermore, due to inconsistencies in the coding approach throughout the project, it was
challenging for newly added team members to grasp and implement the pre-existing
codebase, rendering the system's maintainability problematic.

By taking action, we tackled the problems at hand. Our first move was to give our
system's reusability an upgrade by revisiting the design principles of modularity and loose
coupling. We performed some code refactoring to decrease interdependencies between
components. Our objective was for each component to operate independently. This opened
the way for better portability of the components, providing ample opportunities for reusing
them in different parts of the project, and even in future ventures.

Improving the maintainability of our software system was our secondary goal. We

PANGASINAN STATE UNIVERSITY 2


PANGASINAN STATE UNIVERSITY BS COMPUTER ENGINEERING

CpE116 Software Design Laboratory Report No. 07

accomplished this through generating thorough documentation for every part of our system,
detailing its function, usage, and dependencies. We additionally enforced a unified and
distinctive coding standard among all team members. A better maintainability factor was
achieved through readable and comprehensible code.

The design improvements we made had a notable impact. We were able to boost the
development process efficiency by reusing existing components for various tasks due to the
increased reusability of our software system. Further, we made our system much more
manageable, which amplified our ability to adjust and expand it whenever necessary.
Essentially, modifying and comprehending the system became much simpler.

Our approach to software development in future projects will continue to be guided by


the importance of reusability and maintainability principles, gleaned from our valuable
insights during the experience. The existing project was enhanced as a result of this
encounter.

CONCLUSION

During our project, we personally experienced the extensive practical implications of


the theoretically simple concepts of reusability and maintainability in software design. The
laboratory session afforded us deep insights into the fundamental principles of these
concepts.

Our design was found wanting in certain aspects pertaining to high coupling and
insufficient documentation, revealing the criticality of design principles in practical software
development. It brought to the fore the significance of reusability and maintainability, which
are not just add-ons to software systems, but rather cornerstones that have a sizeable impact
on their enduring triumph.

By making changes based on our investigations, we observed swift and notable


enhancements. Our decision to adopt modularity and loose coupling as principles increased
the efficacy of our development process by making our components more reusable. In
addition, enhancing our documentation and enforcing consistent coding standards helped
elevate the readability and maintainability of our codebase.

PANGASINAN STATE UNIVERSITY 3


PANGASINAN STATE UNIVERSITY BS COMPUTER ENGINEERING

CpE116 Software Design Laboratory Report No. 07

Navigating through the project during the lab session emphasized the importance of
adaptability and continual learning in software development. The journey towards developing
designs that are reusable and maintainable isn't a one-time feat, we learned. It calls for
incessant refinement of our techniques and methods by means of constant evaluation and
assimilation of knowledge. This understanding is something we aim to carry forward into our
future pursuits as we strive to create functional software that is also reusable and
maintainable.

Our approach as software developers is now fundamentally shaped by the insights


and skills we gained from this lab session. This experience not only improves our current
project but also prepares us for future roles. We learned key principles like maintainability
and reusability, which will enable the creation of software systems that are efficient,
sustainable, and of high quality.

REFERENCES

Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design Patterns: Elements of
Reusable Object-Oriented Software. Addison-Wesley Professional.

Pressman, R. S. (2014). Software Engineering: A Practitioner's Approach (8th ed.). McGraw-


Hill Education.

Sommerville, I. (2015). Software Engineering (10th ed.). Pearson.

PANGASINAN STATE UNIVERSITY 4

You might also like