SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Основные понятия, связанные с
разработкой ПО:
просто о сложном
Докладчик: Лаабе Д.Н.

Санкт-Петербург, 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

Weitere ähnliche Inhalte

Was ist angesagt?

03 т сервис
03 т сервис03 т сервис
03 т сервис
Goudron1979
 
Sergey Ilinsky Rit 2010 Complex Gui Development Ample Sdk
Sergey Ilinsky Rit 2010 Complex Gui Development Ample SdkSergey Ilinsky Rit 2010 Complex Gui Development Ample Sdk
Sergey Ilinsky Rit 2010 Complex Gui Development Ample Sdk
rit2010
 
Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»
Sergey Xek
 
ляпин Bdd и coded ui для прагматиков
ляпин   Bdd и coded ui для прагматиковляпин   Bdd и coded ui для прагматиков
ляпин Bdd и coded ui для прагматиков
Magneta AI
 

Was ist angesagt? (20)

МиСПИСиТ (литература по курсу)
МиСПИСиТ (литература по курсу)МиСПИСиТ (литература по курсу)
МиСПИСиТ (литература по курсу)
 
03 т сервис
03 т сервис03 т сервис
03 т сервис
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решения
 
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
 
Разработка веб-приложений с помощью TypeScript
Разработка веб-приложений с помощью TypeScriptРазработка веб-приложений с помощью TypeScript
Разработка веб-приложений с помощью TypeScript
 
Sergey Ilinsky Rit 2010 Complex Gui Development Ample Sdk
Sergey Ilinsky Rit 2010 Complex Gui Development Ample SdkSergey Ilinsky Rit 2010 Complex Gui Development Ample Sdk
Sergey Ilinsky Rit 2010 Complex Gui Development Ample Sdk
 
Смолина Пользовательские интерфейсы систем лингвистической разметки текстов
Смолина Пользовательские интерфейсы систем лингвистической разметки текстовСмолина Пользовательские интерфейсы систем лингвистической разметки текстов
Смолина Пользовательские интерфейсы систем лингвистической разметки текстов
 
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
Володимир Дем’яненко, «How to become a Test Automation Engineer. My way»
 
Опыт Автоматизации тестирования
Опыт Автоматизации тестированияОпыт Автоматизации тестирования
Опыт Автоматизации тестирования
 
Тестирование мобильных API: Behind The Scenes
Тестирование мобильных API: Behind The ScenesТестирование мобильных API: Behind The Scenes
Тестирование мобильных API: Behind The Scenes
 
МиСПИСиТ (введение)
МиСПИСиТ (введение)МиСПИСиТ (введение)
МиСПИСиТ (введение)
 
Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»
 
Как писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодеромКак писать на PHP и не стать быдло-кодером
Как писать на PHP и не стать быдло-кодером
 
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...
 
ляпин Bdd и coded ui для прагматиков
ляпин   Bdd и coded ui для прагматиковляпин   Bdd и coded ui для прагматиков
ляпин Bdd и coded ui для прагматиков
 
Поиск багов при тестировании переходов с веба в мобильное приложение
Поиск багов при тестировании переходов с веба в мобильное приложениеПоиск багов при тестировании переходов с веба в мобильное приложение
Поиск багов при тестировании переходов с веба в мобильное приложение
 
Повышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кодаПовышаем и следим за качеством PHP кода
Повышаем и следим за качеством PHP кода
 
.NET Development
.NET Development.NET Development
.NET Development
 
МиСПИСиТ (разработка программного модуля)
МиСПИСиТ (разработка программного модуля)МиСПИСиТ (разработка программного модуля)
МиСПИСиТ (разработка программного модуля)
 
Антон Семенченко, Никита Беликов "Инструменты автоматизации тестирования моби...
Антон Семенченко, Никита Беликов "Инструменты автоматизации тестирования моби...Антон Семенченко, Никита Беликов "Инструменты автоматизации тестирования моби...
Антон Семенченко, Никита Беликов "Инструменты автоматизации тестирования моби...
 

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

