Seminar Report On CSC 405
Seminar Report On CSC 405
ON
BY
GREGORY UNIVERSITY
UTURU
FEBRUARY 2024
TABLE OF CONTENT
ABSTRACT……………………………………………………………………
1. INTRODUCTION…………………………………………………………
1.1. SOFTWARE DESIGN PATTERNS …………………………………..
1.2 DESIGN PATTERNS IN SOFTWARE DEVELOPMENT…………
1. Proven Solution
Design patterns provide a proven, reliable solution to a common
problem, meaning the software developer does not have to “reinvent
the wheel” when that problem occurs.
2. Reusable
Design patterns can be modified to solve many kinds of problems –
they are not just tied to a single problem.
3. Expressive
Design patterns are an elegant solution.
The history of software patterns can be traced back to the 1970s and
1980s when Christopher Alexander, an architect, introduced the concept of
patterns in the field of architecture with his book "A Pattern Language:
Towns, Buildings, Construction." In this book, Alexander described patterns
as solutions to common design problems in architecture, which could be
applied and adapted to various contexts.
Since then, the concept of software patterns has continued to evolve, with
additional patterns being identified and documented by various authors and
communities. Patterns have been categorized, refined, and expanded upon
to address new challenges in software design, such as distributed systems,
concurrency, and user interface design.
Today, software patterns are widely used in the software development
industry, and understanding them is considered essential for software
engineers aiming to write maintainable, scalable, and robust code. Various
resources, including books, articles, and online communities, continue to
contribute to the understanding and adoption of software patterns in
practice.
PRACTICE
Design patterns can speed up the development process by providing
tested, proven development paradigms.[4] Effective software design
requires considering issues that may not become visible until later in the
implementation. Freshly written code can often have hidden subtle issues
that take time to be detected, issues that sometimes can cause major
problems down the road. Reusing design patterns helps to prevent such
subtle issues,[5] and it also improves code readability for coders and
architects who are familiar with the patterns.
STRUCTURE
Design patterns are composed of several sections
(see § Documentation below). Of particular interest are the Structure,
Participants, and Collaboration sections. These sections describe a design
motif: a prototypical micro-architecture that developers copy and adapt to
their particular designs to solve the recurrent problem described by the
design pattern. A micro-architecture is a set of program constituents (e.g.,
classes, methods...) and their relationships. Developers use the design
pattern by introducing in their designs this prototypical micro-architecture,
which means that micro-architectures in their designs will have structure
and organization similar to the chosen design motif.
Domain-specific patterns[edit]
Efforts have also been made to codify design patterns in particular
domains, including use of existing design patterns as well as domain-
specific design patterns. Examples include user interface design patterns,
[7]
information visualization,[8] secure design,[9] "secure usability",[10] Web
design [11] and business model design.[12]
Popular Software
Architectural Patterns
Although somewhat outside the scope of this guide, it is important
to mention that there are also architectural patterns that can be
applied to the design of the software as a whole. What is an
architectural pattern? A general, reusable solution to common
problems in architecture (see how the definition is almost the same
for software design?). These three design patterns are similar, with
different sets of dependencies and levels of binding.
These works offer valuable insights into the theory, application, and
practical implications of software patterns, catering to developers and
architects at different levels of expertise.
ANALYSIS
Certainly! When analyzing software patterns, you can approach it from
several angles:
By conducting analyses in these areas, you can gain insights into the
usage, effectiveness, evolution, and educational impact of software
patterns, contributing to the advancement of software engineering
practices.
Conclusion
REFERENCES