ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
Статья:Правильный подход к проектированию ПО |

17.12.2009, 13:05
|
|
Участник форума
Регистрация: 29.03.2005
Сообщений: 138
Провел на форуме: 812087
Репутация:
129
|
|
Статья:Правильный подход к проектированию ПО
Правильный подход к проектированию ПО(часть 1)
Введение
При разработке программного обеспечения мы не задумываемся о дальнейшей его судьбе. А что если:
• Придется масштабировать приложение
• Переносить его с Web-приложения на Windows Forms
Придется его полностью переписывать, заново строить архитектуру приложения, все это лишние трудозатраты. А ведь можно было просто изначально подумать над этим?
Вот отсюда и приходит тема этой статьи.
Начинаем проектировать
Для примера возьмем самую простую функцию в программе «Регистрация пользователей»
Она будет разбита на 4 проекта: Domain, Infrastructure,View и ViewModel
Поговорим о каждом из них в отдельности:
• Domain – В этом проекте хранится вся бизнес логика программы (Entity and Services)
• Infrastructure – В этом проекте хранятся все классы интерфейсов
• View – В этом проекте хранится тот вид отображения проекта который вы захотите (Windows Forms или Web Application)
• ViewModel – В этом проекте хранятся наши вспомогательные классы для связи Domain и View
Стоит оговорить следующие зависимости(Reference):
• Domain видит Infrastructure
• ViewModel видит Domain
• View видит ViewModel, Infrastructure
В Domain существуют две папки Entity и Service
Теперь можно писать приложения все сущности складываются в Entity, все необходимые операции с ними в Service.
Во ViewModel складываются классы-прослойки, которые получают на вход данные, передают их на обработку сервисам, сервисы возвращают какой-то результат во ViewModel, а она возвращает View что сервис отработан успешно или нет и View выводит только результатирующие сообщение.
Вывод
Таким подходом мы смогли обеспечить легкую масштабируемость приложения, легкое внедрение новых сервисов для вашего приложения и безболезненный переход от Web Application на Windows Forms и обратно.
От автора
Это моя первая статья, если эта тема интересна, могу продолжить развития цикла статей, с подключением репозиториев при разработке,O/R NHibernate, и примерами подкрепленными кодом.
Пример ориентирован на C# и ASP.NET
P.S. Рад буду слышать любую критику и пожелания. Посмотрел вроде такой статьи нет.
|
|
|

17.12.2009, 13:45
|
|
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
Провел на форуме: 3578578
Репутация:
275
|
|
Слишком мало. Основная идея - четко разделять уровни приложения.
Переносить его с Web-приложения на Windows Forms
Может реально потребоваться такое? Есть примеры?
Она будет разбита на 4 проекта
именно проекты? просто уровни могут быть разделены четко и в одном проекте. Если все делать в разных проектах, то нужно тогда настраивать references между проектами, что, мне кажется, вызывает просто ненужные сложности.
Для примера возьмем самую простую функцию в программе «Регистрация пользователей»
Больше в статье не увидел ни одного обращения к этой "программе".
Стоит оговорить следующие зависимости(Reference):
Лучше показывать на диаграммах. http://yuml.me/
Я считаю, тебе самому нужно почитать больше литературы на тему проектирования. А вообще, тема интересная.
|
|
|

17.12.2009, 13:53
|
|
Участник форума
Регистрация: 29.03.2005
Сообщений: 138
Провел на форуме: 812087
Репутация:
129
|
|
Сообщение от Forcer
Может реально потребоваться такое? Есть примеры?
WebMoney использование Windows приложения и Web-интерфейса
Сообщение от Forcer
именно проекты? просто уровни могут быть разделены четко и в одном проекте. Если все делать в разных проектах, то нужно тогда настраивать references между проектами, что, мне кажется, вызывает просто ненужные сложности.
В одном проекте это не все так наглядно.
В чем сложность заключается? Добавить его в список?
Сообщение от Forcer
Больше в статье не увидел ни одного обращения к этой "программе".
Сначало хотел пример привести с созданием такого приложения
Спасибо,статья написана просто для примера,вдруг это никого не заинтересует ... исправлюсь в след. раз.
Сообщение от Forcer
Я считаю, тебе самому нужно почитать больше литературы на тему проектирования.
Учиться никогда не поздно,принимаю как хорошую критику. Только в данном моменте, хотелось бы уточнить из-за чего такой вывод был сделал?
Сообщение от Forcer
А вообще, тема интересная.
С этим согласен 100%
|
|
|

