Professional Documents
Culture Documents
DP Research Paper
DP Research Paper
Abstract
This assignment report is aimed at justification and implementation of the use design patterns
which enhance testability leading to better software development. The design pattern approaches,
and structures have been demonstrated through multivariate experiments that along with the
variety of categories and analyze the pattern of the and their interactions. The results obtained to
simplify the understanding of the overall directory structure, and, thus, to facilitate the
classification of other the design and implementation of these design patterns to the development
of software applications. These simplifications of design patterns inherit the plan, described,
identified the objects, their interactions, and the distribution of their work. Design patterns play
many roles in the process of object-oriented development: they provide a common vocabulary
for design, they reduce the complexity of the system, and some of the abstractions, they
constitute the basis of the experience of the software, and they act as building blocks that can be
built for more complex projects. The Design re-usable microarchitectures that contribute to the
overall architecture of the system. We also describe how to express and organize design patterns
in any system along with the simpler solution and the present is a catalog of design patterns. We
will also describe our experience in the use of design patterns in the design of object-oriented
systems.
Introduction
Testability of a software is the focus in this document. This document elaborates the degree to
which a software artifact can support testing of different modules. Testability has to be high such
that it is easily carried out. Library management system is the focus in this documentation. The
library management system is made up of a variety of functions, such as dealing with a certain
amount of the book, and the creation of one of the users. Also, a search function, in order to
allow the user to find the desired library asset. And therefore, the system design of the pattern is
important, because not only does it help to deal with the code, but also to help you manage the
code in the buffer. A variety of patterns that can be used in a variety of scenarios not all models
of the design is appropriate for the library management system. Library management system. It is
the same as that of the general class of graphs, which are shown in the image.1, are quite
complex and hard, because some of the methods used can be changed through the
implementation of a design pattern.
This report, therefore, concentrates at demonstrating that testability contributes significantly
towards the development of a software and its suitability for the end users. Methodology that is
used in software development has also been explained in detail to enable the users develop the
picture of how testability is important. A scenario has been created which a simple solution is
explained in detail for better understanding. In this way, the developers can appreciate the reason
behind certain outputs and how the outputs have been affected by the way the code has been
written.
Literature Review
1. To reduce the impact of the design and the quality of the software
The researchers examined the effect of UP on several quality requirements, such as maintenance,
disposition changes, the performance, and the propensity for error. Prechelt et al. [1] carried out
an experiment to investigate the service, the maintenance of the software, using the patterns, and
to compare the adoption of those of the other scenarios, but with simpler options. They found
that, in many cases, the solution is that the use of the GoF patterns is easier to maintain than the
equivalent of a simple solution. Despite this, the authors also found that, in the current situation,
and with the help of a template, it is difficult to sustain the program. They are also confirmed to
be a relatively easy solution to construct a pattern that may require additional maintenance.
Vokac et al. [26] to reiterate the study of the Prechelt et al. [1], and find a model for the visitor,
resulting in a high time-cost in terms of development and low degree of accuracy. They are the
interior designer that will make it easier to take care of, even if it is difficult to trace the control
flow of a program and, therefore, increases the amount of work that is required in order to fully
understand it. So, even if the maintenance is not good, the decrease in comprehension. A number
of studies have been carried out [27-29], and several studies have been carried out in [1]. Some
of the studies [27-29], it has been shown that the DP will have a negative impact on the
maintenance, while others (e.g., [30]) have not yet found exactly the trending in the force, and
recommended a more in-depth and practical analysis. In addition, the Garzas, et al. [31] found
that the pattern of the design, and it makes it hard to understand, and modifiability. On the other
hand, Hegedus et al. [32] evaluated the effect of some of the JHotDraw the DP system
maintenance and saw that the Dps can make a positive impact of the maintenance, and the reason
is to improve the code.
Coupling has been observed among the classes such that they depend on each other to be able to
perform their given functionality. For instance to search for a book in the library, one has to
know the author as well as the catalog hence the need to call the Catalogue class to utilize its
searchByAuthor method.
There is also too much dependencies among the classes to be able to perform the functionalities
in an effective manner hence some classes may know too much in regard to other classes which
depend on them.
In this example, ReNum class has the ability to directly manipulate variables in other classes by
object instantiation of the RegNum class. High coupling has impact on modularity and is not
good for overall software Testability as if the number of modules and more features gets added
into the library system and adopts this kind of practice, there will be problems that the
developers will face in trying to find which method invokes which class and so on.
High coupling has impact on modularity and is not good for overall software Testability as if the
number of modules and more features gets added into the bank and adopts this kind of practice,
there will be problems that the developers will face in trying to find which method invokes
which class and so on.Cohesion, Coupling, Modularity Concerns, Accessibility Concerns,
Multiple Instance, Complexity Concerns.
b) Accessibility Concerns
Furthermore, other weaknesses in the simple solution are detected in the improper use of access
modifiers. In the below code example, it is seen that a part of the code does not hide its variables
from other classes. This could lead to poor obscurity practices and can let instantiations of other
classes gain too much data/visibility on the class itself.
To illustrate, the RegNum.java class has all registration numbers for specific students variables
set as public. Although this does not really affect the current solution as the module being shown.
Further refinements made to the overall software would prove difficult as incorrect access
modifiers leading to poor modularity will allow accidental changes to a part of a Class being
made, or high potential towards poor data security practices that could eventually lead to
breaches that will incur any extra cost to the university management.
B. Analysis
Based on the previously mentioned formula in the beginning sections, a lower score for the value
T indicates better Testability of the Software in general.
The results of both solutions are shown as of below:
a) Simple Solution:
b) Modularity:
The Modularity for the Simple Solution is shown to be 76.
While through SonarQube’s analysis, the Cyclomatic Complexity of the code is shown to be 30.
There are no duplicated lines/dead code present in the simple solution provided.
From the general formula for Testability Provided. Testability for the Simple Solution is 50.
c) Refined Solution
For the refined solution, as the Façade class acts as an interface that controls all methods that are
there in other classes which remain untouched, only the Façade and Main class will be counted
along inside of the formula.
Modularity:
While as Cyclomatic Complexity for the BankInterface package that houses the main class and
Façade+Singleton pattern shows to be 16.
Furthermore, no duplications nor dead code are found in the Refined Solution.
Based on the above formula, the Testability for the Refined Solution is shown to be 27.4
It is shown that this value of 27.4 for the Refined solution carrier a lower weightage than the T
value of the Simple Solution, which is shown to be 50. This proves that by applying Design
Patterns Façade and Singleton, Testability is further improved in the Refined Solution.
Conclusion
The design pattern of the production of the revolution, what we believe to be to design an object-
oriented
the problems in the system. As we have seen, those that are applied in the different phases of the
design and the original design, re-use,and the refactoring process. They gave us a new level of
abstraction for the design of the system. A new level of abstraction, often opening up new
opportunities for increased levels of automation. We are going to explore the interactive tools
that are able to take advantage of the design. One of these tools, the user, is to explore the outer
space of the objects, run the software, and the study of their inter-relationships. By means of
observations the user may find that the existing one or brand-new samples, the tool makes it
possible to record and catalog observations. In this way, the user can better understand the
application software, the on -on their own, on the basis of this, the design of the general public.
References
[1]Ali, M. and Elish, M.O., 2013, June. A comparative literature survey of design patterns
impact on software quality. In 2013 international conference on information science and
applications (ICISA) (pp. 1-7). IEEE.
[2]Ampatzoglou, A., Frantzeskou, G. and Stamelos, I., 2012. A methodology to assess the
impact of design patterns on software quality. Information and Software Technology, 54(4),
pp.331-346.
[3]Alghamdi, F.M. and Qureshi, M.R.J., 2014. Impact of design patterns on software
maintainability. International Journal of Intelligent Systems and Applications, 6(10), p.41.
[4]Ampatzoglou, A., Charalampidou, S. and Stamelos, I., 2013. Research state of the art on GoF
design patterns: A mapping study. Journal of Systems and Software, 86(7), pp.1945-1964.
[5]https://www.journaldev.com/1827/java-design-patterns-example-tutorial
[6]https://www.researchgate.net/publication/221560732_An_empirical_study_on_the_evolution
_of_design_patterns
[7]Jaafar, F., Guéhéneuc, Y.G., Hamel, S., Khomh, F., Zulkernine, M.: ‘Evaluating the impact of
design pattern and anti-pattern dependencies on changes and faults’, Empirical Software
Engineering, 2015, 21, (3), pp. 896–931
[8]Edwin, N.M., 2014. Software frameworks, architectural and design patterns. Journal of
Software Engineering and Applications, 2014.
[9]https://www.cs.auckland.ac.nz/~john-g/papers/tools2002.pdf
[10]https://www.edureka.co/blog/library-management-system-project-in-java
[11]Karsenty, L., 1996, April. An empirical evaluation of design rationale documents. In
Proceedings of the SIGCHI conference on Human factors in computing systems (pp. 150-156).
[12]https://www.semanticscholar.org/paper/Empirical-Evaluation-of-Software-Design-Patterns-
Gupta-Singh/ea64f7c6583077d75c321431a695287798135bae#extracted
[13]Karsenty, L., 1996, April. An empirical evaluation of design rationale documents. In
Proceedings of the SIGCHI conference on Human factors in computing systems (pp. 150-156).
APPENDIX
Use Case Diagram