4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем
KewpaN
 
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
JSC “Arcadia Inc”
 
Экономика проекта с точки зрения IT
Экономика проекта с точки зрения ITЭкономика проекта с точки зрения IT
Экономика проекта с точки зрения IT
oleg.bunin
 
CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...
CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...
CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...
CodeFest
 
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнBadoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Sergey Xek
 

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

C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.
 
Что должен уметь Linux программист
Что должен уметь Linux программистЧто должен уметь Linux программист
Что должен уметь Linux программист
 
4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем4 особенности платформы microsoft .net для разработки корпоративных систем
4 особенности платформы microsoft .net для разработки корпоративных систем
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
 
Автоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложенийАвтоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложений
 
Web tehn
Web tehnWeb tehn
Web tehn
 
Лекция 1. Модель OSI.
Лекция 1. Модель OSI.Лекция 1. Модель OSI.
Лекция 1. Модель OSI.
 
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
 
Экономика проекта с точки зрения IT
Экономика проекта с точки зрения ITЭкономика проекта с точки зрения IT
Экономика проекта с точки зрения IT
 
Sivko
SivkoSivko
Sivko
 
языки программирования
языки программированияязыки программирования
языки программирования
 
Павел Брылов, Skype
Павел Брылов, SkypeПавел Брылов, Skype
Павел Брылов, Skype
 
Введение в профессию исследователя приложений без исходных кодов
Введение в профессию исследователя приложений без исходных кодовВведение в профессию исследователя приложений без исходных кодов
Введение в профессию исследователя приложений без исходных кодов
 
Dotnet
DotnetDotnet
Dotnet
 
Л1 Введение в ROS.pdf
Л1 Введение в ROS.pdfЛ1 Введение в ROS.pdf
Л1 Введение в ROS.pdf
 
программное обеспечение пк
программное обеспечение пкпрограммное обеспечение пк
программное обеспечение пк
 
CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...
CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...
CodeFest 2013. Лузин А. — Бэкенд-винегрет: как подружить разные ЯП на ваших с...
 
Present.pps
Present.ppsPresent.pps
Present.pps
 
Present.pps
Present.ppsPresent.pps
Present.pps
 
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайнBadoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
 

Mehr von IT-Доминанта

Алексей Федоров: Количественные исследования в HR
Алексей Федоров: Количественные исследования в HRАлексей Федоров: Количественные исследования в HR
Алексей Федоров: Количественные исследования в HR
IT-Доминанта
 

Mehr von IT-Доминанта (20)

Алексей Федоров: Количественные исследования в HR
Алексей Федоров: Количественные исследования в HRАлексей Федоров: Количественные исследования в HR
Алексей Федоров: Количественные исследования в HR
 
Рекрутеры не волшебники или Почему клиенты тоже плачут?
Рекрутеры не волшебники или Почему клиенты тоже плачут?Рекрутеры не волшебники или Почему клиенты тоже плачут?
Рекрутеры не волшебники или Почему клиенты тоже плачут?
 
Soft skills matrix for HR manager
Soft skills matrix for HR managerSoft skills matrix for HR manager
Soft skills matrix for HR manager
 
Конкуренция городов среди ИТ-специалистов
Конкуренция городов среди ИТ-специалистовКонкуренция городов среди ИТ-специалистов
Конкуренция городов среди ИТ-специалистов
 
Волшебная формула найма
Волшебная формула наймаВолшебная формула найма
Волшебная формула найма
 
Рекрутинг и коммьюнити билдинг за МКАДом: миссия выполнима
Рекрутинг и коммьюнити билдинг за МКАДом: миссия выполнимаРекрутинг и коммьюнити билдинг за МКАДом: миссия выполнима
Рекрутинг и коммьюнити билдинг за МКАДом: миссия выполнима
 
