Создание Самолета, использующего Гибкий? [закрытый]

Существует много вещей, которые Вы могли бы изменить к лучшему, таким образом, сначала необходимо выяснить то, что является медленным. Другие уже ответили на тот вопрос. Я говорю об этом немного в Perl Освоения также.

неполный список вещей думать о том, поскольку Вы пишете новый код:

  • Профиль с чем-то как Devel:: NYTProf для наблюдения, где Вы проводите большую часть своего времени в коде. Иногда это удивительно и легко зафиксировать. Perl Освоения имеет большой совет об этом.

  • Perl должен скомпилировать источник, каждый раз и компиляция могут быть медленными. Это должно найти все файлы и так далее. Посмотрите, например, "Своевременный Запуск" , Jean-Louis Leroy, где он ускоряет все только путем оптимизации местоположений модуля в @INC. Если Ваши затраты на запуск являются дорогими и неизбежными, Вы могли бы также посмотреть на персистентный жемчуг, как pperl, mod_perl, и так далее.

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

  • Вызовы метода могут быть дорогими. В Perl:: набор тестов Критика, например, его вызовы к isa замедляют вещи. Это не что-то, чего можно действительно избежать во всех случаях, но это - что-то для учета. У кого-то была большая кавычка, которая пошла что-то как "Никакой умы, бросив фактор 2; именно, когда у Вас есть десять человек, делающих его, это плохо".:) Perl v5.22 имеет некоторые повышения производительности для этого.

  • , Если Вы называете те же дорогие методы много раз, но получаете те же ответы, что-то как , Memoize мог бы быть для Вас. Это - прокси для вызова метода. Если это - действительно функция (значение, тот же вход дает тот же вывод без побочных эффектов), Вы не должны действительно неоднократно называть его.

  • Модули такой как Apache:: DBI может снова использовать дескрипторы базы данных для Вас для предотвращения дорогого открытия соединений с базой данных. Это - действительно простой код, таким образом смотреть внутри может показать Вам, как сделать это, даже если Вы не используете Apache.

  • Perl не делает оптимизации хвостовой рекурсии для Вас, не происходите из Lisp, думая, что Вы собираетесь сделать эти супер быстрые рекурсивные алгоритмы. Можно превратить тех в повторяющиеся решения легко (и мы говорим об этом в [1 110] Промежуточный Perl.

  • Взгляд на Ваш regexes. Много открытых законченных кванторов (например, .*) может привести к большому отслеживанию в обратном порядке. Проверьте Jeffrey Freidl Регулярные выражения Освоения для всех окровавленных деталей (и через несколько языков). Также выезд его regex веб-сайт .

  • Знают, как Ваш жемчуг компилируется. Вам действительно нужна поточная обработка и DDEBUGGING? Те замедляют Вас немного. Проверьте perlbench утилиту для сравнения различных двоичных файлов жемчуга.

  • Сравнительный тест Ваше приложение против различного Perls. Некоторые более новые версии имеют ускорения, но также и некоторые более старые версии могут быть быстрее для ограниченных наборов операций. У меня нет особого совета, так как я не знаю то, что Вы делаете.

  • Распространенный работа. Можно ли сделать некоторую асинхронную работу в других процессах или на удаленных компьютерах? Позвольте своей программе работать над другими вещами, поскольку кто-то еще выясняет некоторые подпроблемы. Perl имеет несколько асинхронные и модули смещения загрузки. Остерегайтесь, тем не менее, что леса, чтобы сделать тот материал хорошо могли бы потерять любое преимущество для выполнения его.

14
задан Rex M 13 July 2009 в 18:29
поделиться

11 ответов

Я скажу «вроде как». Фактически, прямо сейчас есть один пример, который, я думаю, довольно близок к ответу на этот вопрос.

Boeing пытается сделать это сейчас с новым 787 - см. Следующее: Boeing 787 - Спецификация vs. сотрудничество ( С 777 по 787 первоначальный документ с техническими характеристиками якобы увеличился с 2500 до 20 страниц с изменением техники. ) Поставщики со всего мира работают независимо над разработкой компонентов для этого самолета. (Мы назовем это «командами».)

Итак, я хочу сказать да, но в то же время итерации в создании самолета привели к задержкам на 2+ года и привели к привели к историям, подобным этой - ( 787 Отложено в пятый раз )

Будет ли когда-нибудь построен самолет? Да, конечно, будет. Но когда вы смотрите на резину, которая едет по дороге здесь, кажется, что «интеграционные испытания» проводятся изрядно.

Редактировать: В то же время, этот сдвиг в технике привел к созданию нового поколения самолетов. построены из совершенно новых материалов, которые, возможно, будут одними из самых современных в мире. Это может быть прямым результатом более гибкого подхода. Может, это ' Собственно вопрос - а не "а вы можете?" но «если Agile задерживает сложные системы, дает ли это более инновационный продукт с точки зрения отдачи?»

5
ответ дан 1 December 2019 в 10:19
поделиться

Конечно, можно выполнить рефакторинг плоскости.

При одном рефакторинге изменяется исходный код, а не двоичные файлы. С самолетом то же самое: изменяются чертежи, а не сам самолет.

0
ответ дан 1 December 2019 в 10:19
поделиться

Да, ты справишься. Однако, если вы слишком внимательно следите за методами гибкой разработки программного обеспечения, это будет астрономически дорого из-за различной стоимости деятельности.

Рассмотрите относительные затраты на проектирование и строительство. Если мы включим кодирование как часть процесса разработки программного обеспечения, то дизайн определенно станет дорогой частью, а сборка будет до смешного простой и дешевой. Большинство проектов Agile планируется выпускать как минимум каждые несколько итераций. Таким образом, мы можем работать небольшими итерациями с непрерывным процессом сборки. Не все так просто, когда нужно собирать самолет раз в две недели. Хуже, если вы действительно планируете "выпустить" его. Возможно, вам также понадобится привлечь специалистов по летной годности и безопасности к Agile-процессу.

Я действительно хотел бы увидеть его опробовать.

1
ответ дан 1 December 2019 в 10:19
поделиться

Как бы вы работали, используя разработку через тестирование? Будете ли вы автоматически строить и тестировать самолет на каждой итерации? Сможете ли вы сделать сборку за десять минут? Насколько легко внести изменения в самолет? Даже если вы действительно проявляете гибкость при проектировании здания, некоторые компоненты необходимо отправлять на специальные фабрики, чтобы не было немедленной обратной связи.

Из проектирования с использованием программного обеспечения САПР вам нужно сделать форму, взять кусок волокна и положить его на плоскость. И т.д. Итак, здесь тривиальное изменение имеет нетривиальную стоимость. В Agile вы можете внести очень небольшие изменения, и они будут протестированы, построены и готовы к отправке через 20 минут. Если небольшие изменения обходятся дорого, то короткий цикл разработки и рефакторинг не так полезны. Ваш отзыв может занять больше недели, поэтому есть веская причина подумать заранее, как в модели водопада. И каждая попытка требует материальных затрат, если вы не программируете. Идея не нова. Плотники измеряют дважды. Программисты сначала кодируют, а потом тестируют.

В общем. Может быть какое-то сходство, но однозначно будет то же самое.

6
ответ дан 1 December 2019 в 10:19
поделиться

Agile в программном обеспечении и Agile в производстве на самом деле сильно отличаются, хотя у них общие принципы и ценности.

Agile в производстве возникла в Японии в 1950-х годах. Прочтите WE Deming и производственную систему Toyota, чтобы узнать больше. Все дело в постоянном улучшении процесса , посредством которого воспроизводится продукт.

Гибкое программное обеспечение развивалось в начале 1990-х как модель быстрой разработки. Все дело в постоянном улучшении продукта .

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

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

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

7
ответ дан 1 December 2019 в 10:19
поделиться

Toyota первой внедрила бережливое производство, за которым последовали гибкие методологии. Построение аппаратного обеспечения для производства самолетов будет оптимальным вариантом, а для программного обеспечения - гибкой методологией.

Подбирайте правильные инструменты для работы.

Отличная книга о том, как создавался и работает TPS. http://www.amazon.com/Machine-That-Changed-World-Production/dp/0060974176

http://en.wikipedia.org/wiki/Toyota_Production_System

3
ответ дан 1 December 2019 в 10:19
поделиться

Я думаю, что в этом случае вы слишком масштабно думаете. Agile - это разбиение вещей на более управляемые части, а затем работа против этого. Вся идея Agile (в частности, XP) заключается в том, что вы сначала проводите тестирование, чтобы сократить количество ошибок, и поскольку плоское программное обеспечение должно иметь очень высокий охват кода для его тестирования, я думаю, что оно вписывается довольно аккуратно.

Вы не собираетесь «реорганизовывать» механику самолета, но вы будете настраивать их, если они небезопасны, и в этом весь итеративный подход для вас.

Я слышал о программном обеспечении для управления воздушным движением, написанном с использованием Agile Methodology. это вперед.

2
ответ дан 1 December 2019 в 10:19
поделиться

Это история завода по производству авиационных двигателей (сентябрь 1999 г.). Их методы кажутся довольно гибкими:

http://www.fastcompany.com/magazine/28/ge.html

1
ответ дан 1 December 2019 в 10:19
поделиться

Я почти уверен, что ответ неуместен. Даже если бы вы могли, вам бы не позволили. Слишком много требований безопасности. Вам даже не разрешат разрабатывать программное обеспечение для полета с использованием Agile. Например, у вас нет Спецификации требований к программному обеспечению (SRS) в Agile. Тем не менее, для любого программного обеспечения авионики на борту самолета, которое может повлиять на безопасность полета, вам понадобится SRS.

0
ответ дан 1 December 2019 в 10:19
поделиться

Это взято из http://requirements.seilevel.com/blog/2008/06/inosis-2008-can-you-build-airplane-with.html

*** На самом деле, это неправда, ***

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

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

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

Agile Can Работа со сложными системами

Он рассказывает о том, как гибкие концепции могут работать в системных проектах. Вот несколько примеров, взятых из его статьи:

На основе обучения: традиционная V-модель подразумевает одноразовое путешествие, подразумевая один раз для повторного обучения. Однако, возможно, модель может быть переинтерпретирована, чтобы позволить несколько итераций через нее выполнить это.

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

Короткие итерации: Итерации в значительной степени неслыханны, потому что V-модель - это одноразовый проход через жизненный цикл разработки. Тем не менее, итерации прототипирования посредством тестирования во многих случаях могут быть выполнены в системной инженерии. Проблема заключается в доставке чего-то готового в конце каждой итерации. Он предполагает, что при крупных развертываниях это не так важно для заказчика, как снижение риска, проверка требований и т. Д. Это отличный момент, чтобы вспомнить пример с самолетом! Могли ли мы через 2 недели получить хоть какую-то рабочую часть самолета? Что насчет даже программного обеспечения для запуска подсистемы на самолете?

Командная собственность: Системная инженерия очень зависит от процесса, поэтому это сложно. Д-р Тернер выдвигает идею о том, что, возможно, позволив системным инженерам управлять им, а не процессам, управляющим ими, что будет более неудобно для управления, может дать более эффективные результаты.

1
ответ дан 1 December 2019 в 10:19
поделиться

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

Проблема с самолетом - это проблема безопасность. Это означает, что необходимо принять все меры предосторожности, от правильной идентификации и интерпретации требований до проверки и подтверждения каждой отдельной строки кода.

Кроме того, вероятно, следует использовать формальные методы, чтобы убедиться, что Система действительно безопасна, поскольку логика программирования корректна и должным образом удовлетворяет ее условиям.

0
ответ дан 1 December 2019 в 10:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: