ISO 9126: Software Quality Internal Quality: Maintainability – Analyzability, Testability, Stability, Changeability External Quality – Functionality –

Post on 30-Mar-2015

222 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

Transcript

ISO 9126: Software Quality

• Internal Quality: Maintainability

– Analyzability, Testability, Stability, Changeability

• External Quality

– Functionality

– Usability

– Reliability

– Portability

– Efficiency

Moore's Law

Noted that the number of transistors per unit area had doubled every year from 1958 to 1965

Expected the trend to last “for at least ten years”

Gordon MooreCo-founder of Intel

Often misquoted as Often misquoted as “the speed will double “the speed will double every 18 months”every 18 months”

Intel Processor Speeds over Time

1970 1980 1990 2000 2010

10 GHz

1 GHz

100 MHz

10 MHz

1 MHz 40048008

8080

8086

8028680386

80486

PentiumPentium II

Pentium IIIPentium 4

What’s the State-of-the-Art?

• Fastest commercially available CPU: ~4GHz

• Fastest experimental CPU: 500Ghz

– Need to cool it down to 4°K, though

• Fastest theoretical transistor: 1THz

The End of Moore’s Law?

• Production limitations

• Physical limitations

• Bottleneck issues

• Market issues

1940sElectromagnetic

Relays

pre-1940sMechanical 1950s

VacuumTubes

1960sTransistors

since 1970sIntegrated

CircuitsQuantum

Computers?

The Future

The Current Solution:The Current Solution:

ParallelismParallelism

Process-Level Parallelism

Early computers (1950s and 1960s) could only run one program at a time

When it finished, it would run the next one

Multi-programming operating systems (1970s) made it appear as if multiple programs were running simultaneously

Instruction-Level Parallelism

Rather than wait for an instruction to finish, start the next one as soon as possible

Very common in RISC architectures

Pipelining: Fetch/decode one instruction while executing another

Thread-Level Parallelism

Modern programming languages support threads, which allow a program to do more than one thing at a time

Examples Reading data from one source while writing to another Performing two parts of a calculation simultaneously Handling interaction with multiple users at the same

time

Today

Concurrency (threads) in C Does concurrency really make your code faster? Race conditions and synchronization

Short break; head to Moore 207 Lab assignment

top related