Software Qualities. Unique Properties of Software (Teams: What are the properties of software that make it unique from other engineering disciplines?)

Slides:



Advertisements
Similar presentations
Ch.21 Software Its Nature and Qualities. Ch.22 Outline Software engineering (SE) is an intellectual activity and thus human-intensive Software is built.
Advertisements

Object-Oriented Software Construction Bertrand Meyer 2nd ed., Prentice Hall, 1997.
Chapter 2 The Software Process
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Reliability Week 11 - Lecture 2. What do we mean by reliability? Correctness – system/application does what it has to do correctly. Availability – Be.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Capability Maturity Model (CMM) in SW design
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
1 R&D SDM 1 Software Project Management Capability Maturity Model 2009 Theo Schouten.
Capability Maturity Model
Capability Maturity Model. Reflection Have you ever been a part of, or observed, a “difficult” software development effort? How did the difficulty surface?
What is Software Engineering? the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software”
Chapter 2 The process Process, Methods, and Tools
N By: Md Rezaul Huda Reza n
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.
1 Chapter 2 The Process. 2 Process  What is it?  Who does it?  Why is it important?  What are the steps?  What is the work product?  How to ensure.
College of Engineering and Computer Science Computer Science Department CSC 131 Computer Software Engineering Fall 2006 Lecture # 1 (Ch. 1, 2, & 3)
SOFTWARE ENGINEERING1 Introduction. Software Software (IEEE): collection of programs, procedures, rules, and associated documentation and data SOFTWARE.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Introduction to Software Engineering LECTURE 2 By Umm-e-Laila 1Compiled by: Umm-e-Laila.
Software Software is omnipresent in the lives of billions of human beings. Software is an important component of the emerging knowledge based service.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
Lecture 1 Introduction to Software Engineering
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITHClass of 39 CS3600: Software Engineering: Standards in Process Modeling CMM and PSP.
Software Engineering Lecture # 17
Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Software Engineering Quality What is Quality? Quality software is software that satisfies a user’s requirements, whether that is explicit or implicit.
Chapter 1: Introduction Omar Meqdadi SE 2730 Lecture 1 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
OHTO -99 SOFTWARE ENGINEERING “SOFTWARE PRODUCT QUALITY” Today: - Software quality - Quality Components - ”Good” software properties.
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.
IS Methodologies. Systems Development Life Cycle - SDLC Planning Planning define the system to be developed define the system to be developed Set the.
I Power Higher Computing Software Development The Software Development Process.
CS Process Improvement CMM Hans Van Vliet, Software Engineering, Principles and Practice, 3 rd edition, John Wiley & Sons, Chapter 6. W. Humphrey,
Introduction to Software Engineering. Why SE? Software crisis manifested itself in several ways [1]: ◦ Project running over-time. ◦ Project running over-budget.
Process Improvement. It is not necessary to change. Survival is not mandatory. »W. Edwards Deming Both change and stability are fundamental to process.
CS551 - Lecture 5 1 CS551 Lecture 5: Quality Attributes Yugi Lee FH #555 (816)
Process Improvement. It is not necessary to change. Survival is not mandatory. »W. Edwards Deming.
Overview: Software and Software Engineering n Software is used by virtually everyone in society. n Software engineers have a moral obligation to build.
CSE 303 – Software Design and Architecture
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
CS 1120: Computer Science II Software Life Cycle Slides courtesy of: Prof. Ajay Gupta and Prof. James Yang (format and other minor modifications by by.
Software Engineering Introduction.
SOFTWARE PROCESS IMPROVEMENT
Object-Oriented Software Engineering Chapter 1 Software and Software Engineering.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Software Engineering (CSI 321) Software Process: A Generic View 1.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
CS223: Software Engineering Lecture 32: Software Maintenance.
INTRODUCTION CSE 470 : Software Engineering. Goals of Software Engineering To produce software that is absolutely correct. To produce software with minimum.
Advanced Software Engineering Dr. Cheng
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
CS4311 Spring 2011 Process Improvement Dr
Software Engineering (CSI 321)
Level 1 Level 1 – Initial: The software process is characterized as ad hoc and occasionally even chaotic. Few processes are defined, and success depends.
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Overview: Software and Software Engineering
CS 1120: Computer Science II Software Life Cycle
Software Engineering I
QUALITY ASSURANCE.
CS385T Software Engineering Dr.Doaa Sami
Capability Maturity Model
CS 1120: Computer Science II Software Life Cycle
Capability Maturity Model
Chapter 1: Software and Software Engineering
Presentation transcript:

Software Qualities

Unique Properties of Software (Teams: What are the properties of software that make it unique from other engineering disciplines?)

Unique properties of software malleable: –can replace ordinary switch with electronic, more "intelligent“ –the only replaceable component of a deep space craft artificial: –not tied to physical properties like civil or mechanical human-intensive: –almost no manufacturing: all engineering complex: –each bolt is different use: –applied out of scope of development young field

Software Qualities: Two types –External: –Internal: Two categories –Product: –Process:

Software Qualities: Two types –External: visible to users (e.g., speed) –Internal: visible to developers (e.g., verifiability) Two categories –Product: difficult to measure –Process: I can't show you how good it is, but I can tell you how hard we tried

Only external factors matter. It doesn’t matter if it’s written in C or Java or Lisp or 6502 machine language, so long as it does what it’s supposed to. The internal properties are just a means to achieve external properties.

External Software Properties Correctness Robustness Reliability Extendibility Compatibility Efficiency Portability Ease of use Functionality Timeliness Verifiability Integrity Maintainability Reusability

Correctness Ability of software to perform tasks as defined by the specification. Note that this is not possible without a specification: –if you don’t know what it’s supposed to do, how can you tell if it’s correct?

Robustness Ability of software to react appropriately to abnormal conditions. This is a compliment to correctness. They do not overlap.

Reliability The probability that software will provide failure-free operation in a fixed environment for a fixed interval of time (measured per unit time) Probability of failure is the probability that the software will fail on the next input selected (time-independent measure) These two measures can be easily related if you know the frequency with which inputs are executed per unit of time

Extendibility Ease of adapting software to changes in specification Seems like an internal, but when the customer has to wait 6 months for an update, this becomes external Simplify designs, Decentralize the operations (data hiding, etc) GtgyGDV38wxWan3dOFC_2jtrmiT_LUulLgp1ZaDJSU0ybA

Evolvability Tends to decrease with each release The lifetime of a system is thus limited The opposite of “brittleness” Fight brittleness by refactoring: i.e., changing the internal design to improve evolvability. 0byTYL23EQM:&imgrefurl= in-todays-ny-times/&docid=Gja_CXod2gYEJM&w=600&h=468&ei=WfFbTtGSHO- rsAK4l5zHDA&zoom=1&iact=rc&dur=351&page=1&tbnh=126&tbnw=169&start=0&ndsp=12&ved=1t:4 29,r:1,s:0&tx=84&ty=74

Compatibility/Portability Ease of combining software with other systems Able to run on different hardware Examples –Is a plotting package compatible with a word processor? –Can our system be ported to the Mac?

Efficiency Software places as few demands on resources as possible –Hard: real time systems –Soft: is it usable?

Efficiency Say you buy a new computer. You could handle N cases before and the new machine is twice as fast. How many cases can you handle?

Efficiency Say you buy a new computer. You could handle N cases before and the new machine is twice as fast. How many cases can you handle? Depends on the algorithm: –linear: 2N –N 2 : 41% more –2 N: Just 1 more

Ease of use What does this mean?

Ease of use What does this mean? –How fast an average user can learn to use it? (installation, operation, monitoring). –How much does the system help the user? How do you measure it? –?

Measuring ease of use Non-trivial issue Ease of use contributed to 3 Mile Island Nuclear Power Station failure Advice: Help the user identify problems and perform tasks

Functionality The range of things the system can do. How much is enough? It fights against all the others. creeping featurism. W4BecK59zQCO7Xqez2MM_zXFv7X6o8fJW8WQIbzyvmwQ

Timeliness Can it be delivered when needed? DvN8boa1oyjWyFZlITx9ss45a-V2FQqwE2p0w

Verifiability Can the system be verified? –Is it right? –How do you know? y4oVW6RnjXJk47XXtgjSkQ5-3h7fOs0FAZhbg

Integrity Can it protect itself from outsiders? iBSVqYogVQNm1zA2Q6V9jrlvYAWnWTw

Maintainability Can we modify it? –60% of cost is here –corrective: bugs, 20% –adaptive: environment change 20% –perfective: improve functionality 50% _uXrmCF2NMfwPAsfqIcLFbIhKtQ

Economy Is it affordable? Can we buy or develop it? Can we maintain it? –Programmer staff? –Licenses? –Hardware? sOlVAaF79BVxwmxYUDoAAnUSEb7TX

Reusability The ability of software elements to be used in different software systems. –Should be faster, more reliable. –It isn’t always –Seems to be more internal than external Consider the construction of a chemical plant. –We start with standard parts and assemble them. –Consider hardware: assemble standard parts. –Consider software?

Tradeoffs Integrity vs ease of use Economy vs functionality Efficiency vs portability Timeliness vs extendibility Correctness: never a good tradeoff Tradeoffs change with different applications –Information systems, real time systems, distributed systems, embedded systems

Process Improvement Challenges: –Software development is evolutionary and experimental. –Software development is not production. –The technologies of the discipline are human based. –There is a lack of models that allow us to reason about the process and the product. –All software is not the same: process is a variable, goals are variable, content varies.

Initial Ad hoc Little formalization Tools informally applied to process Repeatable Achieved a stable process with a repeatable level of statistical control Defined Achieved foundation for major and continuing progress Managed Substantial quality improvements Comprehensive process measurements Optimizing Major quality and quantity improvements Basic management control Process definition Process management Process control Software Engineering Institute Carnegie Mellon Capability Maturity Model

CMM Maturity Level 1: Initial Characteristics No sound SE management principles in place Ad hoc practices May be successful because of competent manager and team Activities are not preplanned, but response to crisis Unpredictable process Cannot predict time and cost of development To get to next level Initiate rigorous project management, management oversight, and quality assurance

CMM Maturity Level 2: Repeatable Characteristics Basic SE management practices in place Planning and management are based on experience with similar products (repeatable) Track costs and schedules Identify problems as arise and take immediate corrective action Key practices: quality assurance, CM, project planning To get to next level Establish a process group Establish a software development process architecture Introduce software engineering methods and technologies

CMM Maturity Level 3: Defined Characteristics Process for development fully documented Reviews used to achieve software quality Introduce CASE Tools To get to next level Establish a basic set of process management to identify the quality and cost parameters Establish a process database Gather and maintain process data Access relative quality of each product and inform management

CMM Maturity Level 4: Managed Characteristics Organization sets quality and productivity goals for each project Continually measure Statistical quality control in place To get to next level Support automatic gathering of process data Use data to analyze and modify the process

CMM Maturity Level 5: Optimizing Characteristics Statistical quality and process control techniques are used and guide the organization Process has positive feedback loop To maintain level Continue improvement and optimization of the process