George Fairbanks, TweetSoftware Architecture Consultant, Rhino Research
Biography: George Fairbanks
George Fairbanks has been teaching software architecture and object-oriented design for over a decade for companies including Kinetium, Valtech, and Platinum Technology. He has worked as an architect on projects with Morgan Stanley, Citigroup, and JPMorgan Chase. He is currently president of Rhino Research, a software architecture consulting and training company. His book, Just Enough Software Architecture, has earned excellent reviews from architects, developers, and readers on Amazon.
He holds a Ph.D. in Software Engineering from Carnegie Mellon University, where his dissertation introduced design fragments, a new way to specify and assure the correct use of frameworks through static analysis. He is the program chair for the SATURN 2012 software architecture conference and has been a program committee member for the Working International Conference on Software Architecture (WICSA), the International Conference on Software Maintenance (ICSM), and the European Conference on Software Architecture (ECSA). He has been a referee for IEEE Transactions on Software Engineering (TSE) and IEEE Software.
How hard is it for an architect to be a master-programmer, or a programmer to be a master-architect? One might assume this is easy because both programmers and architects work with the same materials (software) and have the same goal: the design and construction of quality software. In reality, it is quite hard because programmers and architects focus on different aspects of the same software system, aspects that are intricately interconnected. To be a master-builder means understanding programming and architectural aspects separately and being able to reason through the interconnections.
The essential problem is that while we have good descriptions of individual concepts (e.g., encapsulation, design patterns, code indentation style, application frameworks, modules, layers, typing, callbacks, functional programming, quality attributes, domain modeling, code invariants, architectural styles) we lack a clear understanding of how all those concepts fit together and how they interact on real projects.
Until we can relate all these concepts, programmers and architects will only occasionally succeed in being master-builders. This talk presents a conceptual model that relates many of these design concepts and implementation concerns and is a first step towards a clear description of how they all fit together.