DPAT Assignment
DPAT Assignment
Contents
1|Page
Design Patterns Individual Assignment TP032057
1.0 Abstract
Quality attribute is one of the most important criteria to be followed for delivering good
quality software products to the users. A good quality software products relays on run-time
behaviour, system design and user experience. Quality attribute will be the general factor of
quality software products Invalid source specified.. Design, implementation and deployment
have to be considered in order to achieve quality attributes. Quality attributes have to be found
out in order to be able analyse and evaluate the quality of good software products. One of the
quality models presented by Jim McCall (McCall’s Quality Model) pointed towards the system
developers and system development process. McCall quality model attempts to overcome any
issues amongst users and developers by focusing on a number of software quality factors that
reflects both user’s view and developers’ priorities Invalid source specified..
2|Page
Design Patterns Individual Assignment TP032057
2.0 Introduction
Quality attribute is important and critical to ensure that meets the expectations of ends
users. These quality attributes include functional and non-functional such as performance,
security and maintainability. (Alexander, 2010)Design Patterns are related to both functional
and non-functional requirements, or quality attributes because they characterise how operating
system as whole, and how it behaves. As of that, a quality attribute is important on how the
system will be acknowledged and worked. As for this document, we are going to further discuss
about integrity, one of the major quality attributes needed for development of a system.
This document covers on areas in how does integrity work in system and how does it
relate to design patterns. This document also covers research on integrity example scenario and
how is this quality attribute implemented in software system architectures. Besides that, this
document also covers the techniques used for integrity, the attributes related for integrity and
the efficiency of integrity. (Harvey, 2007) This document also explain how design patterns
helps improves integrity and the benefits of using a design patterns in solving a common
problem faced in developing a software system.
3|Page
Design Patterns Individual Assignment TP032057
Quality attribute prerequisites are vital both for client and end-client fulfilment and for
building a programming framework outline. However, demonstrating their significance brings
up numerous different issues. Specifically, utilizing quality attribute practically speaking isn't
self-evident. (An, et al., 2015)Therefore, to develop a system, a quality attribute is needed to
enhance the program in terms of usability, maintainability, security etc. System quality attribute
have been an interest to the software community since the 1970’s. There are various published
definitions, and many of them have their own predictions and research. It is a very crucial stage
as well in development. In this research, we are going to focus on one quality attribute, that is
integrity.
According to Jim Mc Call, he defined and identified quality of software product through
addressing three perspectives:
4|Page
Design Patterns Individual Assignment TP032057
Therefore, he summarized into 11 design quality attributes and one of the quality
attributes is integrity. Integrity in quality attribute is defined as the protection of program from
unauthorized access. Therefore, this quality attribute acts as a security enhancement for a
developed system. It is a very important issue on software development, especially for web and
mobile based ones, which may have millions of users with the ability of remote accessing to
the system. Integrity is interpreted as the ability of the software to protect against unauthorised
access - software integrity. Another common interpretation, data base integrity, (the ability of
the software to maintain an accurate data base in a multiaccess environment) falls under the
major category of reliability. An authorized person may access data and then use it in an
unauthorized manner. To date, little software has been developed for providing the capability
to control usage of data. To avoid this small issue in a software development, Mc Call suggested
that integrity to be implemented at the stage of development.
Integrity is one of the five main stages of Information Assurance (IA). The other four
are authentication, accessibility, privacy and nonrepudiation. Information integrity upkeep is a
data security prerequisite. Uprightness is a noteworthy IA part since clients must have the
capacity to confide in data. Untrusted information is without respectability. Put away
information must stay unaltered inside a data framework (IS), and in addition amid information
transport. Occasions like stockpiling disintegration, mistake and purposeful information or
framework harm can make information changes. For instance, programmers may cause harm
by invading frameworks with malware, including Trojan viruses, which surpass PC
frameworks, and in addition worms and infections such as viruses.
5|Page
Design Patterns Individual Assignment TP032057
Besides that, another case which happened in the same year “Citigroup was another
victim. Hackers who stole bank account details for 200,000 Citigroup customers infiltrated the
company’s system by exploiting a garden-variety security hole, known as Insecure Direct
Object Reference, in the company’s website for credit card users.” Imagining a banking
institute that stores all of our cash, which is the most sensitive issue to people has caused the
bank to cease operations for a day, which costs up to a billion in total. The less integrity of a
software system not only affects the end users of the system but also affects the organisation
that uses the software or relies solely on the one system for profits.
With malicious attacks around the globe, every system should adapt to the integrity
quality attribute as a sole priority. This is due to major factors and practices such as:
Understanding the sensitivity of the information that will be handled in the system and
classify it.
Take trainings on application security, including endpoint security, network security,
and content security.
Build security controls in each access point based on needs.
Test each security control.
6|Page
Design Patterns Individual Assignment TP032057
Therefore, the importance of integrity is very clearly seen in those case studies mentioned
in this section. The never-ending battle to prevent and mitigate breaches requires a software
integrity program that is cohesive at all stages. To achieve a delicate balance between software
functionalities and controls, while also protecting the overall business, there’s no room for
complacency. It also requires steady security practices throughout the applications that are
critical to your business. (Anon., n.d.)
The unfaltering development of programming and applications inside the portfolio can
aggravate the security adjust. Accordingly, there is a requirement for consistent profiling,
checking, and examining. Complete this by utilizing static examination and dynamic
investigation inside every product improvement life cycle (SDLC) stage. Use the outcomes for
consistent perceivability into the applications and settle on application-based appraisal choices.
This data can likewise be encouraged into design examination of the applications. Furthermore,
it can be utilized for teaching the designers, analysers, and the venture modelers to persistently
develop your program.
Regulations are part of business operations. Enterprise software and application security
must address the critical components of business risks and regulatory compliance. It must work
with GRC program to consolidate the risk profile and provide viable risk and regulatory
management. Additionally, it must holistically rate the assets, applications, and associated data,
7|Page
Design Patterns Individual Assignment TP032057
and evolve vulnerability management processes to stay on top of the growing threats and to
control the environment. (Hendrix, n.d.) (Lund, n.d.) (Fatimah Mohammed Alghamdi, 2014)
(IoannisStamelosa, 2012) (Zulkernine, 2015) (Ashraf Armoush, 2009)
In large software systems, the achievement of quality attribute is dependent not only upon code-
level practices, but also upon the software architecture. It is more cost effective to detect
potential software quality problems earlier rather than later in the system life cycle. When the
software architecture is specified, designers need to determine:
The extent to which feature of the software architecture is influenced by the quality attribute
The extent to which techniques used for one attribute to support or conflict with those of
another attribute
The extent to which multiple quality attribute requirements can be satisfied simultaneously.
And to create a high-quality software design, a design attribute is needed to achieve it. In
this case, integrity affects the software design in ways that it adds more classes in the design.
This is due to the fact that it enhances the security features and helps the system to have limited
number of users who are only allowed to use certain features of the system. According to a
journal article, most designs are affected only after the development is done because integrity
is looked at only after the system is developed. This is because the security of the system is
only considered important during the implementation stage. Besides that, the integrity of the
system is a work in progress. Therefore, it will be updated and added along the way even after
the system is implemented over the years. This will affect the design by adding one more
classes and interface to support the update. However, the classes added will be added in a
pattern, which will be explained further in this document. By using this pattern, it will be easily
updated accordingly and not affect the core design of the system (John.H, 2007).
8|Page
Design Patterns Individual Assignment TP032057
There exist many suggestions for how to measure (or metricate) security, with different
goals and objectives. The application areas range from business management and
organizational systems to large software systems. The approaches may be theoretical,
technical, administrative or practical. In many cases, the goal is to find a single overall metric
of security. Given that security is a complex and multi-faceted property, we believe that there
are fundamental problems to find such an overall metric
9|Page
Design Patterns Individual Assignment TP032057
Considering the casual relation between impairments, we can see that there are three
basic ways to break the causal chain of unwanted events and to counter the propagation of
impairments; The basic causal chain is attack - error - failure. We observe that the attack, i.e.,
external fault, originates from the environmental threat. The error is the result of insufficient
protection against the attack. Finally, the failure occurs since the error was permitted to
propagate to the system output. The obvious conclusion is that defence methods could be
applied accordingly. We name them threat reduction, boundary protection and recovery. Threat
reduction methods focus on the threat. These methods aim to reduce or eliminate the threat,
i.e., make it less probable that an attack is launched towards the system. An example of threat
reduction would be legal measures. If the threat agent is a human attacker, the prospect of
facing a jail sentence would most probably decrease her motivation to launch attacks as
compared to if the act was legal.
Boundary protection is the set of methods that protect the system from malicious
external influence. An example would be authentication, which aims at refusing access for
unauthorized entities. Recovery methods aim at eliminating errors inside system boundaries
before they produce a failure. For internal faults this is the only available defence methodology.
An anti-virus tool is an obvious example of a recovery mechanism. A virus that has entered the
system represents an error. It is well known that many viruses will not become visible to the
USER until at some later occasion. If they can be found and deleted before they have caused a
failure, a successful recovery has taken place. In order to counter an attack, i.e., to avoid a
system failure, only one of these methods needs to be effective. On the other hand careful
security work requires that all three types of methods are used and are continuously active.
10 | P a g e
Design Patterns Individual Assignment TP032057
These design patterns are all about class instantiation. This pattern can be further divided into
class-creation patterns and object-creational patterns. While class-creation patterns use
inheritance effectively in the instantiation process, object-creation patterns use delegation
effectively to get the job done.
11 | P a g e
Design Patterns Individual Assignment TP032057
Abstract Factory
Creates an instance of several families of classes
Builder
Separates object construction from its representation
Factory Method
Creates an instance of several derived classes
Object Pool
Avoid expensive acquisition and release of resources by recycling objects that are no
longer in use
Prototype
A fully initialized instance to be copied or cloned
Singleton
A class of which only a single instance can exist
These design patterns are all about Class and Object composition. Structural class-creation
patterns use inheritance to compose interfaces. Structural object-patterns define ways to
compose objects to obtain new functionality.
12 | P a g e
Design Patterns Individual Assignment TP032057
Adapter
Match interfaces of different classes
Bridge
Separates an object’s interface from its implementation
Composite
A tree structure of simple and composite objects
Decorator
Add responsibilities to objects dynamically
Facade
A single class that represents an entire subsystem
Flyweight
A fine-grained instance used for efficient sharing
Private Class Data
Restricts accessor/mutator access
Proxy
An object representing another object
These design patterns are all about Class's objects communication. Behavioural patterns are
those patterns that are most specifically concerned with communication between objects.
13 | P a g e
Design Patterns Individual Assignment TP032057
Chain of responsibility
A way of passing a request between a chain of objects
Command
Encapsulate a command request as an object
Interpreter
A way to include language elements in a program
Iterator
Sequentially access the elements of a collection
Mediator
Defines simplified communication between classes
Memento
Capture and restore an object's internal state
Null Object
Designed to act as a default value of an object
Observer
A way of notifying change to a number of classe
State
Alter an object's behavior when its state changes
Strategy
Encapsulates an algorithm inside a class
Template method
Defer the exact steps of an algorithm to a subclass
Visitor
Defines a new operation to a class without change
14 | P a g e
Design Patterns Individual Assignment TP032057
Who benefits from the use of design patterns is like asking who benefits from clean air or
a good education. All of the stakeholders of a project benefit from the use of design patterns.
Project Sponsor
Project sponsors benefit from the use of design patterns because they promote reduced
development time which translates in to shorter project timelines and greater return on
investment compared to other projects that do not make use of design patterns.
Project Manager
Project managers benefit from the use of design patterns because they reduce the amount
of time needed to design a system, and typically the sub components of the system already have
a proven track record.
System Architect/Engineer
System architects/engineers benefit from the use of design patterns because reduce the
amount of time needed to design the core a system. The additional time is used to alter the
design pattern through the use of innovative design and common design principles to adhere to
the project’s requirements.
Programmer
Programmers benefit from the use of design patterns because they can reuse existing code
already established by the design pattern and only have to integrate the changes outlined by the
system architects/engineers.
15 | P a g e
Design Patterns Individual Assignment TP032057
Tester
Testers benefit from the use of design patterns because they can alter the existing test
established for the design pattern to take in to account the changes made by the system
architects/engineers.
User
Users benefit from the use of design patterns because the software is typically delivered
sooner than projects that do not incorporate the use of design patterns, and they are assumed
that the system will work as designed because it was based on a system that was already proven
to work properly.
In order to research on how design pattern is used and the impact of it towards software
developments, a methodology is used. However, in some research work, it is found that some
patterns, such as the Observer and Singleton, are correlated with large code structures and
argued that they are more likely to be fault prone. On the other hand, anti-patterns describe
poor solutions to design and implementation problems that highlight weaknesses in the design
of software systems and that may slow down maintenance and increase the risk of faults. They
have been found to negatively impact change and fault-proneness. Classes participating in
design patterns and anti-patterns have dependencies with other classes, e.g., static and co-
change dependencies, that may propagate problems to other classes.
Design patterns are not universally good or bad, but until now there is no study that
identifies which of design patterns improve the software maintainability and which of them has
weaken effect. The effect of design patterns on the software maintainability is governed by
different factors such as pattern size, prior expertise of the developer with pattern and the most
important quality attributes that must achieved by pattern and before all of these is fitting the
pattern to a certain design problem. In a research paper written in Scotland shows that the
researchers have conducted a few researches. They analyzed more than 300 revisions of the
JHotDraw software system which relies heavily on some design patterns. They calculated the
maintainability values with their probabilistic quality model and mined the design pattern
instances parsing the comments in the source code. They calculated the maintainability values
with their probabilistic quality model and mined the design pattern instances parsing the
comments in the source code. They found that there is a strong relation between the rate of
16 | P a g e
Design Patterns Individual Assignment TP032057
design patterns in the source code and the maintainability. Therefore, using design patterns
improve the code maintainability.
In the same research paper, the researchers had also proposed an analytical assessment
to evaluate the effectiveness of design patterns to help programmers to inspect the correctness
of the application of these design patterns. They also proposed two different measurement ways
for the application of design patterns: Occasion and effectiveness analysis to evaluate some
well-known open source systems. They defined their context and their anticipated changes and
then checked whether they held up to the expectations. Their conclusion provides that although
design patterns can be misused, they are effective to some degree in either early stage or late
stage of maintenance.
Thus, we can see heavily that the design patterns are validly impacting the
maintainability of a system to make the lives easier for developers to maintain a software
system. The software system is highly influenced by design patterns to help enhance the system
as well as these tests done by the researchers are proof that design patterns do cause a big
impact for the system in terms of design and also maintainability.
The design pattern that helps improve integrity will be the Mediator pattern. Mediator pattern
is a pattern that defines simplified communication between classes. This helps to improve
integrity because the Mediator pattern aims to define an object that is responsible for managing
how other objects interact. This scheme promotes loose-coupling and simplifies future
modifications. The primary compromise with this approach is the creation of a complex and
monolithic object (the Mediator) which can be hard to maintain. From a security perspective,
the availability of this object is crucial to the availability of the subsystem. Therefore, the
Mediator becomes an attractive target for attacks.
17 | P a g e
Design Patterns Individual Assignment TP032057
For an example, the mediator pattern is implemented in a secure system as the class diagram
below:
The above diagram shows a simple system called the Gang of Four. The shaded classes
display the structure of the Gang of Four Mediator pattern. Both the Primary and Secondary
Mediators are inherited from the same concrete Mediator class. This is to ensure that both
objects can handle the same tasks. The Recovery Proxy receives the requests from the
colleagues and delegates them to the Primary Mediator. This separation is necessary so that in
case of failure in the Primary Mediator, the Recovery Proxy can successfully replace the
compromised Mediator with the Secondary Mediator. The Memento pattern is used to retain
the state of the currently active Mediator. If the Primary Mediator fails, the Memento will help
in bringing the Secondary Mediator up to date, so it can continue the previous set of tasks
without interruption. Therefore, using a design pattern to help increase the integrity of system
can be seen using mediator. Although there are other patterns that can help increase the integrity
of a system, mediator is widely used to increase the integrity of a system because the
communication between classes are important to avoid attacks and unwanted access as well.
18 | P a g e
Design Patterns Individual Assignment TP032057
4.0 Conclusion
This documentation has the full research on all scopes starting from the quality attribute
of a system. The developer who mainly focuses on integrity should also know how secure
system is needed nowadays as the amount of web users and mobile application users are
growing rapidly throughout the years. Also inserted in this document are some case studies
reflecting on few criminal cases on how the systems caused billions to companies with big
names due to their system integrity not maintained. Also, developers should also know that to
maintain a system with high integrity is not simple and sometimes can be misjudged for being
secure, where in this technological era we are living in, malicious attacks and viruses forms in
various shapes and sizes and can disrupt personal data and uptime of a system.
Developer should also know that to maintain a system with ease, design patterns should
be implemented. In this document, it is evident that there are three major categories of design
patters, with various types of design patterns in each segment. Also, the importance of having
design pattern in the system can be seen clearly if a side by side comparison is done between a
non-pattern design system and a design pattern system. There is a vast difference in the
comparison as well. Nevertheless, design pattern is not all that good as well. There are major
loop holes and flaws in using design patterns in the development stage of the system. But the
impact it has in using design pattern for a system shows that it helps a lot in system
maintainability which is really needed for a very vast project.
In this document, it is also learnt that mediator design pattern actually helps in
increasing the integrity of the system. By looking at the case study that is given, it is seen that
the Group of Four secure system uses mediator design pattern as a whole system to overcome
the issue of secure system. This is due to the fact that a good and secure system actually needs
classes to have proper communication between them in order for attacks and unwanted access
to be solved. Although, there are other design patterns that could help solve the issue, mediator
would be the best solution for most integrity problems faced by developers.
19 | P a g e
Design Patterns Individual Assignment TP032057
5.0 References
An, T., Thi, N. & Chen, Y.-C., 2015. Design and Development of a Cloud-based Trip-Tracking System.
39th Annual International Computers, Software & Applications Conference, 2(3), pp. 638 - 639.
Ashraf Armoush, F. S. S. K., 2009. Design Pattern Representation for Safety-Critical. J. Software
Engineering & Applications.
Braude, E. J., 2003. Software Design: With Patterns,Uml,and Components. 1st ed. New York: John
Wiley & Sons, Inc.
Giridhar, C., 2016. Advantages and disadvantages of Command patterns. In: Learning Python Design
Patterns - Second Edition. New Delhi: s.n., p. 32.
Gomma, H., 2004. Designing Real-Time and Embedded Systems with the COMET/UML method. UML
& SDL, 2(1), pp. 44-49.
Hendrix, C., n.d. Why Your Company’s Data is Important and Tips to Ensure Its Integrity. [Online]
Available at: https://www.bastiansolutions.com/blog/index.php/2013/08/16/tips-for-ensuring-data-
integrity/
John.H, 2007. Coceptual Integrity. Journal of Information System, 20(3'), pp. 140 - 200.
Lund, H., n.d. Data Interity : What is it and why is it important?. [Online]
Available at: https://www.rapidionline.com/blog/data-integrity-what-and-why
[Accessed 15 February 2017].
20 | P a g e
Design Patterns Individual Assignment TP032057
Patil, P., 2006. Prototype Design Pattern: Easy and Powerful way to copy objects. [Online]
Available at: http://www.c-sharpcorner.com/article/prototype-design-pattern-easy-and-powerful-
way-to-copy-obje/
[Accessed 5 January 2018].
Zulkernine, Y.-G. G. H. K., 2015. Evaluating the impact of design pattern and anti-pattern
dependencies on changes and faults. 21(3), pp. 896-931.
21 | P a g e