Pull to refresh

Comments 59

А какой срач может начаться, если тут правда жизни написана?) Так или иначе, гуманитарии добиваются чего-либо, только если структурировать умеет свою жизнь. Все мы где-то инженеры)

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

Можете описать flow разработки с применением подобных генераторов? Например, что происходит, если нужно поправить UML-модель?
можно не поддерживать согласованность, т.е. генерить один раз в начале вместо «вручную»
можно перегенерить при изменениях
но чтобы проектировать исключительно в UML, до этого техника не дошла
Rational Software пыталась сделать этот flow, но потом пришли хипстеры, водопады обмелели, agile, scrum вот это всё
Можете описать flow разработки с применением подобных генераторов?
Описывал как-то протокол передачи данных между CAD-ами. Генерился отдельный пакет не привязанный к API. Было удобно, ибо проект рос и хотелось вытащить из CAD-а все больше данных. При этом, если код не готов, то связь достаточно было просто не прорисовывать на UML. Мне это сильно помогало. К тому же, я показал UML своему руководителю, который не очень был хорош в ООП, и он лучше стал понимать описанную бизнес-логику. «Картинки» более информативны, чем текст.
Например, что происходит, если нужно поправить UML-модель?
Если правильно понял вопрос, то перезаписывается код всех исходных файлов.
Если правильно понял вопрос, то перезаписывается код всех исходных файлов.

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

По моему опыту реализации генераторов кода в Яндекс.Такси: нужно четко разделять сущности, которые генерятся один раз (например, шаблон нового сервиса в самом минимальном варианте) и которые нужно будет перегенерировать (например, код клиента по OpenAPI описанию). Если вы 100% не будете иметь желания перезапускать генератор при каких-то изменений, то последовательность «сгенерил шаблон, получил артефакт, дописал артефакт руками» позволительна, она не ведет к лишним действиям. Но если вы при каких-то обстоятельствах захотите перезапускать генератор для изменения артефакта, то артефакт категорически нельзя редактировать руками, он должен быть generated only, т.к. в противном случае вам нужно будет совершать лишние действия по «переприменению» ручных изменений. Думаю, не нужно говорить, какая пропасть ошибок скрывается за этим переприменением и какие безумные вещи совершают разработчики, чтобы срезать углы. При таком флоу этап «перезапустить генератор» — это атипичный этап, которого все боятся, непонятно, как выполнять корректно, и для которого нет удобных инструментов.

К тому же, я показал UML своему руководителю, который не очень был хорош в ООП, и он лучше стал понимать описанную бизнес-логику. «Картинки» более информативны, чем текст.

UML может быть в проекте не только в случае генерации кода из UML, но и по другому flow. Можно добавлять описание в исходный код, из которого генерить документацию, UML-диаграммы и другие артефакты.
весь код, который был дописан в исходные файлы, нужно вписывать туда заново
В моем случае все было не совсем так. Я использовал кодогенератор, который мог хранить в себе реализацию, то есть описал реализацию в IDE, отддебажил и скопипастил ее обратно в UML, дальше генерируй без опаски что-то потерять. Да, двойная работа, но лучшего не имеем, поэтому… Еще помогло, что помимо прочего он поддерживал реверс-инжиниринг. То есть, если соблюсти определенные формальности, то можно было получить UML из исходников. Но, правда, не все так просто было. Да и на некоторых порах было бы достаточно даже просто рыбы кода. Я вообще не лобирую использовать UML-кодогенераторы. Это мне они жизнь упростили, у других может быть негативный опыт. Да и посыл я делал другой — зачатки инструментов есть, но требуют развития.
А какой кодогенератор использовали Вы? Rational Rose как понимаю?
А какой кодогенератор использовали Вы? Rational Rose как понимаю?

