CSCI 3428: Software Engineering Tami Meredith Chapter 5 Designing the Architecture.

Slides:



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

OHT 2.1 Galin, SQA from theory to implementation © Pearson Education Limited 2004 Software Quality assurance (SQA) SWE 333 Dr Khalid Alnafjan
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Using UML, Patterns, and Java Object-Oriented Software Engineering Royce’s Methodology Chapter 16, Royce’ Methodology.
Unified theory of software evolution Reengineering – Business process reengineering and software reengineering BPR model – Business definition, process.
CS540 Software Design Lecture 1 1 Lecture 1: Introduction to Software Design Anita S. Malik Adapted from Budgen (2003) Chapters 1.
Conquering Complex and Changing Systems Object-Oriented Software Engineering TJSS System Design Lecture 12 Päivi Ovaska.
Design Creative Process of transferring the problem into a solution
Designing the system Conceptual design and technical design
Software Architecture Design Instructor: Dr. Jerry Gao.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Lecture 13 Revision IMS Systems Analysis and Design.
SWE Introduction to Software Engineering
Establishing the overall structure of a software system
SQM - 1DCS - ANULECTURE Software Quality Management Software Quality Management Processes V & V of Critical Software & Systems Ian Hirst.
Introduction to Systems Analysis and Design
Course Instructor: Aisha Azeem
Software Process and Product Metrics
CSC230 Software Design (Engineering)
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?
Software maintenance Managing the processes of system change.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Data Structures and Programming.  John Edgar2.
Chapter 9 – Software Evolution and Maintenance
What is Software Architecture?
Chapter 2 The process Process, Methods, and Tools
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
©Ian Sommerville 1995 Software Engineering, 5th edition. Chapter 13Slide 1 Architectural Design u Establishing the overall structure of a software system.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Chapter 10 Architectural Design.
An Introduction to Software Architecture
Chapter 3: Software Maintenance Process Omar Meqdadi SE 3860 Lecture 3 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Architectural Design portions ©Ian Sommerville 1995 Establishing the overall structure of a software system.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
Role-Based Guide to the RUP Architect. 2 Mission of an Architect A software architect leads and coordinates technical activities and artifacts throughout.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Chapter Five–Part III Object Oriented Design More Design issues.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
Architectures of distributed systems Fundamental Models
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Architectural Design lecture 10. Topics covered Architectural design decisions System organisation Control styles Reference architectures.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Architectural Design Yonsei University 2 nd Semester, 2014 Sanghyun Park.
Chapter 6 Architectural Design.
1 Introduction to Software Engineering Lecture 1.
21-22 May 2004IMPROQ 2004 / Impact of SW Processes on Quality Workshop 1 Quality for Components: Component and Component- Based Software Quality Issues.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
John D. McGregor Class 4 – Initial decomposition
Software Engineering 1 Object-oriented Analysis and Design Applying UML and Patterns An Introduction to Object-oriented Analysis and Design and Iterative.
Software Architecture Evaluation Methodologies Presented By: Anthony Register.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 11 Slide 1 Architectural Design.
Chapter 7: Architectural Design Chapter 11 in textbook 1.
Software Maintenance Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Overview of RUP Lunch and Learn. Overview of RUP © 2008 Cardinal Solutions Group 2 Welcome  Introductions  What is your experience with RUP  What is.
CSCI 3428: Software Engineering Tami Meredith Chapter 1 Why Software Engineering.
Slide 1 Chapter 8 Architectural Design. Slide 2 Topics covered l System structuring l Control models l Modular decomposition l Domain-specific architectures.
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
Part 3 Design What does design mean in different fields?
Software Engineering Architectural Design Chapter 6 Dr.Doaa Samy
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Software Architecture
An Introduction to Software Architecture
Chapter 6: Architectural Design
Presentation transcript:

CSCI 3428: Software Engineering Tami Meredith Chapter 5 Designing the Architecture

Software Design A highly creative activity No right or wrong solutions – BUT there are good and poor ones Routine design reuses existing solutions for similar problems Innovative design create novel solutions for new and unique problems Reference model: A pre-existing design upon which we base our current design (e.g., for a compiler) Architectural styles: high-level abstract reference models Design patterns: low-level abstract sub-models

Developing the Architecture AnalysisDocumentation Review (Validation) Software Architecture Document (SAD) 1.Develop a set of possible models 2.Figure out which is most suitable 3.Document your decision, rationale, choices 4.Check the design satisfies the requirements specification Modelling

Why? Create a blue-print for development Evaluate evolution, performance, cost, maintenance Support management decisions Understand the system Identify prototyping opportunities Identify dependencies Identify reuse, both internal and external Identify risk

Decomposition Can assist in refinement and abstraction of complex systems Break down into: components, subsystems, process, modules, packages, libraries, classes, ADTs, tables, procedures, routines, Functional: system behaviour or requirements 2. Feature-oriented: user-oriented activities 3. Data-oriented 4. Process-oriented: threads and tasks 5. Event-oriented 6. Object-oriented

