1 - Software
1 - Software
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.
See in Umple
Object
• A chunk of structured data in a
running software system
• Has properties
— Represent its state
• Has behaviour
— How it acts and reacts
— May simulate the behaviour of an
object in the real world
A class:
• A unit of abstraction in an object
oriented (OO) program
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
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
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
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:
• 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?
Modeling
• Creating representations of the domain
or the software
— Use case modeling
— Structural modeling
— Dynamic and behavioural modeling
Programming
Quality assurance
• Reviews and inspections
• Testing
Deployment
Managing the process