Slide 1

Slide 1 text

Introduction to Software Engineering Zoltán Micskei https://ftsrg.mit.bme.hu/ Software Engineering (VIMIAB04)

Slide 2

Slide 2 text

Software Engineering (VIMIAB04) At the end of the lecture the students are expected to be able to • (K1) present the goals and specific features of soft. eng., • (K1) list the specificities of the different application domains, • (K2) summarize the aspects, tasks and actors involved in software development, • (K1) recall what career paths exist in the field of IT. Learning Outcomes

Slide 3

Slide 3 text

Where has software development got to in the last 50 years? Why is it still so difficult to make good software?

Slide 4

Slide 4 text

Software Engineering (VIMIAB04) Achievement: NASA Apollo Margaret Hamilton beside printouts of the Apollo flight software (1960’s)

Slide 5

Slide 5 text

Software Engineering (VIMIAB04) Achievement: NASA Perseverance https://mars.nasa.gov/mars2020/multimedia/videos/

Slide 6

Slide 6 text

Software engineering

Slide 7

Slide 7 text

Software Engineering (VIMIAB04) What Is Software? software: computer programs, procedures, and possibly associated documentation and data pertaining to the operation of a computer system. Source: IEEE, "Systems and software engineering — Vocabulary," ISO/IEC/IEEE Standard 24765, 2010 Not just the program code!

Slide 8

Slide 8 text

Software Engineering (VIMIAB04) Software System software system: a system made up of software, hardware, and data that provides its primary value by the execution of the software. Source: OMG, "Essence – Kernel and Language for Software Engineering Methods" formal/18-10-02, 2018 system: combination of interacting elements organized to achieve one or more stated purposes. Source: ISO/IEC 15288:2008 (IEEE Std 15288-2008)

Slide 9

Slide 9 text

Software Engineering (VIMIAB04) Example: Software and System Online cash register HW SW DOC HW SW API System of Systems (SoS) Online cash register HW SW DOC Tax Office Accounting software

Slide 10

Slide 10 text

Software Engineering (VIMIAB04) Engineering engineering: the application of a systematic, disciplined, quantifiable approach to structures, machines, products, systems, or processes. Source: IEEE, "Systems and software engineering — Vocabulary," ISO/IEC/IEEE Standard 24765, 2010

Slide 11

Slide 11 text

Iterations and trade-off Software Engineering (VIMIAB04) How Does a „Real” Engineer Work? Customer requirements Design, modelling Standards Existing Components Simulation, analysis Prototype, testing Production

Slide 12

Slide 12 text

Software Engineering (VIMIAB04) Software Engineering software engineering: an engineering discipline that focuses on the development and use of rigorous methods for designing and constructing software artifacts that will reliably perform specified tasks. Source: ACM, "Computing Curricula 2020" The multiperson development of multiversion programs. Source: Brian Randell or David Parnas (not clear)

Slide 13

Slide 13 text

Software Engineering (VIMIAB04) Programming and Software Development Software- development Programming • Customer, requirements • Business • Teamwork • Large size software • Long life cycle • Programming languages • Algorithms • Data structures “Software engineering is programming integrated over time.” Source: Software Engineering at Google

Slide 14

Slide 14 text

Software Engineering (VIMIAB04) What Are the Specificities of Software? Production Easy reproduction Occurrences of faults Physical constraints Pictures: Unsplash Logical concepts Difficult modification Easy rewrite Consistency

Slide 15

Slide 15 text

Software Engineering (VIMIAB04) Progress of Software Development? 1969: software crisis? 2020: yearly “costs” of wrong SW $2000 billion

Slide 16

Slide 16 text

Software Engineering (VIMIAB04) Software: Successes and Failures Mars Orbiter (1998) • Burnt at entry to Mars • $125 million damage • Imperial → SI conversion Knight Capital (2012) • Test code started to trade (bad update) • $440 million damage Crowdstrike (2024) • Fault in driver code • Windows BSOD (~8m) • Airports, hospitals down Linux (1991-) • „just a hobby, won't be big and professional like gnu” • ~4k contributors, ~80k commits per year CERN LHC (1998-) • 25 petabytes per year • Safety critical control SW • 10,000 researchers Google Maps (2005-) • Large user base • Simple user interface • StreetView

Slide 17

Slide 17 text

Software for Whom? Software Engineering (VIMIAB04) Specificities of the application domains

Slide 18

Slide 18 text

Software Engineering (VIMIAB04) Software in every Area of Life Software is an essential part of more and more products and services

Slide 19

Slide 19 text

Software Engineering (VIMIAB04) Web Based and Mobile Applications Large size software and data • SWs running on several thousand servers • ! Hyperscaling (SW, company, team, …) User experience (UX) • Experimentation, rapidly changing needs • ! Fast feedback and adaptation See „Mobile and Web Based Software” course

Slide 20

Slide 20 text