Views Decomposition: a break-down of the system in sub- components Dependencies: data (type, subtype, table), execution, development Generalizations & specialisations: type hierarchies Execution: static, dynamic, event Implementation: PL constructs Deployment: Configuration, CPU assignment, memory allocation Work-assignment: teams and tasks

Architecture vs. Specifications Specifications describe how the system will work and what it will do in an abstract manner generally use domain terminology used to communicate to clients/users An Architecture describes how the system will work and be implemented in a concrete manner begins to make decisions among options generally uses technical (software) terminology used to communicate to programmers/developers

Architectural Styles Pipe and filter: e.g., compilers, image processing Client-server: WWW, WoW Peer-to-peer (P2P): File-sharing Publish-Subscribe: broadcast & react Repositories: Google, DB, Blackboard (reactive clients) Layered: Network stacks Hybrid/Combined: Various combinations

Coupling and Cohesion Coupling: The amount of connectivity between components >> Minimise Cohesion: The amount of connectivity within components >> Maximise Goal: Loose Coupling and Tight Cohesion

Architectural Concerns Modifiability: Ability to adapt to change Generality/Flexibility, cohesion, coupling, interfaces Performance Response time, through-put, load Security Immunity, resilience (recovery), detection Usability Accessibility Internationalisation Ease of use, efficiency Business Concerns Costs, development time, cutting-edge

Reliability Difference Between Actual And Planned Use Reliable: performs correctly with valid data Robust: performs "correctly" with invalid data Passive fault detection: identify when a fault has occurred Active fault detection: identify when a fault will occur and prevent it from occurring Recovery Undoing a transaction Roll-back to a previous (valid) state Backup Graceful degradation of service (partial service) Correction and continuation Report and monitoring!

Design Breakdown Lack of a process: no "plan" for doing the design Lack of specialised data schemas: data is complex and not fully understood/described Uncertain priorities leading to poor choices Too many constraints to a problem Problems are just too complicated Remembering what hasn't been figured out Difficulty in combining sub-solutions/components

Agile Methodologies Tend to avoid explicit design Focus on code with design evolving out of necessity Avoid many design problems Lead to poor design for very complex systems Scalability failures – work best for small and modestly complex systems

Outsourcing Bring experts in to assist on-site development Sub-contracting components to off-site developers (local or foreign) Purchasing pre-developed/generic products that can be adapted or wrapped Purchasing a complete custom implementation of the specification Communication Failures: Culture, language (intention, nuance), distance, time- zone/delay, motivation, team stability

Evaluation and Refinement Measure the design quality (e.g., metrics) Safety analysis (e.g., fault tree analysis) Trade-off analysis: pros vs. cons of alternatives Cost-Benefit analysis Security analysis 1. Understand the system 2. Determine threats 3. Assess vulnerability to threats 4. Assess risk/likelihood 5. Assess impact if threat occurs 6. Mitigation and avoidance

Prototyping May by necessary to actually solve the problem Often reveals more than abstract approaches Can be of value to client Helps developers gain understanding/practice Evolutionary vs. Throw-away Can yield huge savings (e.g., 45% less effort, 40% fewer LOC from prototyping) Does not scale to large problems

The Software Design Doc. (SAD) System Overview Various views of the system Catalog of software "units" Analysis data and results of any analysis Design rationale – the "why" for decisions Definitions, Glossary, Acronyms, Units References to specification, standards, etc.

Design Review Validation: Are we actually going to build something that matches the specs and that the customer will want? Verification: Is the design implementable? Can it be improved? What are its limitations? Who? Analysts, Architects, Designers (lower-level), Implementers, Testers, Maintainers, Review Administrators (Moderator, recorder)

Software Product Lines A family of related products (e.g., cell phones) Uses a "core asset base" Specifications vary for each product Common architecture and design Planned "Reuse" among various products Madden Football Demo (limited feature) version Platform: Versions for PC, Xbox, PS3, Wii Temporal: 2010, 2011, League: Used as core of NCAA Football

Scud Thud Famous Moments in Software Engineering On February 25, 1991, an Iraqi Scud Missile hit the barracks in Dhahran, Saudi Arabia, killing 28 US Army soldiers. A Patriot Anti-Missile Missile failed to intercept because of a software error in the system's clock. The Patriot battery had been in operation for 100 hours, by which time the system's internal clock had drifted by one third of a second. Due to the closure speed of the interceptor and the target, this resulted in a miss distance of 600 meters.

The radar system had successfully detected the Scud and predicted where to look for it next, but because of the time error, looked in the wrong part of the sky and found no missile. With no missile, the initial detection was assumed to be a spurious track and the missile was removed from the system. No interception was attempted, and the missile impacted on a barracks killing 28 soldiers. On Feb 11 th (2 weeks earlier), the Israelis had already identified the problem and informed the US Army and the PATRIOT Project Office (the software manufacturer), but no upgrade was present at the time. As a stopgap measure, the Israelis recommended rebooting the system's computers regularly, however, Army officials did not understand how often they needed to do so. The manufacturer supplied updated software to the Army on February 26, the day after the Scud struck the Army barracks.