Теории разработки программного обеспечения

В моей карьере я столкнулся с двумя широкими типами теории: физическими теориями и теориями образования/управления:

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

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

Как студент-программист по разработке программного обеспечения, похоже, существует множество теорий разработки программного обеспечения (таких гибких программ, тестирования, дизайна, шаблонов, экстремального программирования). Должен ли я считать эти теории физическими или образовательными/управленческими?

Или я неправильно понял разработку программного обеспечения и оказался в положении "даже не так"?

Ответ 1

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

Некоторые разработки программного обеспечения имеют прочную математику: O (n log n) сортирует быстрее, чем O (n ^ 2), и т.д. Но в основном разработка программного обеспечения связана с тем, как люди думают о программном обеспечении. Как организовать вещи, чтобы сопровождающие не сходили с ума, предвидя, что может измениться, а что нет, предотвратить и обнаружить человеческие ошибки и т.д. Это отрасль психологии или социологии.

Ответ 2

Я думаю, что соответствующий теоретический раскол - это "более твердые" науки (где могут быть доказательства) и более мягкие темы с качественными ответами и несколькими доказательствами, если они есть.

Программное обеспечение для меня в основном касается языка и общения, темы, которая в основном является качественной и субъективной. Время от времени мы затрагиваем алгоритмы и другие "жесткие" области, где существуют доказательства и строгие формализмы. Итак, да, и то, и другое.

Ответ 3

Неплохо.

Все "теории" разработки программного обеспечения кажутся не чем иным, как советом по конкретным вещам, чтобы попытаться понять, делают ли они вас и вашу команду более продуктивными. Даже если бы можно было их подделать под фальсификацией, как в научных теориях, было бы очень мало смысла. Это не означает, что не стоит узнавать о них - au contraire, вам следует ознакомиться с максимально возможным количеством и попытаться выяснить, в каких командах и среде они могут работать лучше. Но будьте осторожны: избегайте догмы и думайте, что есть серебряные пули.

Ответ 4

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

Ответ 5

Они похожи на рецепты: это рекомендации, успех которых зависит:

  • Отчасти по качеству рецепта
  • Отчасти по качеству ингредиентов
  • Отчасти, по навыкам (и времени, доступным) практикующим

Ответ 6

Помимо теорий существуют также рамки, модели и эмпирические правила. Идеи, конечно, но основанные на менее строгой основе, которые свободно относятся к вашей категории сокращения/управления.

У Computer Science есть некоторые сильные основополагающие теории (физические по вашему определению), но в основном они состоят из связывания меньших элементов.

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

Павел.

Ответ 7

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

Ответ 8

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

Было бы интересно посмотреть, работает ли кто-нибудь в обновленном опросе.

Авионика и программное обеспечение, работающие на моем автомобиле, похоже, не сработают ни с чем рядом с тарифами, указанными для корпоративного программного обеспечения. Почему корпоративные разработчики не пристально следят за их практикой? Может быть, мы все должны писать Аду... [просто шучу]

Ответ 9

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

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

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

[мыльница] Я начал программировать на Atari 400 с преобразованной плоской клавиатурой и обновлением на 64 КБ. Когда я начал учиться в колледже, это был VB 1.0, который я видел, когда мой преподаватель экономики использовал учебный инструмент, чтобы помочь людям узнать больше об экономике, используя графики и визуальные материалы. Это было круто! И я знал, что смогу это сделать.

Этот же Учитель экономики, который позже стал учителем ИТ (он был хорош), спросил, буду ли я преподавать класс по отладке. Он сказал: "Я не встречал кого-то, кто понимает концепции и обладает естественной способностью отлаживаться так же быстро, как и вы, научил бы нас тому, что вы знаете, и как вы это делаете". Конечно, это было подталкивание в моем эго, но чтобы учить, наставлять и помогать другим.

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

Кто-то однажды сказал мне: "Ты так же хорош, как и твои инструменты". Учитесь, практикуйте и развивайтесь.

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

Ответ 10

Как правило, поле Информатики делится на 4 области (нужно найти ссылку на источник, SWEBOK?), которые различны, хотя связаны и взаимосвязаны:

  • Информатика
  • Разработка программного обеспечения
  • Компьютерная инженерия
  • Информационные системы

Существует хороший анализ инженерных наук и науки в Steve McConnel "Профессиональное развитие программного обеспечения". Проверьте его Разработка программного обеспечения, а не компьютерная наука.

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

Ответ 11

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

Или разработка программного обеспечения "инженерная"?

Факты:

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

Реальность или Фантазия? Выберите один: -)

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

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

И есть еще одна реальность

% 80 мероприятий по разработке программного обеспечения действительно не нуждается в особом умении. Любой "средний" человек может это сделать.

Но оставшаяся часть %20 ​​- это сложная и многоплановая задача.

Даже новая перспектива My One: -)

В этом представлении говорится, что разработка программного обеспечения не является подразделением "Инжиниринг" . Это отрывок из "Естественных наук и социальных наук". Поэтому нам нужна антропология и антрополог.

Ответ 12

Теория: Я думаю, что теория - это то, что описывает "как" работает естественная система, и для ее доказательства имеет логические выводы, основанные на предыдущих знаниях, обоснованные логическими индукциями, сделанными с помощью экспериментов.

Вы называете все тело этих теорий и экспериментов наукой.

Программное обеспечение: Программное обеспечение - это антропогенная система. инженерная система. Инженерия применяет науку для создания новых систем. В этом отношении чистая программная инженерия применяет науку о дискретных математических системах.

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

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