Как собрать проект с программными продуктами и собственным кодом


1 принят
+100

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

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

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

Несколько общих советов:

  1. Во время исследования продолжайте возвращаться к первоначальной проблеме.

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

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

  4. Ita € ™ s редко стоит найти оптимальное решение, особенно тогда технологический пейзаж продолжает меняться очень быстро. Ищите решение, которое достаточно хорошо: «Парадокс выбора - почему больше меньше» .

  5. Ita € ™ s редко стоит обратиться к пользователям за помощью (если они не являются экспертами по программному обеспечению) при выборе между несколькими вариантами. Если у вас есть несколько вариантов, которые выглядят одинаково привлекательно, это означает, что вам нужно вернуться назад и понять исходную проблему лучше, возможно, вы не выполнили требование или два.

  6. Некоторые дополнительные замечания по использованию сторонних компонентов (относятся к компонентам GUI, но их легко применять и к другим областям программного обеспечения).

  7. И еще больше замечаний по определению области, составлению и исследованию проекта.


3

Изменение ваших решений походит на изменение вашего проекта для дома, пока оно уже строится.

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

Некоторые соображения:

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

1) Используйте расписание краммера. Постройте его в порядке того, что вы построили бы, если бы у вас было только 1 день или 1 неделя и больше не было над ним работать. Удивительно, что больше не имеет значения, когда вам нужно сделать 50% функций на 100% качества. Сосредоточьтесь на значении, значении, значении. Прочтите что-то вроде книги 37 Signing's «Реальная» для получения дополнительной информации об этом.

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

3) Знайте о возможностях ваших инструментов и преимуществах любых инструментов, которые необходимо предоставить вашему решению. Вы должны знать или, по крайней мере, знать о многих инструментах, которые вы можете или не можете интегрировать.

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


2

Для каждой части вашего программного обеспечения вы понимаете как программный компонент / пакет:

  1. Как вы решаете, должна ли часть использовать программный продукт или собственный код? (учитывая, что некоторые инструменты являются удивительными, но потребуется много времени для изучения)

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

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

      • Если это тогда, убедитесь, что нет существующего продукта, который лучше, чем вы планируете. - Это есть, подумайте о покупке лицензий вместо разработки вашего продукта.

    • Поиск в Интернете аналогичных компонентов (коммерческих, с открытым исходным кодом и даже статей / демо-исходный код).

      • Кто-нибудь из них выполняет все ваши требования с помощью компонентов?
      • Сколько они стоят, стоило бы вам больше разрабатывать и поддерживать аналогичный компонент?
      • Каковы условия лицензии? - Они в порядке для вашего продукта?
      • Если компонент включает в себя пользовательский интерфейс, может ли он выглядеть и прост в использовании?

      • Если вы ответили «да» на все вышеперечисленное, не разрабатывайте компонент самостоятельно.

      • Если не:

      • Является ли компонент открытым исходным кодом или опубликован в статье / демо-коде? - Если да, то он прочный, вы могли бы взять код, чтобы улучшить его или использовать его в качестве примера, чтобы помочь вам написать код, который более подходит для ваших требований? - Если это так, напишите свой собственный код, используйте код как часть вашего собственного компонента, который не разработан с нуля .

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

  2. Как вы выбираете правильный программный продукт?

    • См. Ответы на 1.
  3. Сколько времени (в процентах) должно пройти этот этап выбора нужного продукта, если таковой имеется, и сколько времени для оценки одного продукта?

    • Очистите весь день, найдите существующие компоненты, прочитайте о них (функции, цены, обзоры) и загрузите + установите до 5 из них.
    • Очистите еще один день, оцените 2-3 продукта, сравните демо / примеры, посмотрите на код, напишите 2 небольших примера использования каждого (один пример другого продукта).
    • Если вы выберете более 3, очистите еще один день и проверьте остальные.
  4. Есть ли обратная связь, нормально ли передумать, после того, как вы прилагаете усилия в продукте и не считаете его непригодным?

    • Всегда разрабатывайте программное обеспечение таким образом, чтобы каждый компонент был заменен.

      • Это гарантирует, что всегда есть «путь назад». (Используйте интерфейсы и схему проектирования адаптеров, разделите их на множество сборок, соедините все компоненты как можно свободнее (используя события, привязку и т. Д.) - свободную муфту.
    • Даже если вы что-то реализуете самостоятельно, убедитесь, что есть обратный путь - иногда вы можете использовать неправильную технологию / дизайн и должны заменить компонент новым, который вы разрабатываете / покупаете.

    • Другие эмпирические правила:

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

    • Написание в сборке заняло бы самое долгое время, в C меньше, на C ++ еще меньше, на более современных языках, таких как C #, Java, Delphi еще меньше.

    • У кого больше собственных компонентов, которые вам подходят? Что у вашей команды есть опыт.

    • Если вы используете .NET (C #), то WPF может помочь вам снизить сцепление между графическим интерфейсом и бизнес-логикой и сделать более удобный интерфейс, но для этого требуется время, чтобы узнать, как его использовать (рекомендуется 5-дневный минимальный курс ).


1
  • Как вы решаете, должна ли часть использовать программный продукт или собственный код? (учитывая, что некоторые инструменты являются удивительными, но потребуется много времени для изучения)

Задайте себе два вопроса.
1) Является ли это зрелым продуктом. Если да, то
2) Сколько времени потребуется, чтобы создать функциональность, которую он предоставляет по своему усмотрению. Если это значение умножает ваш часовой тариф выше стоимости продукта, используйте этот продукт.

  • Как вы выбираете правильный программный продукт?

