OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 21:25

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 61 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: Понедельник, 18 Январь, 2010 02:17 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Текст из очень хорошей книги Басса, Клементса, Кацмана "Архитектура программного обеспечения на практике", подтверждающий собственный опыт и то, что на нашем форуме не раз говорилось.

Цитата:
Попытки внедрить повторное использование в программной инженерии предпринимаются уже много лет, и успех этого предприятия пока что под вопросом - ожидания почти всегда оказываются радужнее реальных результатов. Причина неудач отчасти кроется в том, что до последнего времени технология повторного использования распространялась под лозунгом "сконструируй, и всё будет!". Любая библиотека многократного применения состоит из элементов предыдущих проектов; от разработчиков, прежде чем переходить к кодированию новых элементов, требуется ознакомиться с её содержанием. У этой схемы действий слишком много недостатков. Если библиотека невелика, разработчик, однажды не обнаружив нужного элемента, потеряет всякое желание продолжать поиски. Если же она слишком обширна, провести поиск будет труднее. Если искомые элементы невелики, их проще переписать, чем найти в библиотеке и модифицировать. Если они крупные, подробно разобраться в их назначении очень сложно, а вероятность того, что они в точности подойдут для нового приложения, крайне невелика. Происхождение элементов, хранящихся в библиотеках повторного использования, как правило, в лучшем случае неочевидно. Разработчик, таким образом, не может быть полностью уверен в назначении и надёжности элемента, а кроме того, он не знает условий, в которых проводилось его тестирование. В то же време точное соответствие между атрибутами качества, требуемыми в новом приложении, с одной стороны, и реализуемыми элементами библиотеки - с другой, практически никогда не встречается.

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Январь, 2010 09:36 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Ценное замечание. Как-то забывает народ постоянно об этом... :)
В промышленности примерно так и есть. Например, детали от жигулей не приделаешь к мерседесу и наоборот. А вот жигули с жигулями - довольно хорошо стыкуются. И именно по причине стратегии производства автомобилей. Это просто снижает затраты на разработку и выпуск.
Отсюда вывод для ИТ: фирма (завод :) ), занимающаяся разработкой может пойти двумя путями: выпускать собственную продукцию (1С!) и продавать ее; работать по заказам. В первом случае, очевидно, нужна стратегия повторного использования, а во втором - нет. То есть, второй вариант - это всегда создание ПО практически с нуля. Во втором случае могут пригодиться только самые общие конструкции типа стеков или очередей... :) Да и то, структура элементов другая..


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Январь, 2010 11:00 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
АТД (стеки, очереди и т.д.), имхо, лучше не пихать в библиотеку. Они должны быть в голове :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Январь, 2010 12:21 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
На работе "первая версия" программы была написана с использованием, так сказать, стандартных библиотечных "решений". В последние года два я их из критических мест вышибаю заменяя на специализированные именно для этого случая решения. Производительность в среднем увеличилась на порядок, а на некоторых тестах на три порядка.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Январь, 2010 13:08 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Ценность царь-библиотеки в том, что она содержит отлаженные, работающие и признанные сообществом алгоритмы. Использование готовых вещей дико экономит время. Это не радужное ожидание, это суровая реальность.

Если какие-то библиотечные ресурсы не устраивают по каким-то причинам (скорость, память и т.п.), совершенно никто не запрещает переписать под задачу.

Но царь-библиотека должна быть.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Январь, 2010 15:01 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
А меня шокирует дикость происходящего.
После многих десятилетий развития ИТ обнаруживаем такую прелесть: либо мирись с царь-фуфлом, либо делай все сам.

И что все кричат об этом на каждом углу :?:
Да нет, большинство "опытных программистов" об этом даже не подозревает.
К сожалению.

Не может быть, чтобы невозможно было совместить все это: и надежно, и оптимально.
Убежден - возможно. Но всем по барабану, по факту жизни... Как оказывается :(


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Январь, 2010 15:50 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Galkov писал(а):
Не может быть, чтобы невозможно было совместить все это: и надежно, и оптимально
Так не об этом совмещении речь.

Речь о совмещении универсальности (царь-машина) и оптимальности для конкретной задачи.

Можно "универсально, но не оптимально" или можно "оптимально, но не универсально". Так как в каждой конкретной задаче оптимальность своя собственная.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Январь, 2010 16:34 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Ну так и я о том же, хотя может и не очень корректно написал.

Утверждение: ВОЗМОЖНО это теоретически - и "универсально и оптимально"
Не сегодняшними технологиями правда :(
А кто завтрашние делает - не видно как-то. Давно уже ищу ведь. Вот это мне диким и представляется


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Январь, 2010 16:48 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Сергей Губанов писал(а):
Так как в каждой конкретной задаче оптимальность своя собственная.


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

И вот эта вот фраза - "попытки внедрить повторное использование предпринимаются уже много лет" слегка коробит - авторы, видно, смотрят немного не туда, т.к. это самое повторное использование ну просто везде.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Январь, 2010 16:58 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Царь-фуфло -- хороший мем.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Январь, 2010 17:01 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Иван Кузьмицкий писал(а):
Всё равно есть какие-то общие места, которые надо загонять в библиотеки
Хмм...
Да - общие места есть. Но почему это надо загонять именно в "библиотеки" ???
Загонять надо... Надо просто изобрести куда их "загонять", чтобы:
    а) не потерять универсальность
    б) предоставить возможность генерации именно оптимального кода
    в) и все это должно быть надежным программированием.
Делов-то :D

Вот же блин, опять неточно выше написал, надо было:
Утверждение: ВОЗМОЖНО это теоретически - "и универсально, и оптимально, и надежно"


