Example: tourism industry

About the Tutorial

I i About the Tutorial Software Architecture typically refers to the bigger structures of a software system and it deals with how multiple software processes cooperate to carry out their tasks. Software Design refers to the smaller structures and it deals with the internal design of a single software process. By the end of this Tutorial , the readers will develop a sound understanding of the concepts of software architecture and design concepts and will be in a position to choose and follow the right model for a given software project. Audience This Tutorial is designed for all software professionals, architects, and senior system design engineers. Managers of architecture teams will also benefit from this Tutorial . Prerequisites There are no exact prerequisites for this Tutorial . Any software professional can go through this Tutorial to get a bigger picture of how high quality software applications and products are designed.

By the end of this tutorial, the readers will develop a sound understanding of the concepts of software architecture and design concepts and will be in a position to choose and follow the right model for a given software project. Audience This tutorial is designed for all software professionals, architects, and senior system design engineers.

Tags:

  About, Tutorials, About the tutorial

Information

Domain:

Source:

Link to this page:

Please notify us if you found a problem with this document:

Other abuse

Transcription of About the Tutorial

1 I i About the Tutorial Software Architecture typically refers to the bigger structures of a software system and it deals with how multiple software processes cooperate to carry out their tasks. Software Design refers to the smaller structures and it deals with the internal design of a single software process. By the end of this Tutorial , the readers will develop a sound understanding of the concepts of software architecture and design concepts and will be in a position to choose and follow the right model for a given software project. Audience This Tutorial is designed for all software professionals, architects, and senior system design engineers. Managers of architecture teams will also benefit from this Tutorial . Prerequisites There are no exact prerequisites for this Tutorial . Any software professional can go through this Tutorial to get a bigger picture of how high quality software applications and products are designed.

2 Copyright & Disclaimer Copyright 2016 by tutorials Point (I) Pvt. Ltd. All the content and graphics published in this e-book are the property of tutorials Point (I) Pvt. Ltd. The user of this e-book is prohibited to reuse, retain, copy, distribute or republish any contents or a part of the contents of this e-book in any manner without written consent of the publisher. We strive to update the contents of our website and tutorials as timely and as precisely as possible, however, the contents may contain inaccuracies or errors. tutorials Point (I) Pvt. Ltd. provides no guarantee regarding the accuracy, timeliness, or completeness of our website or its contents including this Tutorial . If you discover any errors on our website or in this Tutorial , please notify us at Software Architecture and Design ii Table of Contents About the Tutorial .

3 I Audience .. i Prerequisites .. i Copyright & Disclaimer .. i Table of Contents .. ii 1. SOFTWARE ARCHITECTURE AND DESIGN INTRODUCTION .. 1 Software Architecture .. 1 Software Design .. 2 Goals of Architecture .. 2 Role of Software Architect .. 3 Quality Attributes .. 4 Quality Scenarios .. 5 2. SOFTWARE ARCHITECTURE AND DESIGN KEY PRINCIPLES .. 7 Architectural Style .. 7 Common Architectural Design .. 7 Types of Architecture .. 8 Architecture Design Process .. 9 Key Architecture Principles .. 10 Key Design Principles .. 11 3. SOFTWARE ARCHITECTURE AND DESIGN ARCHITECTURE MODELS .. 13 UML .. 13 Architecture View Model .. 15 Architecture Description Languages (ADLs) .. 17 4. SOFTWARE ARCHITECTURE AND DESIGN OBJECT-ORIENTED PARADIGM .. 19 Software Architecture and Design iii Introduction to Object-Oriented Paradigm .. 19 OO Analysis.

4 22 Object-Oriented Design .. 23 5. SOFTWARE ARCHITECTURE AND DESIGN DATA FLOW ARCHITECTURE .. 25 Batch Sequential .. 25 Pipe and Filter Architecture .. 26 Process Control Architecture .. 28 6. SOFTWARE ARCHITECTURE AND DESIGN DATA-CENTERED ARCHITECTURE .. 30 Types of Components .. 30 Repository Architecture Style .. 31 Blackboard Architecture Style .. 32 7. SOFTWARE ARCHITECTURE AND DESIGN HIERARCHICAL 35 Main-subroutine .. 35 Master-Slave .. 36 Virtual Machine Architecture .. 38 Layered Style .. 39 8. SOFTWARE ARCHITECTURE AND DESIGN INTERACTION-ORIENTED ARCHITECTURE .. 41 Model-View-Controller (MVC) .. 41 Presentation-Abstraction-Control (PAC) .. 44 9. SOFTWARE ARCHITECTURE AND DESIGN DISTRIBUTED ARCHITECTURE .. 48 Client-Server Architecture .. 50 Multi-Tier Architecture (n-tier Architecture) .. 52 Broker Architectural Style .. 54 Service-Oriented Architecture (SOA).

