ICS 52 Introduction to Software Engineering Lecture 2 Duplication of course material for any commercial purpose without the explicit written permission of the professor is prohibited. SDCL Software Design and Collaboration Laboratory Department of Informatics, UC Irvine sdcl.ics.uci.edu 1 Today’s lecture • Defining software engineering • People, processes, tools, and products SDCL Software Design and Collaboration Laboratory Department of Informatics, UC Irvine sdcl.ics.uci.edu 2 Software engineering • “A discipline that deals with the building of software systems which are so large that they are built by a team or teams of engineers.” [Ghezzi, Jazayeri, Mandrioli] SDCL Software Design and Collaboration Laboratory Department of Informatics, UC Irvine sdcl.ics.uci.edu 3 Software engineering • “A discipline that deals with the building of software systems which are so large that they are built by a team or teams of engineers.” [Ghezzi, Jazayeri, Mandrioli] • “Multi-person construction of multi-version software.” [Parnas] SDCL Software Design and Collaboration Laboratory Department of Informatics, UC Irvine sdcl.ics.uci.edu 4 Software engineering • “A discipline whose aim is the production of fault-free software, delivered on-time and within budget, that satisfies the user’s needs. Furthermore, the software must be easy to modify when the user’s needs change.” [Schach] • “It’s where you get to design big stuff and be creative.” [Taylor] SDCL Software Design and Collaboration Laboratory Department of Informatics, UC Irvine sdcl.ics.uci.edu 5 Software engineering • “Difficult.” [van der Hoek] SDCL Software Design and Collaboration Laboratory Department of Informatics, UC Irvine sdcl.ics.uci.edu 6 Essential characteristics • • • • • • • • SDCL Software engineering concerns the development of large programs The central theme is mastering complexity Software evolves The efficiency with which software is developed is of crucial importance Regular cooperation between people is an integral part of programming-in-the-large The software has to support its users effectively Software engineering is a field in which members of one culture create artifacts on behalf of members of another culture Software engineering is a balancing act Software Design and Collaboration Laboratory Department of Informatics, UC Irvine sdcl.ics.uci.edu 7 Programming versus software engineering Small project Large to huge project You Teams Build what you want Build what they want One product Family of products Few sequential changes Many parallel changes Short-lived Long-lived Cheap Costly Small consequences Large consequences Programming SDCL Software Design and Collaboration Laboratory Software engineering Department of Informatics, UC Irvine sdcl.ics.uci.edu 8 From programming to software engineering • People – who else would do the work? – range from novice to very experienced • Processes – to organize and manage the efforts of individuals – range from informal to very formal • Tools – to support the people and the processes – range from simple to very advanced SDCL Software Design and Collaboration Laboratory Department of Informatics, UC Irvine sdcl.ics.uci.edu 9 People • The single most important factor in the success/failure of a product • Scarce resource – quality – suitability – Cost • Many different kinds of people – managers – programmers – technical writers SDCL Software Design and Collaboration Laboratory Department of Informatics, UC Irvine sdcl.ics.uci.edu 10 Processes • Essential to achieve a quality product • Scarce resource – quality – suitability – cost • Many different kinds of processes – bug tracking – change approval – quality assurance SDCL Software Design and Collaboration Laboratory Department of Informatics, UC Irvine sdcl.ics.uci.edu 11 Tools • Needed to support people and processes • Scarce resource – quality – suitability – cost • Many different kinds of tools – – – – SDCL drawing analysis project management source code management Software Design and Collaboration Laboratory Department of Informatics, UC Irvine sdcl.ics.uci.edu 12 Products • Result of applying people, processes, and tools • Consist of many deliverables – – – – – software documentation user manuals test cases design documents • Have intrinsic qualities – safety – reliability – user friendliness SDCL Software Design and Collaboration Laboratory Department of Informatics, UC Irvine sdcl.ics.uci.edu 13 Products • Products are always the eventual goal – selling products creates revenue – selling good products creates lots of revenue – selling bad products creates little revenue • People, processes, and tools are retained by organization – build a reputation through the quality of products – create organizational culture – important to keep the team intact SDCL Software Design and Collaboration Laboratory Department of Informatics, UC Irvine sdcl.ics.uci.edu 14 Does it always work? People Processes Tools Product Good Good Good Good Good Good Good Bad Good Good Bad Good Good Good Bad Bad Good Bad Good Good Good Bad Good Bad Bad Good Good Good Bad Good Good Bad Good Bad Bad Good Good Bad Bad Bad Bad Good Bad Good Bad Good Bad Bad Bad Bad Good Good Bad Bad Good Bad Bad Bad Bad Good Bad Bad Bad Bad SDCL Software Design and Collaboration Laboratory Department of Informatics, UC Irvine sdcl.ics.uci.edu 15 Choose the right solution Hawaii Tijuana Europe SDCL Software Design and Collaboration Laboratory Department of Informatics, UC Irvine sdcl.ics.uci.edu 16 Homework • Read chapter 1, van Vliet SDCL Software Design and Collaboration Laboratory Department of Informatics, UC Irvine sdcl.ics.uci.edu 17