Improving Design #1 Reduce complexity - narrow-down the project scope - optimize underlying process - eliminate unneeded parts # 2 Find and eliminate redundancies.

Slides:



Advertisements
Similar presentations
Building Bug-Free O-O Software: An Introduction to Design By Contract A presentation about Design By Contract and the Eiffel software development tool.
Advertisements

Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Design Concepts and Principles
Chapter 13 Design Concepts and Principles
ITIL: Service Transition
5 december 2011 Living Probabilistic Asset Management Dr.ir. J.A. van den Bogaard.
1 Software Testing and Quality Assurance Lecture 12 - The Testing Perspective (Chapter 2, A Practical Guide to Testing Object-Oriented Software)
Software Testing and Quality Assurance
Design Creative Process of transferring the problem into a solution
Software Testing and Quality Assurance
Requirements - Why What and How? Sriram Mohan. Outline Why ? What ? How ?
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
Karlstad University Computer Science Design Contracts and Error Management Design Contracts and Errors A Software Development Strategy (anpassad för PUMA)
Software Engineering CSE470: Requirements Analysis 1 Requirements Analysis Defining the WHAT.
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.
CSC 402, Fall Requirements Analysis for Special Properties Systems Engineering (def?) –why? increasing complexity –ICBM’s (then TMI, Therac, Challenger...)
Problem with Software Requirements are complex The client does not know the functional requirements in advance Requirements may be changing Technology.
 QUALITY ASSURANCE:  QA is defined as a procedure or set of procedures intended to ensure that a product or service under development (before work is.
Project Documentation and its use in Testing JTALKS.
Maintenance When the system is complete and deployed the system is operational. The work done on the operational system is called maintenance.
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
“Faultless to a fault.” - Robert Browning Albert Hsu
Introduction to Systems Analysis and Design Trisha Cummings.
1 Building and Maintaining Information Systems. 2 Opening Case: Yahoo! Store Allows small businesses to create their own online store – No programming.
CMSC 345 Fall 2000 Unit Testing. The testing process.
المحاضرة الثالثة. Software Requirements Topics covered Functional and non-functional requirements User requirements System requirements Interface specification.
ITEC224 Database Programming
An Introduction to Software Architecture
Chapter 12: Systems Investigation and Analysis. Agenda  How to Develop a CBIS?  Systems Development Life Cycle (SDLC)  Prototyping  Join Application.
Approaching a Problem Where do we start? How do we proceed?
Recall The Team Skills 1. Analyzing the Problem (with 5 steps) 2. Understanding User and Stakeholder Needs 3. Defining the System 4. Managing Scope 5.
Software Testing Yonsei University 2 nd Semester, 2014 Woo-Cheol Kim.
Software Engineering Saeed Akhtar The University of Lahore Lecture 6 Originally shared for: mashhoood.webs.com.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
REQUIREMENTS - WHY WHAT AND HOW? Steve Chenoweth & Chandan Rupakheti CSSE 371 Chapters Requirements Text. Question 6.
1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 24 Delivering the System.
Software Quality Assurance and Testing Fazal Rehman Shamil.
Software reviews Cost impact of software defects Defect amplification model Review metrics and their use – Preparation effort (E p ), assessment effort.
February 19, February 19, 2016February 19, 2016February 19, 2016 Azusa, CA Sheldon X. Liang Ph. D. Software Engineering in CS at APU Azusa Pacific.
CSCI 3428: Software Engineering Tami Meredith Chapter 1 Why Software Engineering.
Team-Based Development ISYS321 Managing the Information Systems Project.
1 CEN 4020 Software Engineering PPT4: Requirement analysis.
Requirement Elicitation Review – Class 8 Functional Requirements Nonfunctional Requirements Software Requirements document Requirements Validation and.
Dillon: CSE470: ANALYSIS1 Requirements l Specify functionality »model objects and resources »model behavior l Specify data interfaces »type, quantity,
Software Testing. SE, Testing, Hans van Vliet, © Nasty question  Suppose you are being asked to lead the team to test the software that controls.
Contract management 1. Acquiring software from external supplier This could be: a bespoke system - created specially for the customer off-the-shelf -
Introduction to Software Requirement Engineering Nisa’ul Hafidhoh Teknik Informatika
Advanced Higher Computing Science
ITIL: Service Transition
Methodologies and Algorithms
Design by Contract Jim Fawcett CSE784 – Software Studio
Design by Contract Jim Fawcett CSE784 – Software Studio
Software Verification and Validation
Software Quality Assurance Software Quality Factor
Initiating systems development
UNIT-IV ECS-602 Software engineering PART-I
Software testing strategies 2
Introduction to Software Testing
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Software Requirements Specification Document
Software Engineering Furqan Rustam.
IMPORTANT NOTICE TO STUDENTS:
An Introduction to Software Architecture
Software Engineering Lecture #3
Software Testing “If you can’t test it, you can’t design it”
EIDE System Requirements and Specification Documents
Systems Operations and Support
Software Maintenance Part1 Introduction. Outlines What Is Software Maintenance Purposes of Maintenance Why We Need It Maintenance Difficilties Some Tips.
Chapter 6: Architectural Design
Presentation transcript:

Improving Design #1 Reduce complexity - narrow-down the project scope - optimize underlying process - eliminate unneeded parts # 2 Find and eliminate redundancies

Design by Contract In principle a detailed technical spec should contain a precise description of what the inputs and outputs of the system should be, hence the spec can be viewed a as contract specifying what the system should do.

Contract Approach 1)Supplier 2)Client 3)Preconditions (requirements) 4)Post-conditions (guarantees) 5)Consistency constraints (safetry checks)

