Architecture Refactoring

architecture_toolsRefactoring is one of the most successful approaches to changing existing software. It is the approach based on systematic transformations of the initial code. Refactoring is the change in the internal structure of software aimed at facilitating the understanding of how it works and simplifying the modification without tackling the observed behavior. It is commonly understood that during a software development process the system design is created first and only then is its code is written. In the course of time the code is modified and the system wholeness, i.e. the correspondence of its structure to the initial design slowly gets worse. The further development of the system gradually shifts from a directed, guided activity to hacking. Refactoring appears to be quite the opposite practice. With its help any chaotic and misguided project can be transformed into a well-designed code. Each step of the process is quite simple. For example, one of the steps involves transferring the field or method from one class into another, class separation, etc. However, the total effect of such minor and seemingly insignificant changes proves to be cumulative and can radically change a project for better. The process of refactoring is a direct opposite to a gradual system code degradation.

For documenting and cataloguing refactoring methods, one uses semiformal notation in which every method is described by means of a so-called pattern. Any pattern describes and names typical tasks which constantly appear in the process of work, and also the principle of their solution. As a result, such solutions can be used over and over again. Patterns name, demarcate and identify key aspects of a general solution structure. Patterns also form the dictionary of solutions to a certain problem area and allow two specialists in that field to name typical solutions and understand each other without explaining the core of solutions.

The refactoring of an object-oriented code has proved to be an efficient means of solving tasks of program evolution and support. However, presently there are practically no studies dealing with refactoring at a higher level of abstraction – the level of software architecture. Correspondingly, the transfer of this methodology to a higher level of abstraction is interesting.

Leave a Reply

Security code Enter security code!