Какие показатели качества существуют у архитектуры ПО, к чему нужно стремиться?
Например, при кодировании необходимо стремиться к повторному использованию кода, читаемости кода, эффективности (скорости)... А при разработке архитектуры?
Показатели качества архитектуры делятся на 3 группы: Показатели качества системы (готовность, модифицируемость, производительность, безопасность, практичность, масштабируемость, переносимость на различные платформы). Коммерческие показатели качества (сроки выхода, затраты/прибыль и т.п). Показатели качества самой архитектуры (концептуальная целостность, правильность и завершённость, возможность построения). Эти показатели также могут влиять на другие качества (напр. модифицируемость).
Здравствуйте, PaiL, Вы писали:
PL>Показатели качества архитектуры делятся на 3 группы: PL>Показатели качества системы (готовность, модифицируемость, производительность, безопасность, практичность, масштабируемость, переносимость на различные платформы). PL>Коммерческие показатели качества (сроки выхода, затраты/прибыль и т.п). PL>Показатели качества самой архитектуры (концептуальная целостность, правильность и завершённость, возможность построения). Эти показатели также могут влиять на другие качества (напр. модифицируемость).
+ верифицируемость
Здравствуйте, PaiL, Вы писали:
PL>Показатели качества самой архитектуры (концептуальная целостность, правильность и завершённость, возможность построения). Эти показатели также могут влиять на другие качества (напр. модифицируемость).
На мой взгляд, показатели качества должны быть измеряемы и проверяемы. Причем критерии измерения и проверки должны быть предложены раньше самих показателей. Т.е. сначала — предлагаем критерии оценки, а только затем — формулируем сам показатель.
Мне очень трудно представить себе измеряемые критерии для "концептуальная целостность, правильность и завершённость, возможность построения".
Критерий "модифицируемость", на мой взгляд, можно измерить. Только сначала нужно описать сами возможные изменения, т.е. указать, к каким изменениям архитектура устойчива. Соответственно, выбор этих изменений из множества возможных нужно обосновать.
PL>>Показатели качества самой архитектуры (концептуальная целостность, правильность и завершённость, возможность построения). Эти показатели также могут влиять на другие качества (напр. модифицируемость).
КЛ>На мой взгляд, показатели качества должны быть измеряемы и проверяемы.
В точку. Но есть ли такие измеряемые показатели для архитектуры?
...
КЛ>На мой взгляд, показатели качества должны быть измеряемы и проверяемы. Причем критерии измерения и проверки должны быть предложены раньше самих показателей. Т.е. сначала — предлагаем критерии оценки, а только затем — формулируем сам показатель.
Один из важнейших критериев кода — читаемость. Как его измерить количественно? Имхо так же и с архитектурой — она в первую очередь для человека, а не для машины. То есть качество архитектуры — вещь субъективная, и измерить его довольно сложно, хотя какие-то общие правила безусловно есть. Вчастности те что приведены выше.
КЛ>Мне очень трудно представить себе измеряемые критерии для "концептуальная целостность, правильность и завершённость, возможность построения". КЛ>Критерий "модифицируемость", на мой взгляд, можно измерить. Только сначала нужно описать сами возможные изменения, т.е. указать, к каким изменениям архитектура устойчива. Соответственно, выбор этих изменений из множества возможных нужно обосновать.
Большинство этих критериев сильно зависят от полноты сбора требований и предварительного анализа, и оценивать архитектуру можно лишь в заданных этими предварительными этапами рамках. И очень вероятно что самая замечательная архитектура все же не выправит неудачный сбор требований.
Но если все-таки оценивать архитектуру то можно составить чек-листы с вопросами, наподобие тех что дает в "Совершенном коде" Макконнелл. Другое дело что в каждом случае эти чек-листы могут довольно сильно различаться... и грамотное их составление — уже пол дела.
Здравствуйте, sraider, Вы писали: S>Например, при кодировании необходимо стремиться к повторному использованию кода, читаемости кода, эффективности (скорости)... А при разработке архитектуры?
К асинхронным вызовам, масштабируемости и слабой связности компонентов и подсистем.