I have been doing software since 1980, working slowly and consistently towards OO that entire time. My specialty is architecture and design, although I sometimes like to keep my hands dirty. I am trying to raise the level of discipline in this business, mostly through the use of measurement as a means to make design decision.
I recently did some work in OO design measurement that led to the creation of a theory of objects built upon category theory. It's a theory only in the sense that it formally describes the structure of objects and classes, the relationships between them, and ways to manipulate that structure. I guess you could say I approach software from the inside out.
I am currently the lead designer on a large project (~$25M) that used to be OO. It is still use-case-driven and pattern-based, and the design is definitely OO, but the tool we are using to construct it can't really qualify. Works, though, and as good engineers, we use whatever works, right?
I can be reached via email at mailto://scottw@advsysres.com
Scott, do you mean CategoryTheory as in the branch of mathematics that explored similarities and deep relationships between seemingly independent branches of math such as Algebra and Topology? -- KielHodges
Scott, I was wondering what you meant when you said the project "used to be OO." Are you using a non-OO language or a code generation tool? -- MichaelFeathers
Scott is the lead designer on the project that I used to be the OO Methodologist on. We did a lot of work with Use Cases and C++ development of infrastructure elements before deciding to convert the implementation to a non-OO tool.
So, the project "used to be OO" in the sense that we were driving to a well-factored system that used lots of base classes and polymorphic behavior, but we are now implementing in a non-OO way.
Scott is keeping the good "OO thinking" alive in the currently evolving architecture, though... --DanRawsthorne