Skip to main content

skip to main content

developerWorks  >  Architecture  >

Architectural Manifesto: The benefits of the software architecture

Is the software architecture essential to your project? You bet it is!

developerWorks
Document options

Document options requiring JavaScript are not displayed


Rate this page

Help us improve this content


Level: Introductory

Mikko Kontio (mikko.kontio@softera.fi), Production manager, Softera

06 Apr 2005

Enough about the how of designing a software architecture! This month, Mikko explains why you would want to do it in the first place. Find out how the software architecture benefits different phases of the development process, as well as various end-product stakeholders.

For the past several months I've focused on designing a software architecture. I've talked about requirements gathering, documentation, integration with the development process, and more. One thing I haven't discussed, however, is the benefits of the software architecture. So, in this month's column I'll focus more on the why than the how of designing a software architecture.

I'll explain the benefits of the software architecture in two ways: first with regard to how it works with the overall design and development process, and second with regard to how it benefits various stakeholders in the final product, including investors, managers, and the development team.

The article concludes with a simple overview of these benefits, which you can use as a guide for integrating architectural design into your company's development process.

I'll start with a look at how the software architecture positively impacts a development project at different design phases. As in previous articles, I'll use the Rational Unified Process® (RUP®) design process as a framework. I'll add an additional phase, however; the phase before the project begins.

Before the project begins

If your company has an established architectural process or product-line architecture, it serves as a framework for the project before it even begins. The benefits of having architectural guidelines or a product line architecture in place before the project's inception are threefold:

  • First, the architectures serve as a guideline for planning and scheduling projects. Having some basic services defined and in place (for example, a single-sign-on service) makes building new services a lot faster.

  • Second, the architectural guidelines provide a framework for discussing possibilities such as open interfaces (APIs), mobile usage, and open source components or software. The architecture gives your company a better foundation for proceeding with development.

  • And third, the architecture serves as a framework for discussion with subcontractors. Having set architectural guidelines makes their offers similar and easier to manage and compare.


Back to top


At the inception phase

As you will recall, it is at the inception phase that the requirements specification is started and the architectural candidates designed. The basic idea of the inception phase is to get as good an understanding of the project as possible. After the inception phase the project and steering groups should have a solid idea of the project. At that point it is easier to decide whether to proceed to the next phase or end the project.

The architectural design is very helpful when it comes to estimating how much work the project will require. After you've done that, it is easy to plan the project timetable and calculate its overall cost. If the expenses are too high you can design an alternative architecture.

If the project contains requirements that are considered risky, you can test them by building prototypes or proof of concepts. In some cases you might choose to test the whole architecture by building a simple prototype which, for example, contains all the layers of the designed architecture. If building the prototype is easy and requires about the estimated time, then you know that the whole system and its plans are on solid ground. The prototype and documentation also serve as a working example for the designers and developers.

Using a standard architecture also facilitates reuse. For example, the architect will likely know what components have been built and utilized for other projects in the company and can easily see where they might fit into the current one. Reusing existing components (or even best practices) can speed up the development process, saving time and money.

Perhaps most importantly at the inception phase, the architecture provides a framework for communication among project stakeholders. In some cases, the customer doesn't really understand use cases or requirements documentation, so the architectural drawings are the first artifacts they can really talk about.



Back to top


At the elaboration phase

At the elaboration phase the requirements are finished and the focus shifts to the actual design of the system. In this phase you begin to see the benefits of the work that went into planning the architecture in the inception phase.

The software architecture serves as a framework for elaboration, both suggesting and limiting the direction the design should go in. One of its primary benefits is that it prevents too much diversity in design decisions. If you present the same problem to two software designers, each will come up with a different solution, and this is also true of coders. A well-documented software architecture accompanied with a set of design guidelines helps to ensure project consistency at all levels.

Having an architectural design in place lets you manage even very large projects in a consistent and reliable way, regardless of whether you're designing a single system or a product family.



Back to top


At the construction phase

At the construction phase the detailed designing is done and it is time to implement the system. Having a set of implementation details in place ensures a smoother implementation process. The presence of the architecture at earlier phases will have ensured some consistency in the implementation and design details, which in turn will make it easier to test different parts of the system.

The architecture also makes it easier for the project manager to plan for the simultaneous implementation of different parts of the system. Components that communicate through interfaces can be easily implemented at the same time by different teams or developers.



Back to top


At the transition phase

At the transition phase most of the design and development teams' work is done. In this final phase the software or system is transferred to the client.

The architecture will be most helpful at this phase if and when the system needs to be integrated into other systems. Designing the integration is easy if the system's interfaces and structures can be easily found and understood.

