- •6. V модель жцпо
- •7. Rup технология.
- •8. Инкрементная модель жцпо.
- •9. Xp модель жцпо
- •10. Этапы жцпо. Содержание этапов системный анализ и проектирование.
- •11. Этапы жцпо. Содержание этапов реализации и сопровождения.
- •12. Архитектура по, выбор архитектур.
- •13. Проектирование по, основные подходы к проектированию.
- •14. Проектирование по с помощью uml.
- •15. Основные строительные блоки uml
- •16.Основные типы сущностей в uml.
- •17.Основные типы связей в uml
- •18.Основные типы диаграмм uml.
- •19. Качество по, модель качественного по.
- •Может определяться следующими критериями: Качество исходного кода
- •Факторы качества
- •С точки зрения пользователя
- •Модель качества программного обеспечения
- •20. Основные черты качественного по.
- •21. Качество по: мобильность и модифицируемость.
- •22. Качество по: правильность и надёжность.
- •23. Стиль программирования, необходимость использования стиля программирования.
- •24. Стиль программирования, использование комментариев.
- •25. Стиль программирования, система идентификации.
- •26.Стиль программирования, Венгерская нотация.
- •27. Обоснование выбора языка программирования.
- •28. Различия между языками программирования низкого и высокого уровня.
- •29. Языки программирования системного уровня.
- •30. Языки программирования для научных и инженерных расчетов
- •31. Языки для Web программирования
- •32. Языки для экономических задач
- •34. Средства реализации языков программирования.
- •35. Основные парадигмы программирования.
- •36. Основные рекомендации по оптимизации по.
- •37. Оптимизация циклов.
- •38. Оптимизация условных и логических выражений
- •39. Стратегия оптимизации.
- •40. Использование оптимизирующего компилятора.
- •41. Разработка универсального по. Основные приёмы разработки универсального по.
- •42. Понятие отладки, основные стратегии проведения отладки.
- •43. Характерные ошибки программистов.
- •44. Защитное программирование.
- •45. Инструментальная отладка.
- •46. Тестирование по. Невозможность исчерпывающего тестирования.
- •47. Уровни тестирования.
- •48. Этапы тестирования.
- •49. Методы и стадии тестирования.
- •50. Разработка пользовательского интерфейса.
- •51. Основные стратегии разработки пользовательского интерфейса.
- •52. Основные принципы разработки интерфейса.
- •53. Еспд
37. Оптимизация циклов.
Оптимизация - это модификация системы для улучшения ее эффективности.
Значительная часть времени при инициализации цикла тратится на инициирование и проверку индекса цикла. Тщательная организация выполнения цикла может сэкономить время. Пример:
for(int i = 0; i < 500; i++) { // инициируется 1 раз, завершается 500 раз
for(int j = 0; j < 5; j++) { // инициируется 500 раз, завершается 2500 раз
foo(); } }
// 501 инициализация
// 3000 завершений
for(int i = 0; i < 5; i++) { // инициируется 1 раз, завершается 5 раз
for(int j = 0; j < 500; j++) { // инициируется 5 раз, завершается 2500 раз
foo(); } }
// 6 инициализация
// 2505 завершений
2.
for(int i = 0; i < 100; i++) {
for(int j = 0; j < 100; j++) {
for(int k = 0; k < 100; k++) {
foo(); } } }
Любая экономия, даже самая малая, внутри внутреннего цикла, в данном случае приводит к экономии в 10^6 раз. Очень малые улучшения внутри внутреннего цикла выгоднее, чем значительное улучшение вне его. Типичными ошибками, влияющими на эффективность, являются повторяющиеся вычисления в циклах. Их нужно выносить из циклов. Данный приём называется исключением инвариантных выражений или чисткой цикла.
3.
FOR I = 1, 1000, 1
A[I] = B[I]
FOR I = 1, 1000, 2
A[I] = B[I]
A[I + 1] = B[I + 1]
4. Сжатие(объединение) циклов
38. Оптимизация условных и логических выражений
Оптимизация - это модификация системы для улучшения ее эффективности.
Оптимизация условных выражений
if (a > b && a > c && b > c) ...
Для оптимизации подобных выражений по возможности нужно располагать условия в порядке возрастания истинности.
if (a > b || a > c || b > c) ...
Для оптимизации подобных выражений по возможности нужно располагать условия в порядке убывания истинности.
Оптимизация операций ввода вывода
Для оптимизации операций ввода/вывода желательно минимизировать их использования (они занимают много времени). Необходимо помнить что магнитные носители предназначенные для хранения больших объемов информации работают значительно медленнее чем Кеш память.
Оптимизация работы с массивами
При работе с массивами нужно помнить, что для увеличения быстродействия там где возможно использовать статического массива, а для экономии памяти динамическое выделение массива. Необходимо помнить, что при работе с массивами индексы должны быть записаны в максимально простой форме, а элементы массива располагаться последовательно. При работе с массивами помните, что в разных языках расположение элементов массива может быть различным по строкам и столбцам.
39. Стратегия оптимизации.
Оптимизация - это модификация системы для улучшения ее эффективности.
Стратегия проведения оптимизации
1. Горячие точки или узкие места программы. Для того, чтобы повысить эффективность оптимизации, необходимо определить, какой фрагмент программного кода потребляет наибольшую часть ресурсов. По статистическим данным, 95% ресурсов потребляется 5% кода. Фрагменты кода, которые потребляют наибольшее количество ресурсов, называют горячими точками программы. Процесс нахождения горячих точек программы называется профилированием программного продукта. Профилирование программных продуктов может проводиться вручную или автоматически при помощи программ-профилировщиков.
2. Необходимость создания эффективной программы решается ешё на этапе системного анализа.
3. Проводится разработка правильного ПО с учётом всех требований разработки рентабельного ПО, в результате чего должно быть создано правильное ПО. При этом при написании программ должны быть учтены основные принципы создания оптимального ПО.
4. В случае недостаточной эффективности программы пропускаем её через оптимизирующий компилятор
5. Если этого недостаточно, пропускаем программу через профилировщик и ищем горячие точки.
6. Максимально оптимизируем горячие участки программы.