Basics of SE Flashcards
Traditional Software Development vs. AI Projekt:
- Goal
- Quality
Traditional:
Goal: Satisfy functional and non-functional
requirements (meet a specification)
AI / ML
Goal: Optimize a certain metric and try to
improve it via experimentation
Traditional
- Quality of the software depends mostly on
code
AI / ML
- Quality depends on multiple factors (input
data, data cleaning, feature engineering,
tuning parameters, ML algorithm, etc.)
AI-enabled software system requires both!
Nenne die Elemente
Was sind die 4 Elemente in einem ML-Lifecycle. Nenne auch Beispiele
(3) (3) (2) (5)
- Requirements Engineering: Project Requirements, Goals, Metrics
- Design + Architecture: MLOps, Infrastructure, integrated design
- Implementation + Testing: API-Design, non-functional properties (SLA testing)
- Deployment + Monitoring: Deployment infrastructure, heart beat, monitoring/logging capabilities, version management, feedback loop
Define:
Was sind DevOps Goals?
(4 main) (6 more over)
Automate processes (testing, integration, feedback, error report, deployment, etc.)
thereby improving software quality through better (more frequent)
tests, similar environments in dev and prod, actually needed features (fast feedback),
more secure software (using standardized procedures)
- Minimize time to deployment
- Maintain your own product in production
- Enable agile development (iterative process without DevOps possibly infeasible)
- Own the environment (and infrastructure) your system is running on
- Bridge the gap between local and cloud (remote) computing
- Save (reliable) updates and rollouts of software versions
Define
Was ist die Idee hinter Virtualization and Containerization?
Abstract from the (i) physical hardware and (ii) the environment your application is running on. Create your virtual
environment anywhere.
Define:
Was sind SLA-Tests
Service-Level-Agreement Tests:
Es sind spezifische Tests, die auf meine Performance-Ziele hinarbeiten.
Docker:
Was macht LABEL?
Provide key/value metadata (version, topic, etc.)
LABEL <key>=<value>
LABEL version="1.0" LABEL description="This text illustrates \ that label-values can span multiple lines."
Docker:
Was macht ARG?
Define Docker build-time variables
ARG <name>[=<default value>]
FROM busybox USER ${username:-some_user} ARG username USER $username
Was ist der Command für:
build image using tag <image_tag>
und Version <version>
docker build -t <image_tag>:[<version>]
Was ist der Command für:
Lists all the available images
docker image ls
or docker images
Was ist der Command für:
Create a new instance of the image (run a docker container) in detached mode with name <name>
and remove image after exit
docker run [-d] [--name <name>] [--rm <image_tag>]
Was ist der Command für:
Lists all currently running containers (use [-a] to show stopped as well)
docker container ls
or docker ps
Was ist der Command für:
Removes a docker image
docker image rm <image>
Was steht für: IaC
Definiere Ziel, Idee und Vorteile
Z: 3, I: 1, V: 6
Infrastructure as Code:
Automate:
- configuration
- deployment
- management of infrastructure resources (virtual machines, containers, networks, storage)
Idea
Nutze wiederverwendbaren Code
Benefits
- In Code Repo
- Consistent Deployment
- Efficient
- Scaling
- Reproducibility of Environments
- Easy Sharing
Was sind Acceptance-Tests?
Softwaretests, bei denen bewertet wird, ob ein System seine Geschäfts- und Benutzeranforderungen erfüllt. Letzte Testphase vor Deployment.