Dictionary Example 1)Supplier: provides source data to be inserted into dictionary 2)Client: inserts data into the dictionary 3)Preconditions: the client requires source data to be available for reading; the supplier requires the dictionary not to be full. 4)Post-conditions: the client ensures that the dictionary is not full; the supplier ensures that there is source data. 5)Consistency constraints: source data + dictionary size = const.

Fault Trees Display logical path from effect to cause. 1)Think of what can go wrong; 2)Trace how events unfold and build a graph whose nodes are failures; 3)Graph edges represent related components labeled by logical relationships (AND/OR). Once the graph is constructed we can improve design by searching for: -single points of failure -Undefined or ambiguous behavior

Fault Tree Example

Comparing Designs Criteria for comparison: 1)Implementation cost 2)Ease of algorithms change 3)Ease of data structure changes 4)Ease of functionality expansion 5)Performance 6)Reusability 7)Maintainability

Design Review 1)Preliminary review of conceptual design: uncovers design traits that are unacceptable to customer 2)Critical review of technical design: cross-examination of the design by developers, testers, hardware & network administrators, analysts, and customer reps uncovers design deficiencies.

Questions to Ask 1)Does the design solve the problem? 2)Does design address all the requirements? 3)Is the design easy to understand? 4)Can the design be improved / simplified / optimized? 5)Does the design allow for feature expansion? 6)Is the design compatible with available (target) hardware? 7)Is the design compatible with available (interfacing) software? 8)What upgrade path does the design support? 9)What maintenance issues arise from the design?

Refactoring Bad design requires extensive refactoring, i.e. patching to accommodate unforeseen or neglected issues. As a result the system may fail and require redesign due: -to inadequacy of the original design -gradual degradation of design due to refactoring

Bad Design Traits Also caused by refactoring… -Reduced performance -Loss of clarity / elegance -Increased complexity -Increased development time (deadline risks) -Increased maintenance costs (both passive and active) -Increased bug introduction probability -Reduced faith in the system

Why We Need Open Source Proven fact #1: peer review increases software quality. Proven fact #2: we need source code to fix bugs that we’ve discovered. Proven fact #3: we need source code to figure out poorly documented features and side- effects.

Commercialization Issues -Potentially cheaper software (thanks to unpaid development) -Potentially higher code quality (thanks to peer review) -Potentially surviving software (not linked to vendor fortunes) -Potentially a disaster? (no support & accountability)

Commercialization Paradigm You can’t sell open-source software, but you can make money on it anyway! How? Assume responsibility / accountability and sell support (as well as assurance)!

Commercialization Downside Intellectual property (IP) transfers into public domain. Good bye to trade secrets. Forget your software patents. One has to strike a balance between open and closed source.