ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.

Slides:



Advertisements
Similar presentations
Software Engineering Key design concepts Design heuristics Design practices.
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
1 Software Testing and Quality Assurance Lecture 13 - Planning for Testing (Chapter 3, A Practical Guide to Testing Object- Oriented Software)
Object-Oriented Software Development CS 3331 Fall 2009.
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
CSCU 411 Software Engineering Chapter 2 Introduction to Software Engineering Management.
The Architecture Design Process
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
Unified Modeling (Part I) Overview of UML & Modeling
CS CS 5150 Software Engineering Lecture 13 System Architecture and Design 1.
Business Area Analysis Focus: Domain View (selected business area) Goals: –Isolate functions and procedures that allow the area to meet its goals –Define.
Notion of a Project Notes from OOSE Slides - modified.
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.
Software Architecture in Practice
SE 555 – Software Requirements & Specifications Introduction
Software engineering Olli Alm Lecture 2: requirements, modelling & representation.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Course Instructor: Aisha Azeem
CSC230 Software Design (Engineering)
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
What is Software Architecture?
Software Architecture in Practice (3rd Ed) Introduction
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Introduction to Software Engineering CEN 4010.
UML - Development Process 1 Software Development Process Using UML (2)
Implementation Yaodong Bi. Introduction to Implementation Purposes of Implementation – Plan the system integrations required in each iteration – Distribute.
An Introduction to Software Architecture
Architecture Business Cycle
Eng. Mohammed Timraz Electronics & Communication Engineer University of Palestine Faculty of Engineering and Urban planning Software Engineering Department.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Unified Process versus Extreme Programming. Outline Compare and contrast UP and XP  Processes / Disciplines  Management  Artefacts Risk management.
4/2/03I-1 © 2001 T. Horton CS 494 Object-Oriented Analysis & Design Software Architecture and Design Readings: Ambler, Chap. 7 (Sections to start.
CPSC 2150 August 21, Chapter 1 Object Oriented Software Development This is an introductory course In this chapter we will look at 3 topics Challenges.
111 Notion of a Project Notes from OOSE Slides – a different textbook used in the past Read/review carefully and understand.
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.
Moving into Implementation SYSTEMS ANALYSIS AND DESIGN, 6 TH EDITION DENNIS, WIXOM, AND ROTH © 2015 JOHN WILEY & SONS. ALL RIGHTS RESERVED.Roberta M. Roth.
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
SE: CHAPTER 7 Writing The Program
Cohesion and Coupling CS 4311
1 Introduction to Software Engineering Lecture 1.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
THE DESIGN WORKFLOW  Object-oriented design  The design workflow  The test workflow: Design  CASE tools for design  Challenges of the design workflow.
Design Concepts By Deepika Chaudhary.
Software Requirements: A More Rigorous Look 1. Features and Use Cases at a High Level of Abstraction  Helps to better understand the main characteristics.
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
Design Reuse Earlier we have covered the re-usable Architectural Styles as design patterns for High-Level Design. At mid-level and low-level, design patterns.
CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A.
Lecture 13.  Failure mode: when team understands requirements but is unable to meet them.  To ensure that you are building the right system Continually.
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
Stages of design  High level design  High level data structure  Architecture  Low level design-code design  Algorithms  Low level data structures.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
OOD OO Design. OOD-2 OO Development Requirements Use case analysis OO Analysis –Models from the domain and application OO Design –Mapping of model.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Chapter 7 Lecture 1 Design and Implementation. Design and implementation Software design and implementation is the stage in the software engineering process.
Introduction. System Design Hardware/Software Platform Selection Software Architectures Database Design Human-Computer Interaction (HCI) Interface Object.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
 System Requirement Specification and System Planning.
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
Software Engineering D7032E
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Introduction To software engineering
An Introduction to Software Architecture
Design Yaodong Bi.
Chapter 2: Building a System
From Use Cases to Implementation
Presentation transcript:

ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture

ECE450 - Software Engineering II2 Software “Architecture”? We’re leaning on the construction metaphor –What do people refer to when they talk about “architecture”?

ECE450 - Software Engineering II3 Software Architecture Reminder Simple definition: A software architecture is the structure of a system –Consider: Software components Their relationships Interfaces to the external world Dealing with components is an abstraction –Ignore lower level details What is the color of the pillars? How does the sorting algorithm work? Who cares at this point?

ECE450 - Software Engineering II4 Software Architecture Reminder Note that there is more than one structure in a system –Module structure Which module uses which? who calls whom? –Process execution structure What is the chain of events that occurs when we receive input? –File structure Databases? Libraries? –Physical structure Network layout? Types of computers? Types of structures crosscut each other, so they need to be considered and handled simultaneously

ECE450 - Software Engineering II5 Architecture and Design Do not confuse them! –When dealing with the system level we do architecture –When dealing with code, classes, etc., we do design Architecture... –Deals with the high-level construction of a system Technology choices (language, platform, database) System construction (overall structure –monolithic, 3-tiered?) Modules and programs Design... –Deals with how and where to “lay down” code Classes, methods, and attributes Design patterns Dependencies among classes Subsystems, (Java) packages But note that the boundary between architecture and design is blurry

ECE450 - Software Engineering II6 Why is architecture important? Set out the key elements and aspects of the software system –The most difficult to correct, the hardest to change –The ones that defines implementation constraints –The ones that enables or inhibit quality attributes (e.g. security, performance) Treating a system as components allows for narrower focus –Divide and conquer –Easier organization (team A works on module X, team B works on module Y) –Easier estimation Architecture documents enable early discussions on possible solutions Architecture documents allow for review –Training tools –Progress indicators

ECE450 - Software Engineering II7 A word on documentation Does not have to be extremely detailed –Most of the times, annotated boxes and arrows will do But it does have to be extremely clear –For yourself –For your future self –For software designers –For new developers learning about your system –For the technical documentation Lack of detail != Lack of clarity –For every component State its nature and main tasks –For every relationship among components State who depends on whom, what sort of information is passed –For every external interface Standards and protocols used, or at least a high-level description of the kinds of interactions

ECE450 - Software Engineering II8 OK, OK, architecture is important. How do I do it? Well... –There’s really no structured way to do it –All I can say is, if: You know and understand the requirements, AND Have some domain experience, AND Have paid attention to other systems’ architectures... –...then the shape of the system will start to form on your mind Yes, it’s a little bit of a black art But I can give you some tips –Reading and studying other architectures is essential –Iterations are good –Documenting the iterations is better –Getting feedback on each iteration is even better –Trying out or simulating your latest iteration “in the small” is best

ECE450 - Software Engineering II9 “Non-Functional” Requirements must be satisfied Non-Functional Requirements (NFRs): All those system qualities that can’t really be expressed as features –Performance –Usability –Security –Availability –Robustness –... The {browser, operating system, IM client} with the most features won’t take off if –It’s slow –We can’t make sense of it –Has some glaring security holes –... Architectural work is the key time to address these problems

ECE450 - Software Engineering II10 There are plenty of NFRs to consider The Usual Suspects –Performance –Usability –... Those that facilitate production and maintenance –Conceptual integrity –Modifiability –Reusability –Testability –... Those needed to keep the business running –Cost –Time –Projected lifetime –...

ECE450 - Software Engineering II11 Successful architectures address two issues First issue: What is the best structure to satisfy the system’s functional and behavioral requirements? –That is, so that it does everything it is supposed to do –...at the level of quality that we require? Second issue: What is the best structure to ensure that we can build the system given –Our skills and assets –Our business constraints (or assignment deadlines!) –Our competitors’ offerings And the most important question, what is the best structure to satisfy both problems?