The document discusses various types of system modeling and architectural design in software development, including context, interaction, structural, and behavioral modeling. It highlights the benefits of architectural design, such as reusability and meeting nonfunctional requirements, and describes different architectural patterns like layered architecture, client-server architecture, and the Model-View-Controller (MVC) pattern. Additionally, it emphasizes the importance of architectural decisions in ensuring system performance, security, and availability.
The document discusses various types of system modeling and architectural design in software development, including context, interaction, structural, and behavioral modeling. It highlights the benefits of architectural design, such as reusability and meeting nonfunctional requirements, and describes different architectural patterns like layered architecture, client-server architecture, and the Model-View-Controller (MVC) pattern. Additionally, it emphasizes the importance of architectural decisions in ensuring system performance, security, and availability.
Hanoi University Types of Modeling • Context modeling – The system boundary: what is and is not part of the system being developed • Interaction modeling – Between user and system (inputs, outputs) – Between system and external systems – Between components of the target system • Structural modeling – The components of the system & their relationships • Behavioral modeling – How the system responds to triggers from environment. Types of Modeling • Context modeling – Level-0 data flow diagram (DFD), Use case diagram, System architectural model • Interaction modeling – Use case modeling, sequence diagram, • Structural modeling – ER modeling, class diagram • Behavioral modeling – Sequence diagram, state diagram Architectural design • Determining how a software system should be organized • Designing the overall system structure • Identifying the main structural components – …and the relationships between them • Output: an architectural model which consists of a set of communicating components. Example: architecture of a robot control system Example: a widely used three-tier architecture for websites Contexts of architectural design • Small context: – Architecture of individual programs – The way that a program is decomposed into components • Large context: – Enterprise systems that include systems (software/hardware), programs, and components Benefits of architectural design • Architecture may be used as a focus of discussion during stakeholders meeting • An architecture may be reusable across many systems • Can help with analysis of whether the system can meet its nonfunctional requirements Architectural design decisions Architecture re-use • Systems in the same domain often have similar architectures • Software product lines are built around a core architecture – With variants that satisfy particular customer requirements • There are well-known architectural patterns and models. Architecture & system characteristics • Performance – Localize critical operations and minimize communications. • Security – Use a layered architecture with critical assets in the inner layers. • Availability – Include redundant components and mechanisms for fault tolerance. Architectural patterns • An architectural pattern is a good design practice, which has been tried and tested in different environments. – Patterns should include information about when they are and when the are not useful. – Patterns may be represented using tabular and graphical descriptions. Layered architecture • System is organized into a set of layers, each of which provide a set of services. • Supports the incremental development of sub-systems in different layers. – When a layer interface changes, only the subsequent (next-in-line) layer is affected. A generic layered architecture Client-server architecture Repository architecture • Sub-systems must exchange data. This may be done in two ways: – Shared data is held in a central database or repository and may be accessed by all sub-systems – Each sub-system maintains its own database and passes data explicitly to other sub-systems • When large amounts of data are to be shared, the repository model is an efficient mechanism which is commonly used. Repository architecture example Call-and-Return Architecture • The program structure will be easy to modify and scale. • Two types: – Main program/subprogram architecture (see example in next slide) – Remote procedure call architecture: components are distributed across multiple machines over network. Call-and-Return Architecture The Model-View-Controller (MVC) pattern
• A type of layered architecture.
• Separates presentation and interaction from the system data. – Model: manages the system data and associated operations on that data. – View: defines and manages how the data is presented to the user. – Controller: manages user interaction (e.g., key presses, mouse clicks, etc.) and passes these interactions to the View and the Model. The Model-View-Controller (MVC) pattern Website architecture using MVC pattern Pipe and filter architecture • Functional transformations process their inputs to produce outputs. • When transformations are sequential, this is a batch sequential model which is extensively used in data processing systems. • Not very suitable for interactive systems. Example Pipe and filter architecture