![]() |
Development Lifecycle »
Design and Architecture »
General
Beginner
Software architecture review guidelinesBy Alexander NowakThis text tries to bring together elements a reviewer can use in his/her software architecture review. |
C#, Windows, .NET, Visual-Studio, Architect, Dev, Design
|
||||||||
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||
Reviews 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.
If 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
General tone in these definitions is that you need to make high-level decisions about the system you' re going to build;
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
Measure of the system's ability to resist unauthorized attempts at usage and denial of service
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.
Typical Design/Architectural principles
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.
Typical Design/Architectural principles
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
On SW arch level, the ability to reuse the SW architecture for another application.
On code level , framework aspects
Ease of deployment
How quickly can you deploy the system?
Typical measures
Typical unit of measurement
Ease of administration
Refers to the infrastructure, tools, and staff of administrators and technicians needed to maintain the health of the application. E.g. Change physical location of service with minimal impact on the rest of the system.
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
| You must Sign In to use this message board. | |||||||||||||||
|
|||||||||||||||
|
|||||||||||||||
|
|||||||||||||||
|
|||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads.
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 12 Sep 2007 Editor: |
Copyright 2007 by Alexander Nowak Everything else Copyright © CodeProject, 1999-2010 Web21 | Advertise on the Code Project |