Да, его самого. Это было лет 10 назад, причем в процессе учебы в университете, а не в коммерческой разработке, поэтому я предположил, что есть какие-то более удобные флоу, в которых нет шагов с переписыванием кода.
Поддерживаю про то, что чтобы начаться «срачу» нужно было бы что-то противоречивое. Мне кажется всем, даже тому человеку со стопкой на столе понятно, что это плохо. Вопрос в том, что многие не могут поднять головы и понять, что они бы сэкономили время себе и людям. И ещё, вот если бы написали как соблюсти эти принципы тут да. Я к сожалению видела и вижу как проекты покрываются костылями, потому что на системное нет времени, а фича нужна, иначе клиент уйдет. И вроде все говорят бизнесу, что когда количество костылей будет большим, вносить изменения будет очень дорого, но я к сожалению ситуации, когда бы бизнес это слышал пока не видела.
Как я понял Ваш основной вопрос можно сформулировать так: «Как донести бизнесу, что нужно больше времени?» Я бы сказал так: если бизнес это Ваш продакт-менеджер, то нужно просто подождать, пока проблема «вырастет» и до него «дойдет». Иначе он Вас так и будет прокатывать по срокам. Если дело касается бизнеса со стороны клиента, то тут стоит просто показывать почаще, что работа ведется. «Смотрите, на той неделе у нас разработана эта фича. На этой — другая.» При этом клиент будет думать примерно так «Они работают, так как каждый раз что-то показывают. Большая часть проекта готова, поэтому не имеет смысл он них отказываться.» Но опять же — пускай продакт этим занимается. Ну и да, в жизни чуть посложнее, но я пытаюсь придерживаться такой позиции.
Какие-то обобщения ради обобщений. Нет бы взять практическую задачу и описать свои мысли применительно к ней.
Все, что могло сломаться у этой мясорубки — это стол, к которому она крепилась.


Ха! Русская женщина преклонного возраста одним махом убивает по 2 такие. Было у родственницы значит 2 мясорубки чуть разные по конструктиву. Помыла она их с мылом и стала собирать. И что-то у нее ножи на место не садились. На помосчъ пришел обух топора… Ножи сели, причем совсем.

Правило #8: «на каждый условно надежный конструктив найдется свой решительный исполнитель»
Давно было дело, купил дополнительную плашку памяти в комп, а она в слот не лезет. Знакомому в аське пожаловался, тот говорит: «А ты молоточком.»

Помню была в хозяйстве мясорубка ровно как на изображении в статье. Резьба винта, крепящего ручку, была стёрта почти в ноль и ручка частенько слетала в процессе прокрутки мяса.

Понятие бардака на рабочем месте это понятие сугубо индивидуальное. Если человеку понятно где что у него лежит на столе среди гор бумажных черновиков, заметок или записок на обрывках листка, кучи на вид непонятных папок на компе с названиями new, new1, new123 — не значит что это должно быть понятно любому, севшему за его место. Пытаясь вогнать человека в какие-то свои представления — в конце дня стол должен быть пуст, уходя отвертки вставляй в ячейки, что они у тебя по столу лежат, премии лишу… вы просто замедляете его работу, заставляя искать привычные для него вещи в непривычных местах.
Причём оригинальность этой системы, его родной — показатель творческой личности.

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

На новую денег не дадим, допиливайте эту.

Извините, не смог удержаться.
И имеем следующий код, после таких фраз
image
Почитайте лучше ТРИЗ Генриха Альтшуллера.
Извините за посягательство на святое, в книге Генриха Сауловича много разумных вещей, но вот читаю его биографию и не вижу историй серийного производства и внедрения.
Я не идиализирую Генриха Сауловича, но кроме него, мало кто писал про теорию изобретательства.
Также внедрения и серийного производство в СССР было ряд особенностей.
Например:
1) Невысокая (одноразовая) оплата за изобретение.
2) Необходись включать в соавторы ряд начальников для последующей получения хоть какой-то премии.
3) Механизмы планового хозяйства со своими планами и нормами выработки не способствовали росту кол-ва кулибиных, левш и стахановцев.