Обратитесь в свою сеть других разработчиков. Использовали ли они это, столкнулись с проблемами. Обратитесь к interweb. Создайте прототип с помощью продукта. Это хорошо работает? Любые серьезные ошибки?

  • Сколько времени (в процентах) должно пройти этот этап выбора нужного продукта, если таковой имеется, и сколько времени для оценки одного продукта?

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

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

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

  • Есть ли обратная связь, нормально ли передумать, после того, как вы прилагаете усилия в продукте и не считаете его непригодным?

Если вы обнаружите, что это не работает, нет ничего плохого в возвращении. На самом деле вам, вероятно, придется. В идеале вы найдете это на ранней стадии. Не в 11-й час. Опять же, это цель прототипирования.


1

Здесь уже есть некоторые действительно хорошие ответы, поэтому я не буду повторять это, но есть один момент, который вы должны определенно рассмотреть, и хотя я бы подумал, что его очевидное я еще не видел, как он упоминается здесь:
персонал, который у вас есть для реализации решение, их основные компетенции и общий уровень их компетенции.
Кто вы должны это реализовать (предполагая, что это команда, а не только вы сами, но релевантная, даже если ее только вы тоже ...) могут иметь ОГРОМНОЕ влияние на результат. Если у вас нет опытных программистов, чтобы помочь вам разобраться в этом, вам лучше искать какой-то продукт OTS, чтобы выполнить эту работу ... Или, даже если у вас есть программисты, которые вряд ли удастся, вы все равно можете хотят найти решение с более низким общим проектным риском.

дизайн, проект-менеджмент, оценка,

design,project-management,evaluation,

3

Ответов: 5


1 принят
+100

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

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

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

Несколько общих советов:

  1. Во время исследования продолжайте возвращаться к первоначальной проблеме.

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

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

  4. Ita € ™ s редко стоит найти оптимальное решение, особенно тогда технологический пейзаж продолжает меняться очень быстро. Ищите решение, которое достаточно хорошо: «Парадокс выбора - почему больше меньше» .

  5. Ita € ™ s редко стоит обратиться к пользователям за помощью (если они не являются экспертами по программному обеспечению) при выборе между несколькими вариантами. Если у вас есть несколько вариантов, которые выглядят одинаково привлекательно, это означает, что вам нужно вернуться назад и понять исходную проблему лучше, возможно, вы не выполнили требование или два.

  6. Некоторые дополнительные замечания по использованию сторонних компонентов (относятся к компонентам GUI, но их легко применять и к другим областям программного обеспечения).

  7. И еще больше замечаний по определению области, составлению и исследованию проекта.


3

Изменение ваших решений походит на изменение вашего проекта для дома, пока оно уже строится.

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

Некоторые соображения:

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

1) Используйте расписание краммера. Постройте его в порядке того, что вы построили бы, если бы у вас было только 1 день или 1 неделя и больше не было над ним работать. Удивительно, что больше не имеет значения, когда вам нужно сделать 50% функций на 100% качества. Сосредоточьтесь на значении, значении, значении. Прочтите что-то вроде книги 37 Signing's «Реальная» для получения дополнительной информации об этом.

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

3) Знайте о возможностях ваших инструментов и преимуществах любых инструментов, которые необходимо предоставить вашему решению. Вы должны знать или, по крайней мере, знать о многих инструментах, которые вы можете или не можете интегрировать.

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


2

Для каждой части вашего программного обеспечения вы понимаете как программный компонент / пакет:

  1. Как вы решаете, должна ли часть использовать программный продукт или собственный код? (учитывая, что некоторые инструменты являются удивительными, но потребуется много времени для изучения)

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

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

      • Если это тогда, убедитесь, что нет существующего продукта, который лучше, чем вы планируете. - Это есть, подумайте о покупке лицензий вместо разработки вашего продукта.

    • Поиск в Интернете аналогичных компонентов (коммерческих, с открытым исходным кодом и даже статей / демо-исходный код).

      • Кто-нибудь из них выполняет все ваши требования с помощью компонентов?
      • Сколько они стоят, стоило бы вам больше разрабатывать и поддерживать аналогичный компонент?
      • Каковы условия лицензии? - Они в порядке для вашего продукта?
      • Если компонент включает в себя пользовательский интерфейс, может ли он выглядеть и прост в использовании?

      • Если вы ответили «да» на все вышеперечисленное, не разрабатывайте компонент самостоятельно.

      • Если не:

      • Является ли компонент открытым исходным кодом или опубликован в статье / демо-коде? - Если да, то он прочный, вы могли бы взять код, чтобы улучшить его или использовать его в качестве примера, чтобы помочь вам написать код, который более подходит для ваших требований? - Если это так, напишите свой собственный код, используйте код как часть вашего собственного компонента, который не разработан с нуля .

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

  2. Как вы выбираете правильный программный продукт?

    • См. Ответы на 1.
  3. Сколько времени (в процентах) должно пройти этот этап выбора нужного продукта, если таковой имеется, и сколько времени для оценки одного продукта?

    • Очистите весь день, найдите существующие компоненты, прочитайте о них (функции, цены, обзоры) и загрузите + установите до 5 из них.
    • Очистите еще один день, оцените 2-3 продукта, сравните демо / примеры, посмотрите на код, напишите 2 небольших примера использования каждого (один пример другого продукта).
    • Если вы выберете более 3, очистите еще один день и проверьте остальные.
  4. Есть ли обратная связь, нормально ли передумать, после того, как вы прилагаете усилия в продукте и не считаете его непригодным?

    • Всегда разрабатывайте программное обеспечение таким образом, чтобы каждый компонент был заменен.

      • Это гарантирует, что всегда есть «путь назад». (Используйте интерфейсы и схему проектирования адаптеров, разделите их на множество сборок, соедините все компоненты как можно свободнее (используя события, привязку и т. Д.) - свободную муфту.
    • Даже если вы что-то реализуете самостоятельно, убедитесь, что есть обратный путь - иногда вы можете использовать неправильную технологию / дизайн и должны заменить компонент новым, который вы разрабатываете / покупаете.

    • Другие эмпирические правила:

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

    • Написание в сборке заняло бы самое долгое время, в C меньше, на C ++ еще меньше, на более современных языках, таких как C #, Java, Delphi еще меньше.

    • У кого больше собственных компонентов, которые вам подходят? Что у вашей команды есть опыт.

    • Если вы используете .NET (C #), то WPF может помочь вам снизить сцепление между графическим интерфейсом и бизнес-логикой и сделать более удобный интерфейс, но для этого требуется время, чтобы узнать, как его использовать (рекомендуется 5-дневный минимальный курс ).


1
  • Как вы решаете, должна ли часть использовать программный продукт или собственный код? (учитывая, что некоторые инструменты являются удивительными, но потребуется много времени для изучения)

Задайте себе два вопроса.
1) Является ли это зрелым продуктом. Если да, то
2) Сколько времени потребуется, чтобы создать функциональность, которую он предоставляет по своему усмотрению. Если это значение умножает ваш часовой тариф выше стоимости продукта, используйте этот продукт.

  • Как вы выбираете правильный программный продукт?

Обратитесь в свою сеть других разработчиков. Использовали ли они это, столкнулись с проблемами. Обратитесь к interweb. Создайте прототип с помощью продукта. Это хорошо работает? Любые серьезные ошибки?

  • Сколько времени (в процентах) должно пройти этот этап выбора нужного продукта, если таковой имеется, и сколько времени для оценки одного продукта?

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

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

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

  • Есть ли обратная связь, нормально ли передумать, после того, как вы прилагаете усилия в продукте и не считаете его непригодным?

Если вы обнаружите, что это не работает, нет ничего плохого в возвращении. На самом деле вам, вероятно, придется. В идеале вы найдете это на ранней стадии. Не в 11-й час. Опять же, это цель прототипирования.


1

Здесь уже есть некоторые действительно хорошие ответы, поэтому я не буду повторять это, но есть один момент, который вы должны определенно рассмотреть, и хотя я бы подумал, что его очевидное я еще не видел, как он упоминается здесь:
персонал, который у вас есть для реализации решение, их основные компетенции и общий уровень их компетенции.
Кто вы должны это реализовать (предполагая, что это команда, а не только вы сами, но релевантная, даже если ее только вы тоже ...) могут иметь ОГРОМНОЕ влияние на результат. Если у вас нет опытных программистов, чтобы помочь вам разобраться в этом, вам лучше искать какой-то продукт OTS, чтобы выполнить эту работу ... Или, даже если у вас есть программисты, которые вряд ли удастся, вы все равно можете хотят найти решение с более низким общим проектным риском.

дизайн, проект-менеджмент, оценка,
Похожие вопросы