SE 425: Principles and Practices of Software Engineering
Useful Information
Table of Contents
- Text Book
- On-line articles, documents and references of Interest for Instructor and Students
- Robert Martin Articles
- Software Development Magazine Articles
- Web Pages of Interest
Text Book
Required:
![]()
Roger Pressman, Software Engineering: A Practitioner's Approach, 6th edition, McGraw-Hill, 2005. ISBN: 007301933X
Register for premium on-line resources: http://www.mhhe.com/pressman: study guides, self tests, supplementary content, professional resources.
Recommended
![]()
Ian Sommerville, Software Engineering, 7th Edition, Addison-Wesley, ISBN 0-321-21026-3. (Out of print)
Ian Sommerville, Software Engineering, 8th Edition, Addison-Wesley, ISBN 0-321-31379-8.
This is one of the top two undergraduate software engineering texts. If you find Pressman difficult to understand, you may want to read the same material in Sommerville.Others books (worth reading)
These two books are ones that every practitioner in the field ought to read.
- Frederick P. Brooks, The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition) (Paperback), Addison-Wesley, ISBN-10: 0-201-83595-9.
- Gerald M. Weinberg, The Psychology of Computer Programming: Silver Anniversary Edition (Paperback), Dorset House, ISBN-10: 0-932633-42-0
Web Pages of Interest
- Forum On Risks To The Public In Computers And Related Systems [The RISKS Forum is a moderated digest. Its USENET equivalent is comp.risks. (Google/Deja news archive)] You may also may access this forum in Google Groups and as an email digest. PLEASE read RISKS as a newsgroup (comp.risks or equivalent) if possible and convenient for you. The mailman web interface can be used directly to subscribe and unsubscribe: http://lists.csl.sri.com/mailman/listinfo/risks
On-line articles, documents and references of interest for instructors and students
Material is organized in the approximate order it is covered in the course.
- Lecture 1: Introduction: Scope of Software Engineering; Software Life Cycle Models; software engineering process models; agile methods
- Software Engineering
- Software Life Cycle Models
- Phillip G. Armour, "Twenty Percent: Planning to fail on software projects", CACM, Vol 50, No. 6 (June 2007), p 21-23. (local mirror)
- Why Software Is So Bad – "For years we've tolerated buggy, bloated, badly organized computer programs. But soon, we'll innovate, litigate and regulate them into reliability.
As the engineering historian Henry Petroski suggested in his 1992 book The Evolution of Useful Things, continual refinement is the usual rule in technology. Engineers constantly notice shortcomings in their designs and fix them little by little, a process Petroski wryly described as "form follows failure." As a result, products incrementally improve. Software, alas, seems different. One would expect a 45-million-line program like Windows XP, Microsoft's newest operating system, to have a few bugs. And software engineering is a newer discipline than mechanical or electrical engineering; the first real programs were created only 50 years ago. But what's surprising-astonishing, in fact-is that many software engineers believe that software quality is not improving. If anything, they say, it's getting worse."- Comment on Unmanageable Software - how does software become unmanageable?
- Major Causes of Software Project Failures - Most software projects can be considered at least partial failures because few projects meet all their cost, schedule, quality, or requirements objectives. Failures are rarely caused by mysterious causes, but these causes are usually discovered post-mortem, or only after it is too late to change direction. This article is based on interviews with software consultants and practitioners who were asked to provide "autopsies" of failed projects with which they have been acquainted. Although not a comprehensive compilation of failure causes, this article outlines several areas that should demand your attention.
- IEEE Spectrum, "Who Killed the Virtual Case File?", September 2005, (11 pages), How the FBI blew more than $100 million on case-management software it will never use.
- Software engineering disasters: Software engineering is a process that is vulnerable to cost overruns, shifting targets, poor communication, and creeping complexity. Although those who study software engineering aim to mitigate these risks, engineers have not eliminated them completely, often leading to epic failures. This page lists failures in software engineering, the study and application of principles that produce usable software products, as opposed to computer science, which is the study of more abstract principles. Understanding past mistakes is an important part of systems engineering, and software engineering failures such as the Therac-25 are incorporated into engineering course curricula.
- New Programming Paradigms - Lean Programming The New Methodology (Martin Fowler) "In the past few years there's been a rapidly growing interest in agile (aka "lightweight") methodologies. Alternatively characterized as an antidote to bureaucracy or a license to hack they've stirred up interest all over the software landscape. In this essay I explore the reasons for agile methods, focusing not so much on their weight but on their adaptive nature and their people-first orientation. I also give a summary and references to the processes in this school and consider the factors that should influence your choice of whether to go down this newly trodden path."
- Lecture 2: Requirements: Systems & Requirements Engineering: Managing the Requirements Process; Eliciting, Analyzing, Specifying requirements.
- Lecture 3: Analysis: Analysis Methods with an emphasis on structured techniques.
- Making Sense of Modeling
- Capturing Requirements with Use Cases
- Structured analysis
- Structured Systems Analysis and Design Method
- Structured Analysis & Design
- Structured Analysis Wiki - the ongoing evolution of Ed Yourdon's 1989 tome, Modern Structured Analysis. Ed is widely known as the lead developer of the structured analysis/design methods of the 1970s.
- Tutorial on ERD's
- ERD and Crow's Foot Notation
- Object-Oriented Analysis
- Object-Oriented Analysis and Design, Michael Gora, DBMS, May 1996
- SE430 Reading List
- Lecture 4: Software Architecture and Design: methodologies;
- Lecture 5: Testing: Software Testing; software validation; test plans; coverage analysis;
- Software Testing
- Software testing
- What is Quality Assurance - QA and Software Testing?
- Cyclomatic Complexity
- Cyclomatic complexity
- Lecture 6: Project Management: Planning and Estimation of Software Projects: work breakdown, scheduling (PERT/CPM/Gannt); Risk Management: Overview of project & Risk management;
- Cost Estimation
- Programmer Productivity: The "Tenfinity Factor”
- Project management
- Work breakdown structure
- Work Breakdown Structure - US Government Publication
- PERT Estimation
- Project Timeline Management - Gantt
- How to Ensure Your Project Fails
- How Hard Could It Be?: Five Easy Ways to Fail
- Seven steps to ensure project success
- Software Risk Management: Not Just for the Big Manufacturers?. (January 1997). MD&DI (Discusses SERIM)
- Sommerville, Chapter 1, 23
- Lecture 7: Metrics: Process, product and software metrics
- Applying and Interpreting Object Oriented Metrics
- Software Quality Metrics for Object Oriented System Environments
- Software Metrics SEI Curriculum Module SEI-CM-12-1.1
- Cyclomatic Complexity
- Cyclomatic complexity
- Metric programs
- Lecture 8: Quality assurance: software validation, and reliability; software and document inspections ; Change Management; Laws and origin of change; Ongoing change – Refactoring; Impact Analysis; Configuration and source management Software Configuration Management
- Sommerville, Chapter 24
- Software quality assurance
- Why Software Is So Bad – "For years we've tolerated buggy, bloated, badly organized computer programs. But soon, we'll innovate, litigate and regulate them into reliability.
As the engineering historian Henry Petroski suggested in his 1992 book The Evolution of Useful Things, continual refinement is the usual rule in technology. Engineers constantly notice shortcomings in their designs and fix them little by little, a process Petroski wryly described as "form follows failure." As a result, products incrementally improve. Software, alas, seems different. One would expect a 45-million-line program like Windows XP, Microsoft's newest operating system, to have a few bugs. And software engineering is a newer discipline than mechanical or electrical engineering; the first real programs were created only 50 years ago. But what's surprising-astonishing, in fact-is that many software engineers believe that software quality is not improving. If anything, they say, it's getting worse."- Comment on Unmanageable Software - how does software become unmanageable?
- Software configuration management
- Software Quality Strategy
- Deming’s Principles of Quality Re-stated for the Quality Assurance Professional
- Deming, W. Edwards, Out of the Crisis, MIT Center for Advanced Engineering Study, 1992.
- Weinberg, Gerald M., The Psychology of Computer Programming: Silver Anniversary Edition, ISBN 0-932633-42-0
- Weinberg, Gerald M., Quality Software Management Series
1. Systems Thinking
2. First-Order Measurement
3. Congruent Action
4. Anticipating Change- Change management (engineering)
- Software configuration management
- Software Change Management
- Measuring Up
- Lecture 9: Design: Design Engineering and Design Principles; Component and User interface design; Implementation and Integration; Deployment and Maintenance
- Sommerville, Chapters 12-15
- Maintenance of Operational Systems--An Overview
- Maintainability Index Technique for Measuring Program Maintainability
- Patterns
- "Non-Software Examples of Software Design Patterns," Object Magazine, Vol. 7, No. 5, July 1997, pp. 52-57.
- Patterns: A Way to Reuse Expertise, Linda Rising (Mirror)
- Software Patterns - briefing by James O. Coplien on patterns (for management)
- Patterns and Software: Essential Concepts and Terminology, Brad Appleton
- Design Principles articles by Robert Martin explaining each of his ten design principles. See Principles and Patterns below as well.
- Concepts for Simpler Design
- Principles and Patterns (local mirror) (Robert C. Martin, objectmentor.com, 2000) -- "What goes wrong with software?" A brief explanation of the ten Principles of OOD with supporting patterns.
- Lecture 10: Performance engineering, Critical systems: dependable software; Software Engineering as a Profession: Software Engineering Ethics; Engineering management
- B. Boehm and V. Basili, "Software Defect Reduction Top 10 List," IEEE Computer, vol. 34(1): 135-137, January 2001. (mirror)
- Dependable software: an oxymoron? Daniel Jackson · RE’05 · Paris, September 2005 (mirror)
- Safety engineering
- Failure mode and effects analysis
- Fault tree analysis
- Fault Tree Analysis (FTA, System Analysis) Basics
- Software Engineering Code of Ethics and Professional Practice
- Sommerville, Chapter 22.
General Articles
- Concepts for Simpler Design
- Making Sense of Modeling
- Martin Fowler: Articles
- Analysis Patterns
- XP and Agile Methods
- Refactoring
- Supplements for UML Distilled
Magazine Articles
Software Development Magazine has been bought by Dr. Dobbs' Journal and folded into the latter. DDJ now has all the Software Development Magazine articles in its archives. Look there for articles of interest: Dr. Dobbs' Portal. Also, read the Architecture & Design department.