Summary Beyod Software Egieerig Guest Lecture, Uiversity of Toroto Software egieerig is a ew ad fast growig field, which has grappled with its idetity: from usig the word egieerig to defiitio of the term, to educatioal eeds, to professioal certificatio. Homy Dayai-Fard, PhD Cosultat, Techology Strategy IBM Busiess Cosultig Services A persoal, somewhat historical perspective, o software egieerig: from educatio, to practice, ad beyod. A short biography Questios Cosultat, Techology Strategy Quality advisor, DB2 UDB developmet Release aalyst, DB2 UDB developmet Research officer, Cetre for Advaced Studies Adjuct at Uiversity of Toroto, York Uiversity, ad Quee s Uiversity PhD, MSc from Quee s Uiversity BSc, Uiversity of Toroto Service techicia, Olivetti What is software? What is software egieerig? What makes a software egieer? [What is egieerig?]
Goal of software egieerig To build software Catches Meets the specificatio High uality Cost ad schedule cotrol $$$ Software = program? Who are software egieers? History 1968 NATO coferece Software crisis Software egieerig Need for a formal disciplie Holy grails Automatic programmig Formal methods Reuse Better maagemet Automatic programmig Persoal A system that automatically geerates programs. If the system is reliable, so are its resultig programs Examples: Compilers 4GL Applicatio geerators (e.g., Draco, KBEmacs, Programmer s Appretice) A ew compiler was beig developed that would radically chage compilatio. There was oly oce catch: covertig make files to a stadard cofiguratio file. Result: Failed!
Formal methods Persoal Two camps: Verificatio Create formal specificatios ad demostrate that the implemetatio is cosistet with the specificatio Refiemet Usig mathematical techiues step-by-step refie the specificatio util it is executable Examples Z, VDM, CSP, Darligto, Paris Metro Developed a small size distributed real-time system. Developed formal specificatios, formally proved that the implemetatio was cosistet with its specificatio. A group of five reviewed ad approved the implemetatio. Result: Failed! Reuse Persoal: secod had Build software from compoets: Like hardware desig, put together IC s Early success Fortra, C libraries Challeges Idexig ad searchig Geerality of code Performace NIH Architectural mismatches A large developmet group set a goal of creatig reusable modules. Developers had to cotribute to a cetral repository. They also received bous poits if they used modules from the library. Result: Failed!
Reuse cotiued Later success (or otherwise) COM, DCOM, CORBA, RMI, Java class libraries Higher level reuse (ad successes) Architectural patters, e.g. -tier, pipelie Desig patters, e.g. MVC, Commad, Facade Frameworks, e.g. Struts Future : Web services, SOAP, MDA Maagemet Software life cycles Cotrol Traceability Parallel developmet Risk maagemet Examples: Waterfall (ad variatios), Iterative (ad variatios), Process orieted (RUP), people orieted (XP) Cofiguratio maagemet Maagemet cotiued Certificatio: showig off our abilities to customers (raise their level of cofidece) CMMI SPICE, ISO 9000 Other madated govermet agecies, e.g., FDA Persoal A model drive approach built o top of a commercial framework geeratig web services defiitios. Process modelig Use case modelig Object modelig Desig XML geeratio Results: jury is out!
Persoal A CIO of a fiacial istitutio asked us if he could receive the same level of beefits (ROI ~ 20-40%) by ivestig i maturity. I particular, goig from level 2 to 3 o CMMI. Result: No! Software egieerig characterizatio Large Number of people Number of features Number of depedecies Soft Chagig reuiremet Chagig eviromet Chagig people Aside: What is computer sciece? If I had to summarize the etire field of computig, it would be: Buildig hierarchies of abstractios for solvig [repetitive] problems Software egieerig characterizatio cotiued Repetitio Problems solved will come back astier Number of features Number of depedecies Mosaic Art: creativity, visio Scietific: fact-based, hypothesis drive Egieerig: cotrol, repetitio of success Maagemet: team work, commuicatio, decisio makig
Fial thought Objective of software egieerig is to solve a problem. Size matters. Scalability is a must! Fial thought cotiued Whatever software egieerig is, it helps if you have, o top of all your techical ad coceptual skills Commuicatio skills: ifluecig Team work: egotiatio, compromise Visio: see beyod the techical solutio Time goes o. History will repeat itself! Categorizatio of software Thak you! Questios? Commercial shrik-wrap Vertical vs. horizotal (middle-ware) Custom applicatios Govermet Safety critical Embedded