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

The analysis process.png

  • 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
    Pasted image 20220925164130.png