Info21 писал(а):
Царь-фуфло -- хороший мем
Ну блин, а как его назвать, если какой-нибудь MFC пристегивает тебе полтора метра нафиг тебе не нужных кодов.
Именно так, имхо :)
По размеру - Царь, по содержанию - фуфло (я еще не забыл советские "товары в нагрузку", т.е. - фуфло).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Январь, 2010 17:28 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Galkov писал(а):
Да - общие места есть. Но почему это надо загонять именно в "библиотеки" ???
Согласен :) Я употребил слово "библиотека" в расширенном смысле, именно как место хранения повторно используемых вещей, будь это библиотека в обычном смысле или какой-нибудь генератор кода (за которые так цепляются все кларионисты) :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Январь, 2010 12:12 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Galkov писал(а):
ВОЗМОЖНО это теоретически - и "универсально и оптимально"
Не сегодняшними технологиями правда :(
А что такое универсально? И что такое оптимально? Это же не однозначные вещи. Один и тот же алгоритм в одном месте может занимать много места ("лишь бы быстрее работало"), а в другом можно махнуть рукой на скорость ("места не хватает").

Я как-то пытался доказать Алексею Донскому, что возможна полная универсальность : ). Говорил, что если хорошенько подумать над мат. моделью, то можно заставить любой исполнитель выполнить данный алгоритм эффективно. Потом подумал хорошенько и понял, что это невозможно. Корень этой проблемы тот же, что и корень настоящего искуссвтенного интеллекта. Пока не появится настоящий ИИ, о решении этой проблемы можно забыть.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Январь, 2010 13:06 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Galkov писал(а):
Утверждение: ВОЗМОЖНО это теоретически - "и универсально, и оптимально"
Это теоретически невозможно. Вот, например, какой универсальный контейнер объектов не изобрети, а оптимальнее может оказаться просто указатели между объектами, которые делаются в каждом конкретном случае по разному.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Январь, 2010 15:40 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Ну так что ж может быть универсальнее и проще, чем техническая реализация орграфа :) Который есть модель любого несимметричного отношения...

А что выходит у народа с контейнерами... Бррр... После Вашего примера с парсером строк передёргивает аж :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Январь, 2010 17:21 

Зарегистрирован: Среда, 30 Сентябрь, 2009 14:45
Сообщения: 147
Илья Ермаков писал(а):
После Вашего примера с парсером строк передёргивает аж :)

Напрашивается такая модификация учебной IDE:
слева от строк кода широкое поле с вертикально расположенным графиком -
для каждой строки количество команд процессора али занятая память
Тогда писующий интерактивно видит весь порождаемый его фантазией ужас :D


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Январь, 2010 18:37 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Виктор О писал(а):
для каждой строки количество команд процессора али занятая память
О! А мне эта идея нравится. : )


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Январь, 2010 19:54 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Виктор О писал(а):
Илья Ермаков писал(а):
После Вашего примера с парсером строк передёргивает аж :)

Напрашивается такая модификация учебной IDE:
слева от строк кода широкое поле с вертикально расположенным графиком -
для каждой строки количество команд процессора али занятая память
Тогда писующий интерактивно видит весь порождаемый его фантазией ужас :D

О!!! Спасибо за наводку... Буду думать... :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 25 Январь, 2010 00:17 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Сергей Губанов писал(а):
Это теоретически невозможно

Абсолютный идеал - невозможен по определению. На то он и идеал.
Но вся технология программирования пронизана т.н. "компромиссами". Уже и до обсуждения разумности интерпретаторов дожились... На пятом десятилетии развития технологии.

Но дело в том, что 90% этих компромиссов - просто недовложение интеллекта в продукт. Об этом я могу неделю говорить... Один пример лишь приведу.
Ну выделили некоторую функциональность в библиотеку. И пользователь воспользовался очень полезной функцией. Один раз. Спрашивается, за каким лядом там происходит функциональный вызов ??? И какой такой ЯВУ возьмет на себя смелость использовать определенную пользователем (а ему так было просто удобнее) процедуру как inline ???
Можно еще вспомнить, что у действительно универсальной процедуры может быть аргументов больше одного, а все вызовы у пользователя используют разным только первый аргумент. Остальные - константа. А код будет включен как для переменных.

Вы скажете что разрешение таковых проблемочек теоретически невозможно :?:
Или для них нельзя определить критерий оптимальности :?:
Моя убежденность к "возможности и преодолимости" относилась к таковым проблемочкам. Которым, кстати говоря - несть числа :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 25 Январь, 2010 00:31 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Galkov писал(а):
Спрашивается, за каким лядом там происходит функциональный вызов ??? И какой такой ЯВУ возьмет на себя смелость использовать определенную пользователем (а ему так было просто удобнее) процедуру как inline ???


А с раздельной компиляцией как быть? С сокрытием внутреннего устройства (двоичный модуль А привязался - втянул в себя - конкретное устройство из двоичного модуля Б)? Вопросов много.

Это не значит, что мысль плоха. Я эту проблему формулирую на аналогии с электроникой так: два случая повторного использования компонентов - как службы (во время выполнения есть в системе, к ней закоммутировались и обращаемся) или как элементной базы (использовано при проектировании системы, как в САПРах электронных, подставлено непосредственно в места использования). Второй режим ещё интересен вот в каком плане: часто мне НЕ НУЖНО, чтобы изменения в компоненте распространялись на те программы, которые раньше его использовали. Т.е. если устройство спаяно с использованием нек. элементов, то появление их новой версии не должно влиять на уже изготовленные устройства. В случаях повтороного использования второго типа (элементная база) я обычно не ввожу зависимостей от сторонних компонентов, я делаю дубль модуля-средства в своих подсистемах.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 61 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB