CSE 303 – Software Design and Architecture

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

COMP1007 Introduction to Requirements Analysis © Copyright De Montfort University 2002 All Rights Reserved COMP1007 Introduction to Requirements Analysis.
Object-Oriented Software Development CS 3331 Fall 2009.
© 2010 Bennett, McRobb and Farmer1 Use Case Description Supplementary material to support Bennett, McRobb and Farmer: Object Oriented Systems Analysis.
Design Concepts and Principles
Chapter 22 Object-Oriented Systems Analysis and Design and UML Systems Analysis and Design Kendall and Kendall Fifth Edition.
Chapter 1 Object Oriented Analysis and Design. UML, Patterns, and Object-Oriented Analysis and Design  The essential skills for the creation of well-designed,
The Role of Software Engineering Brief overview of relationship of SE to managing DSD risks 1.
Introduction To System Analysis and Design
Introduction to Software Architecture. What is Software Architecture?  It is the body of methods and techniques that help us to manage the complexities.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
© Copyright Eliyahu Brutman Programming Techniques Course.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Chapter 10: Architectural Design
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Software Architecture. Agenda " Why architect? " What is architecture? " What does an architect do? " What principles guide the process of architecting?
Object Oriented Analysis and Design Using the UML
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
Architectural Design.
What is Software Architecture?
Principles of Object Technology Module 1: Principles of Modeling.
Chapter 10 Architectural Design
Chapter 6 System Engineering - Computer-based system - System engineering process - “Business process” engineering - Product engineering (Source: Pressman,
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 A Discipline of Software Design.
CSE 303 – Software Design and Architecture
Introduction To System Analysis and Design
Programming in Java Unit 3. Learning outcome:  LO2:Be able to design Java solutions  LO3:Be able to implement Java solutions Assessment criteria: 
SOFTWARE DESIGN.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
CSE 303 – Software Design and Architecture LECTURE 4.
Information Systems Engineering. Lecture Outline Information Systems Architecture Information System Architecture components Information Engineering Phases.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Modeling Component-based Software Systems with UML 2.0 George T. Edwards Jaiganesh Balasubramanian Arvind S. Krishna Vanderbilt University Nashville, TN.
Software Engineering. Introduction Objective To familiarize students to the fundamental concepts, techniques, processes, methods and tools of Software.
1 COMP 350: Object Oriented Analysis and Design Lecture 1Introduction References: Craig Larman Chapter 1.
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
 What is Modeling What is Modeling  Why do we Model Why do we Model  Models in OMT Models in OMT  Principles of Modeling Principles of Modeling 
Computing and SE II Chapter 9: Design Methods and Design Models Er-Yu Ding Software Institute, NJU.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
Software Design Process
OBJECT-ORIENTED SOFTWARE DEVELOPMENT PROCESS BTS430 Systems Analysis and Design using UML.
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
1 Supplementary Slides for Software Engineering: A Practitioner's Approach, 5/e Supplementary Slides for Software Engineering: A Practitioner's Approach,
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
CSE 303 – Software Design and Architecture
Yazd University, Electrical and Computer Engineering Department Course Title: Advanced Software Engineering By: Mohammad Ali Zare Chahooki The Rational.
1 Introduction to Design. 2 Outline Basics of design Design approaches.
Lecture 14 22/10/15. The Object-Oriented Analysis and Design  Process of progressively developing representation of a system component (or object) through.
Object-Oriented Systems. Goals Object-Oriented Methodologies – The Rumbaugh et al. OMT – The Booch methodology – Jacobson's methodologies.
CSIS 4850: CS Senior Project – Spring 2009 CSIS 4850: Senior Project Spring 2009 Object-Oriented Design.
1 SYS366 Week 1 - Lecture 1 Introduction to Systems.
Basic Characteristics of Object-Oriented Systems
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
Introduction to OOAD and UML
Design Concepts ch-8
Object-Oriented Software Engineering Using UML, Patterns, and Java,
Lecture 9- Design Concepts and Principles
Software Process Models
CSE 303 – Software Design and Architecture
Object-Oriented Analysis
Lecture 9- Design Concepts and Principles
Design Yaodong Bi.
Chapter 22 Object-Oriented Systems Analysis and Design and UML
Chapter 6: Architectural Design
Presentation transcript:

CSE 303 – Software Design and Architecture

Introduction

Objective To be introduced to principles of good design, and techniques for the evaluation of software design quality. To cover the principal architectural issues associated with the design and construction of software systems including architectural design and documentation, component models and technologies, and frameworks. To introduce the students to a number of design patterns and their applications.

Course Contents The course is divided into two major modules The first module covers the introduction to software design and provides details of software architecture and architectural styles. The second module covers the detailed design phase with introduction to Object Oriented Design and various design patterns.

Course Contents

Introduction to software architecture 4 Topics 1 Introduction Software design and architecture 2 Principles of good software design. Correctness and Robustness Flexibility, reusability and efficiency 3 Introduction to software architecture 4 Software architectural design Software architectural attributes Attribute types Trade-off of attributes and choices 5 Software Architectural Styles Data flow architctures Layered Event-based Data-centered MVC Multi-tier distributed Service Oriented

Topics 6 7 8 9 ANALYSIS PHASE (OBJECT ORIENTED DESIGN) Functional Modeling Activity Diagrams Use case diagrams 7 Structural Modeling Classes, Attributes, and Operations, Relationships CRC Cards Class Diagrams 8 Behavioural Modeling Objects, operations, and messages Sequence Diagrams Behavioural State Machines – States, Events, Transitions, Actions, and Activities 9 DESIGN PHASE (OBJECT ORIENTED DESIGN) Evolving the analysis models into design models

Topics 10 11 Introduction to Components and Component Oriented Design Pattern oriented Design Creational patterns Structural patterns Behavioral pattern

Assessment Criteria The course shall be comprised of various assignments and quizzes that shall be dispersed through out the course. You shall have graded discussions that are obligatory. Sessional and Final exams shall be conducted. The final grade shall depend on your performance in EACH of the above mentioned artifacts.

Course Pre - requisites Software Engineering I Software Requirements Specification

Books to follow Software Architecture And Design Illuminated By Kai Qian, Xiang Fu, Lixin Tao, Chong-wei Xu, Jones And Bartlett Publishers. Object-Oriented Systems Analysis and Design using UML, by Simon Bennett, McRobb & Farmer McGraw-Hill. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, By Craig Larman

Motivation

A staircase that leads right into a wall!!!

A door that would drop you 10 feet down!

An impossible to use ATM machine

What do you think is wrong in these real life scenarios? The requirements are correct! A staircase next to the outer wall A door on the first floor An ATM outside the bank branch The bridge The design is flawed! The execution based on the design results in disaster.

Software are no different. For a useful software, it has to be ‘engineered’; which involves giving specific attention to every phase of software development.

Problems in software development Common issues The final software does not fulfill the needs of the customer Hard to extend and improve: if you want to add a functionality later its mission impossible Bad documentation Bad quality: frequent errors, hard to use, ... More time and costs than expected

http://www.projectcartoon.com

Ariane 5 Flight 501 Cause: design errors in the software http://www.youtube.com/watch?v=kYUrqdUyEpI Cluster was a constellation of four European Space Agency spacecraft which were launched on the maiden flight of the Ariane 5 rocket, Flight 501, and subsequently lost when that rocket failed to achieve orbit. The launch, which took place on Tuesday, 4 June 1996, ended in failure due to an error in the software design caused by assertions having been turned off, which in turn caused inadequate protection from integer overflow. This resulted in the rocket veering off its flight path 37 seconds after launch, beginning to disintegrate under high aerodynamic forces, and finally self-destructing by its automated flight termination system. The failure has become known as one of the most infamous and expensive software bugs in history.[1] The failure resulted in a loss of more than US$370 million

Software Design

What is Design? Design is the first step in the development phase for any engineered product or system. Design is about HOW the system will perform its functions.

Software Design A software design is a meaningful engineering representation of some software product that is to be built. “The process of applying various techniques and principles for the purpose of defining a device, a process or a system in sufficient detail to permit its physical realization” [TAY59]

Software Design The literature on design methods began to appear in the 1950s and 60s. Since then, design methodology has become an independent discipline of scientific study. What are the essential characteristics of design? What processes are used by designers? Is one process better than another, constituting ‘right’ and ‘wrong’ ways to design? Why are some processes favourable over others? Do different processes lead to different qualities of results?

Software Design As one of the most complex man-made artifacts, computer software is very difficult to design. There are many factors that affect designs and many stakeholders, i.e. people who participate in the design process, play various different roles in the design processes and influence the design of software.

Software Design - Simplified Requirements specification was about the WHAT the system will do Design is about the HOW the system will perform its functions provides the overall decomposition of the system allows to split the work among a team of developers also lays down the groundwork for achieving non-functional requirements (performance, maintainability, reusability, etc.) takes target technology into account (e.g., kind of middleware, database design, etc.)

Why Design is important? Without a proper design, we risk building an unstable system one that will fail when small changes are made one that may be difficult to test one whose quality cannot be assessed until late in the software process, perhaps when critical deadlines are approaching and much capital has already been invested into the product.

Major Design Challenges Design team should not do too much Detailed design should not become code Design team should not do too little It is essential for the design team to produce a complete detailed design

Summary Introduction to design Importance of design Difference between design and architecture

Software Development Activities Requirements Elicitation Requirements Analysis (e.g., Structured Analysis, OO Analysis) – analyzing requirements and working towards a conceptual model without taking the target implementation technology into account – useful if the conceptual gap between requirements and implementation is large part of requirements engineering (but may produce more than what is going to be part of the requirement spec) Design coming up with solution models taking the target implementation technology into account Implementation Testing

Software Design in SDLC In SDLC (Software Development Life Cycle), Design phase is one of the most important phases. In the software engineering context, design focuses on four major areas of concern: data, architecture, interfaces and components.

Design Process Activities Architectural design Modules, inter-relationships etc Abstract specification Services of each sub-system, constraints etc Interface design Interface to other sub-system or outside enviornment Component design Services allocated to components and their interfaces designed Data structure design Algorithm design

The Software Design Process

Levels of Software Design Architectural design (high-level design) architecture - the overall structure, main modules and their connections addresses the main non-functional requirements (e.g., reliability, performance) hard to change Detailed design (low-level design) the inner structure of the main modules detailed enough to be implemented in the programming language

Design vs. Architecture Architecture is concerned with the selection of architectural elements, their interaction, and the constraints on those elements and their interactions Design is concerned with the modularization and detailed interfaces of the design elements, their algorithms and procedures, and the data types needed to support the architecture and to satisfy the requirements. Architecture…is specifically not about…details of implementations (e.g., algorithms and data structures.)

Summary Introduction to design Importance of design Difference between design and architecture