QUIZ3_Reviewer_SE.docx
Document Details
Uploaded by Deleted User
Full Transcript
**Architectural Design** focuses on organizing a software system and defining its overall structure. It is the \`first stage in the software design process, acting as the link between requirements engineering and design by identifying the main structural components and their relationships. ***Types...
**Architectural Design** focuses on organizing a software system and defining its overall structure. It is the \`first stage in the software design process, acting as the link between requirements engineering and design by identifying the main structural components and their relationships. ***Types of Design and Decision*** ---------------------------------- - Performance - Security - Safety - Availability - Maintainability Architectural Views ------------------- Software architecture is used to document a design so that it can be used as a basis for more detailed design and implementation of the system. Software architecture views are representation of the overall architecture of a software system that are meaningful to one or more stakeholders. Four Fundamental Architectural Views 1. **Logical View,** which shows the key abstraction in the system as objects or object classes. 2. **Process view,** which shows how, at runtime, the system is composed of interacting process. This view is useful form making judgments about non-functional system characteristics such as performance and availability. 3. **Development view**, which shows how the software is decomposed for development 4. **Physical view,** which shows the system hardware and how software components are distributed across the processor in the system. Architectural Pattern --------------------- The idea of patterns as a way of presenting, sharing, and reusing knowledge about software systems has been adopted in several areas of software-engineering. The trigger for this was the publication of a book on object-oriented design patterns. **Layered Architecture --** organizes the system into layers, with related functionality associated with each layer. **Repository Architecture --** all data is system is managed in a central repository that is accessible to all system components. Components do not interact directly, only through the repository. **Client-Server Architecture --** the systems are presented as a set of services, with each service delivered by a separate server. Client are users of these services and access servers to make use of them. **Pipe and Filter Architecture --** the processing of the data in a system is organized so that each processing component (filter) is discrete and carries out one type of data transformation. The data flows (as in a pipe) from one component to another for processing. Application Architecture ------------------------ - Application systems are designed to meet business or organizational needs, and businesses within the same sector often use similar systems dues to shared functions, such as hiring invoicing, and managing accounts. - For example, in real-time systems, there might be generic architectural models of different system types, such as data collection systems or monitoring systems. Although instances of these systems differ in detail, the common architectural structure can be reused when developing new systems of the same type **Transaction processing applications --** are made to handle user queries to update or get data from databases **Information Systems --** all systems that involve interaction with a hard database can be transaction-based information systems. An information system allows controlled access to a large base of information. **Language Processing system --** translate one language into an alternative representation of the language and, for programming languages, may also execute the resulting code. Compilers translate a programming language into machine language. Design and Implementation - Software design and implementation is the stage in the software engineering process at which an executable software system is developed. - **Software design** is a creative activity in which you identify software components and their relationships, based on a customer's requirements. **Implementation** is the process of realizing the design as a program. Object Oriented Design ====================== - In the object-oriented design method, the system is viewed as a collection of objects. The state is distributed among the objects, and each object handles its state data. - The task defined for one purposed cannot refer to or change date of other objects. Objects have their internal data which represent their state. - For example, in a library Automation Software, each library representative may be a separate object with this data and function to operate on these data. 1.Objects 2\. Classes 3\. Messages 4\. Abstraction 5\. Encapsulation 6\. Inheritance 7\. Polymorphism ### ### System Context and Interaction - the first stage in any software design process is to understand the relationships between the software begin designed and its external environment ### Architectural Design - It refers to the process of defining a structured solution that satisfies all technical and operational requirements of a software system. - This process involves some basic decisions about the organization of the system, which includes its architectural styles and pattern as well as documenting the architecture from several perspectives to ensure clarity and understanding. **Architecture of date collection system** - The architecture of the data collection subsystem includes objects such as the Transmitter and Receiver, which manage communication. ### Object Class Identification - Object class identification is key in object-oriented design, involving pinpointing necessary classes and defining their interrelationships. - Multiple knowledge sources help discover object classes, starting from informal descriptions and refined using domain knowledge or scenario analysis. Implementation objects handle general services like searching and validity checking. ### Design Models - Design models illustrate objects or classes within a system and their relationships. - They act as a bridge between system requirements and implementation. In designing with UML, you should develop two 1. ***Structural models** These describes the statice aspects of the system, like object classes and their relationships. This include:* - Generalization (inheritance) - Uses/used-by relationships - Composition relationships 2. ***Dynamic models:** These show the system's behavior overtime, including interactions between objects and state changes. This covers:* - Sequence of services request - State changes triggered by interactions *Additionally, three specific UML model types are especially useful for adding detail to use case and architectural models:* 1. ***Subsystem Models:** these are a type of structural model that groups objects into logical subsystem, showing how they fit together.* 2. ***Sequence Models:** these are dynamic models that illustrate how objects interact with each other over time.* 3. ***State Machine Models:** these are also dynamic models that hos how objects change state in response to events.* ### Interface Specification An important part of any design process is the specification of the interfaces between the components in the design. You need to specify interfaces so that objects and subsystems can be designed in parallel. Once an interface has been specified, the developers of other objects may assume that interfaces will be implemented. Design Patterns =============== Design patterns are general, reusable solutions to common problem that arise during software design. Rather than being a detailed algorithm or step-by-step process, a design pattern provides an abstract framework that can be adapted to different situations. ***Key Elements of Design Patterns:*** - Name - Problem Description - Solution Description - Consequence and Trade-offs **C*lassification of Design Patterns:*** - Creational Patterns - Structural Patterns - Behavioral Patterns **Observer Design Pattern --** is a behavioral pattern that establishes a one-to-many relationship between objects, ensuring that when the state of one object (the subject) changes, all dependent objects (observers) are automatically informed and updated. ***Components of Observer Design Pattern*** - Subject - Observer - Concrete Subject - Concrete Observer Implementation Issues ===================== Implementation issues in software engineering involves several critical challenges during the development phase. Effective management of these issues is essential to ensure that software systems are reliable and meet user needs. ***Aspects of Implementation*** 1. Reuse 2. Configuration Management 3. Host-target development Open-Source development ======================= \- The source code of a software project is made publicly available for anyone to view, modify and contribute to. This promotes collaboration, where a community of developer's volunteers o volunteer work together to improve the software. ### Open-Source Licensing Open-Source licensing allows developers to share their source code while imposing restrictions through legally binding licenses. Although the code is freely available, the developer (individual or company) still owns it and can control its use and modification. ***Key Open-Source License Models:*** - GNU General Public License (GBL) - GNU Lesser General Public License (LGPL) - Berkeley Standard Distribution (BSD) ### Licensing Considerations When using open-source software in a product, it is crucial to understand the license type, as it may require your work to be open-sourced ***Things to consider for Managing Open-Sources Use:*** 1. Track Components 2. Understand License Types 3. Monitor Evolution 4. Educate Developers 5. Set Up Auditing 6. Engage with Community ### Open-Source as a Business Model Many companies leverage open-source software by offering add-on services like support, cloud-based solutions, and customizations. This mode provides free core software while generating revenue from services, appealing to user who prefer managed solutions