Software Frameworks, Architectural and Design Patterns

A framework is an integrated collection of components that collaborate
to produce a reusable architecture for a family of related applications. Design patterns represent solutions to problems that arise when developing of software within a particular context, capture the static and dynamic structure and collaboration in softwar
e designs thus facilitate reuse of successful software architectures and designs. Software systems can be very complex constructions and can span into years of development Overtime software engineering processes have sought to reduce time to market, reduce the cost of development, standardize software development improve quality, improve reliability and reduce the complexity in process management. Most software systems though implementin part what has already been built and tend to follow known or nearly known architectures. It is notable thatcomplexity of software development can be quick to increase due to its nature such as flexibility, extensibility,

hidden constraints and the lack of visualization to the owners. Thus among these methods that are the most important in re-use of the known is the use of architectural and design patterns and software frameworks. It’s not able though frameworks are usually domain-specific and applicable only to families of applications
Architectural and Design Patterns
In software engineering, a design pattern is a general reusable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations. Object-oriented design patterns typically show relationships and interactions between classes or objects, without specifying the final application classes or objects that are involved (wikibooks).
Design patterns reside in the domain of modules and interconnections. At a higher level there are architectural patterns that are larger in scope, usually describing an overall pattern followed by an entire system.

There are many types of design patterns:

Structural patterns: address concerns related to the high level structure of an application being developed.
Computational patterns: address concerns related to the identification of key computations.
Algorithm strategy patterns: address concerns related to high level strategies that describe how to exploit application characteristic on a computation platform.
Implementation strategy patterns: address concerns related to the realization of the source code to support how the program itself is organized and the common data structures specific to parallel programming.
Execution patterns: address concerns related to the support of the execution of an application, including the strategies in executing streams of tasks and building blocks to support the synchronization between tasks.
Design patterns: can speed up the development process by providing tested, proven development paradigms.
Effective software design requires considering issues that may not become visible until later in the implementation. Reusing design patterns helps to prevent subtle issues that can cause major problems, and it also improves code readability for coders and architects who are familiar with the patterns. In addition to this, patterns allow
developers to communicate using well-known, well understood names for software interactions.

In order to achieve flexibility, design patterns usually introduce additional levels of indirection, which in some cases may complicate the resulting designs and hurt application performance.

Add a Comment

Your email address will not be published. Required fields are marked *