Software Engineering Lecture 1-1
Terms
undefined, object
copy deck
- 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