Software design midterm

0.0(0)
studied byStudied by 2 people
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/78

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

79 Terms

1
New cards

Software design is

The construction of abstractions of data and computtion and the organisation of these abstractions into a working software application.

2
New cards

The most common causes for failure are? (list)

Unrealistic / unarticulated projects

Badly defined requirements

Poor reporting of project status

Poor communication

Sloppy development practices

3
New cards

Better software design includes… (list)

Making code more readable and comprehensible

Applying design principles, such as testing and input checks

Structuring software along comprehensible and reusable abstractions

4
New cards

Better software desing is used to.. (list)

Prevent bugs and misuse proactively

Improve maintainability and quality

Detect and resolve problems easier

5
New cards

The waterfall process is.. (list)

The traditional engineering perspective

Feasible for clear / static requirements

Clear phase distinction is not realistic (but good for documentation)

6
New cards

The v-model is.. (list)

An extension of the waterfall

Focus on testing and validation

Widely used

7
New cards

Pros of the waterfall and v-model

Simple

Specifications / deliverables are fully defined beforehand

8
New cards

Cons of the waterfall and v-model

Assume frozen requirements

Deliver the whole system at once

Fixed linear process

Extensive documentation

9
New cards

The prototyping process is.. (list)

Often integrated in other processes

Develop prototype for feedback

Refine prototype iteratively

10
New cards

Pros of the prototyping model

Identify the problems fast

Faster customer feedback

Gather information about the software

11
New cards

Cons of the prototyping model

Potentially excessive testing of prototypes by customers

Mismatch and changing requirements

Budgeting more challenging

12
New cards

The spiral process is.. (list)

An integration of the waterfall and prototyping process

Emphasis on managing costs and risks

Exact number of loops can vary

13
New cards

Pros of spiral process

Integrate risk management

Considers changes to requirements specifically

Emphasises communication, customer satisfaction and flexibility

14
New cards

Cons of the spiral process

Complex

Expensive / resource intensive

Challenging risk and time management

15
New cards

The 4 core values of established software engineers are

  1. Individuals and interactions over processes and tools

  2. Working software over comprehensive documentation

  3. Customer collaboration over contract negotiation

  4. Responding to change over following a plan

16
New cards

The 4 core values of established software engineers have emphasis on.. (list)

Having people with the right competencies work together

Delivering the intended software

Working with the customers to understand / explore their demands

Being flexible to react to changes in the project

17
New cards

Pros of agile development

Flexible

Customer involvement

Continuous delivery

Collaboration

Early / frequent testing

18
New cards

Cons of agile development

Predicatability?

Abandoned documentation?

Lack of planning?

Time and resource demands

19
New cards

Definition of ready

Defines when an item in the Product Backlog is ready to be worked on

20
New cards

Defintion of done

Defines the criteria for an item to be considered complete

21
New cards

The 3 high-level types of requirements

Functional; functionality / behaviour that a system offers.

Quality / non-functional; qualities of the system

Constraint; limits that cannot be changed

22
New cards

What does MoSCoW stand for?

Must have

Should have

Could have

Won’t have

23
New cards

Step by step of documenting requirements

  1. Determine binding using MoSCoW prioritisation method

  2. Determine process and system activity

  3. Determine process and system activity

  4. Determine on what a process is performed (if needed)

  5. Determine when a process is executed (if needed)

24
New cards

What does SMART stend for?

Specific

Measurable

Achievable

Relevant (realistic)

Traceable

25
New cards

What is a use case?

A use case is a description of how a system shall be used or should behabe

26
New cards

What is a model?

A model is an abstract representation of reality. It’s used to describe different properties of a software system

27
New cards

Do’s and do nots for creating an use-case diagram

Do:

  • Identify actors

  • Identify use cases

  • Describe use cases

Don’t

  • Model processes

  • Mix abstraction levels

  • Have dependent use cases

  • Have redundant use cases

28
New cards

What is a class diagram used for?

A class diagram is used to represent internal design

29
New cards

Do’s for creating a class diagram

Identify classes

Identify attributes

Identify relationships

Define generalisations and abstract classes

Add associations

30
New cards

Do’s for creating an activity diagram

Identify action steps

Identify flow of activities

Place start and end point

Each decision needs a merge, each parallelisation needs a synchronisation

Decision nodes reflect on previous nodes

31
New cards

What are software bugs?

Software bugs are errors in desgin, development or operation causing unexpected behaviour / results

32
New cards

How do software bugs happen?

Programmer creates a defect —> defect causes an infection —> infection propogates —> infection causes failure

33
New cards

What is verification?

Proving that we are building the product right

34
New cards

What is validation?

Prving that we are building the right product

35
New cards

We can improve software quality by… (list)

Properly designing the system

Quality assuring the code

Testing the system

Debugging failures

36
New cards

What components of software quality do we discuss in this course? (list)

Robustness

Exception handling

Unit testing

Test-driven development

Pair programming / code reviews

37
New cards

What is robustness?

Robustness is the ability of a system to cope with errors and erroneous input. It makes developers aware of problematic execution cases and defines where in the code to find the error.

