Проекты программных приложений - PullRequest
0 голосов
/ 08 октября 2009

Желательно ли в случае разработки программного обеспечения строгий OOD / Дизайн на основе интерфейса / Аспектно-ориентированный дизайн?

Или желательно смешать их все для простоты кодирования?

Являются ли все успешные и легко обслуживаемые программные приложения строго объектно-ориентированными, или строго ориентированными на интерфейс, или строго ориентированными на аспект, или их комбинацией?

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

Если вы считаете, что основанное на интерфейсе программирование и AOP - это всего лишь расширение ООП, то подумайте так, как были разработаны программы до появления концепций интерфейсного программирования и АОП?

А также АОП может понадобиться контейнер АОП.

Ответы [ 3 ]

1 голос
/ 08 октября 2009

Ваш вопрос путает цели программного проекта со средствами их достижения. Такие вещи / модные слова, как Дизайн на основе интерфейса или AOP могут быть очень полезными (не поймите меня неправильно: они мне действительно нравятся), но они также могут привести к катастрофическим результатам, если они используются там, где они не подходят.

Если у вас есть гвоздь, используйте молоток. Если у вас есть винт, то используйте отвертку. Если их нет, то ни один из двух инструментов не будет полезен ...

1 голос
/ 08 октября 2009

Являются ли все успешные и легко обслуживаемые программные приложения строго объектно-ориентированными, или строго ориентированными на интерфейс, или строго ориентированными на аспект, или их комбинацией?

Некоторые приложения успешны, некоторые легко обслуживаются. Один из примеров, который я могу вспомнить, - это Artisan Studio, инструмент SysML, который был первым, кто внедрил его, но когда я пошел на собеседование, мне показалось, что он очень плохо обслуживается. Его дизайн - это стиль компонента OO C ++ - распределенная база данных OO, использующая COM для добавления функций в качестве компонентов; но они признались, что у них было много проблем при работе с большой устаревшей кодовой базой. Я подозреваю, что теперь гораздо более дешевый и гибкий UML-инструмент Enterprise Architect имеет SysML-предложение, которое приведет к снижению успеха. Я не разговаривал с дизайнерами EA, но EA построен на основе базы данных SQL, и API автоматизации, очевидно, не является чисто OO-решением - например, вы должны обновить разные части одного и того же свойства UML объект, использующий разные API (пакет UML представлен как объектом Package, так и элементом Element, и если вы изменяете имя пакета в одном API, вы должны помнить, чтобы изменить его в другом, иначе у него будет другое имя в дереве пакетов и на любой диаграмме). Учитывая скорость, с которой функции добавляются в EA, и общее качество приложения, я подозреваю, что оно будет более гибким, чем принятая Artisan модель «лучше ОО», но не может с легкостью провести рефакторинг.

Я не нахожу сильной связи между ремонтопригодностью и успехом или строгой OO и успехом. Делать то, что нужно, и возможность рефакторинга программного обеспечения, вероятно, важнее для успеха. Это и хороший отдел маркетинга.

(рефакторинг чего-то противоположен поддержанию чего-либо - при рефакторинге вы меняете архитектуру, но набор функций статичен; обслуживание включает добавление новых функций или удаление ошибок из существующей архитектуры)

0 голосов
/ 08 октября 2009

Микс, а может, и вовсе нет.

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

Проекты на функциональных языках не соответствуют ни одному из перечисленных выше.

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

...