Technologies Flashcards
What is the software development life cycle?
The Software Development Life Cycle (SDLC) is a process used by software development teams to define, design, develop, and test software applications.
Roles in a project (Product Owner, Project Manager, Business Analyst, Software Developer, Tester, DevOps, etc.)
Various roles on a project include Product Owner, Project Manager, Business Analyst, Software Developer, Tester, DevOps, etc.
The Product Owner is responsible for defining and prioritizing the features of the product or service being developed. They act as the liaison between the development team and stakeholders, ensuring that the product meets the needs of the users and aligns with the overall business objectives.
The Scrum Master is a facilitator and servant leader who guides and empowers the Scrum Team in practicing Scrum principles and values. They facilitate Scrum events, coach team members on Scrum practices, and remove impediments to the team’s progress. The Scrum Master fosters a collaborative and self-organizing team environment, ensuring that the team adheres to Scrum practices and continuously improves their processes to deliver high-quality products efficiently.
The Project Manager oversees the planning, execution, and delivery of a project within the constraints of time, budget, and scope. They are responsible for coordinating tasks, managing resources, mitigating risks, and ensuring that the project is completed successfully and on schedule.
The Business Analyst bridges the gap between business stakeholders and the development team by analyzing business processes, identifying requirements, and proposing solutions to improve efficiency and achieve business goals. They gather and document user needs, define project scope, and facilitate communication between stakeholders and the development team.
A Software Developer designs, develops, tests, and maintains software applications or systems. They translate technical requirements into code, implement functionality according to specifications, and collaborate with other team members to deliver high-quality software solutions that meet user needs.
Testers are responsible for evaluating the quality and functionality of software applications through various testing methods, such as manual testing, automated testing, and regression testing. They identify defects, verify fixes, and ensure that the software meets the specified requirements and standards before it is released to production.
DevOps: DevOps (Development and Operations) professionals focus on streamlining the software development lifecycle by integrating development and IT operations practices. They automate processes, manage infrastructure, and implement continuous integration and delivery pipelines to accelerate software delivery, improve efficiency, and enhance collaboration between development and operations teams.
Principles of OOP (Encapsulation, Inheritance, Polymorphism - definition, examples of inheritance)
Object-Oriented Programming (OOP) principles include Encapsulation, Inheritance, and Polymorphism, which enable code organization and reusability.
The object is, conceptually, a self-contained unit that consists of data attributes and methods that operate on the data attributes.
A class is code that specifies the data attributes and methods of a particular type of object. Think of a class as a “blueprint” that objects may be created from. It serves a similar purpose as the blueprint for a house.
Encapsulation is the bundling of data (attributes) and methods (functions) that operate on the data into a single unit called a class. It restricts direct access to some of the object’s components, which helps to prevent unintended interference and misuse.
Example: Consider a class representing a car. Encapsulation allows us to hide the internal details of the car (such as its engine, transmission, and fuel system) and only expose a limited set of methods (e.g., start(), stop(), accelerate()) that users can interact with. This way, the internal state of the car is protected, and users can only interact with it through a well-defined interface.
Inheritance is a mechanism in which a new class (called a subclass or derived class) is created from an existing class (called a superclass or base class), inheriting its properties and behaviors. It allows for code reuse and the creation of a hierarchy of classes.
Example: Suppose we have a superclass called Animal, which has attributes like species and methods like eat() and sleep(). We can create subclasses like Dog and Cat that inherit from the Animal class. These subclasses will inherit the attributes and methods of the Animal class and can also have their own unique attributes and methods. For example, the Dog class may have additional methods like bark() and playFetch().
For example, a grasshopper is an insect. Here are a few other examples of the “is a” relationship: A poodle is a dog. A car is a vehicle. * A flower is a plant. * A rectangle is a shape. A football player is an athlete. When an “is a” relationship exists between objects, it means that the specialized object has all of the characteristics of the general object, plus additional characteristics that make it special. In object-oriented programming, inheritance is used to create an “is a” relationship among classes. This allows you to extend the capabilities of a class by creating another class that is a specialized version of it. Inheritance involves a superclass and a subclass. The superclass is the general class and the subclass is the specialized class. You can think of the subclass as an extended version of the superclass. The subclass inherits attributes and methods from the superclass without any of them having to be rewritten. Furthermore, new attributes and methods may be added to the subclass, and that is what makes it a specialized version of the superclass.
Polymorphism allows subclasses to have methods with the same names as methods in their superclasses. it gives the ability for a program to call the correct method depending on the type of object that is used to call it.
When a subclass method has the same name as a superclass method, it is often said that the subclass method overrides the superclass method. 2. The ability to call the correct version of an overridden method, depending on the type of object that is used to call it. If a subclass object is used to call an overridden method, then the subclass’s version of the method is the one that will execute.
Example: animal - make sound
dog - bark
car -mew
What is an operating system? What types of OS do you know?
An operating system (OS) is a software program that serves as an intermediary between computer hardware and software applications. It provides a platform for executing programs and managing computer resources, including memory, processors, input/output devices, and storage.
Examples of popular operating systems include Microsoft Windows, macOS (formerly OS X), Linux, Unix, and various distributions of Unix-like systems such as Ubuntu, CentOS, and Debian.
Overall, an operating system plays a critical role in managing the hardware and software components of a computer system, facilitating efficient and secure operation for users and applications.
Аппаратное обеспечение:
- материнская плата
The motherboard is the main circuit board that connects and integrates all the components of a computer.
- процессор (центральный процессор фактически исполняет программы)
The processor, or CPU, is the central processing unit responsible for executing programs and performing calculations.
- оперативная память
RAM is temporary memory that the processor uses to store data and program instructions while it is actively processing them.
- встроенная память
Built-in memory refers to non-volatile storage directly integrated into the motherboard or other components, such as ROM or firmware.
- видеокарта
- звуковая карта
Graphics cards handle the rendering of images and video on a computer, while sound cards process audio signals for output through speakers or headphones.
- сетевая плата
Network interface cards enable communication between a computer and a network, such as Ethernet or Wi-Fi.
- система охлаждения
The cooling system includes fans, heat sinks, and other mechanisms designed to dissipate heat generated by the components to prevent overheating and maintain optimal performance.
Вторичные устройста:
- жесткий диск
- флеш накопитель
Secondary devices include storage devices like hard disk drives (HDDs) for long-term data storage and flash drives (USB drives) for portable data transfer.
Операционная система - мозг, если хотим специфические знания и умения - устанавливаем на нее программу - прикладное ПО
The operating system is the software that manages hardware resources and provides a platform for running other software applications. It acts as the intermediary between the hardware and the user, facilitating interactions and managing system resources.
Обслуживающая программа (утилита)
Utility software, or utilities, are specialized programs designed to perform specific tasks related to system maintenance, management, and optimization. These include antivirus software, disk cleanup tools, backup utilities, and system diagnostic programs.
What is a web application?
A Web Application is a software application that runs on a web server and is accessed through a web browser over a network.
What is adaptive design?
Adaptive design is a user interface that’s adapted to different screen sizes. It consists of multiple fixed layouts where the size most closely associated with the user’s device is rendered—whether that’s a phone, tablet, computer, or something in between.
What is native development? What is cross-platform development? What is the difference?
Native Development involves building applications for specific platforms (e.g., iOS, Android) using platform-specific languages and tools. Cross-Platform Development involves building applications that can run on multiple platforms using a single codebase. The difference lies in the approach and technology stack used.
What is a mobile application?
A Mobile Application is a software application designed to run on mobile devices such as smartphones and tablets.
What is frontend? What is backend? Examples of languages*
Frontend refers to the part of a software application or website that users interact with directly. It includes elements such as user interface, design, and functionality that are visible and accessible to users.
Backend refers to the part of a software application or website that is responsible for managing data, processing requests, and performing computations. It includes server-side logic and infrastructure that operate behind the scenes to support frontend functionality.
Examples of frontend languages include HTML, CSS, and JavaScript, which are commonly used to create and design user interfaces.
Examples of backend languages include Python, Java, and PHP, which are used to develop server-side logic and handle data processing.
What is software architecture? What types do you know?
Software architecture refers to the structure and design of a software system, including its components, relationships, and principles guiding its development.
It encompasses decisions about system organization, communication protocols, and design patterns to ensure scalability, maintainability, and performance.
There are several types of software architecture, including:
Monolithic Architecture: A single-tiered architecture where all components of the software are combined into a single program or module.
Client-Server Architecture: A distributed architecture where tasks are divided between clients requesting services and servers providing those services.
Microservices Architecture: A distributed architecture where a system is composed of small, independent services that communicate through APIs.
What is client-server architecture?
Client-Server Architecture: A distributed architecture where tasks are divided between clients requesting services and servers providing those services.
What is hosting?
Hosting is the process by which you make a website accessible to other users on the Internet.
The process by which
a website is put on a server and made available on the Internet is called hosting.
Hosts are computers that are connected to the Internet nonstop so that
the website files you put on them are always accessible.
Imagine if you put your files on a server that someone turned off every night. When trying to access your website, your nighttime visitors and customers would receive
error messages. That means lost business and fewer Facebook likes—so an
always-on high-speed Internet connection for the hosting server is a must.
The only other thing these computers need is special web hosting software
that I don’t get into here. In a nutshell, that is pretty much what you need to
host a website properly.
Hosting providers quickly became popular. They allowed website developers
to focus on the product and minimize worries about its distribution. Hosting
providers typically offer a control panel for website developers to manage the
site and allow files to be moved to these remote servers using File Transfer
Protocol (FTP). FTP allows programs to exchange resources between computers connected to the Internet. If you host MyAppoly on a computer (server)
that lives elsewhere, as is likely the case, FTP allows you to establish a connection and interact with the remote computer to move your website files
onto it, even if it’s located in a different state or country. This interaction is
typically limited to moving files around (file management), but you don’t need
much more than that.
Hosting refers to the process of storing and serving website or application files on a server that is connected to the internet. It allows individuals and organizations to make their websites or applications accessible to users worldwide. Hosting providers offer various services and plans to accommodate different needs, including shared hosting, virtual private servers (VPS), dedicated hosting, and cloud hosting.
What is microservices architecture? What is monolithic architecture? What is the difference?
Microservices Architecture: A distributed architecture where a system is composed of small, independent services that communicate through APIs.
SaaS, PaaS, and IaaS - what are they and what is the difference?*
Cloud computing is the delivery of on-demand computing resources over the internet on a pay-as-you-go basis; resources are dynamically assigned and reassigned among multiple users and scale up and down in response to users’ needs.
Cloud Service Models:
SaaS (Software as a Service): SaaS is a software distribution model where applications are hosted by a third-party provider and made available to customers over the internet. Users access the software through a web browser without needing to install or maintain any infrastructure or software. Examples include Google Workspace, Microsoft Office 365, and Salesforce.
Alternative to deploying applications on the desktop
PaaS (Platform as a Service): PaaS provides a platform allowing customers to develop, run, and manage applications without dealing with the complexities of infrastructure management. It typically includes tools for application development, deployment, and scalability. Examples include Google App Engine, Microsoft Azure App Service, and Heroku.
Alternative developing your own application infrastructure (Salesforce)
IaaS (Infrastructure as a Service): IaaS provides virtualized computing resources over the internet. It offers virtualized hardware resources such as virtual machines, storage, and networking, allowing customers to deploy and manage their own virtualized infrastructure. Examples include Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP).
Alternative to running your own servers
What is an interface? Real-life examples
An interface is a point of interaction between different components or systems. In real life, examples of interfaces include the dashboard of a car, where the driver interacts with various controls and displays to operate the vehicle, and the user interface of a smartphone app, where users interact with buttons, menus, and screens to perform tasks.