Chapter 1 - Introduction Flashcards

1
Q

Software engineering

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Million monkey approach

A

Adding more and more programmers to the project as a solution to problems.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Facets of software engineering

A
  • development of large programs
  • mastering complexity
  • development efficiency
  • cooperation between people
  • user support
  • software evolves
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Software engineering deals with:

A

Management of huge projects, human factors, cost estimation and control.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Phases in software development

A

Requirements engineering -> design -> implementation -> testing -> maintenance.

This is called process model.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Requirements engineering (phase)

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Design (phase)

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Implementation (phase)

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Testing (phase)

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Maintenance (phase)

A

Goal: keeping system operational after it has been delivered to the user

Maintenance phase should fix still undetected errors, change and enchance the system.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Other software development activities

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Maintenance types

A
  • 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)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly