29

Click here to load reader

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

  • Upload
    it-

  • View
    6.913

  • Download
    2

Embed Size (px)

DESCRIPTION

Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий Генеральный директор и основатель IT-Доминанта, Технический директор, программист портала Айти-Событие.рф", Санкт-Петербург.

Citation preview

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

Санкт-Петербург, 2013 год

 

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

Докладчик: Лаабе Д.Н.

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

Немного о себе…

1. Опыт в ИТ – 17 лет

2. Преподавание ИТ в СПбГПУ («Политех») – 7 лет

3. Более 10-ти авторских курсов в области WEB разработки

4. Руководство рекрутинговой компанией в сфере ИТ – 9 лет

5. Подготовка ИТ рекрутеров – 7 лет

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

Что нужно знать рекрутеру о разработке ПО

1. Базовые понятия: компьютер, программа, язык

программирования и т. д.

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

т. д.

3. Привязку конкретных технологий к базовым понятиям

4. Этапы разработки ПО и должности с ними связанные:

программист, системный аналитик, тестировщик и т. д.

Помните: Вы рекрутер, а не программист!

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

Что НЕ нужно знать рекрутеру о разработке ПО

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

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

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

4. Прочие «важные подробности»

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

Базовые понятия: компьютер и программа 

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

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

Пойди туда, не знаю куда…

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

Базовые понятия: операционные системы 

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

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

ЭВМ

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

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

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

Базовые понятия: архитектура ПО

1. Одноуровневая: desktop приложение

2. Двухуровневая: клиент-серверное приложение

3. Трехуровневая: клиент-серверное приложение + база

данных4. Многоуровневая: сложные системы с цепочками вызовов

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

Базовые понятия: клиент-серверное взаимодействие 

Сервер - компьютер (или специальное компьютерное оборудование), выполняющий определенные сервисные функции

Клиент – компьютер отправляющий запросы серверу

ответ

запрос

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

Базовые понятия: клиент-серверное ПО

Примеры серверного ПО (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: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий

Базовые понятия: Протоколы

Сетевой протокол — набор правил и действий, позволяющий осуществлять обмен данными между включёнными в сеть устройствами.

TCP/IP –транспортно-сетевой,

HTTP, FTP, SMTP - прикладной

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

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

Базовые понятия: API

API (интерфейс программирования приложений) определяет функциональность, которую предоставляет программа/модуль/ библиотека/ сервис

Windows API(WinAPI),Linux

Kernel API, OpenGL, DirectX

Детали:

1. API предоставляет набор «рычагов

управления» программой/модулем…

2. Понятия API и протокола близки по смыслу:

и то и другое является абстракцией

функциональности

3. Протокол определяет формат передачи

данных, а API – порядок взаимодействия

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

Базовые понятия: Программирование

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

Язык программирования – набор правил определяющих способ записи программы

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

Базовые понятия: Компиляторы и интерпретаторы

Компилятор транслирует программу в машинный код

Интерпретатор непосредственно выполняет написанную программу

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

Базовые понятия: Компиляторы и интерпретаторы

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

под каждую платформу

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

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

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

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

интерпретируемых

Java, C# и др.

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

Базовые понятия: Языки программирования

Языки программирования общего назначения:• С++• Java• C# и др.

Сценарные(скриптовые) языки программирования:• Perl• PHP• Python• Ruby• JavaScript д.р

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

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

Базовые понятия: Повторное использование кода

Программист много печатает на клавиатуре, но он не секретарша!

<>

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

Базовые понятия: Повторное использование кода

Подходы к повторному использованию кода:

• Библиотеки программ: статические (lib, a),

динамические(dll,so)

• Процедурное программирование: C и др.

• Объектно-ориентированное программирование: C++,

Java, Ruby и др.

• ООП + библиотеки классов: STL, Qt, JFC

• Компонентно-ориентированное программирование:

COM, CORBA, SOAP, EJB

• Фреймворки (Frameworks)

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

Базовые понятия: Процедурное программирование

Принцип повторного использования:• Повторно используемый код оформляется как процедура или функция

• Процедура вызывается столько раз, сколько необходимо

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

Базовые понятия: ООП

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

И это просто?!

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

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

Базовые понятия: ООП

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

1. Каждый класс описывает какой-то объект2. Класс содержит данные и методы работы с ними

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

Базовые понятия: компонентное программирование

Принцип действия:1. Каждый компонент компилируется отдельно от других2. На стадии выполнения компоненты подключаются динамически3. Компоненты взаимодействуют друг с другом по стандартизованному

механизму4. Примеры реализаций: COM, CORBA, SOAP, EJB

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

Базовые понятия: Фреймворки

Принцип действия:1. Реализует типовое приложение2. Позволяет расширять себя под

конкретную задачу3. Используется для более быстрого

создания однотипных систем

Фрейворк - каркас программной системы с определенной структурой и поведением по умолчанию

MFC, Qt, wxWidgets, Django, Rails

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

Базовые понятия: разработка WEB приложений

WEB приложение – частный случай 3-х уровневой архитектуры приложения

WEB браузер(тонкий клиент) WEB сервер Сервер БД

JavaScript Developer,Front End Developer

PHP Developer,Java Developer,Ruby Developer

DB Developer (SQL)

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

Базовые понятия: разработка 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: Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий

Базовые понятия: СУБД

СУБД – программное обеспечение для управления базой данных

Язык запросов – один из важнейших элементов СУБД

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

MS SQL Server, Oracle DB, MySQL, SQLLite, MS Access и др.

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

Что нужно знать о проекте рекрутеру?

1. Архитектура проекта (уровневость)2. Клиентские языки программирования проекта3. Серверные языки программирования проекта4. Используемые клиентские и серверные библиотеки5. Используемые протоколы и API6. Используемые фреймворки и(или) CMS7. Используемые БД8. Используемые IDE (среды разработки)9. Какую часть проекта будет писать программист на

конкретной позиции

Ну и, конечно, какие задачи решает проект… 

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

Пример вакансии

Senior C++ Developer

Обязанности:разработка и поддержка решений для безопасности сетей

Требования:опыт в проектировании и разработке ПО не менее 5-ти лет; Опыт разработки на уровне winAPI(Win 32), знание современных операционных систем (Windows); опыт работы с базами данных (MySQL, H2 и др.); опыт написания unit-тестов; опыт работы с системами контроля версий ; английский язык (технический, навыки переписки и общения);

Желательно:опыт программирования на Python, Java; Желательно знание Qt знания TCP/IP networking, Information security;

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

Базовые понятия: основные этапы разработки ПО

Этап Кто делает?

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

Анализ требований Системные аналитикБизнес-аналитик

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

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

Кодирование Разработчики

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

Документирование Технические писатели

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

Специалисты по внедрению и сопровождению

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

Спасибо за внимание!

• Сайт: http://www.it-dominanta.ru

• Телефон: +7 (812) 334-99-90

• E-mail: [email protected]

• Адрес: 191186, Санкт-Петербург, Большая морская ул., д.3 (БЦ "Лидваль"), офис 407.

Контакты:

Лаабе Дмитрий

Генеральный директор и основатель IT-Доминантаemail: [email protected]