120 likes | 133 Views
Software Engineering: It’s Much More Than Programming!. Sources: “Software Engineering: A Practitioner’s Approach - Fourth Edition” Pressman, Chapter 1 HP Software Engineering via Martin Griss “Code Complete” McConnell, Chapters 1-3. Early years Batch Limited distribution Custom software.
E N D
Software Engineering:It’s Much More Than Programming! Sources: “Software Engineering: A Practitioner’s Approach - Fourth Edition” Pressman, Chapter 1 HP Software Engineering via Martin Griss “Code Complete” McConnell, Chapters 1-3
Early years Batch Limited distribution Custom software Software Eras (Pressman Figure 1.1) • Second era • Multiuser • Real-time • Database • Product software • Third era • Distributed systems • Embedded “intelligence” • Low cost hardware • Consumer impact • Fourth era • Powerful desk-top systems • OOP • Parallel • Internet • The fifth era? • Cloud computing • Smart phones • Multi-core Increasing Amounts of Software 1950 1960 1970 1980 1990 200x
The 50+ Year “Software Crisis” • Hardware advances faster than the ability of software to take advantage of the hardware • Demand for new programs exceeds our ability to produce them • Computers are pervasive; reliability is key; major damage is possible on failure • We struggle to build reliable, high quality software • Support and enhancement of existing programs is expensive and error prone due to poor design and inadequate resources • Many, many projects are started but never finished
Aspects of Software Crisis • Techniques that work for small programs don’t scale • Big systems live on beyond original author(s) • Most effort expended after first release • Requirements change rapidly • User expectations increase rapidly • Most software late, expensive, buggy or inadequate • Last minute testing can’t ensure quality • What can you add to this list?
Software vs. Hardware Idealized software failure rates (Pressman 1.3) Hardware failure rates (Pressman 1.2) Why the difference?
Software Failure Rates Idealized software failure rates (Pressman 1.3) Actual software failure rates (Pressman 1.4) Why the difference?
Software Myths • Management Myths • We have books of standards. • I work very hard to put the latest, greatest, fastest, state-of-the-art hardware in front of all my programmers. • We have the greatest CASE tools around. • If we get behind, we can just add more programmers. • Customer myths • A general statement of objectives is sufficient to start coding, we can fill in the details later • Project requirements change constantly, but change is easy because software is flexible. • Programmer myths • Once the program is written and working, our job is done. • Until the program is running, there is no way to assess quality. • The only deliverable for a successful project is the working program.
Management, Sociology Systems Software Engineering Computer Science Psychology, HCI Solution: Disciplined Software Engineering “More than just programming and algorithms”
Software Lifecycle • Development phases: • Analysis [What do we need?] (14-22%) • Design [How do we do it?] (16-21%) • Coding [Implement it] (30-39%) • Testing [Make sure it works] (25-37%) • Relative time to fix defect after release depends on origin: • Analysis >> design >> coding >> test • Average time in maintenance • Only 25-45% of entire lifecycle spent in development • Fixing defects is 20-30% of lifecycle; enhancing the program is 35-45% of lifecycle • Half of maintenance time is spent figuring things out
Software Development Processes • Traditional Waterfall Process • Address each step completely before moving to the next • Each step might take many months • Premium on getting things right the first time • Emphasis on management hierarchies and written reports • Agile Process • Iterate repeatedly through each step, gradually growing the system • Each iteration produces an incomplete but usable system • Design changes and code refactoring are the norm • Premium on frequent and rapid interactions among clients and developers • Emphasis on face-to-face interactions
What Will We Study? C# Programming using Visual Studio 2010 Software Construction Tools and Techniques Version control (SVN) Testing Debugging Performance profiling Code inspections Object-oriented design patterns Program organization and coding style Documentation UML (Unified Modeling Language) Scripting SE - 11 CS 3500
What Will We Study? • Software Architectures • Pipe and filter • Object-oriented • Client/server • Event-driven • Model-view-controller • Working Individually, in Pairs, in Small Groups • Via programming projects • Other Topics • Requirement gathering • High-level design • Intellectual property • Professional ethics