Object-Oriented Software Engineering: Practical Software Development Using UML and Java
Object-Oriented Software Engineering: Practical Software Development Using UML and Java
Engineering
Practical Software Development using UML
and Java
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
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
Differences among custom, generic and embedded software
C u s to m G e n e ric E m bedd ed
N u m b e r oc fo p ie sin u s e lo w m e d iu m h ig h
T o ta l p r o c e s s in g p o w elor w h ig h m e d iu m
d e v o te d to ru n n in g th is ty p e
o f s o ftw a re
W o rld w id e a n n u a l h ig h m e d iu m lo w
d e v e lo p m e n t e ffo r t
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
Other definitions:
– IEEE: (1) the application of a systematic, disciplined, quantifiable approach
to the development, operation, maintenance of software; that is, the
application of engineering to software. (2) The study of approaches as in
(1).
– The Canadian Standards Association: The systematic activities involved in
the design, implementation and testing of software to optimize its
production and support.
What is Software Engineering?…
1. Users
– Those who use the software
2. Customers
– Those who pay for the software
3. Software developers
4. Development Managers
QUALITY
SOFTWARE
These:
– Characterize aspects of the design of the
software
– Have an effect on the external quality attributes
– E.g.
The amount of commenting of the code
The complexity of the code
Short Term Vs. Long Term Quality
Short term:
– Does the software meet the customer’s immediate needs?
– Is it sufficiently efficient for the volume of data we have
today?
Long term:
– Maintainability
– Customer’s future needs
– Scalability: Can the software handle larger volumes of
data?
Software Engineering Projects
Most projects are evolutionary or maintenance projects,
involving work on legacy systems
– Corrective projects: fixing defects
– Adaptive projects: changing the system in response to changes
in
Operating system
Database
Rules and regulations
– Enhancement projects: adding new features for users
– Reengineering or perfective projects: changing the system
internally so it is more maintainable
Activities Common to Software Projects