Chapter 1 - Introduction Flashcards
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
- development of large programs
- mastering complexity
- development efficiency
- cooperation between people
- user support
- software evolves
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:
- the functions of the software to be developed
- possible future extensions of the system
- the amount and kind of documentation required
- response time and other performance requirements of the system
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:
- Capture early decisions in a global description of the system (architecture).
- Architecture then serves as a template for development of similar systems or the skeleton for the development of reusable components
Resulting document: technical specification document
Implementation (phase)
Goal: the development of a well-documented, reliable, easy to read, flexible, correct, program.
Implementation process:
- Starting point is the component’s specification
- Extra ‘design’ phase taking advantage of high-level programming language notation, such as a pseudocode.
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
- corrective maintenance - repair of actual errors
- adaptive maintenance - adapting the software to chanes in the environment such as new hardware or release of an OS or database system
- perfective maintenance - adapting the software to new or changed user requirements (also includes work to increase the system’s performance or enchance its user interface.
- preventive maintenance - increasing system’s future maintainability (adding comments, updating documentation, improving modular structure of a system)