90 likes | 100 Views
Explore the fundamental concepts of software engineering, including processes, methodologies, and popular development techniques. Learn about the importance of using a structured process and how it can improve quality, productivity, and cost-effectiveness in software development. Discover different software engineering processes such as Waterfall, Agile, and Unified Process, and their applications in real-world projects.
E N D
Software Engineering • Software engineering is concerned with the production of large scale software artifacts by teams of individuals • Software engineering is the application of science and mathematics by which the capabilities of computer equipment are made useful to man via computer programs, procedures, and associated documentation -- B. Boehm • Software engineering ... is the part of computer science that is too difficult for the computer scientists -- F. L. Bauer ã 2007, Spencer Rugaber
What is a Process? ã 2007, Spencer Rugaber
What is a Process? • A series of activitieswith a means for determining progress ã 2007, Spencer Rugaber
Software Process • The related set of activities and processes that are involved in developing and evolving a software system -- Summerville • Process assessment • ISO 9000 • Capability Maturity Model (CMM) • Software process improvement • Software Process Improvement Networks (SPIN) • Software Engineering Process Groups (SEPGs) ã 2007, Spencer Rugaber
Why Use a Process? ã 2007, Spencer Rugaber
Why Use a Process? • Management control • Reuse of tools, education and artifacts • Repeatable quality and productivity ã 2007, Spencer Rugaber
Increase in Cost-to-Fix or Change Software throughout the Life Cycle 1000 500 IBM-SSD 200 GTE 100 80% (TRW survey) Median 50 20% SAFEGUARD 20 10 5 Smaller software projects 2 (Source : Software Engineering Economics - Boehm) [Boehm, 1980] 1 Requirements Design Code Development test Operation Acceptance test ã 2007, Spencer Rugaber Phase in which error was detected and corrected
Real World Software Process • Order the T-shirts for the development team • Announce product availability • Write the code • Write the manual • Hire a product manager • Spec the software (writing the specs after the code helps to ensure that the software meets the specifications) • Ship • Test (the customers are a big help here) • Identify bugs as potential enhancements • Announce the upgrade program ã 2007, Spencer Rugaber
Popular Processes • Waterfall • Personal Software Process (PSP) / Team Software Process (TSP) • Unified Software Process (USP) / Rational Unified Process (RUP) • Cleanroom Software Engineering • Extreme Programming (XP) / Agile Methods ã 2007, Spencer Rugaber