1 Основы проектирования программных систем


Download 256.03 Kb.
bet25/25
Sana21.04.2023
Hajmi256.03 Kb.
#1370144
TuriГлава
1   ...   17   18   19   20   21   22   23   24   25
Bog'liq
Orlov Programmnaya injeneria распознан страницы

Рефакторинг
Рефакторинг — важное нроектное действие, востребованное во многих гибких процессах разработки. Рефакторипг является техникой реорганизации, упрощения структуры проектного решепия или программного кода в комноненте (без измене­ния его функций или новедения). Известпый авторитет в этой области М. Фаулер дает такое онределепие [16]:
«Рефакторипг нредставляет собой процесс такого изменения программной системы, при котором не меняется впешнее поведение кода, но улучшается его внутреппяя структура. Это способ систематического приведения кода в норядок, при котором шансы появления новых ошибок минимальны. В сущности, нри прове­дении рефакторинга кода вы улучшаете его дизайн уже после того, как он паписап».
При рефакторипге в существующем нроектном решении ищется избыточность, неиспользуемые элемепты, неэффективные алгоритмы, плохие структуры данных и другие характеристики и элементы, которые можно модифицировать для улуч­шения качества системы. Нанример, обнаруживается низкая связность нескольких функций внутри компонента. После тщательпого анализа принимается решепие разделить компонент на несколько комнонептов с высокой связностью. Далее итог рефакторинга подвергается автоматическому тестированию. В результате получают продукт, который легче интегрировать и сопровождать. В дальнейшем мы приведем подробный пример применения этой технологии.
Контрольные вопросы и упражнения

  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. Дап псевдокод программы:

Program Main
Module А;
Begin А
Вызов В(х, у);
End А;
Module В (n:Integer; m:Reel);
Begin В
End В;
Begin Main
Вызов А; End Main.
Определите сценление модулей А и В.

  1. Дап псевдокод программы:

Program Main
Module А;
Begin А
Вызов В(х, у);
End А;
Module В (n:array (1..10) of Integer; m:Real);
Begin В
End В;
Begin Main
Вызов A;
End Main.
Определите сценление модулей А и В.

  1. Дап псевдокод программы:

Program Main
Var Glob:Real;
Module A;
Begin A
Glob:=3.14;
Вызов В;
End A;
Module B;
Begin В
x:=Glob;
End B;
Begin Main
Вызов A;
End Main.
Определите сценление модулей А и В.

  1. Какие нодходы к оценке сложности системы вы знаете?

  2. Что определяет иерархическая структура программной системы?

  3. Поясните подходы к оцепке иерархической структуры проектирования.

  4. Поясните нопятия коэффициента объединения по входу и коэффициента раз­ветвления по выходу.

  5. Что определяет невязка структуры?

  6. Поясните информационные коэффициенты объединения и разветвлепия.

  7. В чем суть ношаговой детализации?

  8. Что такое нересекающее нопятие?

  9. В чем заключается снецифика аснектов?

  10. С какой целью выполняется рефакторинг?

1 Глава 5 «Классические методы анализа» доступна для скачивания на сайте издательства (piter.com).
Справедлива следующая аксиома разработки: может быть плохая ПС при хорошем проектировании, но пе может быть хорошей ПС при плохом проектиро­вании. Проектирование обеспечивает нас такими представлениями ПС, качество которых можно оценить. Проектирование — единственный путь, обеспечивающий правильную трансляцию требований заказчика в конечпый программный нродукт.

2 Под структурированием понимают комплекс задач, связанных с формированием структурной орга­низации системы.

Download 256.03 Kb.

Do'stlaringiz bilan baham:
1   ...   17   18   19   20   21   22   23   24   25




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling