Профессиональная разработка в суровом Enterprise
-
Upload
alexander-granin -
Category
Software
-
view
331 -
download
10
description
Transcript of Профессиональная разработка в суровом Enterprise
План
● Инструменты разработчика
● Профессиональная разработка ПО
● Рабочее окружение
● Современные технологии
● “Лаборатория Касперского”, разработчик
● Пишу на С++ более 6 лет●● Любимый язык - Haskell ● Богатый опыт в разработке, тестировании,
использовании инструментов
● ЗабГУ, выпуск ИВТ-04
О себе
GitH
ub m
asco
t Oct
odex
: http
s://o
ctod
ex.g
ithub
.com
/
Инструменты разработчика
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
Eclipse
Qt Creator
Qt Creator
Visual Studio 2012
Системы контроля версий(Version Control Systems, VCS)
Системы контроля версий:
http
s://w
ww
.scm
-man
ager
.com
/201
3/04
/the-
scm
-from
-the-
scm
-man
ager
/
Централизованные VCS
Системы контроля версийРаспределенные VCS
http
s://w
ww
.scm
-man
ager
.com
/201
3/04
/the-
scm
-from
-the-
scm
-man
ager
/
Централизованные:● Perforce (коммерческая)● MS TFS (коммерческая)● Subversion (SVN) sourceforge.net
Распределенные:● git github.com● Mercurial bitbucket.org● Bazaar launchpad.net● darcs
Системы контроля версий (VCS)
● TortoiseSVN Subversion● TortoiseGIT git● TortoiseHg Mercurial
Tortoise clients
TortoiseSVN
TortoiseSVN (diff tool)
Профессиональная разработка ПО
GitH
ub m
asco
t Oct
odex
: http
s://o
ctod
ex.g
ithub
.com
/
Этапы разработки
(Rational Unified Process - RUP)
Архитектура и дизайн ПО
http
://ha
brah
abr.r
u/po
st/2
1187
1/
Архитектура и дизайн ПО
Архитектуравысокоуровневый дизайн подсистем и связей между ними
дизайн внутреннего устройства конкретных подсистем
Дизайн
Имплементацияпрограммная реализация
Борьба со сложностью
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)
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
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
Inversion of Control
http
://ra
rche
r.azu
rew
ebsi
tes.
net/P
ost/P
ostC
onte
nt/1
5
Языки программированияSO
que
stio
ns
GitHub projects
Паттерны проектирования
(Паттерн “Стратегия”)
● Типовые решения распространенных проблем проектирования
● Объектно-ориентированный подход● UML
Паттерны проектирования
● “Design Patterns” aka GoF (Gang of Four)● “Patterns of Enterprise Application
Architecture” by Martin Fowler
Алгоритмы
● “The Art of Computer Programming”● “Compilers: Principles, Techniques and
Tools” aka “Dragon Book”● “Structure and Interpretation of Computer
Programs”
Совершенный код
● “Code Complete”
● “Refactoring: Improving the Design of Existing Code”
Тестирование и разработка
http
://w
atirm
elon
.com
/201
1/06
/
Соп
рово
жда
ют
импл
емен
таци
ю
Разр
абат
ыва
ютс
я SD
ET’а
ми
Manual GUI Tests
Проводятся “специально обученнымидевочками”
Software Developer Engineer in Test (SDET)
● Разработка автоматических тестов● Разработка тестовой инфраструктуры● Контроль и управление багами
http://www.assistanz.com/testing-quality-assurance
Рабочее окружение программиста
GitH
ub m
asco
t Oct
odex
: http
s://o
ctod
ex.g
ithub
.com
/
Системы отслеживания ошибоки управления проектами
● Bugzilla● Redmine● Trac● Launchpad● Jira● …
↬См. дальше: Continuous Integration
Redmine (tasks)
http://www.techsophy.com/ci.html
Continuous Integration
Системы непрерывной интеграции (Continuous Integration)
Коммерческие:● MS Team Foundation Server● JetBrains TeamCity
Свободно распространяемые:● Hudson, Jenkins● Hudson● Travis CI
Jenkins CI
Jenkins CI
MS TFS: Work Items View
Регулярные выражения
В жизни:● Поиск по файлам данных и коду● Редактирование данных, рефакторинг
В программах:● Извлечение структурированной
информации из произвольного текста● Валидация● Парсинг
Полезные инструменты
grep sedvim emacs
Современные технологии разработки
GitH
ub m
asco
t Oct
odex
: http
s://o
ctod
ex.g
ithub
.com
/
Предметно-ориентированные языки(Domain-Specific Languages, DSLs)
DSL - специализированный язык, предназначенный для решения конкретной задачи из предметной области.
Реализованный DSL - половина решения задачи.
Предметно-ориентированные языки
Предметно-ориентированные языки
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/
Object-Oriented Analysis and Design
(Rational Unified Process - RUP)
Object-Oriented Analysis and Design
Analysis
Domain Model
Class Diagrams,Object Diagrams,Sequence Diagrams,Package Diagrams etc.
анализ предметной области, сценариев использования(в виде Use Case Model)
модель предметной области: сущности и связи(в виде Class Diagram)
Архитектура
Дизайн
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
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
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
Functional Reactive Programming (FRP)
Александр Соловьев,доклад “Functional Reactive Programming”(aka “Самый лучший доклад”)