Software engineering
Software engineering concerns methods and techniques to develop large software systems. The engineering metaphor is used to emphasize a systematic approach to develop systems that satisfy organizational requirements and constraints.
Million monkey approach
Adding more and more programmers to the project as a solution to problems.
Facets of software engineering
Software engineering deals with:
Management of huge projects, human factors, cost estimation and control.
Phases in software development
Requirements engineering -> design -> implementation -> testing -> maintenance.
This is called process model.
Requirements engineering (phase)
Goal: get a complete description of the problem and the requirements posed by the environment in which the system will function.
Description of problem to be solved includes things like:
Requirements engineering contains a feasibility study (in order to assess if problem is both economically and technically feasible
Resulting document: requirements specification
Design (phase)
Goal: model of the whole system is developed which when encoded in some programming language solves the problem for the user.
Problem is decomposed in components. The functions of these components and the interfaces between them are specified in a very precise way
A way to do design phase:
Resulting document: technical specification document
Implementation (phase)
Goal: the development of a well-documented, reliable, easy to read, flexible, correct, program.
Implementation process:
Resulting product: an executable program
Testing (phase)
Goal: make sure program implementation is correct
Testing should be part of the process right from the reqiuirements engineering phase.
Testing if the transition between phases is correct is called verification.
Testing if user requirements are still satisfied is called validation.
Maintenance (phase)
Goal: keeping system operational after it has been delivered to the user
Maintenance phase should fix still undetected errors, change and enchance the system.
Other software development activities
Project management spans all phases of software development and ensures the product is delivered on time and within budget.
**Documentation **key components: project plan, quality plan, requirements specification, architecture description, design documentation and test plan.
Documentation should start early on in the project
Maintenance types