lecture 4 Introduction to Architectural Design The first set of slides introduces software architecture and the architectural design process highlighting that architecture encompasses the set of significant design decisions about the organization of a software system Design and Creativity The slides explore the debate on whether design can be taught or if it is inherently creative There are two broad perspectives Methodical approach Uses predefined strategies and tools to guide design providing a systematic way of solving problems Creativity based approach Leverages intuition and innovation often leading to unique but higher risk designs Balancing these approaches is essential for successful architecture Engineering Design Process The architectural design process in engineering follows four main stages 1 Feasibility study Exploration of viable design concepts 2 Preliminary design Narrowing down and refining the concepts 3 Detailed design Finalizing the technical details and specifications 4 Planning for production Planning how to implement and maintain the system The challenge is identifying feasible designs early in the process Alternative Design Strategies Different strategies for architectural design are presented Cyclic design Revisiting and refining previous stages of design Parallel design Developing and evaluating multiple designs concurrently Incremental design A stepwise refinement gradually improving the design over iterations Architectural Styles Overview Architectural styles are a collection of design patterns that solve common design problems They provide a framework for organizing software and promoting certain qualities like performance security or modifiability Common architectural styles include Layered architecture Divides the system into layers where each layer provides services to the layer above it Pipe and filter architecture Breaks down data processing into a series of filters transformations and pipes data flows Client server architecture Splits functionality into clients that request services and servers that provide them Microservices architecture Comprises independently deployable services each responsible for a specific business capability Architectural Design Decisions Architectural design decisions are critical because they affect the system s overall structure and its ability to meet quality requirements like performance modifiability and security Decisions include Component selection Choosing the primary building blocks of the system Connector choices Defining how components interact and exchange data Configuration Arranging components and connectors to achieve desired behaviors 11Non Functional Requirements NFRs in Architecture The slides emphasize the importance of non functional requirements NFRs in architectural design NFRs include at tributes like performance security maintainability and scalability A good architecture must balance these requirements with functional requirements Architectural Viewpoints An architecture can be viewed from different perspectives viewpoints each focusing on specific concerns Logical viewpoint Focuses on the system s functionality and how components interact Physical viewpoint Deals with the deployment of components on hardware Process viewpoint Concentrates on how runtime processes are managed and communicate Development viewpoint Concerned with the organization of software components in the development environ ment Component and Connector Views The architecture must clearly define the roles of components and connectors Components are independent units of functionality while connectors are the mechanisms through which these components interact Common connectors include Procedure calls Data streams Message passing Shared memory Quality Attributes and Tactics Quality attributes such as performance security and modifiability are essential to architectural success To achieve these architects apply tactics which are reusable strategies for achieving quality goals Performance tactics Techniques like load balancing caching and concurrency management Security tactics Techniques such as authentication authorization and encryption Modifiability tactics Techniques like modularization and separation of concerns Architectural Patterns Architectural patterns are best practices for structuring software systems offering solutions to common problems Key architectural patterns discussed include Model View Controller MVC Separates concerns by dividing the system into three parts model data view UI and controller logic Layered architecture Promotes separation of concerns by organizing the system into layers that communicate with adjacent layers Repository architecture Centralizes data management where all data is stored in a common repository accessed by various components Design Evaluation Techniques The document discusses several techniques for evaluating architectural designs Scenario based evaluation Assessing the design s ability to handle real world scenarios Simulation Modeling the system to simulate how it will perform under different conditions Prototyping Developing a prototype to test key aspects of the architecture
View Full Document