The architectural information serves as a framework for explaining the system to the client. It serves as a starting point for sales material as well as presentation material for seminars, conferences, and other marketing environments.



Back to top


Benefits to stakeholders

In addition to providing a reliable backbone for the overall development process, the software architecture can be a boon to various project stakeholders. Knowing how the software architecture will benefit individual stakeholders makes it an easier sell for everyone. In the sections that follow, I'll explain how the software architecture could serve as a valuable interface for your company's management and development teams, as well as for customers and third-parties.



Back to top


The management team

The primary benefit of the software architecture, in any capacity and for any stakeholder, is that it works as a way to communicate. It acts as an interface between different parts of the project and different members of the project team, including the clients and third-parties.

For management, the architecture can provide a relatively simple view into a potentially complex system. Business facets can be isolated, analyzed, and discussed without the need to discuss technological issues. Roadmaps can be drawn up based on such discussion, and decisions made. For one example, the overview of the software architecture is a much more accurate tool than use cases alone for estimating the cost of a project, both in terms of money and of time.

The software architect should also be a good ally to the management team, providing an overview of the system technology and its business effects.



Back to top


The development team

Obviously, it is the development team that stands to benefit the most from a well-made software architecture. The architecture works as a project framework and guidebook throughout the development process. It gives the team an overview of the project from the beginning, and a starting point for elaboration. Someone, the architect, has already dug out all the important features and drawn the overall structure of the system.

With the architecture in place, the team can easily divide up different parts or components of the system. These parts can then be designed and implemented simultaneously, in an organized fashion. In fact, a smart architect will probably have made it a requirement that system components be developed simultaneously, and planned out how it would happen well before the construction phase.



Back to top


Clients

A well-designed architecture acts as a guarantee for the client that the software also has been well designed and implemented. The documentation of the architecture assures the client that when he needs detailed documentation (or product overviews) he can expect quality material. If the client is concerned about integration or scalability issues he will be particularly reassured by the presence of a solid software architecture and equally well-thought-out documentation.



Back to top


Third parties

Your company might use a third-party company to resell, integrate, operate, or maintain your end products, or train potential clients or users in its use. For any of these purposes you will have to provide the third party with excellent background information, and possibly training. As always, the software architecture serves as an excellent starting point for any of these purposes.



Back to top


A benefits checklist

As promised, this month's column concludes with a simple checklist of the benefits of the software architecture at each phase of the design process and for various project stakeholders.

Benefits in the development process

Here's an overview of the benefits of the software architecture at each of the five phases of the development process.

1. Before the project begins

  • An enterprise architecture helps to control and steer simultaneous projects.
  • Attaching guidelines to offer requests and evaluating them is easier.
  • Planning and scheduling projects is easier.
  • The architecture provides a framework to discuss and evaluate possible solutions before inception.

2. At the inception phase

  • Eliminates risks by encouraging prototypes.
  • Aids in estimating timetables.
  • Increases the potential for component reuse and implementing best practices.
  • Provides a solid foundation for the project.
  • Enables communication among project stakeholders.

3. At the elaboration phase

  • Serves as a starting point for the detailed design.
  • Serves as a manual for design decisions.

4. At the construction phase

  • Makes controlling the implementation easier.
  • Enforces similarity in design decisions across different parts of the system.
  • Enables simultaneous implementation of different parts of the system.
  • Serves as a basis for architecture trials.

5. At the transition phase

  • Makes integrations to other systems easier.
  • Is a useful, consistent aid for sales and presentation material.

Benefits to stakeholders

Here's a listing of the benefits of the software architecture to particular project stakeholders.

The management team

  • Serves as an interface for various stakeholders to discuss the system.
  • Increases the accuracy of time/cost estimations.
  • The architect is an ally and informational resource to the management team.

The development team

  • Provides an excellent overview of the system.
  • Provides a guidebook of design issues.
  • Enables the development of different parts of the system simultaneously.

The client

  • A well-designed architecture guarantees a well-designed and implemented end-product.
  • Makes planning integrations easier.

Third-party companies

  • Serve as a framework for training, technical support, and so on.
  • Provide a standard, consistent overview of the system software.



Resources



About the author

Mikko Kontio works as a production manager for the leading-edge Finnish software company, Softera. He holds a Masters degree in computer science and is the author and co-author of several books, the latest being Professional Mobile Java with J2ME, published by IT Press. Mikko can be reached at mikko.kontio@softera.fi.




Rate this page


Please take a moment to complete this form to help us better serve you.



YesNoDon't know
 


 


12345
Not
useful
Extremely
useful
 


Back to top