Architecture & Design

Architecture and design are fundamental for any software system. The architecure determines whether or not the system will be easily extensible, modular, and possible to improve in the future. A weak or flawed design often leads to rewrites in later releases, when new functionality cannot be added in a straightforward way. Performance and scalability issues also often arise as the result of architectural weaknesses.

Investing time and effort in creating a proper design is important, as resolving such issues can be hard and costly once a system has been put into production use. Creating a solid system, however, requires a high level of expertise and experience in software development.

Services for Software Purchasers

Although there is no way to completely eliminate the risk in software development projects, it can be reduced and controlled in various ways. Thorough and independant architectural validation can detect omissions and shortcomings early on, and continous control of the implementation make sure that the proposed architecture is realized in an appropriate way. Many software purchasers also find it very helpful to have access to an independant source of technical information about the project.

1. Requirement Analysis – Before launching your project, it is important to make sure that all parties fully understand the requirements of the system to be built. I analyze system requirements and contractor proposals to make sure that as many issues as possible are detected and resolved as early as possible.
2. Project Validation – Once a project has been started, it's progress should be monitored continuously to detect any issues or delays as soon as possible. I offer complete or partial technical validation of entire projects, both regarding their architecture and the actual implementation.

Services for Software Contractors

Software development under fixed price contracts is becoming increasingly common. In general, this favors the purchasers by moving some of the risk exposure to the contractor. In order to mitigate this, it is becoming increasingly important for software projects to minimize their development risks in various ways.

Architectural risks can be significantly lowered through peer reviewing and prototyping. Having experienced software architects validating and improving upon a proposed architecture can save huge efforts in later stages. Testing critical components in prototypes can also alert the project to possible problems early on.

1. Mentoring – Validating a design by only consulting persons within the project may not always bring forth all issues. I analyze system requirements, proposed architectures, and existing implementations for possible weaknesses and flaws. In doing so I actively work with your developers to find suitable solutions and improvements given time and budget constraints.
2. Collaborative Design – It is not always possible to find available and experienced architects within your organization. I can provide a solution by working in collaboration with your top developers to create a system architecture and design. In this way, you are also guaranteed that competence on the solution stays within your organization.
3. System Development – From time to time it can be very valuable to use temporary additional resources in your project. I can offer a wide range of competence in system development and software engineering, making it possible for me to fit various (or combined) roles.