|
||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
Announcements
Chapters
Services
Feature Zones
|
Note: This is an unedited contribution. If this article is inappropriate,
needs attention or copies someone else's work without reference then please
Report This Article
IntroductionReviews are an opportunity for others to eyeball your documents/design/code/software architecture and for you to inspect others' work. They facilitate knowledge interchange. But their primary goal is to increase software quality. They help you to spot faults before they become real disasters. This text tries to bring together elements a reviewer can use in his/her software architecture review. BackgroundIf you want some formal definitions what a software architecture is , I recommend reading the information on http://www.sei.cmu.edu/architecture/published_definitions.html#Modern
For an existing system you can detect these key factors, that will give you an idea of the software architecture. An approach in evaluating software architecture is reasoning about the quality attributes a software architecture exhibits. In the bullets below I tried to sum up the different quality attributes together with some typical things to look for when you're conducting a review. This list is not intended to be exhaustive. Maybe you also have ideas you would like to share ....? The time required to respond to stimuli (events) or the number of events processed in some interval of time. Typical Design/Architectural principles to look for
Typical unit of measurement you could use
The ability of the system to keep operating over time in the context of application and system errors and in situations of unexpected or incorrect usage.(to perform in a predictable manner) Typical Design/Architectural principles to look for
Typical unit of measurement you could use
The proportion of time the system is up and running. Typical Design/Architectural principles to look for
Typical unit of measurement you can use
Typical Design/Architectural principles to look for
Ability to make changes to a system quickly and cost effectively. . Typical Design/Architectural principles
Typical unit of measurement
Ability of the system to run under different computing environments. Sometimes considered as special kind of modifiability.
Ability of the system to do the work for which it was intended. Typical unit of measurement
New feature implementation/replacement of components with improved versions and the removal of unwanted or unnecessary features or components Typical unit of measurement
Underlying theme or vision that unifies the design of the system at all levels. Interaction with other sub-subsystem, or a well defined access to externally-visible functionality and data structures or interaction with other run-time environments.
How easy is it to use the program? Typical Design/Architectural principles
Typical unit of measurement
Problem fixing, repairing a software system after errors occur Typical unit of measurement
Deals with the use of the resources available for execution of software, and how this impacts response times, throughput and storage consumption. Typical Design/Architectural principles
Testability How easy is it to test code a unit, sub-systems, etc. Typical design/architectural principles
How quickly can you deploy the system? Typical measures
Typical unit of measurement
Ease of administration Typical unit of measurement
Number of users changes while maintaining other qualities. Support continuous growth to meet user demand and business complexity. It must be possible to extend the minimum hardware configuration needed for the application with additional hardware to support increased workloads. Typical Design/Architectural principles
Debug-ability /Monitoring Preparing application for easy and efficient debugging . Registration of abnormal behaviour. Real-time monitoring. Typical Design/Architectural principles
Cost and time saving mechanism to aid development of applications based on the software architecture. The developers should be able to learn the architecture concept and how to implement it easily. Extending the development team with new developers should not cost much effort in instruction etc. A standardized way of working using templates and coding standards could help raise both the learning the curve and quality Typical Design/Architectural principles
|
|||||||||||||||||||||||||||||||||||||||||||||||