Design is both the process of defining the architecture, components, interfaces, and other characteristics of a system or component and the result of that process. SWEBOK divides the software design process area into fundamentals, key issues, software structure and architecture, software design quality analysis and evaluation, software design notations, and software design strategies and methods.
Agile Development (16)
- Agile Methods is the label given to a number of programming methodologies: Scrum, Crystal, Adaptive, Feature-Driven Development, Extreme Programming (XP), Highsmith's Adaptive Software Development, Open Source, Context Driven Testing and Dynamic Systems Development Method (DSDM).
Client/Server Architectures (9)
- A class of Software Architecture where processing is distributed among one or more information requesters (clients) and one or more information providers (servers), as well as in the interfaces (network, protocols, middleware) between them. Client/Server Architectures include both two-tier, where clients talk directly to servers, and three-tier, where a third software component provides interface services between the clients and the servers. Three-tier architectures are further categorized by the type of middleware employed. Multi-tier is used to describe architectures with multiple layers or types of middleware. Client/Server architectures are in contrast to a mainframe architecture where the processing is self-contained.
Software Architecture (17)
- Software architecture is the structure of a program's or
systems' components, the interrelationships among the
components, and a set of rules that govern the interaction
and evolution of the program/system. Architectural Description Languages (ADL) are formal languages that describe or represent architectures. ADLs promote the understandability and reusability of architectural designs. Patterns are used to capture and organize design knowledge. See also Client/Server Architecture.