cpsc 4175 intro to software engineering fall 2006 neal l. rogers, phd
TRANSCRIPT
CPSC 4175Intro to Software Engineering
Fall 2006
Neal L. Rogers, PhD
How can we engineer software?
What is engineering?
Course 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
Syllabus
• 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)
Course 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
Who?
• Instructor: Neal L. Rogers, PhD– Office: TECH 425– Voice: (706) 565-4095– E-mail: [email protected]– WWW: http://csc.colstate.edu/rogers
Office Hours: MW 4:30 – 7:00, TR 3:00 – 7:00• Drop-ins OK, but subject to preemption
– Course Site: http://cougarnet.colstate.edu
What?• Course materials
– Course notes• Class slides (.ppt format) • available via course site• slides will be posted by 10:00 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
Expectations• 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
Expectations• Assignment forecast
Subject Area Mastery Demonstrated by: Due
Baseline process Rudimentary statistics program Week 2Estimation Size counting program Week 4Defect analysis Proxy counting program Week 6Estimation LOC Added Week 8Scheduling LOC Deleted Week 10DesignMeasurement LOC Modified Week 14Process postmortem Your metrics in Spreadsheet! Week 16
Expectations• 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
What is engineering?
Engineering …• … 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
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?
What is software engineering?
Challenges• 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.]
What 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
Classic MistakesPeople-related Process-related Product-relatedTechnology-
related• Undermined • Overly optimistic • Requirements • Silver-bullet
motivation 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 negotiationenvironment fuzzy front end
• etc • etc • etc • etc
[McConnell, S. 1996. Rapid Development. Microsoft Press]
How can we minimize
these mistakes?
Our 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)
Software engineering is …???
Using softwareUsing software
Understanding computersUnderstanding computers
Software engineering is …???
Writing programsWriting programs
Software engineering is …???
codingcoding
testingtesting
maintenancemaintenancedesigndesign
structured analysisstructured analysis
dataflow diagramsdataflow diagrams
structure chartsstructure charts
software quality assurancesoftware quality assurance
configuration managementconfiguration management
project managementproject management
CASECASE
requirementsrequirements
KLOCKLOC
metricsmetrics
control structure diagramscontrol structure diagrams
object-oriented technologyobject-oriented technology
verification and validationverification and validation
architecturearchitecture
Software engineering is …???
the discipline of producing software [Schach]the discipline of producing software [Schach]
the set of tasks that comprise development, operation, and maintenance of software [IEEE]
the set of tasks that comprise development, operation, and maintenance of software [IEEE]
Software engineering is …• ... the business of developing working solutions
through software.
[Umphress]
Our Vision
Software 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– Performance=ComplexityProcess Teams Tools
← Influence of politics– mgmt-worker misalignment, software-as-pawn
← Limits of imagination
G. Booch. Keynote. Software Technology Conference 2002.
traditional of CS
traditional of SwE
Software Engineering Perspective• Software development is
fundamentally hard• Software dis-economy:
cost doesn’t 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
/sc
hed
uleperform
ance
capacity
scalability
technology ch
urn
functioncompatibility
interoperabili
ty
reliability
secu
rity
etc
G. Booch. Keynote. Software Technology Conference 2002.
But…• 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
TOOLS
Identify Synthesize Articulate Interpret
Process
People
Technical
Organize Staff DirectPlan Control
Product Property SuccessLifecycle Infra
Technical 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
People 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 DirectPlan Control
Process 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 SuccessLifecycle Infra
Summary
• Course overview• Software engineering
raison d’etre• 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
Topics Key Points