Lecture 2
Lecture 2
Requirements
Engineering
Recap!
•What are the unknowns? What data, functions, and features are required to
properly solve the problem?
•Is each component part of the solution provably correct? Has the design and
code been reviewed, or better, have correctness proofs been applied to
algorithm?
Examine the Results
•Is it possible to test each component part of the solution? Has a reasonable
testing strategy been implemented?
•Does the solution produce results that conform to the data, functions, and
features that are required? Has the software been validated against all
stakeholder requirements?
Software Costs
•The costs of software on a PC are often greater than the hardware cost
•Software costs more to maintain than it does to develop. For systems with a
long life, maintenance costs may be several times more than the development
costs
change
actual curve
idealized curve
Time
Software Engineering
Software engineering is an engineering discipline that is concerned with all
aspects of software production from the early stages of system specification
through to maintaining the system after it has gone into use.
•Acceptability
• Software must be acceptable to the type of users for which it is designed. This means
that it must be understandable, usable, and compatible with other systems that they
use
Four Fundamental Activities
•These four fundamental activities are common to all software processes.
1. Software specification
• Customers and engineers define the software that is to be produced and the
constraints on its operation
2. Software development
• Where the software is designed and programmed
3. Software validation
• Where the software is checked to ensure that it is what the customer requires
4. Software evolution
• Where the software is modified to reflect changing customer and market
requirements
Adapting a Process Model
The process should be agile and adaptable to problems. Process adopted for one
project might be significantly different than a process adopted for another
project.