Software Engineering Education Knowledge (SEEK) Areas



Fundamentals The fundamentals of software engineering consist of the theoretical and scientific underpinnings describing attributes of the artifacts that software engineering produces, the mathematical foundations to model and facilitate reasoning about these artifacts and their interrelations, and the first principles that when applied produce predictable results; i.e., products with the desired attributes. A central theme is engineering design, a decision-making process of iterative nature, in which the "basic sciences", mathematics, and engineering sciences are applied to optimally convert resources to meet a stated objective.
Professional Practice Professional Practice is concerned with the knowledge, skills, and attitudes that software engineers must possess to practice software engineering in a professional, responsible, and ethical manner. The study of professional practices includes the areas of technical communication, group dynamics and psychology, and social and professional responsibilities.
Requirements Software requirements identify the purpose of a system and the contexts in which it will be used. Requirements act as the bridge between the real world needs of users, customers and other stakeholders affected by the system and the capabilities and opportunities afforded by software and computing technologies. The construction of requirements includes an analysis of the feasibility of the desired system, elicitation and analysis of stakeholders' needs, the creation of a precise description of what the system should and should not do along with any constraints on its operation and implementation, and the validation of this description or specification by the stakeholders. These requirements must then be managed to consistently evolve with the resulting system during its lifetime.
Design Software Design is concerned with issues, techniques, strategies, representations, and patterns used to determine how to implement a component or a system. The design will conform to functional requirements within the constraints imposed by other requirements such as resource, performance, reliability, and security. This area also includes specification of internal interfaces among software components, architectural design, data design, user interface design, design tools, and the evaluation of design.
Software Construction This area is concerned with knowledge about the development of the software components that are identified and described in the design documents. This area includes knowledge translation of a design into an implementation language, the development and execution of component tests, and the development and use of program documentation.
Software Verification and Validation Software Verification and Validation uses both static and dynamic techniques of system checking to ensure that the resulting program satisfies its specification and that the program as implemented meets the expectations of the stakeholders. Static techniques are concerned with the analysis and checking of system representations throughout all stages of the software life cycle while dynamic techniques only involve the implemented system.
Software Evolution Software evolution provides cost-effective mission support during pre- and post-delivery stages while maintaining acceptable and satisfactory behavior and validity of assumptions. Such support requires pre- and post-delivery activities for preparation of each of a succession of versions or upgrades (releases) that constitute the evolving system. These activities require planning, logistics, metrics support, regression testing (including test library management) and complexity control/reduction (including redundancy removal). The techniques used to support these activities include program comprehension, successor release planning, needs and changes identification, re-engineering, reverse engineering, maintenance review, migration and system replacement /retirement.
Software Process Software Process is concerned with knowledge about the description of commonly used software life-cycle process models and the contents of institutional process standards; definition, implementation, measurement, management, change and improvement of software processes; and use of a defined process to perform the technical and managerial activities needed for software development and maintenance.
Software Quality Software Quality is a pervasive concept that affects, and is affected by all aspects of software development, support, revision, and maintenance. It encompasses the quality of work products developed and/or modified (both intermediate and deliverable work products) and the quality of the work processes used to develop and/or modify the work products. Quality work product attributes include usability, reliability, safety, security, maintainability, flexibility, efficiency, performance and availability.
Software Management Software management is concerned with knowledge about the planning, organization, and monitoring of all software life cycle phases. Management is critical to ensure that software development projects are appropriate to an organization, work in different organizational units is coordinated, software versions and configurations are maintained, resources are available when necessary, project work is divided appropriately, communication is facilitated, and progress is accurately charted.

Last edited:  02/9/2003 4:30 PM