P.S. Даже профильный журнал «Изобретатель и рационализатор» был очень дифицитен.
Вопрос был немного не о том: если Вы разбирали биографию Генриха Сауловича подробнее, чем в вики, что из его изобретений было внедрено? Я списка не нашёл.
О внедрениях конкретных изобретений надо искать в архивах Госплана СССР.
Выскажу свое мнение почему BIM так медленно развиваться, это не из-за отсутствие фидбека от инженеров, открытых писем пишется много и на форумах по конкретным ПО, достаточно вспомнить последнее письмо от британских архитектурных бюро с критикой Autodesk, одного из крупнейших вендоров, но деньги тратят не на разработку и внедрение новых удобных инструмент, а на маркетинг, ведь для компании главный показатель это прибыль.И рост прибыли маркетинг обеспечивает, а то что программы сырая неудобна и не доделанная это не важно.Да у гигантов появляются маленькие конкуренты которые что-то пытаются, но их обычно скупают и они умирают, редко перерастая во что-то работоспособное. Потому в строительстве BIM так и буксует, а еще заказчик пытается экономить, и вместо дорогой и во многих удобной (не вовсем) программы вы покупаете дешевый кривой аналог, или пиратите(что тоже плохо) потому если вендор делает хороший продукт, то он дорогой, его плохо знают, и найти сотрудников под него сложного.
Правило №1
Работает — не трогай!
это сомнительно, если долго куда-то не заглядывать то окажется что автор уже умер от старости и никто не знает как изменить
в нормальной ситуации у программиста нет времени трогать что-то без причины
Тем более для программиста.
Правило №2
Лучшее — враг хорошего.
Исключение из этих правил — когда программирование хобби и процесс не коммерческий.
у вас, наверное, и №3 есть, не стесняйтесь, выкладывайте все
Это и есть Правило № 3: «Не стесняйтесь, выкладывайте все»
… многие знают принципы ООП, но уж очень много специалистов, причем достаточно неплохих, пользуются ими крайне неумело.


Простите, но в этом случае это — плохие специалисты.
С другой строны, если эти специалисты создали и выпустили на открытый рынок продающийся прибыльный продукт — то какие же они плохие?
Я ровно 10 лет (с 2001 по 2011) успешно продавал отвратительно спроектированный и ужасно реализованный коммерческий продукт. Более того, моей огромной ошибкой было создание гораздо лучше спроектированного и реализованного коммерческого продукта со сравнимым функционалом. Я потратил ресурсы, но проект «не взлетел». Бизнес имеет колоссальную инерцию и почти никогда не потратит денег ради «самой правильной архитектуры» или снижения будущих расходов на сопровождение без конкретной метрики.
успешно продавал отвратительно спроектированный и ужасно реализованный коммерческий продукт.


Ну так коли money talks, то все остальное так, не пришей кобыле хвост. Если ради «самой правильной архитектуры» никто не даст ни цента, то может, ну ее в пень, эту архитектуру?
Все не так радикально.
Во-первых, иногда получается аргументировать свою точку зрения и найти с заказчиком разумный компромисс.
Во-вторых, хорошая архитектура нужна разработчикам, чтобы не утонуть после написания 80% кода за первых N дней проекта. Иначе на оставшиеся 20% легко можно потратить N^N трудодней.
В-третьих, я утверждал, что программисты, которые «неумело» используют ООП — плохие программисты по определению.
У меня сейчас как раз есть такой проект, где «неумело», т.е. без всякой необходимости, 10-15 уровней наследования UI, а сущности «размазаны» по этому UI в виде набора глобальных переменных.
И это не случайно так получилось, а так «архитектурщики» неумело наархитектурили.
Пускай пока подобных инструментов даже не предвидится в будущем

как это не предвидится?
В крупных компаниях уже давно придумали PDM системы, типа Windchill или Siemens PLM, которые тесно связаны интеграционно с CAD системами — Creo или NX.

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

PDM системы дорогие. Российский рынок машиностроения почти их не использует, за редкими исключениями. А если использует, то без грамотного внедрения, как Вы говорите — в качестве «файлопомойки». Бюджет ИТ главное освоен, а как работать с системой за сотни млн.руб — неважно.

Плюс ко всему в РФ мало компаний, которые могут произвести внедрение таких систем на предприятии. Задача многократно усложняется, когда в руководителях отделов находятся люди, которые не понимают всей важности таких систем, а тем более когда на заводе находятся военные представители, у которых даже компьютеров нет. Работа PDM сводится к нулю, когда всё равно приходится печатать бумажный документ и ногами идти согласовывать его к человеку в форме.

UFO just landed and posted this here
«не использует» — я имею ввиду крайне малую степень интеграции во все бизнес-процессы.
Купить, установить и запустить систему — это лишь первый этап. Дальше необходимо писать стандарты по работе, проводить обучение, выявлять отсутствующий функционал, производить доработку, сопровождение и так далее.
Везде, где я встречал PDM системы есть разрывы между происходящими процессами всей цепочки проектирования, где-то всё равно что-то делается вручную, ручками, в экселе, на коленке и т.д. А это огромный минус для такой системы, как вы понимаете.

Номинально куплена PDM много у кого, потому как есть установка от высших чинов ВПК, если предприятие большое = должна работать PDM. А как она там работает и работает ли вообще никого не волнует, галочка поставлена.
В бюджет предприятия неохотно хотят закладывать ещё несколько млн.руб в год на поддержку PDM, купили и всё.
как это не предвидится?
В крупных компаниях уже давно придумали PDM системы
привет, Илья!
Сами PDM-системы, разумеется, есть. Да и я упомянул их. Но не видел я присутствия в них «оркестрирования». Есть, правда зачатки, но это далеко до оркестрирования. И, да, проектирование действительно идет сверху вниз, но не средствами PDM.
Главное правило инженера — «Работает? Не трогай!» — сколько раз мы его нарушали, столько же раз получали катастрофические проблемы) А если серьезно, то меня всегда выручали в трудных ситуациях: знания (саморазвитие непрерывное), накопленный и осмысленный(!) опыт и вера в себя, в то что ты все сможешь — нужны только время и ресурсы. Все остальное было уже вторично
Работает? Не трогай.

Это очень спорный принцип. Банки в восторге от него. Сейчас мы имеем тонну кода на Java 1.4- или, прости, господи Cobol. Не очень туда рвутся люди, т.к после пары лет такого экспириенса, смотришь на kotlin, как пещерный человек на летающую тарелку.

У меня есть восьмая заповедь — "Обязательно проверяй себя"

Хорошая мысль. Для меня могла бы стать очередной заповедью;)
Всегда казалось, что именно ленивые сисадмины городят костыли и не делают документацию (и потом сами даже не помнят, как сети проложили). Потому что им лень думать.
Лень — это лишь топливо. Качество костылей будет зависеть от дальновидности человека. Если сисадмин ленивый и у него большой горизонт планирования, то он не будет делать костыль, который завтра придется переписывать.

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

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

Если бы было не так, у нас бы были везде, например:
  • Одинаковый разъём питания на всё!
  • Одинаковое напряжение на всю микроэлектронную логику
  • Одинаковая разрядность памяти и процессоров (и физические разъёмы туда же)
  • Один язык программирования (пусть даже ваш любимый)
  • Одна платёжная система


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

Нужно стремиться к этому, учитывать, но не молиться, иначе это похоже на религию.
Я хотел бы чтобы Вы немного оторвались немного от разработки ПО. Есть же к примеру, инженер-конструктор, ему не дают готовую конструкцию — ему дают, к примеру ТЗ и габаритный чертеж. Вот это уже интерфейс. Ему нужно его реализовать.Может это грубо сказано, но в данном случае вышестоящий инженер как бы говорит «сделай это так, а это так, а в остальном мне все равно. Ты — специалист, ты и думай.» Если уйти от проектирования, то теплообменник физически тоже выглядит как реализация интерфейса: можно поставить теплообменник не одной, а другой фирмы, из другого материала и пр., а результат будет примерно тот же.
Пользователь же ОС работает с чем? С программным интерфейсом. Ему в большинстве случаев все равно какие алгоритмы лежат в работе ОС. Но, интерфейс — это то, что он видит, и вот тут ему уже не все равно. Касаемо теплосети — отдельно взятому цеху все-равно, что творится в остальной части теплосети, главное чтобы в теплообменник приходило что нужно. ТЗ может поменяться многократно, думаю Вы с этим тоже сталкивались. Это значит, что интерфейсу с самого начала уделили мало внимания.
Если уйти от проектирования,

Это и не предлагается. Предлагается уйти от подхода «сначала продумай всё». Проблема в том, что заранее спроектировать все детали сложной системы не получится, слишком большой уровень неизвестности и изменчивости. То, что инженер сконструировал априорно, либо будет устаревшим на момент реализации, либо вообще не будет соотноситься с реальностью. Для уменьшения уровня неизвестности нужен эксперимент, контакт с реальностью, альфа-версия, как хотите называйте. Поэтому в разработке ПО у нас вместе с водопадом есть agile, одним из принципом которого является «работающий продукт важнее исчерпывающей документации».

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

Вы это сказали тут:
ТЗ может поменяться многократно, думаю Вы с этим тоже сталкивались. Это значит, что интерфейсу с самого начала уделили мало внимания.

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

