Evaluating Architectures

Slides:



Advertisements
Similar presentations
Design Validation CSCI 5801: Software Engineering.
Advertisements

Architecture. Outline Example Decomposition Style Activity 1.
© Copyright 2011 John Wiley & Sons, Inc.
Jul The New Geant4 License J. Perl The New Geant4 License Makes clear the user’s wide- ranging freedom to use, extend or redistribute Geant4, even.
Evaluating Architectures Quality control: rarely fun, but always necessary
Issues on Software Testing for Safety-Critical Real-Time Automation Systems Shahdat Hossain Troy Mockenhaupt.
Non-functional requirements
Managing Software Quality
Middleware Promises Warranties that Don’t Indemnities that Won’t Stephen Rubin, Esquire
STATUS UPDATE EM SUBCOMMITTEE Friedrich Roth, EM subcommittee chairman SEG 2012, Las Vegas Technical Standards Committee meeting.
Permission to reprint or distribute any content from this presentation requires the prior written approval of Standard & Poor’s. Copyright © 2010 Standard.
CSE 303 – Software Design and Architecture
Slide 1 Systems Analysis and Design With UML 2.0 An Object-Oriented Approach, Second Edition Chapter 13: Physical Architecture Layer Design Alan Dennis,
X3D Graphics for Web Authors X3D-Edit Update SIGGRAPH 2008 Don Brutzman Naval Postgraduate School Monterey California USA.
17-1 JXTA Developer and Business Resources Module Objectives ● Understand JXTA's Open Source Model ● Learn how to get involved at jxta.org ● Learn.
Blue Diamond Scott Auge Amduus Information Works, Inc.
One of you play the role of lead system designer. 1 person is a note taker. 1 or 2 customer(s) : based on the feedback you can choose. Based on the prototypes.
Evaluating Architectures Quality control: rarely fun, but always necessary
Andrew McNab - License issues - 10 Apr 2002 License issues for EU DataGrid (on behalf of Anders Wannanen) Andrew McNab, University of Manchester
NRCCL (University of Oslo, Faculty of Law) Copyleft and Open Source Jon Bing Notrwegian Research Center for Computers and Law Master Lecture 13 October.
Question To know that quality has improved, it would be helpful to be able to measure quality. How can we measure quality?
Evaluating Architectures Quality control: rarely fun, but always necessary
12.1 Introduction Checklists are used as a technique to give status information in a formalized manner about all aspects of the test process. This chapter.
CS551 - Lecture 5 1 CS551 Lecture 5: Quality Attributes Yugi Lee FH #555 (816)
National Alliance for Medical Image Computing Licensing in NAMIC 3 requirements from NCBC RFA (paraphrased)
Evaluating Architectures. Quality Control Rarely fun, but always necessary 1.
CSE 303 – Software Design and Architecture
Permission to reprint or distribute any content from this presentation requires the prior written approval of Standard & Poor’s. Copyright © 2011 Standard.
Schedule & effort
SOFTWARE TESTING Date: 29-Dec-2016 By: Ram Karthick.
Software Quality Control and Quality Assurance: Introduction
Testing Tutorial 7.
Rekayasa Perangkat Lunak Part-10
Integration Testing.
Rekayasa Perangkat Lunak
N-Tier Architecture.
Evaluating Requirements
SEVERITY & PRIORITY RELATIONSHIP
Software Quality Assurance Software Quality Factor
Chapter 18 Maintaining Information Systems
System Design and Modeling
Continuous improvement
Systems Analysis and Design
Agile
Systems Analysis and Design With UML 2
Comparative Law of Licenses and Contracts in the US, UK and EU
Applied Software Implementation & Testing
Roberta Roth, Alan Dennis, and Barbara Haley Wixom
Rekayasa Perangkat Lunak
Automation in an XML Authoring Environment
Enterprise Service Bus (ESB) (Chapter 9)
Self-Registration walk-through
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Charakteristiky kvality
Thursday’s Lecture Chemistry Building Musspratt Lecture Theatre,
Systems Analysis and Design
Chapter 2 – Software Processes
Testing and Test-Driven Development CSC 4700 Software Engineering
Chapter 13 Quality Management
Software Testing & Quality Management
Diagram Notations
Paper Prototyping
Design Patterns
Software Architecture
Individuals and interactions
Customer collaboration
Requirements
Chapter 7 Software Testing.
BEMS user Manual Fundación cartif.
From Use Cases to Implementation
Presentation transcript:

