170 likes | 290 Views
This lecture provides a comprehensive overview of software engineering, defining it as a discipline focused on the construction of large software systems by teams of engineers. Key themes include managing complexity, the evolution of software, and the importance of collaboration between team members. The lecture emphasizes the essential roles of people, processes, tools, and products in software engineering, underscoring the need for quality and efficiency in developing fault-free software that meets user needs. Homework involves reading Chapter 1 from van Vliet for deeper understanding.
E N D
ICS 52Introduction to Software Engineering Lecture 2 Duplication of course material for any commercial purpose without the explicit written permission of the professor is prohibited.
Today’s lecture • Defining software engineering • People, processes, tools, and products
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]
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]
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]
Software engineering • “Difficult.” [van der Hoek]
Essential characteristics • 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
Programming versus software engineering Programming Software engineering
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
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
Processes • Essential to achieve a quality product • Scarce resource • quality • suitability • cost • Many different kinds of processes • bug tracking • change approval • quality assurance
Tools • Needed to support people and processes • Scarce resource • quality • suitability • cost • Many different kinds of tools • drawing • analysis • project management • source code management
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
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
Choose the right solution Hawaii Tijuana Europe
Homework • Read chapter 1, van Vliet