(Notes) Notes (2001 год)

UML

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

Это сейчас CASE-средства в связи с их необычайной важностью уже прочно вошли даже в институтские программы, а в то время никаких графических средств проектирования не существовало. Единственными инструментами графического описания программ были деревья (ох, не раз приходилось мне писать сортировки), конечные автоматы (применялись для проектирования компиляторов, я лично пользовался ими для фиксации состояний программы и таблицы переходов, когда было много глобальных переменных). Но в процедурно-ориентированном программировании в небольших проектах даже потребности в более продвинутых графических средствах не было (для описания линейного поведения программы вполне хватало блок-схемы алгоритма). А вот в обьектно-ориентированном программировании - где нет начала и конца - лишь от движения мышки на одном компьютере где-то совсем на другой машине неожиданно и незапланированно выпрыгивают какие-то события, меняющие состояние программы - вот тут нужны гораздо более изощренные средства даже для небольших проектов. А поскольку обьектно-ориентированное программирование уже захватило весь этот мир, то со временем средства формализации и графического проектирования программ стали интересовать меня все больше.

В общем, несмотря на то, что ушел с этой работы, я все равно не переставал интересоваться - а как же все-таки облегчить процесс координации труда программистов. Сначала я узнал о методике MSF(Microsoft Solution Framework) - купил книжку по этой методике и прочитал ее. Но чесно говоря, она меня не впечатлила - пережевывается жвачка про трехуровневую архитектуру, фазы проектирования: анализ, планирование, тестирование и т.д. - все это и так давно известно... Позже я узнал и о других методиках проектирования программ: XP (eXtreme Programing), CDM Advantage(Oracle) , ASD (Adaptive Software Development) и, наконец, RUP (Rational Rose Process). Последняя мне показалась наиболее интересной.


Но, до самого последнего времени, само по себе программирование под .NET никак не завязывалось в моей голове в один узел с UML:


Но вот случилось чудо - просматривая новые книги, выпущенные издательством Sybex, я обратил внимание на вот эту книгу. Просмотрев оглавление и примеры, я понял, что теперь все идеи UML работают не только в Rational Rose на J2EE, но и на майкрософтовской платформе. Это произошло после того, как компанию Rational купило IBM. Теперь, оказывается у IBM теперь есть не только DOMINO, J2EE-студия и DB2, но и вся линейка продуктов от Rational. Из которых самая (на мой взгляд замечательная штука - Rational XDE Developer для Visual Studio NET. И эта самая штука настолько замечательно интрегрирована в .NET студию, что вручную писать что-либо даже не хочеться! Естественно, есть и Reverse Engineering и автоматическая синхронизация программного кода и диаграмм и генерация программ по диаграммам и шаблоны в XML-файлах. Все отлично задокументировано и работает совершенно без глюков. Как приятно, что в NET студии теперь уже не нужно как раньше возиться с пикселами и байтами, а так, только рисовать квадратики - а пикселы и байты создадутся сами. Понравилось мне все, даже то, как сложные диаграммы, с событиями, переходами и пр. экспортируются в XML-формат. Кстати, минимальный размер памяти для запуска Rational XDE - 512M. Ну, еще чтобы работать с ним, вам придется решить вопрос с кодом активации. Никаких креков не надо, для активации нужен простой текстовый файл с расширением UPD, который вы легко найдете в Инете.


Тем, кто хочет сразу освоить XDE - я рекомендую посмотреть:


Кроме того, здесь я выкладываю полное описание собственно языка UML:


Очевидно, что очень многие вещи под .NET (начиная просто от HTML-форм до готовых WEB-приложений типа электронного магазина) если, конечно, полностью впитать всю эту технологию, теперь можно делать, наверное, еще раз в десять быстрее - я вижу в этом пик развития программной индустрии. Тем более - не какой-то там малораспространенный WebSphere Studio, а NET-Бейсик от Microsoft! А ведь сама по себе NET-студия (даже без этой приблуды) - просто реактивный лайнер по сравнению с шестой студией. Пока там в шестой студии переберешь на сервере переменые, чтобы узнать, что там взбрело в голову нажать юзеру на клиенте - может целый день уйти на обработку переменных ASP-состояния одной приличной страницы. А в NET-студии юзер только коснулся коснулся мышкой на клиентском компе, а у тебя на сервере - уже прыгает целая куча событий. Ну а если этим самым Rational XDE еще дальше ускорять разработку и документирование программ в NET-студии ...



Comments ( )
<00>  <01>  <02>  <03>  <04>  <05>  <06>  <07>  <08>  <09>  <10>  <11>  <12>  <13>  <14>  <15>  <16>  <17>  <18>  <19>  <20>  <21>  <22>  <23
Link to this page: //www.vb-net.com/dotnet/uml.htm
<SITEMAP>  <MVC>  <ASP>  <NET>  <DATA>  <KIOSK>  <FLEX>  <SQL>  <NOTES>  <LINUX>  <MONO>  <FREEWARE>  <DOCS>  <ENG>  <CHAT ME>  <ABOUT ME>  < THANKS ME>