Software Architecture Quality Attributes

Slides:



Advertisements
Similar presentations
Unit Testing in the OO Context(Chapter 19-Roger P)
Advertisements

DAIMI(c) Henrik Bærbak Christensen1 Software Architecture Quality Attributes.
Executional Architecture
COM vs. CORBA.
ICT Class System Life Cycle.  Large systems development projects may involve dozens of people working over several months or even years, so they cannot.
Instructor: Tasneem Darwish
Evaluating Software Architectures RiSE’s Seminars Clement’s book :: Chapters 05 Eduardo Cruz.
DAIMIHenrik Bærbak Christensen1 What is Software Quality?
APPLICATION DEVELOPMENT BY SYED ADNAN ALI.
McGraw-Hill/Irwin Copyright © 2007 by The McGraw-Hill Companies, Inc. All rights reserved. Chapter 17 Client-Server Processing, Parallel Database Processing,
July 23 th, 2005 Software Architecture in Practice RiSE’s Seminars Bass’s et al. Book :: Chapter 16 Fred Durão.
.NET Mobile Application Development Introduction to Mobile and Distributed Applications.
Evaluating Architectures Quality control: rarely fun, but always necessary
Tiered architectures 1 to N tiers. 2 An architectural history of computing 1 tier architecture – monolithic Information Systems – Presentation / frontend,
Open Cloud Sunil Kumar Balaganchi Thammaiah Internet and Web Systems 2, Spring 2012 Department of Computer Science University of Massachusetts Lowell.
Oracle High Availability Doug Smith CIS 764 Fall Semester 2007.
Objektorienteret netværkskommunikation Presentation: Architectures for Distributed Systems.
1 Computer Systems & Architecture Lesson 2 3. Understanding Quality Attributes.
1 System Models. 2 Outline Introduction Architectural models Fundamental models Guideline.
An Introduction to Software Architecture
Team Skill 6: Building the Right System From Use Cases to Implementation (25)
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
Software Engineering Quality What is Quality? Quality software is software that satisfies a user’s requirements, whether that is explicit or implicit.
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
Other Quality Attributes Other Important Quality attributes Variability: a special form of modifiability. The ability of a system and its supporting artifacts.
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.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Advanced Computer Networks Topic 2: Characterization of Distributed Systems.
© 2005 Prentice Hall10-1 Stumpf and Teague Object-Oriented Systems Analysis and Design with UML.
1 Software Architecture in Practice Quality attributes.
Introduction to Software Engineering. Why SE? Software crisis manifested itself in several ways [1]: ◦ Project running over-time. ◦ Project running over-budget.
Presentation: Architectural Design for Distributed Systems Objektorienteret netværkskom.
CS551 - Lecture 5 1 CS551 Lecture 5: Quality Attributes Yugi Lee FH #555 (816)
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
6/23/2005 R. GARDNER OSG Baseline Services 1 OSG Baseline Services In my talk I’d like to discuss two questions:  What capabilities are we aiming for.
Evaluating Architectures. Quality Control Rarely fun, but always necessary 1.
# 1 AMI Enterprise Task Force of the Utility AMI Working Group SRS Team Plan Discussion For further information, contact Joe Zhou Team Lead
1 Software Architecture in Practice Quality attributes (The amputated version)
Cloud Computing and Architecture Architectural Tactics (Tonight’s guest star: Availability)
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
services/load-stress-performance- testing.php Computer Platforms Evaluating performance.
Software Architecture Quality Attributes. Good or Bad? Measurable criterions required...
CSHenrik Bærbak Christensen1 Flexibility and Maintainability And their metrics: coupling and cohesion.
Managing multiple projects or services? Have a mix of Microsoft Project and more simple tasks? Need better visibility and control?
ISS Team Group Member ◦ Nguy ễ n Nh ậ t Minh ◦ Nguy ễ n Kh ắ c Khu ◦ Ph ạ m Ng ọ c Hi ế u ◦ Nguy ễ n Ng ọ c Khánh ◦ Nguy.
Software Architecture in Practice
Rekayasa Perangkat Lunak Part-10
Rekayasa Perangkat Lunak
Software Architecture in Practice
McCall’s Quality Factors
Software Design and Architecture
Distribution and components
Software Architecture in Practice
Software engineering.
مقدمه اي بر مهندسي نيازمنديها
Rekayasa Perangkat Lunak
Quality Attributes Or, what’s wrong with this:
Software Architecture in Practice
Thursday’s Lecture Chemistry Building Musspratt Lecture Theatre,
Quality Attributes Or, what’s wrong with this:
An Introduction to Software Architecture
Baisc Of Software Testing
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
Chapter 5 Architectural Design.
Design Yaodong Bi.
Database System Architectures
Software Engineering and Architecture
Quality Attributes Or, what’s wrong with this:
Presentation transcript:

Software Architecture Quality Attributes

Measurable criterions required... Good or Bad? Measurable criterions required...

Henrik Bærbak Christensen What does “good” mean? Question: Is this little C program an example of good or bad software? Exercise 1: Argue that this is a good program! Exercise 2: Argue that this is a bad program ! int a[1817];main(z,p,q,r){for(p=80;q+p-80;p-=2*a[p])for(z=9;z--;)q=3&(r=time(0) +r*57)/7,q=q?q-1?q-2?1-p%79?-1:0:p%79-77?1:0:p<1659?79:0:p>158?-79:0,q?!a[p+q*2 ]?a[p+=a[p+=q]=q]=q:0:0;for(;q++-1817;)printf(q%79?"%c":"%c\n"," #"[!a[q-1]]);} Henrik Bærbak Christensen

(What did the C program do?) Henrik Bærbak Christensen

Henrik Bærbak Christensen The need for measuring The server should be highly available... My software is really reusable! Our high performance server will... These are simply claims  Actual measurements on well defined scale is better... Henrik Bærbak Christensen

Henrik Bærbak Christensen Quality Attributes The problem about ”good” or ”bad” is that they are subjective measures... We need to measure our software. This requires that we define the aspects/qualities we measure that we agree on some kind of scale: a metric Quality attributes (da: kvalitets-attributter) Henrik Bærbak Christensen

Henrik Bærbak Christensen Measuring quality Quality Framework Quality Attribute Metric Measurement Performance Usability En metrik kan være kvalitativ: høj usability / lav usability; eller kvantitativ: en kassedame vil kunne benytte 80% af systemets funktionalitet efter 2 timers indlæring. Choose alternatives Maintainability Henrik Bærbak Christensen

’Quality communities’ One aspects of qualities is that most of them have dedicated research communities associated: performance freaks (algorithm people, database, ...) usability freaks (HCI – human computer interface ) security freaks cost freaks (managers ) reusability freaks (pattern community ) ...which has lead to lack of common vocabulary… user input, attack, event, failures, are all stimulus We need to provide common ground Henrik Bærbak Christensen

Henrik Bærbak Christensen SAiP’s Contribution The book Software Architecture in Practice has defined a framework that allow different architecturally qualities to be expressed in a similar form: A quality framework Quality Attributes: Set of qualities to consider Quality Metric: A technique for measuring them before the fact – that is QAS can be used in early architecture design phase – the napkin phase Henrik Bærbak Christensen

Quality framework (Bass et al.) System quality attributes Availability Modifiability Performance Security Testability Usability Interoperability Scalability Deployability … Business qualities Time to market Cost Projected lifetime Targeted market Roll-out schedule Integration with legacy sys. Architectural qualities Conceptual integrity Correctness and completeness Buildability Henrik Bærbak Christensen

Henrik Bærbak Christensen The System Qualities Availability Concerned with the probability that the system will be operational when needed Modifiability Concerned with the ease with which the system supports change Performance Concerned with how long it takes the system to respond when an event occurs Henrik Bærbak Christensen

Henrik Bærbak Christensen The System Qualities Security Concerned with the systems ability to withstand attacks/threats Testability Concerned with the ease with which the software can be made to demonstrate its faults Usability Concerned with how easy it is for the user to accomplish a desired task and the kind of user support the system provides Henrik Bærbak Christensen

Henrik Bærbak Christensen Exercise System quality attributes Availability Modifiability Performance Security Testability Usability Business qualities Time to market Cost Projected lifetime Targeted market Roll-out schedule Integration with legacy sys. Architectural qualities Conceptual integrity Correctness and completeness Buildability Which of these will have the greatest impact on your professional and personal lives? Henrik Bærbak Christensen

“We want them all” Qualities in conflict

The conflict of qualities Many qualities are in direct conflict – they must be balanced ! modifiability and performance many delegations costs in execution speed – and memory footprint cost and reusability highly flexible software costs time, effort, and money security and availability availability through redundancy – increase opportunities of attack etc. Henrik Bærbak Christensen

Design Patterns in Perspective Examples of Good turning Bad

Henrik Bærbak Christensen Iteration In a distributed system, the clients need to iterate over all order lines in a order object... Using RMI – Remote Method Invocation – the code looks exactly the same even when the Order object is on the server side !!! Great! Iterator is a nice, flexible, design pattern  Iterator i = order.iterator(); while ( i.hasNext() ) { OrderLine entry = (OrderLine) i.next(); [process entry] } Henrik Bærbak Christensen

Henrik Bærbak Christensen The sequence diagram All is fine ... Henrik Bærbak Christensen

Henrik Bærbak Christensen ... but Let us consider the deployment of objects Henrik Bærbak Christensen

... what about performance ? Message-call is much more expensive over a network 2002 data: 20.000 msg/sec local; 220 msg/sec remote 90-times slow-down – probably much worse today. The iterator pattern ensures an extreme slow-down compared to transferring all order line objects in a single network package ! Henrik Bærbak Christensen

Henrik Bærbak Christensen Another example... Singleton Ensure a class only has one instance, and provide a global point of access to it. However, a singleton in a distributed system is a major headache! one server becomes two servers with a load balancer for scalability now there are two singletons ! really only one singleton a major performance bottle-neck to ensure the system will never ever scale ! Actually – many consider singleton an anti-pattern! Henrik Bærbak Christensen