Основные понятия, связанные с
разработкой ПО:
просто о сложном
Докладчик: Лаабе Д.Н.

Санкт-Петербург, 2013 год
Немного о себе…
1. Опыт в ИТ – 17 лет
2. Преподавание ИТ в СПбГПУ («Политех») – 7 лет

3. Более 10-ти авторских курсов в области WEB разработки
4. Руководство рекрутинговой компанией в сфере ИТ – 9 лет
5. Подготовка ИТ рекрутеров – 7 лет
Что нужно знать рекрутеру о разработке ПО
1. Базовые понятия: компьютер, программа, язык

программирования и т. д.
2. Связи между ними: программа-библиотека, клиент-сервер и
т. д.

3. Привязку конкретных технологий к базовым понятиям
4. Этапы разработки ПО и должности с ними связанные:
программист, системный аналитик, тестировщик и т. д.

Помните: Вы рекрутер, а не программист!
Что НЕ нужно знать рекрутеру о разработке ПО
1.

Синтаксис языка С++

2.

Как работают паттерны

3.

Всю правду о виртуальных деструкторах

4.

Прочие «важные подробности»
Базовые понятия: компьютер и программа
Компьютер (ЭВМ) – устройство
или система, предназначенная
для автоматической обработки
информации.

Программа последовательность
инструкций, предназначенных
для исполнения ЭВМ.

Пойди туда, не
знаю куда…
Базовые понятия: операционные системы
Операционная система (ОС) комплекс управляющих
программ, интерфейс между
ЭВМ и прикладными
программами

MS Windows, Unix системы
(Linux, Mac Os, Solaris, FreeBSD,
Ubuntu, HP-UX, AIX), Android и
т.д.

Прикладные программы: офисные пакеты, браузеры и т. п.

Операционная система и системные программы

ЭВМ
Базовые понятия: архитектура ПО
1. Одноуровневая: desktop приложение
2. Двухуровневая: клиент-серверное приложение
3. Трехуровневая: клиент-серверное приложение + база

данных
4. Многоуровневая: сложные системы с цепочками вызовов
Базовые понятия: клиент-серверное взаимодействие
Сервер - компьютер (или
специальное компьютерное
оборудование), выполняющий
определенные сервисные
функции

запрос
ответ

Клиент – компьютер
отправляющий запросы
серверу
Базовые понятия: клиент-серверное ПО
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
Базовые понятия: Протоколы
Сетевой протокол — набор правил и действий,
позволяющий осуществлять обмен данными
между включёнными в сеть устройствами.

7-ми уровневая модель ISO OSI

TCP/IP –транспортно-сетевой,
HTTP, FTP, SMTP - прикладной
Базовые понятия: API
API (интерфейс программирования
приложений) определяет функциональность,
которую предоставляет программа/модуль/
библиотека/ сервис

Детали:

1. API предоставляет набор «рычагов
управления» программой/модулем…
2. Понятия API и протокола близки по смыслу:
и то и другое является абстракцией

функциональности
3. Протокол определяет формат передачи
данных, а API – порядок взаимодействия

Windows API(WinAPI),Linux
Kernel API, OpenGL, DirectX
Базовые понятия: Программирование

Программирование— процесс записи
алгоритма/программы.

Язык программирования – набор
правил определяющих способ записи
программы
Базовые понятия: Компиляторы и интерпретаторы
Компилятор транслирует программу в машинный код

Интерпретатор непосредственно выполняет написанную программу
Базовые понятия: Компиляторы и интерпретаторы
Компилируемые языки программирования:
• Достоинства: скорость работы
• Недостатки: необходимость собирать проект
под каждую платформу

Интерпретируемые языки программирования:
• Достоинства: кроссплатформеность, гибкость
• Недостатки: меньшая производительность

Смешанные (JIT-компиляция) языки
программирования:
• Сочетают преимущества компилируемых и
интерпретируемых

C, С++, Delphi, Fortran, Algol,
Eiffel, COBOL, Pascal, Visual
Basic и др.

Python, PHP, Javascript, Ruby,
Perl и др.

Java, C# и др.
Базовые понятия: Языки программирования
Языки программирования общего назначения:
• С++
• Java
• C# и др.
Сценарные(скриптовые) языки программирования:
• Perl
• PHP
• Python
• Ruby
• JavaScript д.р

Цитата из Твиттер: «Когда программисты
придут к власти, целые министерства
заменят на небольшой shell-скрипт.»
Базовые понятия: Повторное использование кода
Программист много печатает на клавиатуре, но он не секретарша!

