Download presentation
Presentation is loading. Please wait.
Published byMagnus Richardson Modified over 9 years ago
1
Alex Jacobson Presents An Introduction To Software Engineering
2
What is Software Engineering? Let's distinguish it from Computer Science: Computer Science: the study of how to solve complex problems Software Engineering: the branch of computer science that creates practical and cost-effective solutions to computing and information processing problems, preferentially by applying scientific knowledge.
3
What is Software Engineering? This guy discovered an O(lg n) sorting algorithm This guy is trying to make someone rich with that algorithm
4
What is Software Engineering? But beyond the obvious distinctions, people who are software engineers: Design complex systems Test these systems Spill gallons of tears every day
5
Software Today In the past, software was confined to proprietors Fewer updates Longer time spent on specific stages of development Embodied by Waterfall methodology
6
Software Today Today, software is updated more rapidly, and there's more collaboration from users and developers Agile Methodology reflects this
7
Software Today
8
So How Does It Happen? It all starts when someone with lots of money/capital has a problem they need you to solve. How do you go about solving this problem?
9
Solving Problems Development boils down to analysis and synthesis Analysis: “decompose a large problem into smaller, understandable pieces” Requires the use of abstraction Synthesis: “build (compose) a software from smaller building blocks”
10
Solving Problems Analysis
11
Solving Problems Synthesis
12
Who's All Involved In This? The Customer The Developer The User
13
Who's All Involved In This?
14
Systems Approach How exactly do Software Engineers “synthesize” their solutions? One way is to use the Systems Approach
15
Systems Approach Activities and Objects An activity is an event initiated by a trigger An object is an element involved in an activity Relationships and System Boundaries A relationship defines the interaction among entities and activities System boundaries determine the origin of input and destinations of the output
16
Systems Approach
17
It is possible for systems to rest within other systems These systems interact with one another This is called a layered system
18
How Do We Know We're Doing It Right? The goal of software engineering is to produces high quality software. What does that even mean? We can consider “quality” in a few different contexts: Quality of the product Quality of the process Quality of the product in the business environment
19
How Do We Know We're Doing It Right? The Quality of the Product Users will be interested in how well the product functions, and how often it has problems Developers care about the internal characteristics, such as how efficiently it works, and what kind of errors it generates There are models out there, such as McCall's quality model, that helps us wrap our head around these issues
20
How Do We Know We're Doing It Right?
21
The Quality of the Process A good quality engineering process is usually modeled in some way What steps are needed and in what order? Where in the process is effective for finding a particular kind of fault? How can you shape the process to find faults earlier? How can you shape the process to build fault tolerance into a system?
22
How Do We Know We're Doing It Right? The Quality of the Process Examples of Software Process Models SEI’s Capability Maturity Model (CMM) ISO 9000 Software Process Improvement and Capability dEtermination (SPICE)
23
How Do We Know We're Doing It Right?
24
ISO 9000
25
What Happens When We Make Mistakes? Errors can happen, either on the part of the user or on the part of the developer 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 behavior
26
What Happens When We Make Mistakes? This can be very serious depending on the context Safety-Critical System: “A system in which any failure or design error has the potential to lead to loss of life.” Examples: Flight-Control Systems, Certain Medical Technology. Therac-25: A computer-run radiation machine that killed and injured several cancer patients due to failures
27
So In Summary Software Engineering involves tackling problems more economically than computer scientists Software Engineering involves collaboration from non-engineers (users and customers) Good SE will be based on models like CMM and ISO Proper SE can be the difference between life and death in certain situations
28
References http://www.cs.cmu.edu/~Compose/SEprincipl es-pub-rev2.pdf http://l3d.cs.colorado.edu/~gerhard/papers/is fst2001.pdf http://arstechnica.com/information- technology/2014/08/how-microsoft-dragged- its-development-practices-into-the-21st- century/ http://www.cse.msu.edu/~cse435/Lectures/2 014-Lectures/Notes/Lecture2-PA-chapter01- notes.pdf https://www.cs.colorado.edu/~kena/classes/5 828/s08/_Media/02-introse.pdf
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.