Wednesday, March 28, 2007

Software Architecture.... What it is???

The internal design of software, enabling the software to exhibit a certain set of attributes (i.e. the "architectural requirements"). The Software Architecture must take into account the capabilities and limitations of all of the target Platforms (Hardware/Operating-System/Networking) on which the Software will be run. An attribute of the system can only be realized if the Software Architecture and the Platform both support it.


Attributes of systems are...
  • Availability - the assurance that a service/resource is always accessible
  • Scalability - the ability to support the required quality of service as the load increases
  • Reliability - the assurance of the integrity and consistency of the application and all of its transactions. The ability to provide a required reliability service level depends on the close coordination of the hardware, networking, operating system, storage subsystem, application framework, and application software.
  • Security - the ability to allow access to application functions and data to some users and deny them to others
  • Interoperability - the ability of the system to share data with external systems and interface to external systems.
  • Leveragability - the ability that stored data, programmed logic, and other system resources available anywhere in the enterprise should be accessible from everywhere in the enterprise
  • Maintainability - the ability to correct flaws in the existing functionality without impacting other components/systems
  • Extensibility - the ability to add/modify functionality without impacting existing functionality
  • Manageability - the ability to manage the system in order to ensure the continued health of a system with respect to scalability, reliability, availability, performance, and security.
  • Portability - the ability of the software to run on a variety of hardware and operating system configurations
  • Accessibility - the ability to access system functions through different user agents and in different human languages