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