王廷瑋|數位醫療|智慧醫療: Fundamental of software engineering: Introduction WFU

2024年6月4日 星期二

Fundamental of software engineering: Introduction

Introduction


  • What is software? Not hardware, procedure documentation, data
  • Type of application: application, system
  • Craft (hacking) + science (computer science) + engineering (software engineering)
  • Software engineering :
    • real products for real people
    • based on scientific principle
    • require academic background
    • repeatable, well-defined procedures and processes.



Origin


  • Definition: the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machine.
  • Software crisis: late and over-budget, poor quality, code hard to maintain, customers and users not happy, project difficult to manage. ⇒ complexity


Complexity


  • Numbers of interactions between lines of code
  • Moore’s law: density of transistors on a chip will double every two or so years
    • corollaries: RAM size in a computer, hard drive space in a computer, internet bandwidth.
  • Complexity trend:
    • max line of code: n = 2^t
    • max interaction: n =n*(n-1)/2


Goals and Principles


  • Goals: modifiability, efficiency, reliability, usability
  • Principles:
    • modularity (reduce complexity, divide and conquer)
    • abstraction
    • encapsulation (high cohesion, low coupling)
    • 4c (correct, complete, consistent, confirmable)


Is software engineering a profession


  • Organization: ACM, IEEE-CS