Are you a Software Engineer OR Is it just your Designation ? Y. Raghu Reddy Associate Professor Software Engineering Research Center IIIT Hyderabad What are we lacking? • India graduates nearly half million engineers every year • Information Technology • Information Science and Engineering • Computer Science and Engineering • Computer Engineering • Other computing variants… • Substantial numbers enter the IT workforce • Common complaints – Not Employable • Lack Essential skills (technical & soft) What do these have in common? CODE!!! Huge complex systems! (Quality) products ? 0.5 SLOC/min/resource * 60 min/hr * 40 hrs/wk = 1,200 SLOC/wk/resource 1,200 SLOC/wk/resource * 50 wks/year = 60,000 SLOC/year/resource 2 * 10^6 SLOC / 0.6 * 10^5 SLOC/yr/resource = ~34 Resources for the year Approaches to Software Quality? • Focus on Process • Focus on Product • Focus on People Need for introducing Software Engineering as a degree program Need for licensing current industry professionals Software Engineering as a discipline • Software Engineering IS NOT Computer Science • Software Engineering is an ENGINEERING discipline that specializes in the design of software • Considering it a discipline will help in aligning it with traditional engineering disciplines • There are 5 things a software engineer should be good at: Programming, Design, Process, Communication & Team work SE programs at undergrad level? • The distinction between CS, SE, IT was recognized by ACM and IEEE in late 1990s, Early 2000s • SwECC was formed • Led to creation on specific Software Engineering programs • Accreditation bodies now accredit software engineering programs • ABET (U.S and outside) • CSAC (Canada) • etc. Is it possible? • Do we have a core body of Knowledge? • Software Engineering Body of Knowledge (SWEBOK) 2013 • Mechanisms for assessment • Software Engineering Competency Model (SWECOM) • ABET accreditation (U.S body) – there are equivalent versions in Australia, Canada, U.K. • Nearly 22 programs in U.S are ABET accredited – student who graduate consider themselves as “Software Engineers” • Have seen the distinct difference • Colorado State University (Computer Science program) • Rochester Institute of Technology (Software Engineering program) • IIIT Hyderabad (Computer Science and Engineering program) SE programs • Do CSE programs get accredited? - By who (NBA in India, there are two by ABET but by CSA bodies) - Do we have a body that accredits Software Engineering programs? Simpler question: How many accredited Software Engineering programs do we have? “Zero” What can we do? • Can we change? • Will we change? • To start let’s recognize that there is more to software engineering than just the designation. • What about all those ENGINEERS who are graduating every year? • Do we want them to be SOFTWARE ENGINEERS? • Do we want them to be LICENSED SOFTWARE ENGINEERS? HELLO Are you Licensed? Licensing Software Engineers • Civil Engineers, Doctors, Lawyers are licensed (Provides a form of assurance) • We are familiar with Vendor Certification, product certification, process conformance (Audit). • So why not people? • Can we define “engineering” by what they “practice” rather than their “title” • A certification program to authenticate practitioners’ competency Professional Engineers (PE) Current Status • CIPS Information Systems Professional (I.S.P.), • IEEE Software Engineering Certification (CSDP or CSDA) • Professional Software Engineer • The Seoul Accord, Dublin Accord, Washington Accord, Sydney accord are international accreditation agreement for academic degrees. What does it take to get licensed? • Holding a bachelor's degree in software engineering from an ABET-accredited program. • Passing the Fundamentals of Engineering (FE) exam. • Having applicable work experience (typically, at least four years) under the supervision of a licensed professional engineer (PE). • Passing the Principles and Practices of Software Engineering (P&P) exam Principles of Good Design • Divide and Conquer • Increase cohesion (keep related stuff together) • Decrease coupling (minimize dependencies between modules) • Increase the level of abstraction wherever possible • When two modules interact, create abstract interfaces so that modules don’t have to know specific low-level details about other modules • Design for Quality of service (Testability, Flexibility, Modifiability, etc.) • Design by Contract Going forward • There have been, will be arguments for & against licensing software engineers… • Canadian provinces, U.S (about 40 states) • software engineers working on systems that affect the health, safety, and welfare of the public as well as those offering their services directly to the public • With the emergence of Cyber Physical systems, there is potential for this to expand Thank you !!! Acknowledgements: Philip Laplante, Joann Atlee, Fernando Naveda Reference documents… • • • • • • • • • • Software Engineering Body of Knowledge (SWEBOK) 2013 The IEEE Software Engineering Competency Model (SWECOM) 2014 ABET Criteria for Accrediting Software Engineering Programs ISO/IEEE Standard 12207 (software engineering processes), ISO/IEEE Standard 15288 (systems engineering processes) SEBoK (Systems Engineering Body of Knowledge) GRCSE (Graduate Reference Curriculum for System Engineering), The Software Assurance Competency Model GswE2009 (graduate software engineering curriculum guidelines) SE2004 (undergraduate software engineering curriculum guidelines)