1 - Intro Flashcards

1
Q

Big problem with modern software?

A

Needs to be updated regularly to fix bugs and issues

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

Bugs in past for software development

A

Relatively rare cause of failure

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

Most common failure?

A

Building wrong system

Difficult to find customer requirements, more difficult as system becomes larger

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

Cost of developing software

A

Cheap to duplicate

Expensive to design

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

Where is most of the software work

A

Design, not manufacturing

Labor intensive and craft activity

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

Automating software creation

A

Very difficult to automate design activity

Can create better tools for designers

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

Cost of developing software vs copies sold

A

Largely indepedent, it is a high risk activity

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

Software complexity

A

Can be very complex

Difficult to understand exactly how it works

Relatively easy to modify

Relatively easy to create software that appears to work

Hard to show it does everything it should do

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

Main way of testing?

A

Using different input values

There are so many, impossible to test all

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

Estimating how much work to create software

A

Very difficult to price in advance

First 90% takes 90% of the time, second 90% takes remaining 90%

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

Quoting price for software

A

Quote lowest price and increase later when you know more about work involved

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

Wear and tear of software

A

Does not wear out

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

Finding bugs after release

A

User experience

Continued testing

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

In-direct changes to operation of software

A

Changes to OS and supporting programs

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

Making corrections to released software

A

Consistency of design deteriorates

New defects are introduced

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

Software after a length of time

A

Will eventually stop working due to changes in OS, runtimes etc

17
Q

Making small pieces of software

A

Possible to do this with almost any approach

18
Q

Making larger software

A

Most approaches of software dev don’t scale up

Reaches and stays “almost working” state

Becomes difficult to understand and change

19
Q

Software development market

A

Very competitive

20
Q

Getting new software to market first

A

Will get most of the sales

21
Q

Latecomer bringing the “best” software to market

A

Often won’t make as much money as those who done it first

22
Q

Quality of software to sell it

A

Just has to be “good enough”

“best” is enemy of “good enough”

23
Q

After selling software

A

Many bugs will still have to be fixed after product is sold

Patch cycle

24
Q

Types of software - Custom

A

Developed to solve specific problem

Air traffic control

25
Q

Types of software - Generic

A

Developed to solve many different problems

Word processor

26
Q

Types of software - Embedded

A

Runs hardware devices

DVD players
Cars

27
Q

Aspects of Software Engineering

A

Solving customers’ problems

Systematic development

Large high quality systems

Within cost, time and other constraints

28
Q

Soft Eng - Solving Customers’ Problems

A

Customer decides what they need

Avoid unnecessary features, find out what customer really wants/needs (they often dont know exactly)

Can be more cost effective to buy existing software, or to decline project/customer and not build the software

Human activity, interaction with non-technical people

29
Q

Soft Eng - Systematic Development

A

Use well understood techniques - OOP, UML

Use disciplined approach

Continue developing software after its delivered

Use precise language for non-technical people, natural language is often ambiguous

30
Q

Soft Eng - Large High Quality System

A

Single skilled coder can keep track of tens of thousands of LOC

Many systems larger than this, need a team

Need a consistent approach to documentation and coding style

31
Q

Soft Eng - Cost, Time and Other Constraints

A

Need to earn enough to pay wages and more

Not worth doing if it wont earn enough

If someone is cheaper and faster, they will get the money

Create budget and plan, monitor if you are sticking to them

Set and meet milestones

Check with customer often

32
Q

Stakeholders

A
Users
Customers
- Paying for software
- Often employ users
Developers
Managers
- Keep customer satisfied
33
Q

External Software Quality

A

Usability
- Learnability, efficiency of use, error handling

Efficiency
CPU, memory, disk space, network bandwidth

Reliablity

Maintainability

Reusability

Cant be good at all, make tradeoffs

34
Q

Internal Software Quality

A

Not noticed by customer

Effects maintainability

Commenting code

  • Important as programs get bigger
  • Could be you trying to understand your own code after a year

Complexity of code

  • Use OOP to counter
  • Make individual code segments simple
35
Q

Types of projects - Greenfield

A

Start from scratch

Not constrained by previous decisions

Dont have to understand code written by otehrs

Rare in industry

36
Q

Types of projects - Evolutionary

A

Fix defects

Add features

Adapt to changing environments

37
Q

Building a framework

A

Software reuse across projects saves money

Most projects are different, specific to customers

Projects often have common components

Create a library of common components of framework - long term pay off

Internal project

Money comes from customer projects