Lecture 5 Flashcards

1
Q

What is SW ENGINEERING?

A

Software engineering is an engineering discipline that is concerned with all aspects of software production from initial conception to operation and maintenance

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

What are some concrete software processes?

A
  • Waterfall model (and variant)
  • V-model
  • Spiral model
  • Extreme Programming
  • SCRUM
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Why is SW engineering difficult?

A
  • Complexity
    Part of the software, can’t be removed
  • Conformity
    Difficult to plan for changes (easy enough to conform for them tho)
  • Changeability [Flexibility]
    Software is everchanging
  • Invisibility
    Lack of visuals
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What is software?

A
  • Computer program and their associated documentation (requirements, design models and user manuals)
  • New software can be created by developing new programs,configuring generic software systems or reusing existing software

Software product can either be:
- Generic - developed to be sold to a general market (excel or word)
- Custom - developed for a single customer according to their specification

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

What does it mean when saying SW is a modeling activity?

A

Because we have a problem and solution domain, which we can model i OOP

Fortolker jeg fra hans lorte slide

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

Working definition of software engineering:

A

Software Engineering is a collection of techniques, methodologies, and tools that help with the production of a high quality software system developed with a given budget before a given deadline while change occurs

Challenge: Dealing with complexity and change

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

Is knowledge acquisition (knowledge gaining) linear?

A

It is NOT linear

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

How would you outline software engineering?

A
  • Modeling activity
  • Problem solving activity
  • Knowledge acquisition activity
  • Rationale managament activity
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What are ‘Techniques (Methods)’ in software development?

A

Our notes:
A process of outputting results using e.g. algorithms.

Lecture slides:
Formal procedures for producing results using a well-defined notation, such as algorithms and software processes.

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

How would you describe the problem-solving activity in software?

A
  1. Formulate the problem
  2. Analyse the problem
  3. Search for solutions
  4. Decide on the appropriate solution
  5. Specify the solution
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Which domains are difficult in SW development?

A

Problem (Application) domain and solution domain. Explanation: Deeply understanding the needs and context of the end users (problem domain) and then skillfully creating a technical solution (solution domain) that meets those needs effectively (CHADDY)

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

What are the stages in OOSD (object oriented software development)?

A
  1. Requirement elicitation
  2. Analysis
  3. System design
  4. Object design
  5. Implementation
  6. Testing
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Define ‘Methodology’ in the context of software development.

A

A collection of techniques applied across software development, unified by a philosophical approach. Example: Agile methods.

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

Software engineering is a rationale managament activity. What does rationale management activity entail?

A
  • Application domain eventually stabilises
  • Solution domain is constantly changing
  • How can we reason about a decision taken in the past?
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What are ‘Tools’ in software engineering?

A

Instruments or automated systems used to accomplish a technique. Examples include Eclipse and continuous integration.

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

What activities are common to all software processes?

A

Software specification
- Establish what functional (services) and non-functional (system’s operation and development) requirements there should be

Software development
- Software design (realise specifications) and implementation (translate design into executable)

Software validation
- Verification: “Are we building the product right?”
- Validation: “Are we building the right product?”

Software evolution
- Change existing software systems to meet new requirements. The software must evolve to remain useful

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

Explain this picture:

A
  • If you want to increase the scope (more functions), you may need to increase the cost and/or the time. Reducing the cost could mean reducing the ** scope and/or compromising the quality.**
    Delivering the project in less time might increase **costs ** (due to overtime, etc.) or reduce the scope or quality.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

What does Barry’s variant of the Waterfall model contain?

A

It integrates quality assurance through validation and verification and feedback throughout the whole model rather than just through the neighbouring phases.
Her

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

A software process (model) describes:

A

systematic, structured and quantifiable
approaches to solve a repeatable manner

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

What are the steps of Barry’s variant of the Waterfall model?

A

System feasibility (Validation), SW Plans and Requirements (Validation), Product Design (Verification), Detail design (Verification), Code (Unit Test), Integration (Product Verification), Implementation (System Test), Operation + Maintenance (Revalidation).

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

A software process (model) is:

A

an abstract representation of a process. It presents a description of a process from some particular perspective.

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

What is the Spiral model and what are the goals?

A

It’s iterative and incremental. With each iteration the system scope is extended and the system grows step by step.

It focuses on the risk and minimises it.
Her

23
Q

A software process addresses
in full or in part:

A
  • Structural organization
  • Process organization
  • Artifact models
24
Q

Define the steps of the Spiral model.

A

a. Define goals: specific objectives for
the phase are identified
b. Analyse risks: risks are assessed and activities are put in place to reduce the key risks
c. Development and validation: a development model for the system is chosen which can be any of the generic models.
d. Plan next iteration: the project is
reviewed and the next phase of the
spiral is planned.

25
Q

Mention some basic models (methodologies)

A
  • Phase model
  • Spiral model
  • Incremental / Iterative
  • Prototyping
  • Agile models
26
Q

What is the incremental process?

A

Incrementing calls for a fully formed idea
“incrementing” builds a bit at a time

27
Q

Mention some concrete software processes (the process models):

A
  • Waterfall
  • Rational Unified Process
  • V-Modell (XT)
  • Scrum
  • Kanban
  • eXtreme Programming
  • Feature-driven development
28
Q

What is the iterative process?

A

Iterating allows you to move from vague idea to realisation. “Iterating” builds a rough version, validates it, then slowly builds up quality.

It is not an iteration if you only do it once

29
Q

What methodology is the waterfall model?

A

Classic phase model

30
Q

What is the agile method process?

A

Combination of iterative and incremental methods. It breaks projects into smaller iterations (sprints), delivering working increments of software regularly while welcoming changes in requirements for continuous improvement.

31
Q

What are characteristics of the Waterfall model?

A
  • Strict sequence
  • A milestone is complete, which the next phase is built upon
  • Feedback possible, but only
    between “neighbouring” phases
  • Difficult to accommodate change
    after the process is underway.
  • In principle, a phase has to be
    complete before moving onto the next phase.
32
Q

How do we reduce the cost of rework?

A

Change avoidance:
- Includes activities that can anticipate possible changes before significant rework is required.
- A prototype may be developed to show some key features of the system to customers.

Change tolerance:
- The process is designed so changes can be accomodated at a relatively low cost
- Incrementtal development in which proposed changes may be implemented in increments

33
Q

Add the steps in the waterfall model:
Here

34
Q

Common challenges of agile processes.

A
  • Difficult to keep customers (involved) interested
  • Team members may be unsuited for agile methods
  • Prioritising changes can be difficult for multiple stakeholders
  • Maintaining simplicity requires extra work
  • Contracts may be a problem as with other approaches to iterative development
35
Q

Add for V-model steps: Here

A
36
Q

What is extreme programming (XP)?

A
  • Was the best-known and most widely used agile method
  • Extreme approach to iterative development
  • New versions may be built more times per day
  • Increments are delivered to customers often
  • Tests must be run for every build, and a build is only accepted if the tests are successful
37
Q

Give drawbacks and benefits to the V-model

A

Benefits
* Integrated quality assurance activities
* Good for tight controlling (e.g., public
* sector)
* Suitable for management
Drawbacks
* Rigid, e.g., requirements change (much
verification)
* May become heavyweight
* Not very suitable for software engineers

38
Q

Name the 6 first XP (extreme programming) practices

A

Test-First development: Write tests before code.
Pair programming: Collaborative coding in pairs.
Continuous integration: Frequent code integration.
Refactoring: Improve code structure incrementally.
Simple design: Minimalistic yet functional design.
Collective code ownership: Shared responsibility for code.

39
Q

Explain this model: Here

A
40
Q

Name the 6 last XP (extreme programming) practices

A

Small Releases: Frequent small software releases.
Planning Game: Collaborative project planning.
On-Site Customer: Close customer collaboration.
Metaphor: Shared system understanding aid.
Sustainable Pace: Balanced, steady work pace.
Coding Standards: Consistent, readable code practices.

41
Q

What are the 12 Principles of Agile Software Development?

A

Customer Satisfaction: Deliver valuable software early and continuously.
Embrace Change: Welcome changing requirements, even late in development.
Frequent Delivery: Deliver working software frequently, with a preference for shorter timescales.
Collaboration: Business people and developers work together daily.
Motivation: Support and trust motivated individuals to get the job done.
Communication: Prefer face-to-face conversations.
Progress Measure: Working software is the primary measure of progress.
Sustainable Pace: Maintain a consistent and sustainable pace of development.
Excellence: Focus on technical excellence and good design.
Simplicity: Emphasize the art of maximizing the amount of work not done.
Self-organization: The best solutions emerge from self-organizing teams.
Adjustment: At regular intervals, reflect and adjust to become more effective.

42
Q

What is Test-First Development?

A
  • Writing test before code, to clarify the requirements.
  • Tests are written as programs so they can be executed automatically (checks if test is executed correctly)

Regression testing:
- Previous and new tests are run automatically when new functionalities are added
- Therefore checks that there are no errors

43
Q

What is Refactoring?

A

In XP, refactoring is the continuous practice of improving the software’s internal structure without changing its external functionality.

44
Q

What are Testing Challenges for Extreme Programming?

A
  • Programmers take shortcuts when testing, which is bad
  • Some tests are difficult to write incrementally
  • It’s difficult to judge the completeness of a set of tests
  • Test-First Development requires a lot of rigor
45
Q

Challenges and Examples of Refactoring in XP

A

While beneficial, refactoring can be costly, especially for architectural changes. Examples include reorganizing class hierarchies to remove duplicate code, renaming for clarity, and replacing inline code with method calls.

46
Q

What are some characteristics of Scrum?

A
  • Self-managing team
  • Value is generated in a series of “sprints” (fixed length of one month or less)
  • Product backlog, a to-do list that changes and ranks tasks based on their importance
  • Part of “agile processes”

(ikke så important)
- A general purpose project management framework
- Simple, uses generative rules to create an agile environment

Her

47
Q

How are tasks managed and releases planned in XP?

A

Our notes:
Tasks are estimated in days and releases are chosen by the customer.

Tasks, estimated in days, are decomposed if too large. The customer then chooses stories for the next release based on their priorities and the estimated schedule, ensuring regular and incremental delivery of value.

48
Q

Benefits of Scrum?

A
  • Project broken down into managable parts
  • Unstable requirements will not hold up the process
  • The whole team has visibility of everything
  • Customers see on-time delivery of increments and gain feedback
  • Trust between customer and developer is established
49
Q

How often is a program tested in XP?

A

After every change has been made

50
Q

Mention XP’s testing features

A

XP testing features:
* Test-first development.
* Incremental test development from scenarios.
* User involvement in test development and validation.
* Automated test harnesses are used to run all component tests each time that a new release is built.

51
Q

Mention some of the steps in scrum (from the picture)

A
52
Q

What is Scrum in SW?

A

scrum is an agile, lightweight process
* to manage and control software and product development with rapidly changing requirements
* based on improved communication and maximised cooperation.

53
Q

Drawbacks of Scrum:

A

Scrum?!
* pretending to do Scrum, but manage like a waterfall model
Large Systems
* larger, longer projects, multiple development teams, working in different locations & countries

54
Q

Understand and be able to explain this:
Picture

A

The combinations of different concrete software process models