Over a twenty-year engineering career, Steve has been involved in the design and construction of embedded real-time software, distributed systems, and information systems for manufacturing, telecommunications, and financial services. As an architect, his practice focuses on information systems and software components that are central to
his clients’ product-line architecture or customer-value proposition. Frequently, clients are including software components in their products or expanding their value proposition to include capabilities based on information systems for customer relationship management, supply-chain integration, billing and account services, customer service, field support, and mass customization of products and services.
Broadly, software and systems architecture is about partitioning systems into components and then understanding, analyzing, and allocating requirements to those components. The components, an IT architect’s building blocks, include functions, connectors, and coordination mechanisms. An architect guides the choice of components, ensuring those selected are appropriate for the types of services being implemented and the business results to be achieved. In particular, the architect recommends patterns or combinations of components supporting important types of architectural qualities such as flexibility, performance, capacity, reliability, security, maintainability, availability, and serviceability. Often, the architect’s recommendations must include middleware solutions capable of integrating architecturally incompatible components.
A properly designed architecture can be an important lever in meeting customer and market place commitments. A sound approach to architecture can allow a team to address its greatest technical risks early in the development process. It can also provide the flexibility needed to manage release content, technical risks and time-to-market commitments. Finally, a solid architecture can provide a common platform for a large family of products or services, better meeting a wide range of evolving customer requirements.
Steve has been involved in the design of distributed systems since the early 1980s when he developed a simple application server for an experimental distributed operating system and several design patterns for fault-tolerant software. His contributions to the field of IT architecture include several influential papers on reconstructing, evaluating, and reengineering architectures for legacy systems, on managing product-line architectures, and on defining architectures for shared services and program families. Recent collaborations include work with the Software Engineering Institute on documenting and evaluating Enterprise IT architectures.
Steve’s consulting work centers on aligning the architecture of and information or software system with clients’ business needs and capabilities. When appropriate, he will help clients define their overall product-line architecture or customer-value proposition. In the service of our clients, Steve can apply a number of analytical tools including
| A method for scoping product-lines, including techniques for defining families of related IT services or software components; | |
| A method for defining a shared architecture, including a platform common to all members of the program family along with the a means for extending that platform to generate specific programs as might be required to meet the range of requirements presented by a customer-segmentation model or to meet specific customer requests; | |
| Methods for deriving precise statements of required architectural qualities from more general descriptions of business needs, strategies, and capabilities, for using those requirements as the basis for an assessment of current gaps, for describing an improved "to be" architecture, and for developing a plan for the phased introduction of architectural improvements; | |
| Processes for applying a disciplined approach to the engineering and management of architectural projects; | |
| Methods for performing architectural trade-off analyses, an activity central to improving existing architectures or defining new ones; | |
| Techniques for reconstructing and characterizing architectures of existing systems, often a necessary first step to an evaluating and re-engineering that system; and | |
| Methods for evaluating an existing architecture to determine its strengths and weaknesses, particularly given changes in the client’s business needs and in the available technologies. |
Some of the architectures that Steve has designed or evaluated include
| Flexible designs and migration plans providing options for staged investments in which work could be expanded, contracted, accelerated or deferred; | |
| Performance-sensitive designs in which response time, turn around time, capacity, and throughput were evaluated using measurement, models and simulations; | |
| Designs in which strong requirements for reliability, availability and serviceability were evaluated through measurement, modeling and testing based on operational profiles; and | |
| Designs addressing security requirements for electronic commerce. |