object-Oriented Software Engineering Practical Software development using uml and Java Chapter 1: Software and Software Engineering www.oseng.com
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering
1.1 The nature of software Software is intangible Hard to understand development effort Software is easy to reproduce Cost is in its development in other engineering products manufacturing is the costly stage The industry is labor-intensive Hard to automate www.oseng.com O Lethbridge/Laganiere 2001 Chapter 1: Software and Software Engineering
© Lethbridge/Laganière 2001 Chapter 1: Software and Software Engineering 2 1.1 The Nature of Software... Software is intangible • Hard to understand development effort Software is easy to reproduce • Cost is in its development —in other engineering products, manufacturing is the costly stage The industry is labor-intensive • Hard to automate
The nature of software Untrained people can hack something together Quality problems are hard to notice Software is easy to modify People make changes without fully understanding it Software does not wear out It deteriorates by having its design changed -erroneously, or -in ways that were not anticipated, thus making it complex www.oseng.com O Lethbridge/Laganiere 2001 Chapter 1: Software and Software Engineering
© Lethbridge/Laganière 2001 Chapter 1: Software and Software Engineering 3 The Nature of Software ... Untrained people can hack something together • Quality problems are hard to notice Software is easy to modify • People make changes without fully understanding it Software does not ‘wear out’ • It deteriorates by having its design changed: —erroneously, or —in ways that were not anticipated, thus making it complex
The nature of software Conclusions Much software has poor design and is getting worse Demand for software is high and rising We are in a perpetual software crisis We have to learn to engineer software www.oseng.com O Lethbridge/Laganiere 2001 Chapter 1: Software and Software Engineering 4
© Lethbridge/Laganière 2001 Chapter 1: Software and Software Engineering 4 The Nature of Software Conclusions • Much software has poor design and is getting worse • Demand for software is high and rising • We are in a perpetual ‘software crisis’ • We have to learn to ‘engineer’ software
Types of Software Custom For a specific customer Generic Sold on open market Often called -COTS( Commercial Off The Shelf Shrink-wrapped Embedded Built into hardware Hard to change www.oseng.com O Lethbridge/Laganiere 2001 Chapter 1: Software and Software Engineering
© Lethbridge/Laganière 2001 Chapter 1: Software and Software Engineering 5 Types of Software... Custom • For a specific customer Generic • Sold on open market • Often called —COTS (Commercial Off The Shelf) —Shrink-wrapped Embedded • Built into hardware • Hard to change
Types of Software Differences among custom generic and embedded software Custom Generic E meade Number of copies in use Ow medium Total processing power low high medium devoted to running this type oI SoFtware Worldwide annual high medium low development effort www.oseng.com O Lethbridge/Laganiere 2001 Chapter 1: Software and Software Engineering 6
© Lethbridge/Laganière 2001 Chapter 1: Software and Software Engineering 6 Types of Software Differences among custom, generic and embedded software Custom Generic Embedded Number of copies in use low medium high Total processing power devoted to running this type of software low high medium Worldwide annual development effort high medium low
Types of Software Real time software E.g. control and monitoring systems Must react immediately Safety often a concern Data processing software Used to run businesses Accuracy and security of data are key Some software has both aspects www.oseng.com O Lethbridge/Laganiere 2001 Chapter 1: Software and Software Engineering
© Lethbridge/Laganière 2001 Chapter 1: Software and Software Engineering 7 Types of Software Real time software • E.g. control and monitoring systems • Must react immediately • Safety often a concern Data processing software • Used to run businesses • Accuracy and security of data are key Some software has both aspects
2 What is Software engineering? The process of solving customers'problems by the systematic development and evolution of large, high- quality software systems within cost, time and other constraints Solving customers'problems This is the goal of software engineering Sometimes the solution is to buy, not build Adding unnecessary features does not help solve the problem Software engineers must communicate effectively to identify and understand the problem www.oseng.com O Lethbridge/Laganiere 2001 Chapter 1: Software and Software Engineering 8
© Lethbridge/Laganière 2001 Chapter 1: Software and Software Engineering 8 1.2 What is Software Engineering?... The process of solving customers’ problems by the systematic development and evolution of large, highquality software systems within cost, time and other constraints Solving customers’ problems • This is the goal of software engineering • Sometimes the solution is to buy, not build • Adding unnecessary features does not help solve the problem • Software engineers must communicate effectively to identify and understand the problem
What is Software Engineering? Systematic development and evolution An engineering process involves applying well understood techniques in a organized and disciplined way Many well-accepted practices have been formally standardized - e.g. by the Ieee or Iso Most development work is evolution Large, high quality software systems Software engineering techniques are needed because large systems cannot be completely understood by one person Teamwork and co-ordination are required Key challenge: Dividing up the work and ensuring that the parts of the system work properly together The end-product that is produced must be of sufficient quality www.oseng.com O Lethbridge/Laganiere 2001 Chapter 1: Software and Software Engineering
© Lethbridge/Laganière 2001 Chapter 1: Software and Software Engineering 9 What is Software Engineering?… Systematic development and evolution • An engineering process involves applying well understood techniques in a organized and disciplined way • Many well-accepted practices have been formally standardized —e.g. by the IEEE or ISO • Most development work is evolution Large, high quality software systems • Software engineering techniques are needed because large systems cannot be completely understood by one person • Teamwork and co-ordination are required • Key challenge: Dividing up the work and ensuring that the parts of the system work properly together • The end-product that is produced must be of sufficient quality
What is Software engineering? Cost time and other constraints Finite resources The benefit must outweigh the cost Others are competing to do the job cheaper and faster Inaccurate estimates of cost and time have caused many project failures www.oseng.com O Lethbridge/Laganiere 2001 Chapter 1: Software and Software Engineering
© Lethbridge/Laganière 2001 Chapter 1: Software and Software Engineering 10 What is Software Engineering? Cost, time and other constraints • Finite resources • The benefit must outweigh the cost • Others are competing to do the job cheaper and faster • Inaccurate estimates of cost and time have caused many project failures