“The software architecture of a program or computing system is the structure or structure of the system, which comprise software elements, the externally visible properties of those elements, and the relationship among them”. Architecture is an abstraction of a system. Architecture defines the system elements and how they interact. Architecture defines the properties of components Properties of components are assumptions that one component can make about another. Architecture provides required services, performance characteristics, fault handling, resource usage.
Software application architecture is the process of defining a structured solution that meets all of the technical and operational requirements, while optimizing common quality attributes such as performance, security, and manageability. It involves a series of decisions based on a wide range of factors, and each of these decisions can have considerable impact on the quality, performance, maintainability, and overall success of the application.
As a whole, software architecture involves functionality, usability, resilience, performance, reuse, comprehensibility, economic and technology constraints, tradeoffs and aesthetic concerns.
Why Architecture required?
Every system has an architecture. Every system is composed of elements and there are relationship among them Just having an architecture is different from having an architecture that is known to every one. If you don’t develop an architecture, you will get one anyway-and you might not like what you get. Wrong architecture usually spells some form of disasters.
The risks exposed by poor architecture include software that is unstable, is unable to support existing or future business requirements, or is difficult to deploy or manage in a production environment.
Like any other complex structure, software must be built on a solid foundation. Software is pervasive in today's systems and business operations. Software is the root cause of most of today's system problems. The quality and longevity of a software system is determined by its architecture. A software architecture is "first out" at solving the problem and designing the system. Failing to consider key scenarios, failing to design for common problems, or failing to appreciate the long term consequences of key decisions can put your application at risk. The fact that software projects and tasks are reported to be "90 percent done" for a long time has become some sort of project risk. This well-intentioned but misleading status tracking makes it difficult to judge when a body of work will truly be completed so you can ship the next product release to your customers.
One of the major issues in software systems development today is quality. A quality attribute is a non-functional characteristic of a component or system. ISO/IEC 9126-1910 defines a software quality model. According to this definition, there are six categories of characteristics:
Functionality, Reliability, Usability, Efficiency, Maintainability and Portability
A successful architecture forms the platform for strategic advantage.
By contrast, the lack of architecture bonds the organization inescapably to its past.
For most organizations, our legacy is a tortuously tangled slew of haphazard systems born of a time of amazing wizardry but little system discipline.
These legacy systems are expensive and hard to change, but replacing them threatens the very "life" of the organization.
Brittle monolithic systems, silo applications, and long and unpredictable development times, are symptomatic of architectural decay which causes huge organizational drag.
To break the chains of our corporate legacy and build systems that fit the environment, and adapt with the environment as it changes, we need architecture
Whether we seek to lead through innovation, customer intimacy or operational excellence, architecture is the essential foundation for agility, responsiveness and effectiveness.
Architecture addresses complexity, leaving the team mind-space open to innovation. It is the enabler for reliable systems.
Conclusion on why Software Architecture:
“As the size and complexity of software systems increase, the design and specification overall system structure become more significant issues than the choice of algorithms and data structures of computation. Structural issues include the organization of a system as a composition of components; global control structures; the protocols for communication, synchronization, and data access; the assignment of functionality to design elements; the composition of design elements; physical distribution; scaling and performance; dimensions of evolution; and selection among design alternatives. This is the software architecture level of design.”
“Abstractly, software architecture involves the description of elements from which systems are built, interactions among those elements, patterns that guide their composition, and constraints on these patterns. In general, a particular system is defined in terms of a collection of components and interactions among those components. Such a system may in turn be used as a (composite) element in a larger design system.”
CMM Level
IEEE
RUP
ISO 9001:2001
All Rights Reserved | Quinton Mentor Systems Pvt. Ltd.