Q3. Tom Gilb says a lot about "Systems Engineering". So do you. Can you tell us more about Systems Engineering and why it's been so influential?
Systems Engineering as defined by the International Council on Systems Engineering - an interdisciplinary approach and means to enable the realization of successful systems. It focuses on defining customer needs and required functionality early in the development cycle, documenting requirements, then proceeding with design synthesis and system validation while considering the complete problem of operations, Cost & Schedule, Performance, Training and Support, Manufacturing, Test, and Disposal.
This paradigm integrates the management of the product or service with the development of the product or service. Product architecture and Program architecture are interconnected. Systems Engineering looks at the interfaces between the components first. This is a natural paradigm for discussing Coupling and Cohesion.
For Project Management and especially the management of agile software development projects, systems engineering provides the language and tools for making connections between the elements of a product in ways not found in the convention approaches.
The “tradeoffs” between system elements is the language of systems engineers. This implies the collective ownership, the shared code base, the “emerging” requirements now exist inside a larger “systems architecture.” Making it better – refactoring code – must consider the systems impact. The impact on the components that live behind the interfaces. So managing the interfaces – be they software or process – is critical to keeping the system moving toward its goal of being “done.”