5 56 Software Architecture and Design iv 10. SOFTWARE ARCHITECTURE AND DESIGN COMPONENT-BASED ARCHITECTURE .. 59 What is a Component? .. 59 Principles of Component Based Design .. 60 Component-Level Design Guidelines .. 61 Conducting Component-Level Design .. 62 11. SOFTWARE ARCHITECTURE AND DESIGN USER INTERFACE .. 64 Graphical User Interface .. 64 Design of User Interface .. 65 User Interface Development Process .. 66 Design Considerations of User Interface .. 67 12. SOFTWARE ARCHITECTURE AND DESIGN ARCHITECTURE TECHNIQUES .. 70 Iterative and Incremental Approach .. 70 Architecture Review .. 72 Communicating the Architecture Design .. 73 Software Architecture and Design 1 The architecture of a system describes its major components, their relationships (structures), and how they interact with each other. Software architecture and design is a process that includes several contributory factors such as Business strategy, quality attributes, human dynamics, design, and IT environment.

6 We can segregate Software Architecture and Design into two distinct phases: Software Architecture and Software Design. In Architecture, nonfunctional decisions are cast and separated by the functional requirements. In Design, functional requirements are accomplished. Software Architecture Architecture serves as a blueprint for a system. It provides an abstraction to manage the system complexity and establish a communication and coordination mechanism among components. It defines a structured solution to meet all the technical and operational requirements, while optimizing the common quality attributes like performance and security. It involves a set of significant decisions About the organization related to software development and each of these decisions can have a considerable impact on quality, maintainability, performance, and the overall success of the final product.

7 These decisions comprise of: o Selection of structural elements and their interfaces by which the system is composed. 1. Software Architecture and Design Introduction Software Architecture and Design 2 o Behavior as specified in collaborations among those elements. o Composition of these structural and behavioral elements into large subsystem. o Architectural decisions align with business objectives. o Architectural styles that guide the organization. Software Design Software design provides a design plan that describes the elements of a system, how they fit, and work together to fulfill the requirement of the system. The objectives of having a design plan are as follows: To negotiate system requirements, and to set expectations with customers, marketing and management personnel. Act as a blueprint during the development process.

8 Guide the implementation tasks, including detailed design, coding, integration, and testing. It comes before the detailed design, coding, integration, and testing and after the domain analysis, requirements analysis, and risk analysis. Goals of Architecture The primary goal of the architecture is to identify requirements that affect the structure of the application. A well-laid architecture reduces the business risks associated with building a technical solution and builds a bridge between business and technical requirements. Some of the other goals are as follows: Expose the structure of the system, but hide its implementation details. Realize all the use-cases and scenarios. Try to address the requirements of various stakeholders. Software Architecture and Design 3 Handle both functional and quality requirements. Reduce the goal of ownership and improve the organization s market position.

9 Improve quality and functionality offered by the system. Improve external confidence in either the organization or system. Limitations Software architecture is still an emerging discipline within software engineering. It has the following limitations: Lack of tools and standardized ways to represent architecture Lack of analysis methods to predict whether architecture will result in an implementation that meets the requirements. Lack of awareness of the importance of architectural design to software development Lack of understanding of the role of software architect and poor communication among stakeholders. Lack of understanding of the design process, design experience and evaluation of design Role of Software Architect A Software Architect provides a solution that the technical team can create and design for the entire application.

10 A software architect should have expertise in the following areas: Design Expertise Expert in software design, including diverse methods and approaches such as object-oriented design, event-driven design, etc. Lead the development team and coordinate the development efforts for the integrity of the design. Should be able to review design proposals and tradeoffs among them. Domain Expertise Expert on the system being developed and plan for software evolution. Assist in the requirement investigation process assuring completeness and consistency. Coordinate the definition of domain model for the system being developed. Technology Expertise Software Architecture and Design 4 Expert on available technologies that helps in the implementation of the system. Coordinate the selection of programming language, framework, platforms, databases, etc.


Related search queries