38
New cards

To make code more robust we should add… (list)

Parameters; defintion of the parameters a method receives

Precondition; imposes obligations on the client

Postcondition; must be true after execution

39
New cards

When is a method robust?

A method is robust if it always throws an exception if its precondtions are violated

40
New cards

What do we use exceptions for? (list)

To make a method robust

To avoid encoding onformation in special values

Signal special (erroneous) situations in non-local methods

Ensure that a failure cannot be ignored

41
New cards

For unit testing, each test cases test a unit and… (list)

Has a purpose intent

Controls activation and input

Observes response and output

Decides on pass vs. fail based one expected result

42
New cards

What is a white-box test?

A white-box test tests internal logic so it only considers the code

43
New cards

What is a black-box test?

A black-box test tests intended functionality so it only considers specification and requirements and ignores the code

44
New cards

When using test-driven development the core idea is… (list)

Develop tests for new behaviour first

Develop new code to fulfill tests

Improve code quality

45
New cards

What is pair-programming?

Pair programming is when one programmer and reviewer work at one work station.

46
New cards

What are centralised repositories? (list)

Central server stores all data

Changes are reflected upon sending them to the server

Faster to download if large, but every interaction requires connection

If the central server crashes, the repository history is lost

47
New cards

What are decentralised repositories? (list)

Everyone has their local copy of all data (including history)

Allows to work locally and on independent copies

Working in isolation can also lead to forgetting to update

48
New cards

What is a version control software system?

Verison control systems is software that tracks the changes to a file. It allows to store the different versions in order and to revert a file to an older version. It allows collaboration with others and can (semi-) automatically merge file versions.

49
New cards

What is a change?

A change is a modification to a file

50
New cards

What is a commit?

A commit is a collection of changes submitted to the repository

51
New cards

What is a version?

A version (or revision) is each state of the system after a commit

52
New cards

What is the head?

The head is the most recent commit to a repository (or a branch of it)

53
New cards

What makes a commit message a “good” commit message?

A “good” commit message explains the “why” as well as the “what

54
New cards

What does a repository contain? (list)

Source code

Build files

Documentation

Images and resources

55
New cards

What should a repository not contain? (list)

Object files

Executables

56
New cards

What is a cloning?

Clone is creating a local cop by copying (pulling) the remote.

57
New cards

What is checkout?

Checkout is pulling a specific version of the remote

58
New cards

What is pushing?

Push is sending changes to the remote

59
New cards

When working in teams, what is the ‘main’?

The main is the “one truth”, the actual system and its history. The main should be stable and should compile

60
New cards

What is done with progress (that may not compile)

Progress is put into branches. This allows to work on unrelated features and merge later.

61
New cards

What is a branch?

A branch is a duplicate of the files in a repository.

62
New cards

What can be done with a branch? (list)

Can be developed independently

Used to develop features, fix bugs, or prepare a release

A branch remains within the repository

63
New cards

What is a fork?

A fork (Github) is the same as a branch except it is independent of the repository

64
New cards

When does a conflict happen when merging?

A conflict happens when commits touch the same lines of text or binary files.

65
New cards

What does seperation of concerns / divide and conquer mean?

Seperation of concerns / divide and conquer means dividing the system into smaller units to reduce complexity and improve independence.

66
New cards

What is abstraction?

Abstraction is the hiding and generalising of details to reduce complexity

67
New cards

What do encapsulation, modularity and information hiding do?

They place information into a unit and hide it to prevent unwanted access.

68
New cards

What to do to move to a more modular / encapsulated design. (list)

Try to reduce dependencies between units

Abstract methods by passing variables

Only expose what the method takes as input and should do

69
New cards

What is coupling?

Coupling is a degree of interaction between units

70
New cards

What is cohesion?

Cohesion is a degree to which a unit fulfills one purpose

71
New cards

Reasons for information hiding (list)

Reveal as little information to the outside as needed

Prevent data manipulation

Ensure integrity of the unit

Allow access via a single, controlled interface

72
New cards

Why should we use divide and conquer? (list)

Each unit is easier to understand and analyse

Independent units are easier to maintain, change and reuse

Clearly defined sub-units responsible for external expose

Teams can work in parallel on individual units

Easier to quality assure and test individual units

Enables iterative development and integration

73
New cards

What do we define as a “good” seperation?

A “good” seperation is when a unit solves 1 well-defined problem

74
New cards

What is procedural abstraction?

Procedural abstraction is splitting a problem into smaller ones

75
New cards

What is data abstraction?

Data abstraction is encapsulation and information hiding.

76
New cards

What are abstract data types?

Abstract data types define new abstract type to specify abstract data and operations.

77
New cards

What is enumeration?

Enumeration is a set of fixed values /constants which can be used in swichtes, loops…

78
New cards

What is a record?

A record is desgned to store fixed values and is intended for simple data structures

79
New cards

What are the 5 design principles for object-oriented software?

SOLID
Single responsibility

Open/closed

Liskov substitution

Interface segregation

Dependency inversion