Профессиональная разработка в суровом Enterprise

52
Профессиональная разработка в суровом enterprise Александр Гранин [email protected] github.com/graninas

description

Лекция была прочитана 08.10.2014 в ЗабГУ для студентов 3-6 курса.

Transcript of Профессиональная разработка в суровом Enterprise

Page 1: Профессиональная разработка в суровом Enterprise

Профессиональная разработка

в суровом enterprise

Александр Гранин[email protected]/graninas

Page 2: Профессиональная разработка в суровом Enterprise

План

● Инструменты разработчика

● Профессиональная разработка ПО

● Рабочее окружение

● Современные технологии

Page 3: Профессиональная разработка в суровом Enterprise

● “Лаборатория Касперского”, разработчик

● Пишу на С++ более 6 лет●● Любимый язык - Haskell ● Богатый опыт в разработке, тестировании,

использовании инструментов

● ЗабГУ, выпуск ИВТ-04

О себе

Page 4: Профессиональная разработка в суровом Enterprise

GitH

ub m

asco

t Oct

odex

: http

s://o

ctod

ex.g

ithub

.com

/

Инструменты разработчика

Page 5: Профессиональная разработка в суровом Enterprise

Integrated Development Environment

Коммерческие:● MS Visual Studio (C++, C#, F#, Basic.NET)● IntelliJ IDEA (JVM-based)● Embarcadero RAD Studio (Delphi, C++, PHP)

Свободно распространяемые:● XCode (iOS-based)● Qt Creator (C++, QML)● NetBeans (Java, Python, PHP…)

● Eclipse

Page 6: Профессиональная разработка в суровом Enterprise

Eclipse

Page 7: Профессиональная разработка в суровом Enterprise

Qt Creator

Qt Creator

Page 8: Профессиональная разработка в суровом Enterprise

Visual Studio 2012

Page 9: Профессиональная разработка в суровом Enterprise

Системы контроля версий(Version Control Systems, VCS)

Page 10: Профессиональная разработка в суровом Enterprise

Системы контроля версий:

http

s://w

ww

.scm

-man

ager

.com

/201

3/04

/the-

scm

-from

-the-

scm

-man

ager

/

Централизованные VCS

Page 11: Профессиональная разработка в суровом Enterprise

Системы контроля версийРаспределенные VCS

http

s://w

ww

.scm

-man

ager

.com

/201

3/04

/the-

scm

-from

-the-

scm

-man

ager

/

Page 12: Профессиональная разработка в суровом Enterprise

Централизованные:● Perforce (коммерческая)● MS TFS (коммерческая)● Subversion (SVN) sourceforge.net

Распределенные:● git github.com● Mercurial bitbucket.org● Bazaar launchpad.net● darcs

Системы контроля версий (VCS)

Page 13: Профессиональная разработка в суровом Enterprise

● TortoiseSVN Subversion● TortoiseGIT git● TortoiseHg Mercurial

Tortoise clients

Page 14: Профессиональная разработка в суровом Enterprise

TortoiseSVN

Page 15: Профессиональная разработка в суровом Enterprise

TortoiseSVN (diff tool)

Page 16: Профессиональная разработка в суровом Enterprise

Профессиональная разработка ПО

GitH

ub m

asco

t Oct

odex

: http

s://o

ctod

ex.g

ithub

.com

/

Page 17: Профессиональная разработка в суровом Enterprise

Этапы разработки

(Rational Unified Process - RUP)

Page 18: Профессиональная разработка в суровом Enterprise

Архитектура и дизайн ПО

http

://ha

brah

abr.r

u/po

st/2

1187

1/

Page 19: Профессиональная разработка в суровом Enterprise

Архитектура и дизайн ПО

Архитектуравысокоуровневый дизайн подсистем и связей между ними

дизайн внутреннего устройства конкретных подсистем

Дизайн

Имплементацияпрограммная реализация

Page 20: Профессиональная разработка в суровом Enterprise

Борьба со сложностью

Keep it Simple, Stupid! (KISS)

Модульность и абстракция

Don’t Repeat Yourself (DRY)

Принципы имплементации

You Aren’t Gonna Need It! (YAGNI)

Техники разработки

Test Driven Development

Domain Driven Design

Behavior Driven Development

Принципы SOLID, GRASP

Шаблоны проектирования

Функциональное программирование

Domain Specific Languages (DSL)

Inversion of Control (IoC)

Page 21: Профессиональная разработка в суровом Enterprise

SOLID Principles

S SRP Single Responsibility Principle

O OCP Open / Closed Principle

L LSP Liskov Substitution Principle

I ISP Interface Segregation Principle

D DIP Dependency Inversion Principle

Page 22: Профессиональная разработка в суровом Enterprise

High Cohesion, Low Coupling

http

://w

ww

.sor

entry

de.d

k/20

13/0

1/08

/low

-cou

plin

g-an

d-hi

gh-c

ohes

ion/

#.V

DIs

oq0-

N0w

Page 23: Профессиональная разработка в суровом Enterprise

Inversion of Control

http

://ra

rche

r.azu

rew

ebsi

tes.

net/P

ost/P

ostC

onte

nt/1

5

Page 24: Профессиональная разработка в суровом Enterprise

Языки программированияSO

que

stio

ns

GitHub projects

Page 25: Профессиональная разработка в суровом Enterprise

Паттерны проектирования

(Паттерн “Стратегия”)

● Типовые решения распространенных проблем проектирования

● Объектно-ориентированный подход● UML

Page 26: Профессиональная разработка в суровом Enterprise

Паттерны проектирования

● “Design Patterns” aka GoF (Gang of Four)● “Patterns of Enterprise Application

Architecture” by Martin Fowler

Page 27: Профессиональная разработка в суровом Enterprise

Алгоритмы

● “The Art of Computer Programming”● “Compilers: Principles, Techniques and

Tools” aka “Dragon Book”● “Structure and Interpretation of Computer

Programs”

Page 28: Профессиональная разработка в суровом Enterprise

Совершенный код

● “Code Complete”

● “Refactoring: Improving the Design of Existing Code”

Page 29: Профессиональная разработка в суровом Enterprise

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

http

://w

atirm

elon

.com

/201

1/06

/

Соп

рово

жда

ют

импл

емен

таци

ю

Разр

абат

ыва

ютс

я SD

ET’а

ми

Manual GUI Tests

Проводятся “специально обученнымидевочками”

Page 30: Профессиональная разработка в суровом Enterprise

Software Developer Engineer in Test (SDET)

● Разработка автоматических тестов● Разработка тестовой инфраструктуры● Контроль и управление багами

http://www.assistanz.com/testing-quality-assurance

Page 31: Профессиональная разработка в суровом Enterprise

Рабочее окружение программиста

GitH

ub m

asco

t Oct

odex

: http

s://o

ctod

ex.g

ithub

.com

/

Page 32: Профессиональная разработка в суровом Enterprise

Системы отслеживания ошибоки управления проектами

● Bugzilla● Redmine● Trac● Launchpad● Jira● …

↬См. дальше: Continuous Integration

Page 33: Профессиональная разработка в суровом Enterprise

Redmine (tasks)

Page 34: Профессиональная разработка в суровом Enterprise

http://www.techsophy.com/ci.html

Continuous Integration

Page 35: Профессиональная разработка в суровом Enterprise

Системы непрерывной интеграции (Continuous Integration)

Коммерческие:● MS Team Foundation Server● JetBrains TeamCity

Свободно распространяемые:● Hudson, Jenkins● Hudson● Travis CI

Page 36: Профессиональная разработка в суровом Enterprise

Jenkins CI

Page 37: Профессиональная разработка в суровом Enterprise

Jenkins CI

Page 38: Профессиональная разработка в суровом Enterprise

MS TFS: Work Items View

Page 39: Профессиональная разработка в суровом Enterprise
Page 40: Профессиональная разработка в суровом Enterprise

Регулярные выражения

В жизни:● Поиск по файлам данных и коду● Редактирование данных, рефакторинг

В программах:● Извлечение структурированной

информации из произвольного текста● Валидация● Парсинг

Page 41: Профессиональная разработка в суровом Enterprise

Полезные инструменты

grep sedvim emacs

Page 42: Профессиональная разработка в суровом Enterprise

Современные технологии разработки

GitH

ub m

asco

t Oct

odex

: http

s://o

ctod

ex.g

ithub

.com

/

Page 43: Профессиональная разработка в суровом Enterprise

Предметно-ориентированные языки(Domain-Specific Languages, DSLs)

DSL - специализированный язык, предназначенный для решения конкретной задачи из предметной области.

Реализованный DSL - половина решения задачи.

Page 44: Профессиональная разработка в суровом Enterprise

Предметно-ориентированные языки

Page 45: Профессиональная разработка в суровом Enterprise

Предметно-ориентированные языки

TFilteringScheme scheme(0);

scheme[0] << consonants << frm_Excit;scheme[1] << notletters << frm_Skip << consonants << frm_Excit << notconsonants << frm_Reset << EOT << frm_EndProc;

http://habrahabr.ru/post/114186/

Page 46: Профессиональная разработка в суровом Enterprise

Object-Oriented Analysis and Design

(Rational Unified Process - RUP)

Page 47: Профессиональная разработка в суровом Enterprise

Object-Oriented Analysis and Design

Analysis

Domain Model

Class Diagrams,Object Diagrams,Sequence Diagrams,Package Diagrams etc.

анализ предметной области, сценариев использования(в виде Use Case Model)

модель предметной области: сущности и связи(в виде Class Diagram)

Архитектура

Дизайн

Page 48: Профессиональная разработка в суровом Enterprise

Domain Model (example)

XACML - eXtensible Access Control Markup Language.Policy Model

http

://w

ww

.cis

co.c

om/e

n/U

S/d

ocs/

secu

rity/

epm

/epm

33/G

uide

/Con

cept

_Gui

de/C

H1.

htm

l

Page 49: Профессиональная разработка в суровом Enterprise

Object Relational Mapping (ORM)

Domain Model

Data Model (DB)

ORM

Mappings

http

://m

artin

fow

ler.c

om/e

aaC

atal

og/c

oncr

eteT

able

Inhe

ritan

ce.h

tml

Page 50: Профессиональная разработка в суровом Enterprise

Object Relational Mapping● MS Entity Framework (.NET)

● Hibernate (Java), NHibernate (.NET)

● Zend Framework (PHP)

● Doctrine (PHP)

● Django (Python)

● ...

http

://w

ww

.vis

ual-p

arad

igm

.com

/VP

Gal

lery

/orm

/Ove

rvie

w.h

tml

Page 51: Профессиональная разработка в суровом Enterprise

Functional Reactive Programming (FRP)

Александр Соловьев,доклад “Functional Reactive Programming”(aka “Самый лучший доклад”)

Page 52: Профессиональная разработка в суровом Enterprise

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

Александр Гранин[email protected]

github.com/graninas

Вопросы?