Evaluating Architectures Quality control: rarely fun, but always necessary http://www.flickr.com/photos/pierrelaphoto/2314190563/

Four basic ways to evaluate architectural designs Compare against desired quality attributes Check for problematic failure modes Walk through use cases Verify conformance to checklist of principles The goal is NOT to “prove” that the architecture is perfect, but rather to identify opportunities for improvement.

Example system from last lecture User Java Servlet Mainframe User DB Login JSP Edit Login Info JSP Edit Purchase Info JSP

Four basic ways to evaluate architectural designs Compare against desired quality attributes Check for problematic failure modes Walk through use cases Verify conformance to checklist of principles The goal is NOT to “prove” that the architecture is perfect, but rather to identify opportunities for improvement.

Quality attributes of great software Reliability Efficiency Integrity Usability Maintainability Testability Flexibility Portability Reusability Interoperability

Checking against quality attributes Maintainability (includes modifiability) How hard will it be to make anticipated changes? Efficiency (includes performance) Can the system respond quickly, do a lot of work per unit time, and scale to high loads? Reliability Will it perform properly under assumed conditions? Integrity (includes security) Is it possible put the system into a bad state? Usability Can real users complete their goals with the system?

Checking against quality attributes Testability Can you (semi-)automatically test if the system is right? Flexibility (includes robustness) How easily can the system adapt to unusual conditions? Portability Could you get the system to run on a new platform? Reusability What parts of the system could you use in a new system? Interoperability Can the system talk to other relevant systems?

Checking example system against key quality attributes Integrity: security Are all communications and databases encrypted? Is credit card info stored in any risky location? Integrity: another consideration What happens when a credit card expires? Efficiency What platform is used to run the servlet & JSPs? What throughput and response time is likely? Integrity: security Integrity: another consideration Efficiency

Four basic ways to evaluate architectural designs Compare against desired quality attributes Check for problematic failure modes Walk through use cases Verify conformance to checklist of principles The goal is NOT to “prove” that the architecture is perfect, but rather to identify opportunities for improvement.

Checking against failure modes What does it take to cause a “very bad thing”? Software Engineering, Pfleeger, 3rd Edition

Checking against failure modes Trace the basic events through the “AND” and “OR” gates of the fault tree. Software Engineering, Pfleeger, 3rd Edition

Think-Pair-Share Exercise Draw a fault tree for the failure mode: credit card theft Fault tree example Candidate architecture

Checking against failure modes G1: Credit card theft Note: This tree isn’t exhaustive; it’s just what fits one 1 slide for illustrative purposes. OR G2: Man-in-middle G3: Steal from data store AND AND A1: Unencrypted connection A3: Compromised servlet A4: Unencrypted data from store A2: Sniffer

Terminology: Errors, faults, and failures Error: mistake by a programmer Prevent errors by establishing requirements up-front, by doing design up-front, by pair programming, … Fault (defect): bug created by an error Catch errors and faults by using unit testing, system testing, & similar techniques Failure: undesirable event caused by fault Prevent faults from causing failures through redundancy, transactions, graceful degradation, etc Use the failure tree to target faults and failures!

Strengths and weaknesses of alternate architectures Would the risk of a security breach failure mode have been higher in a peer-to-peer architecture that extended beyond our intranet? Maybe. But for a file-sharing system, total system blackout might be the failure mode of concern, in which case peer-to-peer might reduce the risk of failure Quality attributes: Would performance have been improved by a system fully implemented in EJBs? But would interoperability have been reduced?