Представлени о ТЗ это несколько устарело. Корректнее будет что- то типа " цикл управления требованиями" или " процесс управления требованиями". Требования всегда меняются. И просто надо на каждые события определенным образом реагировать. Примерно так. Requirement Management вроде это так называется.

>если бардак на рабочем столе
Глубокоуважаемый;-) Аффтар Жжот слышал такой термин, как «творческий хаос»?
>если бардак на рабочем столе, то значит и в голове у человека бардак.
Мистика, фэн-шуй какой-то. «Беспорядок в комнате создаёт преграды и заторы для циркуляции энергии Ци», «поставьте жабу в юго-восточной угол стола, и она принесет вам деньги»
«Чёрная кошка, перешедшая Вам дорогу, приносит несчастье»…
Кстати, по законам той же магии;-), если индивид в противостоянии хаоса и порядка находится на противоположной стороне — монолитовец-эмеркоиновец, «инвольтирован к эгрегору хаоса» или просто chaotic good, то вредоносное влияние на него будет оказывать как раз порядок на рабочем столе(!).
>Как правило и на компьютере…
О, то есть не всегда. Уже прогресс.
Тем, кто меня заминусовали. Я за науку и здравый смысл. Можете объяснить причинно-следственную связь, Каким образом размещение вещей на столе, несоответствующее законам казарменно-муштровой геометрии, может заметно выводить из строя высшую нервную деятельность? Какие такие мистические поля обеспечивают этот эффект? Гравитация, как у астрологов? ;-) Морфогенные поля, как у поклонников пирамид из нью эйдж??
«Порядок необходим лишь дилетантам; гений господствует над хаосом» ⒞ Альберт Эйнштейн
«Balance is a fool's master» (тоже кто-то из великих)
Не путайте порядок ака «творческий хаос», который со стороны выглядит как хаос, но этот порядок помогает своему «владельцу» быстро выполнять свои задачи.
И хаос, который даже может выглядеть как порядок, но мешает своему автору работать эффективнее.
Грубо говоря, если автор тратить много времени на поиск чего-либо, то это хаос, как бы он не выглядел.
> порядок ака «творческий хаос», который со стороны выглядит как хаос, но этот порядок помогает своему «владельцу» быстро выполнять свои задачи.
> И хаос, который даже может выглядеть как порядок, но мешает своему автору работать эффективнее.
хаос — это порядок. порядок — это хаос. «Война — Это мир. Незнание — сила.» ⒞

ЗЫ. если оно мешает, то это ещё не значит, что оно хаос — Несмотря на то что «ходит как утка, выглядит как утка, и крякает как утка»⒞. Может, просто данной личности хаос больше подходит.
фигурально выражаясь, если нечто «ходит как утка, выглядит как утка, и крякает как утка»⒞, то Это — утка (хаос), а не кошка (порядок) — даже если данный любитель уток использует её вместо кошки, и даже если назвал её «Муркой» — от этого она кошкой (порядком) не становится. В чём нетрудно убедиться, попробовав применить кошачий корм (то есть меры поддержания порядка) вместо утиного.
Интересные наблюдения! Мне очень близко.
Все вышесказанное Вами верно и очень широко внедрено и применяется на практике.
Прежде всего, в виде «системного подхода» в инженерной деятельности.
Основная информация собрана в стандартах ISO. Но читайте не только «стандарты качества» серии 9000, но и остальные…
Поэтому про первое правило: скорее нужна не система, а методология. Система, системное мышление — один из элементов такой методологии. Как раз набор элементов и их связи — основа архитектуры методологии. Я использую основы GERAM для своей работы. Основные Ваши идеи — вполне соответствую части GERAM.

Про разделение: это метод редукционизма. Но не стоит забывать и про холизм. То есть целое — это не сумма всех частей, а еще плюс что-то. Но в целом всегда можно увидеть какие-то части. Причем это сделать можно множеством способов. Которые зависят от цели декомпозиции и от точки зрения. Ну самое важное: объект в модели (как часть целого) возникает при надобности, никакого материального воплощения не имеет, и совершенно неважна природа его возникновения. ISO 81346. Конечно же, потом всегда можно найти или придумать связи объекта в модели с реальностью. Только укажите это, докажите — и вперед.

