Click here to load reader
Upload
it-
View
6.913
Download
2
Embed Size (px)
DESCRIPTION
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий Генеральный директор и основатель IT-Доминанта, Технический директор, программист портала Айти-Событие.рф", Санкт-Петербург.
Citation preview
Санкт-Петербург, 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. Многоуровневая: сложные системы с цепочками вызовов
Базовые понятия: клиент-серверное взаимодействие
Сервер - компьютер (или специальное компьютерное оборудование), выполняющий определенные сервисные функции
Клиент – компьютер отправляющий запросы серверу
ответ
запрос
Базовые понятия: клиент-серверное ПО
Примеры серверного ПО (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. Клиентское ПО – ПО взаимодействующее с пользователем, отправляющее
запросы на сервер и принимающее ответы от него
Базовые понятия: Протоколы
Сетевой протокол — набор правил и действий, позволяющий осуществлять обмен данными между включёнными в сеть устройствами.
TCP/IP –транспортно-сетевой,
HTTP, FTP, SMTP - прикладной
7-ми уровневая модель ISO OSI
Базовые понятия: API
API (интерфейс программирования приложений) определяет функциональность, которую предоставляет программа/модуль/ библиотека/ сервис
Windows API(WinAPI),Linux
Kernel API, OpenGL, DirectX
Детали:
1. API предоставляет набор «рычагов
управления» программой/модулем…
2. Понятия API и протокола близки по смыслу:
и то и другое является абстракцией
функциональности
3. Протокол определяет формат передачи
данных, а API – порядок взаимодействия
Базовые понятия: Программирование
Программирование— процесс записи алгоритма/программы.
Язык программирования – набор правил определяющих способ записи программы
Базовые понятия: Компиляторы и интерпретаторы
Компилятор транслирует программу в машинный код
Интерпретатор непосредственно выполняет написанную программу
Базовые понятия: Компиляторы и интерпретаторы
Компилируемые языки программирования:• Достоинства: скорость работы• Недостатки: необходимость собирать проект
под каждую платформу
C, С++, Delphi, Fortran, Algol, Eiffel, COBOL, Pascal, Visual Basic и др.
Интерпретируемые языки программирования:• Достоинства: кроссплатформеность, гибкость• Недостатки: меньшая производительность
Python, PHP, Javascript, Ruby, Perl и др.
Смешанные (JIT-компиляция) языки программирования:• Сочетают преимущества компилируемых и
интерпретируемых
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 браузер(тонкий клиент) WEB сервер Сервер БД
JavaScript Developer,Front End Developer
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. Используемые протоколы и API6. Используемые фреймворки и(или) CMS7. Используемые БД8. Используемые IDE (среды разработки)9. Какую часть проекта будет писать программист на
конкретной позиции
Ну и, конечно, какие задачи решает проект…
Пример вакансии
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: [email protected]
• Адрес: 191186, Санкт-Петербург, Большая морская ул., д.3 (БЦ "Лидваль"), офис 407.
Контакты:
Лаабе Дмитрий
Генеральный директор и основатель IT-Доминантаemail: [email protected]