cpsc 4175 intro to software engineering fall 2006 neal l. rogers, phd

29
CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

Upload: harriet-hensley

Post on 28-Dec-2015

218 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

CPSC 4175Intro to Software Engineering

Fall 2006

Neal L. Rogers, PhD

Page 2: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

How can we engineer software?

What is engineering?

Page 3: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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

Page 4: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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)

Page 5: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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

Page 6: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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

Page 7: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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

Page 8: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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

Page 9: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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

Page 10: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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

Page 11: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

What is engineering?

Page 12: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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

Page 13: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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?

Page 14: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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.]

Page 15: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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

Page 16: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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?

Page 17: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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)

Page 18: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

Software engineering is …???

Using softwareUsing software

Understanding computersUnderstanding computers

Page 19: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

Software engineering is …???

Writing programsWriting programs

Page 20: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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

Page 21: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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]

Page 22: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

Software engineering is …• ... the business of developing working solutions

through software.

[Umphress]

Our Vision

Page 23: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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

Page 24: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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.

Page 25: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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

Page 26: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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

Page 27: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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

Page 28: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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

Page 29: CPSC 4175 Intro to Software Engineering Fall 2006 Neal L. Rogers, PhD

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