Основные понятия связанные с разработкой ПО: просто о...
DESCRIPTION
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий Генеральный директор и основатель IT-Доминанта, Технический директор, программист портала Айти-Событие.рф", Санкт-Петербург.TRANSCRIPT
![Page 1: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/1.jpg)
Санкт-Петербург, 2013 год
Основные понятия, связанные с разработкой ПО: просто о сложном
Докладчик: Лаабе Д.Н.
![Page 2: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/2.jpg)
Немного о себе…
1. Опыт в ИТ – 17 лет
2. Преподавание ИТ в СПбГПУ («Политех») – 7 лет
3. Более 10-ти авторских курсов в области WEB разработки
4. Руководство рекрутинговой компанией в сфере ИТ – 9 лет
5. Подготовка ИТ рекрутеров – 7 лет
![Page 3: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/3.jpg)
Что нужно знать рекрутеру о разработке ПО
1. Базовые понятия: компьютер, программа, язык
программирования и т. д.
2. Связи между ними: программа-библиотека, клиент-сервер и
т. д.
3. Привязку конкретных технологий к базовым понятиям
4. Этапы разработки ПО и должности с ними связанные:
программист, системный аналитик, тестировщик и т. д.
Помните: Вы рекрутер, а не программист!
![Page 4: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/4.jpg)
Что НЕ нужно знать рекрутеру о разработке ПО
1. Синтаксис языка С++
2. Как работают паттерны
3. Всю правду о виртуальных деструкторах
4. Прочие «важные подробности»
![Page 5: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/5.jpg)
Базовые понятия: компьютер и программа
Компьютер (ЭВМ) – устройство или система, предназначенная для автоматической обработки информации.
Программа - последовательность инструкций, предназначенных для исполнения ЭВМ.
Пойди туда, не знаю куда…
![Page 6: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/6.jpg)
Базовые понятия: операционные системы
Операционная система (ОС) - комплекс управляющих программ, интерфейс между ЭВМ и прикладными программами
MS Windows, Unix системы (Linux, Mac Os, Solaris, FreeBSD, Ubuntu, HP-UX, AIX), Android и т.д.
ЭВМ
Прикладные программы: офисные пакеты, браузеры и т. п.
Операционная система и системные программы
![Page 7: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/7.jpg)
Базовые понятия: архитектура ПО
1. Одноуровневая: desktop приложение
2. Двухуровневая: клиент-серверное приложение
3. Трехуровневая: клиент-серверное приложение + база
данных4. Многоуровневая: сложные системы с цепочками вызовов
![Page 8: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/8.jpg)
Базовые понятия: клиент-серверное взаимодействие
Сервер - компьютер (или специальное компьютерное оборудование), выполняющий определенные сервисные функции
Клиент – компьютер отправляющий запросы серверу
ответ
запрос
![Page 9: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/9.jpg)
Базовые понятия: клиент-серверное ПО
Примеры серверного ПО (Back End):
1. WEB серверы (выдача HTML страниц): MS IIS, Apache, nginx и т. д.
2. FTP серверы (выдача файлов): FTP службы ОС, FileZilla server и т.д.
3. SMTP(почтовые) серверы: MS Exchange, SendMail,
4. И т.д.
Примеры клиентского ПО (Front End):
5. WEB клиенты: Internet Explorer, Google Chrome, Mozilla FireFox и т.д.
6. FTP клиенты: Cute FTP
7. Почтовые клиенты: MS Outlook, The Bat
1. Серверное ПО – ПО обеспечивающее обработку запросов от клиентов в
рамках некоторого сервиса
2. Клиентское ПО – ПО взаимодействующее с пользователем, отправляющее
запросы на сервер и принимающее ответы от него
![Page 10: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/10.jpg)
Базовые понятия: Протоколы
Сетевой протокол — набор правил и действий, позволяющий осуществлять обмен данными между включёнными в сеть устройствами.
TCP/IP –транспортно-сетевой,
HTTP, FTP, SMTP - прикладной
7-ми уровневая модель ISO OSI
![Page 11: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/11.jpg)
Базовые понятия: API
API (интерфейс программирования приложений) определяет функциональность, которую предоставляет программа/модуль/ библиотека/ сервис
Windows API(WinAPI),Linux
Kernel API, OpenGL, DirectX
Детали:
1. API предоставляет набор «рычагов
управления» программой/модулем…
2. Понятия API и протокола близки по смыслу:
и то и другое является абстракцией
функциональности
3. Протокол определяет формат передачи
данных, а API – порядок взаимодействия
![Page 12: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/12.jpg)
Базовые понятия: Программирование
Программирование— процесс записи алгоритма/программы.
Язык программирования – набор правил определяющих способ записи программы
![Page 13: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/13.jpg)
Базовые понятия: Компиляторы и интерпретаторы
Компилятор транслирует программу в машинный код
Интерпретатор непосредственно выполняет написанную программу
![Page 14: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/14.jpg)
Базовые понятия: Компиляторы и интерпретаторы
Компилируемые языки программирования:• Достоинства: скорость работы• Недостатки: необходимость собирать проект
под каждую платформу
C, С++, Delphi, Fortran, Algol, Eiffel, COBOL, Pascal, Visual Basic и др.
Интерпретируемые языки программирования:• Достоинства: кроссплатформеность, гибкость• Недостатки: меньшая производительность
Python, PHP, Javascript, Ruby, Perl и др.
Смешанные (JIT-компиляция) языки программирования:• Сочетают преимущества компилируемых и
интерпретируемых
Java, C# и др.
![Page 15: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/15.jpg)
Базовые понятия: Языки программирования
Языки программирования общего назначения:• С++• Java• C# и др.
Сценарные(скриптовые) языки программирования:• Perl• PHP• Python• Ruby• JavaScript д.р
Цитата из Твиттер: «Когда программисты придут к власти, целые министерства заменят на небольшой shell-скрипт.»
![Page 16: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/16.jpg)
Базовые понятия: Повторное использование кода
Программист много печатает на клавиатуре, но он не секретарша!
<>
![Page 17: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/17.jpg)
Базовые понятия: Повторное использование кода
Подходы к повторному использованию кода:
• Библиотеки программ: статические (lib, a),
динамические(dll,so)
• Процедурное программирование: C и др.
• Объектно-ориентированное программирование: C++,
Java, Ruby и др.
• ООП + библиотеки классов: STL, Qt, JFC
• Компонентно-ориентированное программирование:
COM, CORBA, SOAP, EJB
• Фреймворки (Frameworks)
![Page 18: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/18.jpg)
Базовые понятия: Процедурное программирование
Принцип повторного использования:• Повторно используемый код оформляется как процедура или функция
• Процедура вызывается столько раз, сколько необходимо
![Page 19: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/19.jpg)
Базовые понятия: ООП
ООП – парадигма программирования, в которой основными концепциями являются классы и объекты… Или можно сказать, что ООП - это моделирование объектов посредством иерархически связанных классов
И это просто?!
Простой пример:
![Page 20: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/20.jpg)
Базовые понятия: ООП
Простой пример:
1. Каждый класс описывает какой-то объект2. Класс содержит данные и методы работы с ними
![Page 21: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/21.jpg)
Базовые понятия: компонентное программирование
Принцип действия:1. Каждый компонент компилируется отдельно от других2. На стадии выполнения компоненты подключаются динамически3. Компоненты взаимодействуют друг с другом по стандартизованному
механизму4. Примеры реализаций: COM, CORBA, SOAP, EJB
![Page 22: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/22.jpg)
Базовые понятия: Фреймворки
Принцип действия:1. Реализует типовое приложение2. Позволяет расширять себя под
конкретную задачу3. Используется для более быстрого
создания однотипных систем
Фрейворк - каркас программной системы с определенной структурой и поведением по умолчанию
MFC, Qt, wxWidgets, Django, Rails
![Page 23: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/23.jpg)
Базовые понятия: разработка WEB приложений
WEB приложение – частный случай 3-х уровневой архитектуры приложения
WEB браузер(тонкий клиент) WEB сервер Сервер БД
JavaScript Developer,Front End Developer
PHP Developer,Java Developer,Ruby Developer
DB Developer (SQL)
![Page 24: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/24.jpg)
Базовые понятия: разработка WEB приложений
Подходы к разработке:1. Разработка с «нуля»: • Серверная: языки PHP, ASP, Java; • клиентская: HTML, JS, CSS
2. Разработка с использование фреймворков: • Rails и язык Ruby • Django и язык Python• Zend Framework и язык PHP
3. Разработка с использованием CMS: 1С-Битрикс, UMI.CMS, Joomla, WordPress
![Page 25: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/25.jpg)
Базовые понятия: СУБД
СУБД – программное обеспечение для управления базой данных
Язык запросов – один из важнейших элементов СУБД
SQL – де-факто стандартный язык запросов к реляционным БД
MS SQL Server, Oracle DB, MySQL, SQLLite, MS Access и др.
![Page 26: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/26.jpg)
Что нужно знать о проекте рекрутеру?
1. Архитектура проекта (уровневость)2. Клиентские языки программирования проекта3. Серверные языки программирования проекта4. Используемые клиентские и серверные библиотеки5. Используемые протоколы и API6. Используемые фреймворки и(или) CMS7. Используемые БД8. Используемые IDE (среды разработки)9. Какую часть проекта будет писать программист на
конкретной позиции
Ну и, конечно, какие задачи решает проект…
![Page 27: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/27.jpg)
Пример вакансии
Senior C++ Developer
Обязанности:разработка и поддержка решений для безопасности сетей
Требования:опыт в проектировании и разработке ПО не менее 5-ти лет; Опыт разработки на уровне winAPI(Win 32), знание современных операционных систем (Windows); опыт работы с базами данных (MySQL, H2 и др.); опыт написания unit-тестов; опыт работы с системами контроля версий ; английский язык (технический, навыки переписки и общения);
Желательно:опыт программирования на Python, Java; Желательно знание Qt знания TCP/IP networking, Information security;
![Page 28: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/28.jpg)
Базовые понятия: основные этапы разработки ПО
Этап Кто делает?
Бизнес-моделирование Бизнес-аналитик
Анализ требований Системные аналитикБизнес-аналитик
Планирование Руководитель проекта
Разработка архитектуры АрхитекторВедущие разработчики
Кодирование Разработчики
Тестирование и отладка Тестировщики и разработчики
Документирование Технические писатели
Внедрение и сопровождение
Специалисты по внедрению и сопровождению
![Page 29: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий](https://reader037.vdocuments.net/reader037/viewer/2022102320/55662600d8b42a61238b4f3c/html5/thumbnails/29.jpg)
Спасибо за внимание!
• Сайт: http://www.it-dominanta.ru
• Телефон: +7 (812) 334-99-90
• E-mail: [email protected]
• Адрес: 191186, Санкт-Петербург, Большая морская ул., д.3 (БЦ "Лидваль"), офис 407.
Контакты:
Лаабе Дмитрий
Генеральный директор и основатель IT-Доминантаemail: [email protected]