Think Like An Engineer—Especially for Software

Lawrence Bernstein, Christine M. Yuhas · 2005

Software engineering as a discipline needs a sturdy underpinning of classic engineering principles and discipline. Societies depend on engineers to keep bridges from falling down, factories from exploding, and generally to protect us from our own carelessness and ignorance. Since software now drives so much of our lives, computer scientists need to accept the engineer's responsibility to produce something that will work reliably and protect human life and work. Heroics in software development are an indication of process failure that leads to dysfunctional behavior in both organizations and individuals. Worst of all, the resulting projects are difficult to maintain, difficult to upgrade, and the developers have little learning to bring to the next project. We will use a model-based approach to software development. Models will be used to calibrate, bound and validate your estimates. There will be cost estimation tools, risk definition and analysis, and prototyping. System models and scenarios will produce test results with actual system performance. You will find problems and solutions, case studies and “magic numbers” in each chapter. The latter are easy to remember rules gleaned from the experiences of people who have earned the right to call themselves engineers of software. Making a Judgment The Software Engineer's Responsibilities Ethics Software Development Processes Choosing a Process No-Method “Code and Fix” Approach Waterfall Method Spiral Method: Planned Risk Assessment-Driven Process Development Plan Approach Planned Incremental Development Process Agile Process, a Apparent Oxymoron Re-emergence of Model-Based Software Development Process Evolution Organization Structure Principles of Sound Organizations Short Projects—4 to 6 Weeks Project 1: Automating Library Overdue Book Notices Project 2: Ajax Transporters, Inc. Maintenance Project Additional Problems

Read the paper · More papers on PaperTik