Chapter 7: Software Engineering Flashcards

1
Q

The software engineering discipline

  • Distinct from other engineering fields:
  • CASE (Computer Aided Software Engineering) tools:
A
  • Distinct from other engineering fields:
    • Prefabricated components
    • Metrics
  • CASE (Computer Aided Software Engineering) tools:
    • Project planning
    • Project management
    • Documentation
    • Prototyping and simulation
    • Interface design
    • Programming
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

The Software lifecycle

A

Development, Deploy, Maintenance and repeat!

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

The development phase

A

Requirement analysis
Design
Implementation
Testing

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

Software engineering methodologies

A
  • Waterfall model
  • Incremental model (extending repeatedly)
  • Iterative model (refining repeatedly)
  • Agile methods
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Scrum (1)
It’s the most popular agile development method

Different roles:

A
  • Product Owner maintains a product backlog
  • Development team 3-9 people
  • Scrum master (not a traditional project manager)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Scrum (2)
Workflow:

  • Sprint:
  • Sprint planning:
  • Daily scrum:
  • Sprint review:
  • Sprint retrospective:
A
  • Sprint: is an iteration of 2-4 weeks and should have some deliveries
  • Sprint planning: planning the upcoming sprint
  • Daily scrum: daily morning meeting (stand-up)
  • Sprint review: the work of the sprint is presented and reviewed
  • Sprint retrospective: continuous process improvements
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Modularity (1)

A
  • Module: a manageable unit of software
  • Modules vs
    Procedures (imperative programming)
    Functions (functional programming)
    Objects (object-oriented programming)
    Components (component architecture)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q
  • Coupling:
  • Cohesion:
  • Information hiding:
A
  • Coupling: the linkage between modules (should be minimized):
    control coupling
    data coupling
  • Cohesion: the internal binding within a module (should be maximized)
    Logical cohesion
    Functional cohesion
  • Information hiding: restricting information to a module (should be achieved)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Structure chart

A
  • A structure chart shows the breakdown of a system to its lowest manageable levels. They are used in structured programming to arrange program modules into a tree.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Data Flow diagram

A
  • Data flow diagrams provide a graphical representation of how information moves between processes in a system. Data flow diagrams follow a hierarchy; that is, a diagram may consist of several layers, each unique to a specific process or data function
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Use Case diagram (UML)

A
  • A UML is a way to summarize details of a system and the users within that system.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Class diagram (UML) - relationships

A
  • Class diagram describes the structure of classes and the relationships between classes.
  • Entity relationship diagram describes entities and relationships between entities
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Design patterns

A
  • Design patterns are “templates” for solving recurring problems
  • Examples:
    adapter pattern (adapts the interface)
    decorator pattern (extends the interface)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Software testing strategies

A
  • Glass box testing (white box testing):
    The tester is aware of the internal structure of the software (the source code)
    Pareto principle: focus on the modules where the problems seem to be
    basis path testing: each instruction in the software is executed at least once
  • Black box testing:
    Tests that do not rely on knowledge about the internal structure of the software (tests from the user’s point of view)
    Boundary value analysis
    Beta testing (tested by external users)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly