written 8.5 years ago by | • modified 8.5 years ago |
a) Efficiency and complexity
b) Scalability and heterogeneity.
Mumbai University > Computer Engineering > Sem 7 > Software Architecture.
Marks: 10 M
Year: Dec14, May14, Dec13, May13, May12
written 8.5 years ago by | • modified 8.5 years ago |
a) Efficiency and complexity
b) Scalability and heterogeneity.
Mumbai University > Computer Engineering > Sem 7 > Software Architecture.
Marks: 10 M
Year: Dec14, May14, Dec13, May13, May12
written 8.5 years ago by |
A software system’s nonfunctional property is a constraint on the manner in which the system implements and delivers its functionality.
A. Efficiency and complexity
1. Efficiency:
It is a quality that reflects a software system’s ability to meet its performance requirements while minimizing its usage of resources in its computing environment.
Software component and Efficiency: For efficiency, the components have to be kept small whenever possible, the interfaces have to be simple and compact, allow multiple interfaces to the same functionality, separate data components from mete-data have to be maintained.
Software connectors and Efficiency: For efficiency, connectors should be selected carefully, broadcast connectors should be used with caution, asynchronous interaction should be used whenever possible, also location and distribution transparency have to be used judiciously.
Architectural configurations and efficiency: For efficiency, keep frequently interacting components close, carefully select and place connectors in an architecture and consider the efficiency impact of selected architectural styles and patterns.
2. Complexity:
It is the degree to which a software system or one of its components has a design or implementation that is difficult to understand and verify.
B. Scalability and heterogeneity
1. Scalability:
It is the capability of a software system to be adapted to meet new requirements of size and scope. Two other nonfunctional properties that deal with system aspects related to scalability are heterogeneity and portability.
2. Heterogeneity:
It is the quality of a software system consisting of multiple disparate constituents or functioning in multiple disparate computing environments.
Software component and scalability: each component is to be given a single and
clearly defined purpose, define each component to have a simple and understandable interface, components should not be given interaction responsibilities, avoid unnecessary heterogeneity as it result in architectural mismatch, distribute data sources and replicate data when necessary.
Software connector and scalability: as new functionality is added to the system, the number of interactions also increases. To improve scalability in terms of interactions, use explicit connectors giving a defined responsibility to each, choose simplest connector suited for the task, be aware of the difference between direct and indirect dependencies, and avoid placing application functionality inside connector and leverage explicit connectors to support data scalability.
Architectural configuration and scalability: if a large and growing number of components depends on services provided by a single other component then that component gradually becomes unable to provide its services. If many components interact through a single connector, at some point the connector may become unable to satisfy the component interaction needed. To provide scalability in architectural configurations, avoid system bottlenecks, make use of parallel processing capabilities, place data sources close to data consumers, try to make distribution transparent and use appropriate architectural style.