<>
Базовые понятия: Повторное использование кода
Подходы к повторному использованию кода:
• Библиотеки программ: статические (lib, a),

динамические(dll,so)
• Процедурное программирование: C и др.
• Объектно-ориентированное программирование: C++,

Java, Ruby и др.
• ООП + библиотеки классов: STL, Qt, JFC
• Компонентно-ориентированное программирование:

COM, CORBA, SOAP, EJB
• Фреймворки (Frameworks)
Базовые понятия: Процедурное программирование
Принцип повторного использования:
• Повторно используемый код оформляется как процедура или функция

• Процедура вызывается столько раз, сколько необходимо
Базовые понятия: ООП
ООП – парадигма программирования, в
которой основными концепциями являются
классы и объекты… 
Или можно сказать, что ООП - это
моделирование объектов посредством
иерархически связанных классов

Простой пример:

И это просто?!
Базовые понятия: ООП
1. Каждый класс описывает какой-то объект
2. Класс содержит данные и методы работы с ними
Простой пример:
Базовые понятия: компонентное программирование
Принцип действия:
1. Каждый компонент компилируется отдельно от других
2. На стадии выполнения компоненты подключаются динамически
3. Компоненты взаимодействуют друг с другом по стандартизованному
механизму
4. Примеры реализаций: COM, CORBA, SOAP, EJB
Базовые понятия: Фреймворки
Фрейворк - каркас программной системы с
определенной структурой и поведением по
умолчанию
Принцип действия:
1. Реализует типовое приложение
2. Позволяет расширять себя под
конкретную задачу
3. Используется для более быстрого
создания однотипных систем

MFC, Qt, wxWidgets,
Django, Rails
Базовые понятия: разработка WEB приложений
WEB приложение – частный случай 3-х
уровневой архитектуры приложения

WEB браузер
(тонкий клиент)
JavaScript Developer,
Front End Developer

WEB сервер

PHP Developer,
Java Developer,
Ruby Developer

Сервер БД

DB Developer (SQL)
Базовые понятия: разработка WEB приложений
Подходы к разработке:
1. Разработка с «нуля»:
• Серверная: языки PHP, ASP, Java;
• клиентская: HTML, JS, CSS
2. Разработка с использование фреймворков:
• Rails и язык Ruby
• Django и язык Python
• Zend Framework и язык PHP
3. Разработка с использованием CMS: 1С-Битрикс, UMI.CMS,
Joomla, WordPress
Базовые понятия: СУБД
СУБД – программное обеспечение для
управления базой данных
Язык запросов – один из важнейших
элементов СУБД

SQL – де-факто стандартный язык запросов
к реляционным БД

MS SQL Server, Oracle DB,
MySQL, SQLLite, MS Access и
др.
Что нужно знать о проекте рекрутеру?
1.
2.
3.
4.
5.
6.
7.
8.
9.

Архитектура проекта (уровневость)
Клиентские языки программирования проекта
Серверные языки программирования проекта
Используемые клиентские и серверные библиотеки
Используемые протоколы и API
Используемые фреймворки и(или) CMS
Используемые БД
Используемые IDE (среды разработки)
Какую часть проекта будет писать программист на
конкретной позиции

Ну и, конечно, какие задачи решает проект… 
Пример вакансии
Senior C++ Developer
Обязанности:
разработка и поддержка решений для безопасности сетей
Требования:
опыт в проектировании и разработке ПО не менее 5-ти лет;
Опыт разработки на уровне winAPI(Win 32),
знание современных операционных систем (Windows);
опыт работы с базами данных (MySQL, H2 и др.);
опыт написания unit-тестов;
опыт работы с системами контроля версий ;
английский язык (технический, навыки переписки и общения);
Желательно:
опыт программирования на Python, Java;
Желательно знание Qt
знания TCP/IP networking, Information security;
Базовые понятия: основные этапы разработки ПО
Этап

Кто делает?

Бизнес-моделирование

Бизнес-аналитик

Анализ требований

Системные аналитик
Бизнес-аналитик

Планирование

Руководитель проекта

Разработка архитектуры

Архитектор
Ведущие разработчики

Кодирование

Разработчики

Тестирование и отладка

Тестировщики и
разработчики

Документирование

Технические писатели

Внедрение и
сопровождение

Специалисты по внедрению
и сопровождению
Спасибо за внимание!
Контакты:

•
•
•
•

Сайт: 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

Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.

  • 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
  • 12.
    Базовые понятия: Программирование Программирование—процесс записи алгоритма/программы. Язык программирования – набор правил определяющих способ записи программы
  • 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