2009-08-27 7 views
3

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

В прошлом году я получил новую работу в качестве менеджера программного обеспечения, который, как я думал, может преуспеть. Я опытный во многих областях программирования, таких как GUI, веб, RIA, сетевое приложение. Я хороший решатель. Как правило, я знаю, как организовать код в чистом виде. И я всегда работаю.

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

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

Это вызов, который я никогда не встречал. Я не знаю, как показать моему боссу, что нынешняя система достаточно хороша. Я сказал ему, что «у нас есть xxx, yyy», но он понятия не имеет, что это такое. Я показал ему UML, чтобы объяснить, что мы сделали, но он супер веселый C и скептически относится к OO и UML.

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

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

+2

Я понимаю, что каждый должен оплачивать свои счета, но это действительно работа, на которую вы хотите повесить? Либо ваш босс знает, чего он хочет, и он говорит вам, чтобы вы могли его выполнить (не задавали бы этот вопрос), или он говорит, что это не хорошо, потому что он не произвел его, и в этом случае вы никогда не добьетесь успеха. – olle

+2

Объектно-ориентированный скептик C Fanboy - OOSCF родился новый акроним! Мои симпатии :( –

+0

Я думаю, что здесь есть интересный вопрос, но сейчас вопрос очень расплывчатый. О каком продукте мы говорим? Какое решение вы создали? (Или, может быть, какие виды подходы и технологии, которые вы использовали?) Ваш босс может быть рывком, или он может этого не делать, но трудно решить эту проблему. – Telemachus

ответ

14

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

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

Я думаю, вы совершенно правы, чтобы не строить, что может не произойти. Вы можете сходить с ума от этого. Вы не можете все предвидеть.

+1

Если босс является поклонником C и скептически относится к OO, я не думаю это вопрос о том, что жарко. (Обратите внимание, что я не делаю никаких суждений о C и OO. Я просто говорю, что OO, безусловно, сейчас горячо в технических кругах.) – Telemachus

+3

Я не думаю, что OO сейчас жарко. OO было жарким 10+ лет назад. В настоящее время скрипты горячие. Функциональное программирование становится горячим, управляемый код горячий. OO - это просто курс для курса (и в любом случае не более эффективный, чем процедурное программирование). – cletus

+0

@Cletus: вы можете знай поле лучше меня, так что я на вопрос о том, что жарко. Но как любовь босса C в сочетании с функциональным программированием или сценарием? – Telemachus

2

Учитывая, что ваш босс является скептиком OO, я предлагаю вам перестроить ваше приложение с помощью Lego. Я уверен, он сочтет это «отличным».

2

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

+0

http://en.wikipedia.org/wiki/Asymptote – slf

0

Купите книгу своего начальника Schlossnagle по телефону Scalable Internet Architectures. Тогда вам будет о чем поговорить, кроме «нашего продукта не продвинутый достаточно».

Вы должны, BTW, узнать, что ваш босс считает «продвинутым». Сделайте что-нибудь, чтобы обеспечить больше этой «продвинутой» вещи, которую хочет ваш босс. Не делайте все, что просит ваш босс, но убедитесь, что он выглядит, как будто вы заботитесь о «продвинутых». Что бы это ни значило.

2

«Отличная» архитектура - очень субъективная вещь.Архитектура превосходна или не основана на целях вашего проекта.

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

Что делает ваше приложение?
Каковы ограничения на это, как деловые, так и технические?
Насколько велик масштаб?
Какова ожидаемая продолжительность жизни этого приложения?

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


Мое предложение было бы обернуть это. Спросите своего босса, каковы его цели для архитектуры вашего проекта? Покажите ему, как ваша нынешняя архитектура отвечает им, или адаптируйте ее для работы.

0

Говоря о том, как «красивый» дизайн, вы никогда не согласитесь ни о чем.

Лучше уменьшить дискуссию на факты и цифры:

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

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

3

Некоторое время назад Microsoft выпустила Руководство по архитектуре приложений бесплатно, а также некоторые карманные ссылки. Я думаю, что вы и ваш босс должны прочитать их вместе.

2

я испытал во многих разных доменах программирования, как GUI, веб RIA, сетевых приложений. Я хороший решатель проблем. Как правило, я знаю, как организовать код в чистом виде. И I am всегда напряженно работает

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

Может быть решение не в достижении какой-то плохо определенное превосходство, но выявление и исправление некоторых конкретных неисправностей вы не заметили, или решили игнорировать

1

Хорошая архитектура одна, которая отвечает потребностям бизнеса ,

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

0

Отличная архитектура - это та, которая соответствует потребностям проблемы. Если вы это сделали, вы проделали хорошую работу.

0

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

0

«Отличная» архитектура зависит от типа и деталей проекта, поэтому она является переменной. Но хорошая архитектура в основном должна соответствовать по крайней мере следующим правилам:

  • ремонтопригодности
  • расширяемость
  • Наличие
  • Эффективность
  • Масштабируемость
  • Надежности
  • Тестируемости
  • Юзабилити
+0

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

Смежные вопросы