The analysis and design of large, complex systems mandates a formal methodology and supporting tools to assist system development teams throughout the system lifecycle. The multitude of personnel, the diversity of viewpoints, and the transient nature of personnel and technology in relation to the system lifecycle constrains the process by which 1) application domain requirements are acquired, analyzed and modeled, 2) a system architecture is derived from those requirements, 3) technology decisions are made and implementation progresses, and 4) the system is tested and maintained. A formal methodology for the entire lifecycle keeps team members coordinated and offers a mechanism to gauge progress. Large projects with many personnel responsible for making decisions require a formal process and automated support to assist team members in documenting their decisions. Traceability of decisions and documentation rationale is key to understanding the impact of decisions related to modeling, design, implementation, test, and maintenance. The SEPA effort proposes both a methodology and supporting tool suite (leveraging various knowledge representation and reasoning schemes) to facilitate development of object-oriented designs from evolving requirements. SEPA creates traceable, comprehensible, and extensible system design specifications based on requirements from system clients and domain experts. The funnel abstraction is chosen to represent the narrowing, refining, and structuring of user requirements into a system design. User inputs are refined by: (1) merging inputs from multiple sources, (2) distinguishing between inputs relating to system requirements and those relating to general domain knowledge, (3) constructing an object-oriented architecture, (4) mapping requirements to technology solutions, and (5) providing a framework for evaluating system design.