Download Software Engineering and Problems with Solutions and more Slides Software Engineering in PDF only on Docsity!
Chapter 1
What is Software Engineering Shari L. Pfleeger Joanne M. Atlee 4 th Edition
Pfleeger and Atlee, Software Engineering: Theory and Practice Chapter 1. 2
Contents
1.1 What is Software Engineering? 1.2 How Successful Have We Been? 1.3 What Is Good Software? 1.4 Who Does Software Engineering? 1.5 A System Approach 1.6 An Engineering Approach 1.7 Members of the Development Team 1.8 How Has Software Engineering Changed?
Pfleeger and Atlee, Software Engineering: Theory and Practice Chapter 1. 4
1.1 What is Software Engineering
Solving Problems
- Software products are large and complex
- Development requires analysis and synthesis
- Analysis: decompose a large problem into smaller, understandable pieces - abstraction is the key
- Synthesis: build (compose) a software from smaller building blocks - composition is challenging
Pfleeger and Atlee, Software Engineering: Theory and Practice Chapter 1. 5
1.1 What is Software Engineering
Solving Problems (continued)
Pfleeger and Atlee, Software Engineering: Theory and Practice Chapter 1. 7
1.1 What is Software Engineering
Solving Problems (continued)
- Method: refers to a formal procedure; a formal “recipe” for accomplishing a goal that is typically independent of the tools used
- Tool: an instrument or automated system for accomplishing something in a better way
- Procedure: a combination of tools and techniques to produce a product
- Paradigm: philosophy or approach for building a product (e.g., OO vs structured approaches)
Pfleeger and Atlee, Software Engineering: Theory and Practice Chapter 1. 8
1.1 What is Software Engineering
Where Does the Software Engineer Fit In?
- Computer science: focusing on computer hardware, compilers, operating systems, and programming languages
- Software engineering: a discipline that uses computer and software technologies as problem-solving tools
Pfleeger and Atlee, Software Engineering: Theory and Practice Chapter 1. 10
1.2 How Successful Have We Been?
- Perform tasks more quickly and effectively
- Word processing, spreadsheets, e-mail
- Support advances in medicine, agriculture, transportation, multimedia education, and most other industries
- Many good stories
- However, software is not without problems
Pfleeger and Atlee, Software Engineering: Theory and Practice Chapter 1. 11
1.2 How Successful Have We Been?
Sidebar 1.1 Terminology for Describing Bugs
- A fault: occurs when a human makes a mistake, called an error, in performing some software activities
- A failure: is a departure from the system’s required behaviour
Pfleeger and Atlee, Software Engineering: Theory and Practice Chapter 1. 14
1.3 What is Good Software?
- Good software engineering must always include a strategy for producing quality software
- Three ways of considering quality
- The quality of the product
- The quality of the process
- The quality of the product in the context of the business environment
Pfleeger and Atlee, Software Engineering: Theory and Practice Chapter 1. 15
1.3 What Is Good Software?
The Quality of the Product
- Users judge external characteristics
- (e.g., correct functionality, number of failures, type of failures)
- Designers and maintainers judge internal characteristics (e.g., types of faults)
- Thus different stakeholders may have different criteria
- Need quality models to relate the user’s external view to developer’s internal view
Pfleeger and Atlee, Software Engineering: Theory and Practice Chapter 1. 17
1.3 What Is Good Software?
The Quality of the Process
- Quality of the development and maintenance process is as important as the product quality
- The development process needs to be modeled
- Modeling will address questions such as
- Where to find a particular kind of fault
- How to find faults early
- How to build in fault tolerance
- What are alternative activities
Pfleeger and Atlee, Software Engineering: Theory and Practice Chapter 1. 18
1.3 What Is Good Software?
The Quality of the Process (continued)
- Models for process improvement
- SEI’s Capability Maturity Model (CMM)
- ISO 9000
- Software Process Improvement and Capability dEtermination (SPICE)
Pfleeger and Atlee, Software Engineering: Theory and Practice Chapter 1. 20 1.3 What Is Good Software? The Quality in the Context of the Business Environment
- Business value is as important as technical value
- Business value (in relationship to technical value) must be quantified
- A common approach: return on investment (ROI) – what is given up for other purposes
- ROI is interpreted in different terms: reducing costs, predicting savings, improving productivity, and costs (efforts and resources)
Pfleeger and Atlee, Software Engineering: Theory and Practice Chapter 1. 22
1.4 Who Does Software Engineering?
- Customer: the company, organization, or person who pays for the software system
- Developer: the company, organization, or person who is building the software system
- User: the person or people who will actually use the system