Welcome to my blog!
This is my professional blog for everything related to my professional life and software engineering experiences, thoughts, experiments and opinions.
Who am I?
My name is Jeffrey Ridout. I was born in Brussels on March 31st 1979. Originally from British heiritage I lived in the Netherlands for 21 years before I moved to my current location, Sweden.
What am I?
I believe that what I do and learn is not part of who I am, so therefore always split the two.
I studied Software Engineering from 2001 to 2005 at Hogeschool Rotterdam in the Netherlands.
Why this blog?
I felt that I needed to separate my professional experiences, thoughts, experiments and opinions from my private/family life. Being able to change the blogging back-end to better suit Software Engineering needs was also a nice bonus. (Why have syntax highlighting when talking about kids ‘n cake?)
What is “Extensible”?
Extensible is defined in Wikipedia as:
In software engineering, extensibility (sometimes confused with forward compatibility) is a system design principle where the implementation takes into consideration future growth. It is a systemic measure of the ability to extend a system and the level of effort required to implement the extension. Extensions can be through the addition of new functionality or through modification of existing functionality. The central theme is to provide for change while minimizing impact to existing system functions.
Although forward compatibility and extensibility are similar, they are not the same. A forward compatible system can accept data from a future version of itself and pick out the “known” part of the data. An example is a text-only word processor ignoring picture data from a future version. An extensible system is one that can be upgraded to fully handle the new data in the newer input format. An example is the above mentioned word processor that can be upgraded to handle picture data.
In systems architecture, extensibility means the system is designed to include hooks and mechanisms for expanding/enhancing the system with new capabilities without having to make major changes to the system infrastructure. A good architecture provides the design principles to ensure this—a roadmap for that portion of the road yet to be built. Note that this usually means that capabilities and mechanisms must be built into the final delivery which will not be used in that delivery and, indeed, may never be used. These excess capabilities are not frills, but are necessary for maintainability and for avoiding early obsolescence.
Extensibility can also mean that a software system’s behavior is modifiable at runtime, without recompiling or changing the original source code. For example, a software system may have a public Application Programming Interface that allows its behavior to be extended or modified by people who don’t have access to the original source code.
Although usually applied to engineered systems involving software, it can be applied to any type of engineering. Houses can be built with future extensions in mind. The Prince Edward Viaduct located in Toronto, Ontario, Canada was built to accommodate a future subway line.
Though the application to software is relatively new, the word has been a rare but valid part of English for a long time. The Oxford English Dictionary cites examples going back to the 17th century.
For me extensibility means, thinking ahead without planning the future…