Title: CPSC 4175 Intro to Software Engineering
1CPSC 4175Intro to Software Engineering
- Fall 2006
- Neal L. Rogers, PhD
2What is engineering?
How can we engineer software?
3Course description
- Catalog
- CPSC4175 Intro to Software Engineering
- Credits 3 (3 hours lecture)
- Official Description Process models of the
software life cycle as well as methods and tools
for software development. - Prerequisite CPSC2108 (C or better), Senior
Standing - Strategic Objectives
- To provide a view of process-oriented software
engineering - To provide exposure to common engineering
processes - To provide an insight into personal software
skills
4Syllabus
- Software engineering raison dêtre (1)
- Process foundations (1)
- Common process elements (3)
- Conceptual design (4)
- Size estimation (4)
- Task decomposition (1)
- Scheduling (4)
- Measurements (2)
- Reviews (2)
- Technical templates (4)
- Scaling up (4)
- Misc processes (4)
- Process descriptions (4)
- Infrastructure (2)
- Retrospective (1)
5Course objectives
- understand the purpose and reason for processes
- know the processes identified as being necessary
for successful software production - understand the what a life cycle is, its
component parts, and how it affects the software
production process - understand the planning process
- understand how to define size, measure it, and
estimate it - understand how to decompose work units
- understand task dependencies, be able to
construct and analyze a dependency chart - be able to estimate software cost understand the
process of risk management - understand the purpose and function of status
reviews - understand process/product measurement, be able
to measure and analyze a sample project - understand own personal performance
6Who?
- Instructor Neal L. Rogers, PhD
- Office TECH 425
- Voice (706) 565-4095
- E-mail Rogers_Neal_at_colstate.edu
- WWW http//csc.colstate.edu/rogersOffice
Hours MW 430 700, TR 300 700 - Drop-ins OK, but subject to preemption
- Course Site http//cougarnet.colstate.edu
7What?
- Course materials
- Course notes
- Class slides (.ppt format)
- available via course site
- slides will be posted by 1000 AM the day of
class - Other
- Excel-compatible spreadsheets
- Programming languages (Java, C/C, C, COBOL,
etc.) - Humphrey, Watts S. 2005. PSP A
Self-Improvement Process for Software Engineers.
Addison Wesley, ISBN 0-321-30549-3 - Humphrey, Watts S. 1995, A Discipline for
Software Engineering, Addison Wesley, ISBN
0-201-54610-8
8Expectations
- Grading
- Instructor Evaluation (On Time, Etc.) 10
- Quizzes (pop and announced) 10
- Out-of-class assignments (Programs) 80
- Submitting work
- MUST be your own work!
- Programs must be working.
- Submit assignments on time. 10 penalty per day
late - Attendance
- Be here!
- You are responsible for obtaining missed lectures
9Expectations
Subject Area Mastery Demonstrated by
Due Baseline process Rudimentary statistics
program Week 2 Estimation Size counting
program Week 4 Defect analysis Proxy counting
program Week 6 Estimation LOC Added Week
8 Scheduling LOC Deleted Week 10 Design Measurem
ent LOC Modified Week 14 Process postmortem Your
metrics in Spreadsheet! Week 16
10Expectations
- Rules of Engagement
- The basic pedagogical precept ... is that all
genuine learning arises from the activity of the
learner's own mind. It may be assisted, guided,
and stimulated by the activity of teachers. But
no activity on the part of teachers can ever be a
substitute and become the sole cause of a
student's learning. When the activities
performed by the teachers render students
passive, the latter cease to be learners --
memorizers, perhaps, but not learners.
Mortimer Adler
- Your Responsibilities
- Be present (mentally and physically) and on
time - Be receptive to new ideas
- Interact
- Get involved
- Get excited
- My Responsibilities
- Be present (mentally and physically) and
prepared - Guide
- Facilitate
- Assess
- Excite
11What is engineering?
12Engineering
- is the profession in which knowledge of the
mathematical and natural sciences gained by
study, experience, and practice, is applied with
judgment to develop ways to use, economically,
the materials and forces of nature for the
benefit of mankind. - ABET (formerly,
Accreditation Board for Engineering and
Technology) - entails responsibilities
- knowing things
- developing judgment
- applying knowledge via judgment realistically
- acting responsibly
13What is software engineering?
- Attendant questions
- Can software be engineered?
- How can we engineer software?
- Is software engineering a legitimate engineering
field? - Do software engineers really live on Twinkies and
Ding-Dongs?
14Challenges
- B. Reid on building software
- the first engineering discipline in which the
complexity of the objects created is limited
solely by the skill of the creator, not by the
strength of the raw material. - F. Brooks on inherent properties of software
systems - complexity Many of the classic problems of
developing software products derive from ...
essential complexity and its nonlinear increases
with size. From the complexity comes the
difficulty of communications ... of understanding
... - conformity The software engineer must master
arbitrary complexity, forced without rhyme or
reason. - changeability Software is pure thought-stuff,
infinitely malleable. - invisibility Software remains inherently
unvisualizable.
Brooks, F. P., Jr. 1987. No Silver Bullet.
Computer 20, 4, 10-19.
15What makes a project successful?
- User Perspective
- project team understood needs
- vital changes accommodated
- progress reported
- product timely
- product useful
- Executive Perspective
- not oversold or overcommitted
- milestones achieved
- costs controlled
- customer enthusiastic
- Project Team Perspective
- involved in planning and execution
- policies well communicated
- adequate tools provided
- humane treatment by management and user
- Project Leadership Perspective
- determined user needs
- resources available
- schedules realistic
- change controlled
- progress tracked
- management supportive
16Classic Mistakes
- People-related Process-related Product-related Tec
hnology-related - Undermined Overly optimistic Requirements
Silver-bulletmotivation schedule gold-plating
syndrome - Weak personnel Insufficient
risk Feature Overestimation of - Uncontrolled management creep savings from
toolsproblem people Contractor
failure Developer Switching tools - Heroics Insufficient planning gold-plating
midstream - Adding people Abandonment Push-me, Lack
of automatedto late project of planning in
crisis pull-me source control - Poor work Wasted time during negotiationenv
ironment fuzzy front end - etc etc etc etc
How can we minimize these mistakes?
McConnell, S. 1996. Rapid Development.
Microsoft Press
17Our goal this semester
- ... is to examine the aspects of software
production that will give the greatest
probability of success - develop engineering heuristics
- identify processes unique to software production
(production maintenance or development)
18Software engineering is ???
Using software
Understanding computers
19Software engineering is ???
Writing programs
20Software engineering is ???
design
CASE
coding
maintenance
architecture
structured analysis
KLOC
software quality assurance
control structure diagrams
testing
project management
dataflow diagrams
requirements
object-oriented technology
metrics
configuration management
structure charts
verification and validation
21Software engineering is ???
the discipline of producing software Schach
the set of tasks that comprise development,
operation, and maintenance of software
IEEE
22Software engineering is
- ... the business of developing working solutions
through software. Umphress
Our Vision
23Software Engineering Perspective
- Laws of physics
- time lags, weight
- Laws of software
- sorting, halting, NP,
- Challenge of algorithms
- compression, knowledge representation,
- Difficulty of distribution
- Deutsch fallacies
- Problems of design
- rise in levels of abstraction, discovery of
patterns - Importance of organization
- team organization, multiple stakeholders
- Impact of economics
- PerformanceComplexityProcess ? Teams ? Tools
- Influence of politics
- mgmt-worker misalignment, software-as-pawn
- Limits of imagination
traditional of CS
traditional of SwE
G. Booch. Keynote. Software Technology
Conference 2002.
24Software Engineering Perspective
- Software development is fundamentally hard
- Software dis-economy cost doesnt decrease with
volume, but increases - Our task to create illusion of simplicity, but
in so doing, we trade simplicity at one level of
abstraction for complexity at another
cost/schedule
performance
function
compatibility
capacity
scalability
reliability
interoperability
technology churn
security
etc
G. Booch. Keynote. Software Technology
Conference 2002.
25But
- no matter how you slice it
- Mathematical principles involved
- Engineering discipline employed
- Managerial and technical facets orchestrated via
defined processes to sustain a viable solution
Identify
Synthesize
Articulate
Interpret
Technical
TOOLS
People
Organize
Staff
Direct
Plan
Control
Process
Product
Property
Success
Lifecycle
Infra
26Technical facets
- ... activities that require special knowledge and
skills in working with computers - Identify
- determine what the problem space is
- Synthesize
- map the problem into a solution space
- Articulate
- communicate the solution space
- Interpret
- validate/verify the product of the solution
process
Technical
Identify
Synthesize
Articulate
Interpret
27People facets
- ... activities that require special skills for
directing the wetware - Plan
- determine actions needed to produce product
- Organize
- determine who does what when
- Staff
- determine who
- Direct
- motivate and lead
- Control
- direct effort, measure outcome
People
Organize
Staff
Direct
Plan
Control
28Process facets
- ... the system of all enterprise tasks involved
in production and evolution of a software product
through the life cycle - Life cycle model
- sequence of technical tasks required to produce a
product (e.g., analysis, design, testing, etc.) - Product model
- tasks needed to produce an artifact in a specific
form - Property model
- tasks needed to attain desired cost, schedule,
security, reuse - Success model
- tasks needed to assure and assess correctness
- Infrastructure model
- support mechanisms needed to engineer a solution
Process
Product
Property
Success
Lifecycle
Infra
29Summary
Topics
Key Points
- Course overview
- Software engineering raison detre
- Software engineering defined
- Software engineering is the business of
developing solutions through software - Producing software solutions is difficult
- Difficult activities require structure
- Engineering discipline enforces structure