Все гениальное — может выглядеть простым. Но не обязательно оно «простое». «Чем проще агрегат, тем меньше шансов его поломать.» — тоже верно только для простых агрегатов. Если система (или агрегат) спроектированы и изготовлены использую понятие «антихрупкость» — то они всегда более надежным. Посмотрите тут в сторону живой клетки. Чтобы реализовать столько функций в течении многих лет — надо как раз иметь свойство «антизрупкости». Сложность же работы клетки поражает… Как и надежность организма из таких клеток.

Чистота, упорядоченность — это следствие методологии. Одна из ее частей. Может быть хаос, может быть и иерархия. Но только согласно какому-то элементы методологии. То есть важно понимать, что делать и с хаосом и с порядок.

Насчет документов. Совершенно с Вами согласен. В проектах у нас есть такой принцип: «Вся информация в проекте существует только в виде документов». Это может быть кусок бумаги, обертка от мебели, распечатанный файл, запись беседы… В общем — нет этого чего-то (артефакта) на сервере проекта — нет и в проекте. Ну а суму структуру документации, принципы работы с ней, все детали реализации почерпнули тоже в стандартах ISO. Прежде всего ISO 61355. Принципы многомерной классификации и организации документов, принципы их названий — все это давно придумано для разных отраслей и видов проектов. Причем реализовать все это очень просто связкой PM Wrike и Google Workspace. Или Redmine и какой-то сервер фалов. Или что угодно, что дает возможность хранить все документы и использовать метаинформацию о документах.

Про «допиливание». Все верно, если плохо сделана параметризация целей проекта. И если не использовать цикл Деминга. Кстати, именно на идеях цикла Деминга построены стандарты ISO. Цикл Деминга, плюс основы инженерии систем (системный подход).
Если же результат проекта оценивается именно в контексте цикла Деминга, то ничего допиливать не надо. Один элемент системы находится на одном этапе цикла, другой — на другом. На каком именно и как с этим жить — это вопросы между Заказчиком и Исполнителем. Примерно так, если коротко.
Своего рода при присутствии недостающего определенного функционала у вышеуказанных систем можно не спускаться до узлов более низкого уровня.

Это реализовано в виде подхода и методологии в том же стандарте ISO 81346. Есть аспект «функции». Есть аспект «продукт». В модели сначала реализуется схема «функций». Потом часть «функций» определяются в виде «продуктов». Причем водной модели могут быть и элементы «функция»+ «продукт», может быть элемент «функция». Это два аспекта, только один из которых обязательный. Но чем ближе к «воплощению», тем больше элементов для которых описано и «функция» и «продукт». Например, в схеме автоматики может быть «Перекачка» (функция на схеме). И есть «Хранение» (тоже функция). В начале проектирования только функции. Потом добавляется аспект «продукт». Для элемента «Перекачка» указывается «Насос типа НШ». А для «Хранения» еще нет такого «продукта». И ничего, все на одной схеме спокойно живет. Реализация такой многомерной методологии есть в нескольких продуктах. Для электрики, автоматики, гидравлики, строительства, механики можно применять ePlan. Есть иные варианты.
Вопрос именно в методологии, если ее понимать — то работа на PLM системах становится очень простой. Если же пытаться автоматизировать свой «богатый инженерский опыт» на основе ГОСТов, ЕСКД, ЕСТПП и прочего бреда типа 34 стандарта, то все грустно… ГОСТы, ЕСКД, ЕСТПП 34 стандарт — все это прекрасные разработки. Были. Лет 30-40 назад. Теперь же их требования и методология — не более, чем один из малозначительных аспектов в методологии «системного подхода».
Рад, что Вам оказались близки мои наблюдения:)
Спасибо за отсылку на материалы. Нужно будет ознакомиться. В личку может скинете также парочку материалов, которые посчитаете полезными?! А про системное мышление мне уже сказали. Не думал, что подобные вещи уже описывались, думал, что это только мой майндсет)

Всегда рад поделиться информацией и знаниями. Вы увидели и обобщили свой опыт. То, что подобный опыт есть у иных людей — это тоже так. Обычно до подробных обобщений и мыслей на всей земле доходит 200-500 человек одновременно. Мыслят подобно, или похожие проблемы решают. Или магия:) фиг его знает. Лично мне нравится методология, которая собрана в системном подходе и в стандартах ISO. Да и альтернативы нет, если что. Поэтому приходится копать.

Sign up to leave a comment.

Articles