Главная - Литература

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 [151] 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294

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

Надежность - способность системы выполнять необходимые функции в предопределенных условиях; средний интервал между отказами.

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

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

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

Живучесть - способность системы продолжать работу при вводе недопустимых данных или в напряженных условиях.

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

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

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

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

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

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

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

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

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



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

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

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

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

тфтт

Усиливает f Ослабляет

Рис, 20-1, Концентрация на одной внешней характеристике качества ПО может влиять на другую характеристику положительно, отрицательно, а может и не влиять

Улучшение некоторых аспектов качества неизбежно приводит к ухудшению других. Необходимость согласования решения с рядом противоречащих целей делает разработку ПО поистине инженерной дисциплиной. Взаимосвязь внешних характеристик качества пояснена на рис. 20-1. Подобные отношения имеют место и между внутренними характеристиками.

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



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

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

20.2. Методики повышения качества ПО

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

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

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

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

Принципы разработки ПО Технический характер ПО во щщтшк тшг Один

время его разработки должен контролироваться рядом прин- принципов разра(откй ПО,

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



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 [151] 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294



0.0029