Software Engineering (VIMIAB04) Business and Enterprise Applications Governmental and enterprise • Tailored SW, involving external suppliers • ! Detailed specifications and contracts Commercial (boxed) products • Diverse target group: from SME to multi • ! Customizability and consultancy See „Management of Information Systems” course

Slide 21

Slide 21 text

Software Engineering (VIMIAB04) Critical and Embedded Systems Embedded systems • Physical components, long life cycle, costs • ! Collaboration with other engineers Safety critical systems • Danger of damaging people or values • ! Guaranteeing correct operation See „System Modelling” and „Embedded computer systems” courses

Slide 22

Slide 22 text

Software Engineering (VIMIAB04) Open-Source Libraries and Tools Open-source development • Brought radically new methods • ! Asynchronous, distributed projects SW tools and libraries • OS, compilers, network SW, … • ! Maintenance costs, community See „Open source and free software” elective subject

Slide 23

Slide 23 text

How? Software Engineering (VIMIAB04) Methods and good practices

Slide 24

Slide 24 text

Software Engineering (VIMIAB04) Aspects of Software Engineering Technical Business Human Organiza- tional …

Slide 25

Slide 25 text

Software Engineering (VIMIAB04) Software Engineering Methods How to make (good) software? V-model Scrum (agile) DevOps

Slide 26

Slide 26 text

Software Engineering (VIMIAB04) • Object Management Group (OMG) • Essence standard • Identifying a common „kernel” • Practices and different methods can be built on it What do the Methods Have in Common?

Slide 27

Slide 27 text

Software Engineering (VIMIAB04) Essence: What Is There to Deal with? Customer (opportunity, need,…) Solution (SW to be made, …) Endeavour (team, method, …) Alphas () are elements of SW dev. methods, we observe their progress

Slide 28

Slide 28 text

Software Engineering (VIMIAB04) Essence: What Can Be Done on Them?

Slide 29

Slide 29 text

Software Engineering (VIMIAB04) Methods and Practices (Examples) Methods Practices Pair programming Test-driven development (TDD) Continuous integration (CI) Domain-driven Design (DDD) Cross-functional teams User stories Hardware-in-the- loop testing (HiL)

Slide 30

Slide 30 text

There is no best practice There is no best method Everything depends on the context…

Slide 31

Slide 31 text

Software Engineering (VIMIAB04) Different Environments – Different Goals New service of a start-up • „Move fast and break things” • Little doc., simple processes Car braking system • Compliance with safety standards • Multi-level checking Bank supplier • Certifications (ISO, CMMI…) • Following well defined processes Kanban? Testing in a production environment? Model-based development? MiL / SiL / HiL testing? Scrum / SAFe? Acceptance tests?

Slide 32

Slide 32 text

Professional development Software Engineering (VIMIAB04) Career paths, ethics…

Slide 33

Slide 33 text

Software Engineering (VIMIAB04) Career Paths for Software Developer source Individual Contributor and Manager paths in parallel No uniform naming, but “good coding” is no more enough here

Slide 34

Slide 34 text

Software Engineering (VIMIAB04) What do I need to improve? (Example) Many aspects, not only technical ones! At higher levels, more and more people are affected by our own work (impact) CircleCI career matrix Many detailed examples: https://progression.fyi/

Slide 35

Slide 35 text

Software Engineering (VIMIAB04) Different Positions in Software Engineering Software engineer Software architect Product manager Test engineer Network / system administrator Data scientist Technical writer / Evangelist ….

Slide 36

Slide 36 text

Software Engineering (VIMIAB04) Professional Organizations (Examples) …

Slide 37

Slide 37 text

Software Engineering (VIMIAB04) Ethical and Professional Working ACM Code of Ethics and Professional Conduct • Contribute to society and to human well-being • Avoid harm • Be honest and trustworthy • Be fair and take action not to discriminate • Respect privacy • Honor confidentiality • … https://www.acm.org/code-of-ethics

Slide 38

Slide 38 text

Software Engineering (VIMIAB04) 1. you are asked to write a software that limits emission when the car is under official measurement; 2. you are asked to write a module that analyzes private data of users without their explicit consent; 3. you know that there were not enough safety analysis and testing for the new flight control module of an airplane. As a developer, what would you do, if…

Slide 39

Slide 39 text

Software Engineering (VIMIAB04) Ethical and Professional Working? Dieselgate 737 MAX MCAS source source Cambridge Analytica source

Slide 40

Slide 40 text

What next? Software Engineering (VIMIAB04)

Slide 41

Slide 41 text

Software Engineering (VIMIAB04) Further Topics of the Course III. Processes and projects Methods Project management Measurement and analysis II. Modelling Why to model, what to model? Unified Modeling Language Modelling languages I. Software development practices Steps of the development Version controlling Requirements management Planning and architecture High quality source code Testing and test development

Slide 42

Slide 42 text

Software Engineering (VIMIAB04) Summary