Спецкурс "Современные практики разработки ПО",...

Post on 24-Jan-2015

131 Views

Category:

Education

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Внешние конфиги, сборка, автоматические тесты

Спецкурс. Занятие 4

Персистентность (время жизни) – длительность существования данных

Внешние конфиги

Виды персистентности:1. локальная – все параметры методов, локальные переменные блоков2. динамическая – все, что создано при помощи new, живет до сборки мусора либо до delete

Внешние конфиги

Виды персистентности:3. глобальная – все статические поля классов и глобальные переменные4. дисковая – все, что сохранено в файлы на диске – в БД или просто в файловой системе

Внешние конфиги

Время связывания переменных:1. при написании кода – использование «магических чисел»2. при компиляции – использование именованных констант

Внешние конфиги

Время связывания переменных:3. при загрузке программы – чтение значения из внешнего источника (конфиг-файл)4. при создании объекта – любой способ, но в момент создания объекта

Внешние конфиги

Время связывания переменных:5. по требованию – в любой момент работы программы

Внешние конфиги

Важно:чем раньше время связывания, тем ниже гибкость и ниже сложность кода.Обеспечивайте уровень гибкости, удовлетворяющий требованиям, но не больше!

Внешние конфиги

Внешние конфиги в Java:1. файлы .properties2. файлы XML3. бинарные файлы (не для людей)

Внешние конфиги

Файлы .properties:1. пары <ключ>=<значение>2. # - однострочный комментарий

Пример:tabSize = 4useSpaces = true

Внешние конфиги

Файлы XML:<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd”> <log4j:configuration xmlns:log4j=http://jakarta.apache.org/log4j/> <appender name="console" class="org.apache.log4j.ConsoleAppender”> <param name="Target" value="System.out"/> <layout class="org.apache.log4j.PatternLayout”> <param name="ConversionPattern" value="aa %p %c: %m%n"/> </layout> </appender> <!--Корневой logger--> <root> <priority value ="debug" /> <appender-ref ref="console" /> </root>

Внешние конфиги

Цели создания внешних конфигов:1. увеличить гибкость2. избежать перекомпиляции3. настроить под систему4. перенести настройки в другую систему

Внешние конфиги

Сборка проекта – получение из исходного кода и ресурсов (конфиг-файлов, картинок, стилей и т.д.) исполняемого модуля

Сборка проекта

Примеры сборки:1. создание файла .exe при помощи утилиты make из файлов .cpp, .h, .rc и т.д.2. создание .class или .jar файлов при помощи javac – только для десктопных приложений

Сборка проекта

Сборка Java-программ:1. Apache Ant – низкоуровневый сборщик, все файлы внутри проекта, может многое, стиль императивный2. Apache Maven – использует внешние репозитории кода, стиль декларативный, поддерживает версионность библиотек, чувствителен к соглашениям

Сборка проекта

Apache Ant:1. в корне проекта build.xml2. может использовать .properties файлы3. пример4. сайт

Сборка проекта

Apache Maven:1. в корне проекта pom.xml2. построен на плагинах (plug-in)3. пример4. сайт

Сборка проекта

Регрессионное тестирование – любой вид тестирования, позволяющий обнаружить ошибки в уже протестированном коде

Автотесты

Модульное тестирование – автоматизированная проверка функций (методов) изолированно от остального кода

Автотесты

Модульный тест – любой код, который вызывает функцию (метод), передавая ей входные параметры, и проверяет постусловие и инвариант

Автотесты

Основные принципы:1. независимость – глобальные объекты в одном состоянии до и после теста2. быстрота выполнения – иначе не будут часто запускать

Автотесты

Преимущества использования:1. поощряются изменения и рефакторинг2. используются интерфейсы3. сокращается время на ручное регрессионное тестирование

Автотесты

Инструментарий:1. библиотека xUnit от Кента Бека (JUnit для Java) 2. прогон тестов в IDE3. команды в Ant и настройки в Maven4. Continuous integration сервера (позже)

Автотесты

Test driven development (разработка через тестирование):написание теста предшествует реализации, реализация постепенно совершенствуется, чтобы проходить новые тесты

Автотесты

top related