System Design and Architecture
Summary

A good design is the life of a project. Our expertise in many industries and familiarity with Object Oriented Design and diverse system architectures provide us with the background to create designs that are flexible, yet strong and reliable. Built with your business in mind, our systems are designed to grow and expand while being practical.
The complete story
Software architecture and design are tied together as they provide the basis for open systems built to last and adapt. They follow, however, parallel but different paths.

Software architecture forms the backbone for building successful software-intensive systems. An architecture largely permits or precludes a system's quality attributes such as performance or reliability. Architecture represents a capitalized investment, an abstract reusable model that can be transferred from one system to the next. Architecture represents a common vehicle for communication among a system's stakeholders, and is the arena in which conflicting goals and requirements are mediated. The right architecture is the linchpin for software project success. The wrong one is a recipe for disaster.
A software architecture is an abstract view of a software system distinct from the details of implementation, algorithms, and data representation. Architecture is an increasingly crucial part of a software organization’s business strategy. Software architectures can
- provide flexibility and adaptability in changing markets
- allow for interoperability with other players in the marketplace
- provide leverage in a marketplace
- help developers focus on a niche in the marketplace
- be used as a sales and marketing tool
- help reduce maintenance costs and amortize development costs
- help in workforce organization and for project oversight and control
- establish a common corporate vocabulary
- shorten learning time
We keep our architectural skills up to date by
- understanding quality attributes
- documenting software architecture
- evaluating software architecture
- architecture reuse
- emerging methods—such as architecture reconstruction and the Cost Benefit Analysis Method (CBAM)—and preparing for software architectures of the future
Architecture design: We help organizations use Quality Attribute Workshops to capture the quality attribute requirements for an architecture, and the Attribute Driven Design method, which provides a practical approach for developing an architecture to meet those quality attribute requirements.
Architecture documentation: We show organizations how to communicate architectures to stakeholders in clear, unambiguous representations that are complete, consistent, useful, and easy to navigate.
Architecture evaluation: We have developed methods for evaluating software architectures for fitness of purpose, and we carry out arranged evaluations.
Architecture Life-Cycle Integration: Building on our success in developing and piloting a collection of software architecture methods, we're now focusing on integrating them, and building the bridges between them and the processes and architecture efforts while continuing to refine existing methods and models.
Architecture reconstruction: We have developed technologies and practices to reconstruct an architecture from a system's implementation, and we carry out arranged reconstructions.
Reasoning about software quality attributes: We codify principles for reasoning about the quality attribute properties of architectures (such as performance, reliability, usability, and modifiability) using attribute-specific models.
Architectures for software product lines: Software architecture is one of the key reusable assets that form the basis of a software product line. We are codifying best architecture practices in the context of software product line practice and helping organizations apply them.
Obviously, no single methodology for design will fit every possible architecture. There are, however, several methodologies that are general purpose enough or that. The most widely design methods used by ALERIANT are:
- Object Oriented Design
- Design by modeling the problem
Design is an important activity for all except the most trivial of systems. It exerts a major influence upon the other phases of the development process, as well as upon system maintenance.
Design is a problem-solving, model-building process. Our design process records all the output from this stage and is created by a team of experts with experience in different industries and strength in specific areas that complement each other.
We follow these principles:
- Abstraction
- Modularity
- Information-hiding (from other processes)
- Completeteness
- Design for maintenance
- Design for reuse
- Verify every design
© 2006 Aleriant. All Rights Reserved
A Perlin Group Company
info@aleriant.com
