Change Vector Tracking | Glossary

Definition:

Change Vector Tracking is a reflective approach towards desigining large scale software, a software engineering practice to achieve a high level of software design agility. This practice is iterative and reflective in nature and can be used to evaluate different design options with respect to the most important nonfunctional requirement.

Change in business requirements is the only constant in software development process. The key philosophy behind Change Vector Tracking is to identify and model this change as a vector and track it to make good refactoring decisions. The resulting software is less rigid and less fragile thus leading to lesser maintenance cost. This practice aids in Emergent design and is more suited for teams who have embraced Agile Software Development frameworks.

Further Reading:

https://dl.acm.org/citation.cfm?id=3172888
http://www.agilegurugram.com/2016/assets/download/Presentation/RanjithThariyal_Change_Vector_Tracking_GSG.pdf

Emergent Design | Glossary

Definition:

David Cavallo came up with a phrase Emergent Design to describe a theoretical framework for the implementation of systemic change in education and learning system. He studied under Seymour Papert (one who phrased the term “Constructionism”) in Thailand to examine how the choice of design methodology contributes to the success and failure of education reforms. Cavallo with term Emergent Design explains that education systems cannot adapt effectively to technology change unless the education is rooted in the existing skills and needs of the local culture.

Emergent Design in Agile Software Development methodology is conceived,  where focus is on delivering small pieces of working code with business value, letting the design to emerge. With emergent design, a Development team implements a functionality X using best practices and proper test coverage and then move to develop and deliver functionality Y. When these functionality are built, development team looks at the common factor and refactor out the commonality allowing the design to emerge as organisation continuous to deliver functionality. With this development is left with the smallest set of the design needed, as opposed to have an anticipated design in advance. The end result is a simpler scalable design with a smaller codebase easy to understand. Change Vector Tracking is one of the practices which helps teams to adopt Emergent Design.

Further Reading:

Book: Emergent Design: The Evolutionary Nature of Professional Software Development
           By Scott L. Bain

https://en.wikipedia.org/wiki/Emergent_Design