1.1.A. Software Engineering Overview - Introduction
1.1. Software Engineering Overview
Part a: Introduction
What is Software Engineering Solving Problems?
Software development requires both analysis and synthesis.
- Analysis: decomposing a large problem into smaller, understandalbe pieces
- abstraction is the key
- Synthesis: build (compose) a problem from smaller building blocks
- composition is more challenging than it looks
The analysis process
- We start with a very large problem, then break it down into a number of pieces which we hope to understand more easily in isolation than altogether with the large problem.
- We can list all the individual problems to address one by one, then we can start the synthesis process.
- We take the solutions to each of those individual subproblems, and using synthesis, we can combine them into the solution which we are looking for, which hopefully addresses the larger problems as a whole.
What is Software Engineering Solving Problems? (cont.)
- Method/technique: refers to a formal way (e.g: "recipe") for accomplishing a goal that is typically independent of the tools used
- This is without considering details of how to do it, so it wouldn't include which tools to be used, or which programming language to use.
- Tool: an instrument or automated system for accomplishing something in a better way
- Prodecure: a combination of tools and techniques to create a product
- We can use this to create our final product.
- Paradigm: philosophy or approach for building a product (e.g., OO vs procedural approaches)
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
Relationship between computer science and software engineering