Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

962 views

Published on

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

Published in: Software
  • Be the first to comment

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

  1. 1. Профессиональная разработка в суровом enterprise Александр Гранин graninas@gmail.com github.com/graninas
  2. 2. План ● Инструменты разработчика ● Профессиональная разработка ПО ● Рабочее окружение ● Современные технологии
  3. 3. О себе ● “Лаборатория Касперского”, разработчик ● Пишу на С++ более 6 лет ●● Любимый язык - Haskell ● Богатый опыт в разработке, тестировании, использовании инструментов ● ЗабГУ, выпуск ИВТ-04
  4. 4. Инструменты разработчика GitHub mascot Octodex: https://octodex.github.com/
  5. 5. 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
  6. 6. Eclipse
  7. 7. Qt Creator Qt Creator
  8. 8. Visual Studio 2012
  9. 9. Системы контроля версий (Version Control Systems, VCS)
  10. 10. Системы контроля версий: Централизованные VCS https://www.scm-manager.com/2013/04/the-scm-from-the-scm-manager/
  11. 11. Системы контроля версий Распределенные VCS https://www.scm-manager.com/2013/04/the-scm-from-the-scm-manager/
  12. 12. Системы контроля версий (VCS) Централизованные: ● Perforce (коммерческая) ● MS TFS (коммерческая) ● Subversion (SVN) sourceforge.net Распределенные: ● git github.com ● Mercurial bitbucket.org ● Bazaar launchpad.net ● darcs
  13. 13. Tortoise clients ● TortoiseSVN Subversion ● TortoiseGIT git ● TortoiseHg Mercurial
  14. 14. TortoiseSVN
  15. 15. TortoiseSVN (diff tool)
  16. 16. Профессиональная разработка ПО GitHub mascot Octodex: https://octodex.github.com/
  17. 17. Этапы разработки (Rational Unified Process - RUP)
  18. 18. Архитектура и дизайн ПО http://habrahabr.ru/post/211871/
  19. 19. Архитектура и дизайн ПО Архитектура высокоуровневый дизайн подсистем и связей между ними дизайн внутреннего устройства конкретных подсистем Дизайн Имплементация программная реализация
  20. 20. Борьба со сложностью Принципы имплементации Keep it Simple, Stupid! (KISS) Модульность и абстракция Don’t Repeat Yourself (DRY) You Aren’t Gonna Need It! (YAGNI) Техники разработки Domain Driven Design Test Driven Development Behavior Driven Development Шаблоны проектирования Принципы SOLID, GRASP Функциональное программирование Domain Specific Languages (DSL) Inversion of Control (IoC)
  21. 21. 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
  22. 22. High Cohesion, Low Coupling http://www.sorentryde.dk/2013/01/08/low-coupling-and-high-cohesion/#.VDIsoq0-N0w
  23. 23. Inversion of Control http://rarcher.azurewebsites.net/Post/PostContent/15
  24. 24. Языки программирования SO questions GitHub projects
  25. 25. Паттерны проектирования ● Типовые решения распространенных проблем проектирования ● Объектно-ориентированный подход ● UML (Паттерн “Стратегия”)
  26. 26. Паттерны проектирования ● “Design Patterns” aka GoF (Gang of Four) ● “Patterns of Enterprise Application Architecture” by Martin Fowler
  27. 27. Алгоритмы ● “The Art of Computer Programming” ● “Compilers: Principles, Techniques and Tools” aka “Dragon Book” ● “Structure and Interpretation of Computer Programs”
  28. 28. Совершенный код ● “Code Complete” ● “Refactoring: Improving the Design of Existing Code”
  29. 29. Тестирование и разработка http://watirmelon.com/2011/06/ Сопровождают имплементацию Разрабатываются SDET’ами Manual GUI Tests Проводятся “специально обученными девочками”
  30. 30. Software Developer Engineer in Test (SDET) ● Разработка автоматических тестов ● Разработка тестовой инфраструктуры ● Контроль и управление багами http://www.assistanz.com/testing-quality-assurance
  31. 31. Рабочее окружение программиста GitHub mascot Octodex: https://octodex.github.com/
  32. 32. Системы отслеживания ошибок и управления проектами ● Bugzilla ● Redmine ● Trac ● Launchpad ● Jira ● … См. дальше: Continuous Integration ↬
  33. 33. Redmine (tasks)
  34. 34. http://www.techsophy.com/ci.html Continuous Integration
  35. 35. Системы непрерывной интеграции (Continuous Integration) Коммерческие: ● MS Team Foundation Server ● JetBrains TeamCity Свободно распространяемые: ● Hudson, Jenkins ● Hudson ● Travis CI
  36. 36. Jenkins CI
  37. 37. Jenkins CI
  38. 38. MS TFS: Work Items View
  39. 39. Регулярные выражения В жизни: ● Поиск по файлам данных и коду ● Редактирование данных, рефакторинг В программах: ● Извлечение структурированной информации из произвольного текста ● Валидация ● Парсинг
  40. 40. Полезные инструменты grep sed vim emacs
  41. 41. Современные технологии разработки GitHub mascot Octodex: https://octodex.github.com/
  42. 42. Предметно-ориентированные языки (Domain-Specific Languages, DSLs) DSL - специализированный язык, предназначенный для решения конкретной задачи из предметной области. Реализованный DSL - половина решения задачи.
  43. 43. Предметно-ориентированные языки
  44. 44. Предметно-ориентированные языки 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/
  45. 45. Object-Oriented Analysis and Design (Rational Unified Process - RUP)
  46. 46. Object-Oriented Analysis and Design Analysis Domain Model Class Diagrams, Object Diagrams, Sequence Diagrams, Package Diagrams etc. анализ предметной области, сценариев использования (в виде Use Case Model) модель предметной области: сущности и связи (в виде Class Diagram) Архитектура Дизайн
  47. 47. Domain Model (example) XACML - eXtensible Access Control Markup Language. Policy Model http://www.cisco.com/en/US/docs/security/epm/epm33/Guide/Concept_Guide/CH1.html
  48. 48. Object Relational Mapping (ORM) Domain Model Data Model (DB) ORM Mappings http://martinfowler.com/eaaCatalog/concreteTableInheritance.html
  49. 49. Object Relational Mapping ● MS Entity Framework (.NET) ● Hibernate (Java), NHibernate (.NET) ● Zend Framework (PHP) ● Doctrine (PHP) ● Django (Python) ● ... http://www.visual-paradigm.com/VPGallery/orm/Overview.html
  50. 50. Functional Reactive Programming (FRP) Александр Соловьев, доклад “Functional Reactive Programming” (aka “Самый лучший доклад”)
  51. 51. Спасибо за внимание! Вопросы? Александр Гранин graninas@gmail.com github.com/graninas

×