17.12.2009, 14:29
|
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме: 2050916
Репутация:
0
|
|
Сообщение от [NiGHT]DarkAngel
Спасибо,статья написана просто для примера,вдруг это никого не заинтересует ... исправлюсь в след. раз.
Ну и зачем писать такие статьи "для примера" ?
Тем кто в этом разбирается - статья просто смешная. Для тех же кто не разбирается - слишком короткая и наивная ("Таким подходом мы смогли обеспечить легкую масштабируемость приложения").
Либо пиши действительно серьезные статьи (расмотрев например реализации MVC/MVP) либо пиши действительно примеры, с реальным кодом, модульностью, коментариями и т.д.
|
|
|

17.12.2009, 14:38
|
|
Участник форума
Регистрация: 29.03.2005
Сообщений: 138
Провел на форуме: 812087
Репутация:
129
|
|
Сообщение от Algol
Ну и зачем писать такие статьи "для примера" ?
Тем кто в этом разбирается - статья просто смешная. Для тех же кто не разбирается - слишком короткая и наивная ("Таким подходом мы смогли обеспечить легкую масштабируемость приложения").
Либо пиши действительно серьезные статьи (расмотрев например реализации MVC/MVP) либо пиши действительно примеры, с реальным кодом, модульностью, коментариями и т.д.
Спасибо за критику, исправлюсь и дополню ее примером и диаграммами классов, Use Case диаграмм
Последний раз редактировалось [NiGHT]DarkAngel; 17.12.2009 в 14:56..
|
|
|

17.12.2009, 14:57
|
|
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме: 10605912
Репутация:
4693
|
|
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..
Мой блог: http://qwazar.ru/.
|
|
|

18.12.2009, 23:27
|
|
Участник форума
Регистрация: 27.11.2008
Сообщений: 161
Провел на форуме: 298300
Репутация:
128
|
|
Очень интересная статья... Может кратость и сестра таланта, но не в этом случае.
Я не по-наслышке связан с архитектурой корпоративных информационных систем (КИС) и могу сказать лишь то, что такие статьи (что-то даже по объему на статью не тянет) лучше "убивать при рождении" или доводить до ХОТЬ КАКОГО-НИБУДЬ вида.
Поговорим о каждом из них в отдельности:
• Domain – В этом проекте хранится вся бизнес логика программы (Entity and Services)
• Infrastructure – В этом проекте хранятся все классы интерфейсов
• View – В этом проекте хранится тот вид отображения проекта который вы захотите (Windows Forms или Web Application)
• ViewModel – В этом проекте хранятся наши вспомогательные классы для связи Domain и View
1. В модель предметной области обычно входят ТОЛЬКО описания классов ПОНЯТИЙ и практически никакой бизнес-логики (например, в серьезных КИС в одних понятиях черт ногу сломит, что приводит к делению оных на отдельные пакеты и подпакеты).
2. Что-то типа мостового пакета Infrastructure.... Что за слово? Откуда оно? Кто здесь? Вы претендуете на роль законодателя мод? Спешу вас разочаровать, вы, по всей видимости, не Гамма, не Влиссидес, не Фаулер, не Бек и, в общем случае, не столп мирового масштаба в ОО-проектировании.
Domain видит Infrastructure
Отэта да... Карандаш знает все о всех бумажках в мире, на которых он может что-то написать....
В общем, можно продолжить и обхаять все до последней буквы в текущем варианте "статьи", но это утомительно. Можно сказать лишь то, что если вы придумали что-то, действительно стоящее, то опишите это как следует - с аргументацией, мотивацией, примерами, областью применения, известными применениями. Хорошим примером подобного оформления является классический фундаментальный труд Э. Гамма и Ко. "Приемы объектно-ориентированного проектирования...". Итого, ИМХО, пока УЖАСНО. Будем ждать продолжения.
|
|
|

19.12.2009, 13:16
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
В институтах преподают целый предмет называемый "технология программирования". ИМХО прочтение курса лекций по нему гораздо полезнее чем прочтение этой статьи 
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|