1 - Intro Flashcards

(37 cards)

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
Types of software - Generic
Developed to solve many different problems Word processor
26
Types of software - Embedded
Runs hardware devices DVD players Cars
27
Aspects of Software Engineering
Solving customers' problems Systematic development Large high quality systems Within cost, time and other constraints
28
Soft Eng - Solving Customers' Problems
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
Soft Eng - Systematic Development
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
Soft Eng - Large High Quality System
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
Soft Eng - Cost, Time and Other Constraints
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
Stakeholders
``` Users Customers - Paying for software - Often employ users Developers Managers - Keep customer satisfied ```
33
External Software Quality
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
Internal Software Quality
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
Types of projects - Greenfield
Start from scratch Not constrained by previous decisions Dont have to understand code written by otehrs Rare in industry
36
Types of projects - Evolutionary
Fix defects Add features Adapt to changing environments
37
Building a framework
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