1 software engineering discussion for scec useit intern program phil maechling 26 may 2005...
TRANSCRIPT
1
Software Engineering Discussion for SCEC UseIT Intern Program
Phil Maechling26 May [email protected]://www.scec.org/cme
2
Creating Over Consuming
Science is a creative activity.
Developing software is a creative activity.
Try them out this summer. Give them a chance. You could find something meaningful to you personally.
3
Simple is Good
"Any darn fool can make something complex; it takes a genius to make something simple."- Pete Seeger
4
Types of Software Development
You can develop software a couple of ways. Each has value and can be satisfying.
• Hacker Approach
• Engineer Approach
5
Power of Programming
Hacker Potential - One person, alone in a room with a computer, and compiler, can change the world.
(Note: Others occupations with this power include writers, musicians, artists, scientists)
6
Hacker Hero Gallery
7
Power of Programming
One person, alone in a room with a computer, and compiler, can change the world.
8
Hacker Mentality
Hackers consider themselves something of an elite (a meritocracy based on ability), though one to which new members are gladly welcome.
9
Hacker Hero Gallery
10
Hacker Essential Reading
• Hackers – Steven Levy
• The New New Thing – Michael Lewis
11
The Power of Engineering
Engineer Potential - By organizing group efforts, managing the communication between members, large scale tools and system can be produced.
12
Engineer Hero Gallery
13
Engineer Hero Gallery
14
Engineer Hero Gallery
15
Engineering Challenge is Working With Groups of People
16
Engineering Challenge is “Does it Work” is well Defined
17
Software Engineering Essential Reading
• Mythical Man Months – Robert Brooks
• The Soul of a New Machine – Tracy Kidder
18
Difference Between Hacking and Engineering is Scale
There is a huge difference between what one person can build and a group can build.
19
One Person Scale
20
A Group of People
21
The Power of Organization
Engineering – Cost of software systems are equivalent to large buildings.
50K – Small Program, 2BRM House Wichita 10M – SCEC/CME, 5 Story Office Building200M – Healthcare Billing system, 60 Story
Building
22
Software Engineering Class in School
• Does not teach Programming! Assumes you already know how to program.
• Describes how large projects are organized, planned, scheduled, cost estimated.
• Usually a heavy load class, group projects, software development task and often competition between groups.
23
Software Engineering Issues
• How do we define what the system should do (requirements)?
• How much will system cost?
• How long will it take to develop?
• How do we organize the group (who does what)?
• How do we verify system is giving correct answer?
24
Software Development as a Process
• Accumulated wisdom in the field says software development should be treated as a process.
• The process is repeated, even though the product being developed, changes.
• While there are many Software Engineering Processes. They typically deal with the same issues including: requirements, cost, schedule, testing, validation, managing changes.
25
Software Development as a Process
1 - Initial : At maturity level 1, processes are usually ad hoc and chaotic.
2 - Repeatable : At maturity level 2, Software development successes are repeatable.
3 - Defined : At maturity level 3, processes are well characterized and understood, and are described in standards, procedures, tools, and methods.
4 - Managed : Using precise measurements, management can effectively control the software development effort
5 - Optimizing : Maturity level 5 focuses on continually improving process performance
26
Standard Aerospace Software Process
27
Standard Aerospace Software Process
28
Software Development Process
29
Software Times Changed
30
Software Times Changed
31
Revolutions Require an Alternative to Status Quo
32
Expression of Values
The four main values of the agile methods are:
1. Individuals and interactions over processes and tools
2. Working software over comprehensive documentation
3. Customer collaboration over contract negotiation
4. Responding to change over following a plan
33
Agile/XP Process/Practices
1. Planning Game 2. Small Releases 3. Metaphor 4. Simple Design 5. Testing 6. Continuous Integration 7. Pair Programming 8. Collective Ownership 9. Refactoring 10. 40-Hour Week 11. On-Site Customer 12. Coding Standards
34
Software Engineering This Summer
• Enginering requires more than Programming. Not every has to program.
• Group has room for both hackers and engineers
• No full time hackers. Some engineering required of everyone using an agile method
• Show skill, tolerance, patience, work ethic, and precedence of group interests over individual interests.
35
Software Engineering This Summer
• Personal skill development this summer should include skill of working with a group.
36
Software Engineering This Summer
• Creating a functional and useful software system from a group this large will require an engineering process.
• Please participate with us in our Engineering Process.
• Our Engineering Process should reflect our values: Learning, People, Communications, Science, Creativity, Usefulness.