Как продать вакансию техническому специалисту?
Как продать вакансию техническому специалисту?Как продать вакансию техническому специалисту?
Как продать вакансию техническому специалисту?
 
Для спикера Piter Py #3
Для спикера Piter Py #3Для спикера Piter Py #3
Для спикера Piter Py #3
 
IT HR Meetup 24 (Faina Lerner)
IT HR Meetup 24 (Faina Lerner)IT HR Meetup 24 (Faina Lerner)
IT HR Meetup 24 (Faina Lerner)
 
Дмитрий Кончаленков "Особенности маркетинга IT продуктов в социальных сетях"
Дмитрий Кончаленков "Особенности маркетинга IT продуктов в социальных сетях"Дмитрий Кончаленков "Особенности маркетинга IT продуктов в социальных сетях"
Дмитрий Кончаленков "Особенности маркетинга IT продуктов в социальных сетях"
 
Андрей Маркин "Основы маркетинга (продвижения) IT продуктов в поисковых и мед...
Андрей Маркин "Основы маркетинга (продвижения) IT продуктов в поисковых и мед...Андрей Маркин "Основы маркетинга (продвижения) IT продуктов в поисковых и мед...
Андрей Маркин "Основы маркетинга (продвижения) IT продуктов в поисковых и мед...
 
6 самых неприличных поз HR-брендинга и стоит ли им заниматься вообще
6 самых неприличных поз HR-брендинга и стоит ли им заниматься вообще6 самых неприличных поз HR-брендинга и стоит ли им заниматься вообще
6 самых неприличных поз HR-брендинга и стоит ли им заниматься вообще
 
Цифровой лайфхак, или как посчитать счастье сотрудников: сбор, анализ и предс...
Цифровой лайфхак, или как посчитать счастье сотрудников: сбор, анализ и предс...Цифровой лайфхак, или как посчитать счастье сотрудников: сбор, анализ и предс...
Цифровой лайфхак, или как посчитать счастье сотрудников: сбор, анализ и предс...
 
Повышаем эффективность и прозрачность HR, сокращаем расходы
Повышаем эффективность и прозрачность HR, сокращаем расходыПовышаем эффективность и прозрачность HR, сокращаем расходы
Повышаем эффективность и прозрачность HR, сокращаем расходы
 
Премирование для IT – фикция или работающий инструмент?
Премирование для IT – фикция или работающий инструмент?Премирование для IT – фикция или работающий инструмент?
Премирование для IT – фикция или работающий инструмент?
 
Простые непростые истины бюджетирования или сколько стоит управление персоналом?
Простые непростые истины бюджетирования или сколько стоит управление персоналом?Простые непростые истины бюджетирования или сколько стоит управление персоналом?
Простые непростые истины бюджетирования или сколько стоит управление персоналом?
 
Повышают ли ретроспективы проектов результативность команд? (Дмитрий Лазареd)
Повышают ли ретроспективы проектов результативность команд? (Дмитрий Лазареd)Повышают ли ретроспективы проектов результативность команд? (Дмитрий Лазареd)
Повышают ли ретроспективы проектов результативность команд? (Дмитрий Лазареd)
 
О геймификации серьезно: опыт Veeam (от проблемы до внедрения)
О геймификации серьезно: опыт Veeam (от проблемы до внедрения)О геймификации серьезно: опыт Veeam (от проблемы до внедрения)
О геймификации серьезно: опыт Veeam (от проблемы до внедрения)
 
дарья кирпо для найти ответ - публикация
дарья кирпо   для найти ответ  - публикациядарья кирпо   для найти ответ  - публикация
дарья кирпо для найти ответ - публикация
 
HR брендинг: позиционирование компании на рынке труда (часть 1)
HR брендинг: позиционирование компании на рынке труда (часть 1)HR брендинг: позиционирование компании на рынке труда (часть 1)
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
  • 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