Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Техзадание, DDD и предметная область.
twin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Оглавление.

Итак. начнем. С чего все начинается? С заказа. А заказ, это технческое задание. ТЗ. Но хорошо, когда оно есть. Чаще нет, и сделать его заказчику не представляется возможным. Потому что он "хочет чего то, не знает кого".

Однако работать без технического задания, это сущий ад. А посему, прежде чем приступить, прежде чем даже включить компьютер, нужно выпотрошить заказчика на изнанку. Вынуть из него кишки. Чтобы ему самому плохо стало от общения с вами. Это касается не только фриланса, на постоянном месте работы все тоже самое.

Хорошо, если есть менеджер, это его работа. Однако знать такую работу необходимо и программисту. В конце концов тот же менеджер при общении с вами плавно превращается в заказчика.

Так вот. Для того, чтобы вынуть душу из заказчика, придумали DDD (Domain-Driven Design).

Для несведущих это может показаться чем то запредельным. Хотя все, как обычно, гораздо проще, если разогнать туман пафосных терминов и определений.

По сути это язык общения заказчика с исполнителем.

Обычно заказчик понятия не имеет, как и из чего строятся программы, исполнитель ни сном не духом о том, что в итоге представляет себе заказчик. В итоге получается разговор слепого с глухим.

Допустим есть заказ на сайт логистической компании. Заказчик говорит - хочу, чтобы была возможность заказать отправку груза с расчетом оптимального маршрута, выбор способа доставки и система отслеживания.

Реакция исполнителя: user posted image

Он говорит: ну... тут нужно применить концепцию MVC, задействовать базу данных, можно Geo IP прикрутить, а вообще нужен хороший фреймворк.

Реакция заказчика: user posted image

Так вот, чтобы такого небыло, нужно найти общий язык. Это просто.

Не нужно стесняться показаться дилетантом в специфике заказчика. И не нужно стараться показать свою крутость в программировании. Нужно разговаривать с ним, как с ребенком. И заставить его делать тоже самое с вами. Чем проще, на пальцах, будет обшение, тем лучше результат.

Я много раз был в Европе, там с иностранцами все общаются на "международном английском". Это такой суррогат из неправильных английских слов с примесью местных диалектов. Так вот, парадокс. Чем лучше собеседник знает язык, тем сложнее с ним общаться. Проще всего разговаривать с детьми.

Есть такая тактика, пять "почему". Дети как раз любят эту штуку. Только они могут задать их не пять, а двадцать пять. С заказчиком нужно делать тоже самое.

Берем лист бумаги. Рисуем на нем квадратик. И говорим - это сайт. Чего здесь не хватает? Калькулятора расчетов. Рисуем второй квадратик, пишем на нем сверху - "калькулятор расчетов стоимости". Опять показываем - чего нехватает в этом калькуляторе? Окошка вывода результата и панели для ввода данных. Рисуем еще два квадрата, пишем "результат" и "ввод данных". Тут? Тут вроде бы всё. OK. Как должен выглядеть результат и какие нужно ввести данные?

И так далее, пока не исчезнут все вопросы.

И вот когда они исчезнут, на этом листочке будет ясна не только структура морды, но и многие подводные камни специфики сайта, о которых иногда и заказчик не подозревает.

Это называется "предметная область", которая теперь разрисована в понятную обоим блок-схему.

Это один из самых простых способов реализации DDD. Не нужно ничего мудрить перед заказчиком, особенно с терминологией. И Боже вас упаси рисовать ему UML. Чем проще, тем лучше. С UML разберемся чуть позже.

Присоединённое изображение
Присоединённое изображение


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Ну а дальше все по модному - архитектура. Вооружаемся UML-редактором и вперед.

А раз это архитектура, то первым делом на ум приходит красивое, большое и светлое, современное здание. Которое, разумеется, невозможно построить без проекта. Вдруг фундамент не выдержит или получатся слишком запутанные коридоры.

Вот таким настоящие программисты и представляют себе веб-приложение. Цельным, величественным, дух от крутизны захватывает.

Изучить UML несложно, в сети полно учебников. Сложнее представить полную картину и разложить её на классы. Это великий труд. А когда будет готов проект, останется лишь наполнить его содержимым. И результатом может стать такое:

Присоединённое изображение
Присоединённое изображение


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Нарисовали UML? А теперь сотрите нафиг. И забудьте, как страшный сон.

Потому что ничего не выйдет. Как только дело дойдет до реализации, с почти стопроцентной вероятностью, прибежит запыхавшийся заказчик и скажет, что передумал, и ему нужно 8 лифтов, а не 5. И что окна он хочет теперь круглые, и что пару этажей бы добавить, и...

И будет бегать к вам постоянно. Крупно повезет, если первоначальное ТЗ будет перековеркано хотя бы процентов на 10. Но он не уймется, не надейтесь. В итоге из первоначально красивого билдинга получится подпертая костылями халупа. Или наоборот, элегантный проект разнесет, как беременную свинью.

А если вы начнете перерабатывать проект под новые хотелки, рискуете никогда не добраться до реализации. Так и будете перерисовывать квадратики и ромбики с утра до поздней ночи.

Так что оставим UML, да и вообще все предварительное проектирование несчастным прикладникам (у них без этого реально трудно), и фанатикам схемы фреймворка (они сами виноваты).

Нам повезло больше, мы строим веб-приложение. А веб-программы, это не десктоп. Здесь совсем другой принцип. Любой сайт состоит из множества отдельных страниц. Каждая страница формируется конкретным функционалом. Причем не нужен постоянный доступ к разным частям программы и не нужны процессы в оперативке. PHP работает доли секунды, потом засыпает мирным сном. Фактически, каждая страница, это отдельная программка.

Но совсем без проекта нельзя. Иначе все зарастет костылями и лапшой. Так и как же быть?

А просто нужно немного отойти от вбитых в голову стереотипов. Сайт, это вовсе не небоскреб. И даже не панельная хрущевка. Site с английского переводится, как "участок". Так что можно представить его не в высь, а в ширину, как красивый котеджный поселок. И проектировать по этому принципу. Организовать небольшую инфраструктуру (дороги, электричество, воопровод и пр), и строить котеджи по отдельности.

Тогда заказчик может сколь угодно капризничать, отдельные домики можно легко менять.

Это проектирование уже называется "эволюционным", когда оно, и разработка приложения идут фактически параллельно. Тогда достаточно первоначальной блок-схемы DDD.

Присоединённое изображение
Присоединённое изображение


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2102
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 1 день
Карма: 70




Цитата
Изобретат правила

Цитата
(роутер, или скорее коммуникатор)

Почему коммуникатор? коммуникатор это типа мобилы скрещенной с ноутом.
Может коммутатор?
Но тогда правильней написать свитч, рутер английское слово и свитч тоже.
роутер == маршрутизатор по нашему
свитч == коммутатор по нашему


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Цитата (Arh @ 2.09.2016 - 12:04)
Может коммутатор?

Да! Разумеется. Именно его я и имел ввиду, как то задумался пока писал и получилась такая фигня smile.gif

Цитата (Arh @ 2.09.2016 - 12:04)
Но тогда правильней написать свитч, рутер английское слово и свитч тоже.
Свитч, это скорее переключатель. К тому же есть такая PHP конструкция, и может получиться неоднозначность.

А коммутатор и так английское слово. smile.gif


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса