Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction to software engineering

Introduction to software engineering

The slide deck for the introductory lecture of the Software Engineering BSc course at the Budapest University of Technology and Economics. The lecture overviews software engineering activities, summarizes the differences between programming and software engineering, introduces software development practices and methods, and touches on career paths and ethical questions.

(Slides translated by Gábor Huszerl.)

Critical Systems Research Group

September 04, 2024
Tweet

More Decks by Critical Systems Research Group

Other Decks in Education

Transcript

  1. 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
  2. Where has software development got to in the last 50

    years? Why is it still so difficult to make good software?
  3. 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!
  4. 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)
  5. 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
  6. 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
  7. 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
  8. 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)
  9. 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
  10. 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
  11. 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
  12. Software Engineering (VIMIAB04) Software in every Area of Life Software

    is an essential part of more and more products and services
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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?
  18. 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
  19. 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)
  20. There is no best practice There is no best method

    Everything depends on the context…
  21. 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?
  22. 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
  23. 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/
  24. Software Engineering (VIMIAB04) Different Positions in Software Engineering Software engineer

    Software architect Product manager Test engineer Network / system administrator Data scientist Technical writer / Evangelist ….
  25. 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
  26. 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…
  27. 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