Four basic ways to evaluate architectural designs Compare against desired quality attributes Check for problematic failure modes Walk through use cases Verify conformance to checklist of principles The goal is NOT to “prove” that the architecture is perfect, but rather to identify opportunities for improvement.

Walk through use cases Methodically step through each use case Are all the necessary components in the system? Are they connected correctly? Are all your arrows pointing the right direction? Does the system enact the right state changes? Does performing a use case prevent subsequently performing any other use cases?

Having a sequence diagram really helps to prevent surprises User Servlet Edit Login Info JSP Edit Purchase Info JSP User DB Mainframe Visit site [username and password are valid] Login info (starts empty) Username & password [purchase information is valid] Purchase info (starts empty) Purchase info Login info Purchase info

Four basic ways to evaluate architectural designs Compare against desired quality attributes Check for problematic failure modes Walk through use cases Verify conformance to checklist of principles The goal is NOT to “prove” that the architecture is perfect, but rather to identify opportunities for improvement.

Verify conformance to checklist (Has a lot in common w/ quality attrs Is the architecture modular, well structured, and easy to understand? Can we improve the structure and understandability of the architecture? Is the architecture portable to other platforms? Are aspects of the architecture reusable? Does the architecture support ease of testing? Does the architecture maximize performance, where appropriate? Does the architecture incorporate appropriate techniques for handling faults and preventing failures? Can the architecture accommodate all of the expected design changes and extensions that have been documented?

Example system from last lecture User Java Servlet Mainframe User DB Login JSP Edit Login Info JSP Edit Purchase Info JSP

Checking example system vs checklist Modular? “User DB” is a big black box. May need data-oriented decomposition. “Mainframe” may need decomposition, too. Understandable? Interaction among servlet and JSP is probably unclear to some programmers. May need some textual specification. Testable? It depends on how fancy the JSP’s HTML is. (DHTML?) Mainframe is fully testable. Performance? See earlier discussion regarding quality attributes. Modular? . Understandable? Testable? Performance?

Checking example system vs checklist Portable? Not at all. Do we care? It depends. Reusable? Probably only the data. Do we care? It depends. Further decomposition might identify more reusable parts. Portable? Reusable?

Checking example system vs checklist Fault handling & failure prevention? Need to keep people from entering invalid data. May need server redundancy. All data should be backed up. Encrypt communications + data in databases. Security audit of system? More consideration will be needed after the implementation is designed.

Checking example system vs checklist Maintainable? Separating user interface code into JSPs generally improves maintainability. But adding new fields requires changes in many places (e.g.: adding another field to purchase info, requires updating the servlet, JSP, and mainframe) Object-oriented decomposition could have avoided this particular problem in this situation.

Take note of opportunities for improvement Encrypt database and connections Improve use case & sequence diagram to cover situations where credit card expires Decompose the database and mainframe Decompose servlet, looking for reusable parts

Consider tradeoffs Use DHTML in HTML from JSP? Might improve usability Might hinder testability Specify server redundancy? Might improve fault tolerance and performance Might hinder integrity (keeping servers in sync) Move to object-oriented decomposition? Might improve maintainability Might hinder interoperability (legacy mainframe)

What’s next for you? HW4 High-level dataflow diagram for one architecture High-level dataflow diagram for an alternate architecture Assess how well the architectures support 2 quality attrs. Assess how the architectures are prone to 2 failure modes Select one architecture Decompose 2 key components. Describe how the architecture supports use cases from HW3 Assess the architecture with the checklist (Section 5.9) How would you revise your selected architecture; how would revisions improve quality & reduce risk of failure?

Copyright (c) Christopher Scaffidi 2009 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Oregon State University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Modified by Scott D. Fleming <Scott.Fleming@memphis.edu> 2011.