Software Engineering: The Product Software Engineering 1 1 What is Software? Software is a set of items or objects that form a configuration that includes programs documents data... 2
Wear vs. Deterioration Failure rate increased failure rate due to side effects change actual curve idealized curve Time 3 The Cost of Change 60-100x 1x 1.5-6x Definition Development After release 4
Software Development Problems Wolfgang B. Strigel (1997). What Bugs the Software Industry? Results From an Industry Survey, Software Productivity Centre. 5 A licensed software engineer? September 23, 1999 The Mars Climate Orbiter was lost during its Mars Orbit Insertion (MOI) rocket burn. It appears that a mix up between English and Metric units caused a navigation error which may have sent the orbiter deep into the atmosphere of Mars. Not Now,Not Like This Why the ACM Council does not support the licensing of software engineers at this time. COMMUNICATIONS OF THE ACM February 2000/Vol.43,No.2 6
Reasons why not...the panel interviewed representatives of the Texas Board of Professional Engineers, one of several groups developing such licensing programs. They were asked, Why do you want to license software engineers? They replied, To assure the public safety. Therefore, the science aspect of the licensing discussion is the question: Is there a test that will assure the person who passes the test will be qualified to write programs that would never endanger the public? Will that person be qualified to sign off on program designs to assure they are sound, just as building designs are signed by structural architects to assure the building is sound? The panel agreed there is no form of licensing that can be instituted today assuring the public safety. Indeed, no one knows how to do that. We do not have building codes for programs. We do not have a vocabulary of program design rich enough to discuss structural integrity. Much more research is needed before such a test can be devised. COMMUNICATIONS OF THE ACM February 2000/Vol.43,No.2 7 Software Engineering: The Process 8
A Layered Technology Software Engineering tools methods process model a quality focus 9 A Generic View of Software Engineering The definition phase System/information engineering Software project planning Requirements analysis The development phase Software design Code generation Software testing The maintenance phase Correction Adaptation Enhancement Prevention 10
Umbrella Activities Software project management Formal technical reviews Software quality assurance Software configuration management Document preparation and production Reusability management Measurement Risk management 11 A Common Process Framework Common process framework Framework activities work tasks work products milestones & deliverables QA checkpoints Umbrella Activities 12
The Process Model: Adaptability the framework activities will always be applied on every project... BUT the tasks (and degree of rigor) for each activity will vary based on: the type of project (an entry point to the model) characteristics of the project common sense judgment; concurrence of the project team 13 Grundlag: Modenhedsniveauer og Key Process Areas Proces-målinger: Forudsigelig proces Kontinuerlig procesforbedring Optimerende (5) Process change management Technology change management Defect prevention Ledet (4) Quality management Software quality management Process measurement and analysis Quantitative process management Fokus på procesforbedring Processen måles og kontrolleres Modenhedsniveau - Et veldefineret plateau i udviklingen på vej mod en moden software proces. Key process area - Et sæt af beslægtede aktiviteter, der udført sammen realiserer et sæt mål, der anses for vigtige for opnåelse af præstationsevne. Hver KPA er defineret, så den tilhører et enkelt modenhedsniveau. KPA erne er de primære byggeblokke, der bruges til at bestemme en software proces præstationsevne og til at forstå de forbedringer, der behøves for at avancere til højere modenhedsniveauer. Proces-definition: Standardiseret og konsistent proces Ledelseskontrol: Disciplineret proces Initial (1) Gentagelig (2) Defineret (3) Peer reviews Intergroup coordination Software product engineering Integrated software management Training program Organization process definition Organization process focus Software configuration management Software quality assurance Software subcontract management Software project tracking and oversight Software project planning Requirements management Processen er beskrevet og forstået rimeligt godt Kan gentage opgaver, der tidligere er blevet løst Uforudsigelig og dårligt styret 14
A Definition of Process The means by which people, procedures, methods, equipment, and tools are integrated to produce a desired end result. A B C D Procedures and methods defining the relationship of tasks PROCESS People with skills, training, and motivation Tools and equipment 15 Menneskesyn - to ekstremer Et menneske: Kan lide orden Ønsker at arbejde inden for præcist beskrevne grænser Ønsker ikke at have videre personlig kontrol over sine aktiviteter Et menneske: Er ansvarligt Søger selv at opnå mål Kan tage kontrol over sine arbejdsomgivelser 16
Organisationssyn - to ekstremer En organisation: Er stærkt struktureret Har præcise jobbeskrivelser Har klare hierarkiske linier for autoritet Lægger vægt på orden og stabilitet for at opnå teknisk effektivitet En organisation: Er fleksibel Tillader selvstyring og selvkontrol på alle niveauer Ser integrationen af individuel vækst og teknologisk udvikling som nøglen til organisatorisk effektivitet 17 The Linear Sequential Model System/information engineering Analysis Design Implementation Testing Maintenance The Waterfall Model 18
Iterative Model: Prototyping Listen to Customer build/revise mock-up customer test-drives mick-up 19 Iterative Model: RAD team #1 team #2 business modeling team #3 business modeling data modeling business modeling data modeling process modeling application generation data modeling process modeling testing & turnover process modeling application generation testing & turnover application generation testing & turnover 60-90 days 20
The Incremental Model System /information eng ineering increment 1 analysis design code tes t delivery of 1st increment increment 2 analysis design code test delivery of 2nd increment increment 3 analysis design code test delivery of 3rd increment increment 4 analysis design code tes t delivery of 4th increment calendar time 21 An Evolutionary (Spiral) Model Customer Communication Planning Risk Analysis Engineering Customer Evaluation Boehm, B.W., (1989). Software Risk Management. IEEE Computer Society Press. Construction & Release 22
Still Other Process Models Component assembly model the process to apply when reuse is a development objective Formal methods the process to apply when a mathematical specification is to be developed Cleanroom software engineering emphasizes error detection before testing 23