Evolving Software Architecture
http://jazoon.com/Conference/Thursday-23-June/Micha-Riser
Software Architecture using and MDSD (Model Driven Software Development) has become mainstream, so have agile methods. But despite the many advances in the field, evolving software is still a big challenge: many software projects fail the promise to deliver true software that can be extended and modified according to the ever changing business needs.
This talk addresses the challenge of evolving software, looks at current approaches and their shortcomings, and lays out an approach to design and implement Evolving Software Architecture: The shown approach makes heavy use Domain-Driven Design and Code Generation.
Requirements change – anytime. That is a given. And as long as your software's architecture supports those changes, you're fine. But imagine your architecture needs to evolve as well in order to support the necessary changes. Traditionally, when your software has reached the size of a productive system, you need to make a big effort to refactor all classes such that they fit the new design. But as the refactoring costs time and does not bring any immediate benefit, it will never happen. If however, the whole structure of your software is generated by a code generator, all you need is to adapt the code templates to the change of the architecture and the refactoring becomes feasible again!
Evolving Software Architecture embraces change as a given and acts from the premise that everything can change, even a software’s most fundamental concepts laid out in its architecture. Therefore, we must be able to repeatedly and continuously evolve software and its design.
Software Architecture using and MDSD (Model Driven Software Development) has become mainstream, so have agile methods. But despite the many advances in the field, evolving software is still a big challenge: many software projects fail the promise to deliver true software that can be extended and modified according to the ever changing business needs.
This talk addresses the challenge of evolving software, looks at current approaches and their shortcomings, and lays out an approach to design and implement Evolving Software Architecture: The shown approach makes heavy use Domain-Driven Design and Code Generation.
Requirements change – anytime. That is a given. And as long as your software's architecture supports those changes, you're fine. But imagine your architecture needs to evolve as well in order to support the necessary changes. Traditionally, when your software has reached the size of a productive system, you need to make a big effort to refactor all classes such that they fit the new design. But as the refactoring costs time and does not bring any immediate benefit, it will never happen. If however, the whole structure of your software is generated by a code generator, all you need is to adapt the code templates to the change of the architecture and the refactoring becomes feasible again!
Evolving Software Architecture embraces change as a given and acts from the premise that everything can change, even a software’s most fundamental concepts laid out in its architecture. Therefore, we must be able to repeatedly and continuously evolve software and its design.