DevOps / Úvod

Úvod do softvérového inžinierstva a DevOps

Úvod do softvérového inžinierstva a DevOps

Základy softvérového inžinierstva / DevOps

Sergej Chodarev (sergejx.net)

Programovanie

Programovanie

Softvérové inžinierstvo

Softvérové inžinierstvo

Softvér rieši problém zákazníka

The classic software startup writes code to solve users' problems. If AI makes writing code more of a commodity, understanding users' problems will become the most important component of starting a startup. But it already is.

— Paul Graham (@paulg) February 10, 2025

The hardest single part of building a software system is deciding precisely what to build.

– Frederick P. Brooks, Jr., „No Silver Bullet: Essence and Accidents of Software Engineering“ (1987)

Softvér je zložitý

Software entities are more complex for their size than perhaps any other human construct because no two parts are alike (at least above the statement level). If they are, we make the two similar parts into a subroutine-open or closed. In this respect, software systems differ profoundly from computers, buildings, or automobiles, where repeated elements abound.

– Frederick P. Brooks, Jr., „No Silver Bullet“ (1987)

Manažment zložitosti

Softvér vyvíja tím ľudí

Softvér sa vyvíja postupne

All successful software gets changed.

– Frederick P. Brooks, Jr., „No Silver Bullet“ (1987)

Softvér sa vyvíja postupne

Softvér musí fungovať

Spätná väzba

Je vývoj softvéru skutočne inžinierstvom?

Čo je inžinierska práca?

Bežná predstava

Inžinieri

Robotníci

Ako je to pri softvéri?

Roborníci


  gcc -o program program.c
  python program.py
  npm run build
  maven compile
  make
  ...
  

a dnes aj


  claude
  codex
  gemini
  copilot
  ...
  

Inižnieri

Softvér vs. iné odbory

Softvérové inžinierstvo

Software engineering is the application of an empirical, scientific approach to finding efficient, economic solutions to practical problems in software.

– David Farley, „Modern Software Engineering

So, we must become experts at learning and experts at managing complexity.

— David Farley, „Modern Software Engineering

Začiatky

Margaret Hamilton in 1969, standing next to listings of the software she and her MIT team produced for the Apollo project

Softvérové inžinierstvo

There is no single development, in either technology or management technique, which by itself promises even one order of magnitude improvement within a decade in productivity, in reliability, in simplicity.

— Frederick P. Brooks, Jr., „No Silver Bullet

Care About Your Craft

Why spend your life developing software unless you care about doing it well?

— Andy Hunt and Dave Thomas, „The Pragmatic Programmer

Think! About Your Work

Turn off the autopilot and take control. Constantly critique and appraise your work.

— Andy Hunt and Dave Thomas, „The Pragmatic Programmer

Proces vývoja softvéru

Manifesto for Agile Software Development

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

That is, while there is value in the items on the right, we value the items on the left more.

Agilný vývoj

Agilne techniky

Čo najrýchlejšia spätná väzba

DevOps

DevOps

DevOps is the integration and automation of software development and information technology operations. DevOps encompasses necessary tasks of software development and can lead to shortening development time and improving the development life cycle.

Wikipedia

DevOps kultúra

The primary characteristic of DevOps culture is increased collaboration between the roles of development and operations.

– Rouan Wilsenach: Dev Ops Culture

Automatizácia

Automation is a cornerstone of the DevOps movement and facilitates collaboration. Automating tasks such as testing, configuration and deployment frees people up to focus on other valuable activities and reduces the chance of human error. A helpful side effect of automation is that automated scripts and tests serve as useful, always up-to-date documentation of the system.

– Rouan Wilsenach: Dev Ops Culture

Príkazový riadok – najlepší priateľ inžiniera

Prečo?

Výhody príkazového riadku

Základné nástroje vývojára

Shell

Prompt

[sergej@vostok ~]$ 
   ↑      ↑    ↑
   |      |    `--- Aktuálny pracovný adresár
   |      `-------- Názov počítača
   `--------------- Meno používaeľa

Pracovný adresár

Skúsme si to!

Premenné prostredia

Ako Shell vie význam príkazov?

Premenná PATH

Nastavovanie premenných prostredia

export EDITOR=vim
export PATH=$HOME/bin:$PATH

Windows