• Shuffle
    Toggle On
    Toggle Off
  • Alphabetize
    Toggle On
    Toggle Off
  • Front First
    Toggle On
    Toggle Off
  • Both Sides
    Toggle On
    Toggle Off
  • Read
    Toggle On
    Toggle Off
Reading...
Front

Card Range To Study

through

image

Play button

image

Play button

image

Progress

1/16

Click to flip

Use LEFT and RIGHT arrow keys to navigate between flashcards;

Use UP and DOWN arrow keys to flip the card;

H to show hint;

A reads text to speech;

16 Cards in this Set

  • Front
  • Back
Product?
Result of applying people, processes, and tools

Consists of many deliverables
Software
Documentation
User manuals
Test cases
Design documents

Intrinsic qualities
Saftey
Reliability
User friendliness
Context
Programming
Small project
You
Build what you want
One product
Few sequential changes
Short-lived
Cheap
Small consequences
Tools?
Needed to support people and processes

Scarce resource
Quality
Suitability
Cost

Many different kinds of tools
(People support)
Drawing
Analysis
(Process support)
Project management
Source code management
Software Engineering? [Schach]
"A discipline whose aim is the production of fault-free software, delivered on-time and within budget, that satisfies the user's needs. Futhermore, the software must be easy to modify when the user's needs change."
Software Engineering? [Parnas]
"Multi-person construction of multi-version software."
From Programming to Engineering

People?
Who else would do the work?

Range from novice to very experienced
From Programming to Engineering

Processes?
To organize and manage the efforts of individuals

Range from informal to very formal
Software Engineering? [van der Hoek]
"Difficult."
People, Processes, Tools, Products
Products are always the eventual goal
Selling products creates revenue
Selling good products creates lots of revenue
Selling bad products creates little revenue

People, processes, and tools are retained by organization
Build a reputation through the quality of products
Create organizational culture
Important to keep the team intact
From Programming to Engineering

Tools?
To support the people and the processes

Range from simple to very advanced
Software Engineering? [Ghezzi, Jazayeri, Mandrioli]
"A discipline that deals with the building of software systems which are so large that they are built by a team or teams of engineers."
What makes it engineering?
Project plans
Teams are assembled
Processes are designed
Tools are purchased
Goals are established
Difficulties are anticipated

Tradeoffs
Limited resources

Repetition
Same basic prinicples hold in many different settings
Processes?
Essential to achieve a quality product

Scarce resource
Quality
Suitability
Cost

Many different kinds of processes
Bug tracking
Change approval
Quality assurance
People?
The single most important factor in the success/failure of a product

Scarce resource
Quality
Suitability
Cost

Many different kinds of people
Managers
Programmers
Technical writers
Why do we do it?
Economic 101
More revenue
Better people, processes, tools -> better product
Better product->more customers
More customers->more revenue
More revenue->more profit

Less expense
Better people, processes, tools -> less time
Less time -> less expense
Less expense -> more profit

Critical Software

Leaving a legacy
Context
Engineering
Huge project
Teams
Build what they want
Family of products
Many parallel changes
Long-lived
Costly
Large consequences