Содержание
ВСТУПЛЕНИЕ .......................................................................................... 1
ЛАБОРАТОРНАЯ РАБОТА №0 (*) ИНСТРУМЕНТЫ УПРАВЛЕНИЯ
ПРОЕКТАМИ (PROJECT MANAGEMENT) ............................................................ 4
1.1 Цель работы ............................................................................ 4
1.2 Теоретические сведения ........................................................ 4
1.3 Порядок выполнения работы ................................................ 4
1.4 Задания для самостоятельной работы .................................. 6
1.5 Содержимое отчета ................................................................ 6
1.6 Контрольные вопросы............................................................ 7
1 ЛАБОРАТОРНАЯ РАБОТА №1 ВСТАНОВЛЕННЯ ТА НАЛАШТУВАННЯ
СЕРВЕРА GIT ...................................................................................................... 8
1.7 Цель работы ............................................................................ 8
1.8 Теоретические сведения ........................................................ 8
1.8.1 Протоколы работы с git-сервером................................... 8
1.8.2 Установка и начальная настройка Git-сервера .............. 8
1.8.3 Настройка доступа к Git-серверу с
использованием Gitosis .................................................... 9
1.8.4 Настройка публичного доступа к репозиторию с
использованием Gitweb .................................................. 12
1.8.5 Интеграция системы управления проектами
Redmine с Git ................................................................... 13
1.9 Порядок выполнения работы .............................................. 13
1.10 Задания для самостоятельной работы ................................ 14
1.11 Содержимое отчета .............................................................. 14
1.12 Контрольные вопросы.......................................................... 15
2 ЛАБОРАТОРНАЯ РАБОТА №2 ІНСТРУМЕНТИ ЗБОРКИ ПРОЕКТІВ
(MAVEN) 16
2.1 Цель работы .......................................................................... 16
2.2 Теоретические сведения ...................................................... 16
2.3 Порядок выполнения работы .............................................. 17
2.3.1 Организация сборки многомодульного проекта ......... 17
2.3.2 Maven-изация курсового проекта по дисциплине
«Моделирование» ........................................................... 29
2.4 Задания для самостоятельной работы ................................ 30
2.5 Содержимое отчета .............................................................. 30
2.6 Контрольные вопросы.......................................................... 31
3 ЛАБОРАТОРНАЯ РАБОТА №3 ЗАСОБИ МОДУЛЬНОГО ТЕСТУВАННЯ
(JUNIT) 32
3.1 Цель работы .......................................................................... 32
3.2 Теоретические сведения ...................................................... 32
2
Інженерія програмного забезпечення
3
Методичні вказівки до виконання лабораторних робіт
4
Інженерія програмного забезпечення
– установить ruby:
для ОС Ubuntu:
$ aptitude install ruby1.8 ruby1.8-dev irb rdoc ri
для ОС Fedora:
$ yum install ruby ruby-devel ruby-libs ruby-mode
ruby-rdoc ruby-irb ruby-ri ruby-docs
– скачать менеджер пакетов ruby (пакет rubygems 1.3.7), рас-
паковать и выполнить в корне директории команду:
$ ruby setup.rb
– с помощью менеджера пакетов ruby, установить rails вер-
сии 2.3.5, rack 1.0.1 и rake 0.8.3 соответствующими коман-
дами, например:
$ gem install rails –v=2.3.5
– установить модуль ruby mysql:
$ gem install mysql –with-mysql-
config=/path/to/mysql_config
– скопировать и распаковать пакет redmine-1.0.0.tar.gz;
– создать пустую базу данных MySQL и соответствующего
пользователя redmine, предоставив ему права на созданную
базу:
create database redmine character set utf8;
create user 'redmine'@'localhost' identified by
'my_password';
grant all privileges on redmine.* to
'redmine'@'localhost';
– указываем настройки БД для ‗production‘ в файле con-
fig/database.yml.
– создаем ключ сессии, выполнив в корневой директории:
$ rake generate_session_store
и структуру базы данных:
$ rake db:migrate RAILS_ENV="production"
– заполняем БД данными конфигурации:
$ rake redmine:load_default_data
RAILS_ENV="production"
– настраиваем доступ (пользователь, от имени которого за-
пущен Redmine, должен иметь права на запись к директори-
ям files, log, tmp):
$ useradd redmine
$ chown -R redmine:redmine files log tmp pub-
lic/plugin_assets
$ chmod -R 755 files log tmp public/plugin_assets
– проверим установку:
$ ruby script/server webrick -e production
По адресу http://localhost:3000 заходим на стартовую стра-
ницу Redmine.
3. Настраиваем веб-сервер apache для работы redmine.
5
Методичні вказівки до виконання лабораторних робіт
6
Інженерія програмного забезпечення
– функционал системы;
– выводы.
7
Методичні вказівки до виконання лабораторних робіт
1 Лабораторная работа №1
Встановлення та налаштування сервера git
1.7 Цель работы
Дослідження архітектури, синтаксису та принципів роботи з роз-
поділеними системами керування версіями документів на прикладі git.
Створення та налаштування серверу git-репозиторію.
Інтеграція системи керування проектами Redmine c Git-
репозиторием (*якщо виконували лаб.роботу №0).
8
Інженерія програмного забезпечення
9
Методичні вказівки до виконання лабораторних робіт
[group gitosis-admin]
writable = gitosis-admin
members = git
Т.е. git – единственный пользователь, который имеет доступ к ре-
позиторию проекта gitosis-admin.
К примеру, добавим новый проект. Создадим новый раздел
mobile, в котором перечислим разработчиков команды mobile и проек-
тов, к которым разработчики должны иметь доступ. Создадим новый
проект iphone_project. Изменим содержимое файла gitosis.conf:
[group mobile]
10
Інженерія програмного забезпечення
writable = iphone_project
members = git
После внесения изменений в проект gitosis-admin, необходимо
зафиксировать изменения и отправить изменения на сервер:
$ git commit -am 'add iphone_project and mobile group'
[master]: created 8962da8: "changed name"
1 files changed, 4 insertions(+), 0 deletions(-)
$ git push
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 272 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To git@gitserver:/home/git/gitosis-admin.git
fb27aec..8962da8 master -> master
Можно начать работу с новым проектом iphone_project, указав
его как удаленный репозиторий для локальной копии проекта. Нет не-
обходимости в создании «чистой» копии репозитория для новых проек-
тов на сервере — Gitosis создает их автоматически при первой отправке
изменений в проект (push).
$ git remote add origin
git@gitserver:iphone_project.git
$ git push origin master
Initialized empty Git repository in
/home/git/iphone_project.git/
Counting objects: 3, done.
Writing objects: 100% (3/3), 230 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@gitserver:iphone_project.git
* [new branch] master -> master
Чтобы предоставить доступ другим пользователям к проекту, не-
обходимо добавить их публичные ключи в каталог keydir.
$ cp /tmp/id_rsa.vasya.pub keydir/vasya.pub
$ cp /tmp/id_rsa.petya.pub keydir/petya.pub
После этого можно добавить новых пользователей в группу
mobile для предоставления доступа (read/write) к проекту
iphone_project:
[group mobile]
writable = iphone_project
members = git vasya petya
Для предоставления пользователю vasya доступа к проекту толь-
ко на чтения, необходимо изменить gitosis.conf:
[group mobile]
writable = iphone_project
members = git petya
[group mobile_ro]
readonly = iphone_project
members = vasya
11
Методичні вказівки до виконання лабораторних робіт
[group mobile]
writable = iphone_project
members = @mobile_committers
Желательно также добавить loglevel=DEBUG в разделе [gitosis].
1.8.4 НАСТРОЙКА ПУБЛИЧНОГО ДОСТУПА К РЕПОЗИТОРИЮ С ИСПОЛЬЗОВА-
НИЕМ GITWEB
12
Інженерія програмного забезпечення
13
Методичні вказівки до виконання лабораторних робіт
1. Запустить Redmine.
2. Создать в Redmine свой проект и настроить для него репозито-
рий.
14
Інженерія програмного забезпечення
15
Методичні вказівки до виконання лабораторних робіт
2 Лабораторная работа №2
Інструменти зборки проектів (maven)
2.1 Цель работы
Изучение цикла сборки проекта. Практическое применение инст-
румента сборки maven. Добавление фазы тестирования в жизненный
цикл проекта. Написание модульных тестов с использованием библио-
теки JUnit.
16
Інженерія програмного забезпечення
17
Методичні вказівки до виконання лабораторних робіт
<url>http://devel.stu.cn.ua:8081/artifactory/repo/
</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://devel.stu.cn.ua:8081/artifactory/plugi
ns-releases/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>snapshots</id>
<url>http://devel.stu.cn.ua:8081/artifactory/plugi
ns-snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
</profile>
И активируем профайл:
<activeProfiles>
<activeProfile>stuRepo</activeProfile>
</activeProfiles>
3. Создадим многомодульный проект — веб-приложение, пре-
доставляющее информацию о гостиницах. Приложение состо-
ит из двух модулей:
– модуль бизнес-логики: business-logic.jar;
– модуль веб-приложения: hotelweb.war.
В каталоге проекта создадим модуль бизнес-логики приложения.
Используя плагин archetype, создадим «пустой» maven-проект для мо-
дуля бизнес-логики:
mvn archetype:generate
Выберите архетип под номером 15 (internal -> maven-archetype-
quickstart (), тип packaging для проекта — jar). Укажите
groupId=se.lab03, artifactId=business-logic, version=1.0
Теперь создадим заготовку проекта для модуля веб-интерфейса
нашего приложения (в каталоге проекта). Для этого используем плагин
archetype, указав соответствующий тип шаблона проекта (maven-
archetype-webapp):
mvn archetype:generate
18
Інженерія програмного забезпечення
19
Методичні вказівки до виконання лабораторних робіт
<modules>
<module>business-logic</module>
<module>hotelweb</module>
</modules>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId> org.apache.maven.plugins
</groupId>
<artifactId> maven-compiler-plugin
</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<properties>
<app.groupid>se.lab03</app.groupid>
<app.version>1.0</app.version>
<app.finalname>${artifactId}-
${app.version}</app.finalname>
</properties>
</project>
Поскольку название проекта и его версия будет повторяться во
всех трех (одном родительском и двух дочерних) проектах, то создадим
глобальные переменные в родительском проекте. Внутри секции
―properties‖ создаем три переменные ―app.groupid‖, ―app.version‖ и
―app.finalname‖. На эти имена переменные будем ссылаться при объяв-
20
Інженерія програмного забезпечення
<groupId>${app.groupid}</groupId>
<artifactId>business-logic</artifactId>
<packaging>jar</packaging>
<version>${app.version}</version>
<name>Hotel business-logic application</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Поскольку данный модуль является дочерним по отношению к
другому проекту, то в самом начале pom-файла размещаем ссылку на
родительский модуль внутри элемента parent. При описании группы ар-
тефакта модуля и его версии используем объявленные в родительском
pom-файле переменные ${myapp.groupid} и ${myapp.version}. В списке
зависимостей модуля от внешних библиотек определена библиотека
junit, так как она понадобится для написания тестов. Причем область
действия (scope) этой зависимости установлена «test», т.е. библиотека
будет подключена только на этапе тестирования проекта.
7. Pom.xml файл web-модуля приложения
21
Методичні вказівки до виконання лабораторних робіт
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>hotelproject</artifactId>
<groupId>${app.groupid}</groupId>
<version>${app.version}</version>
</parent>
<groupId>${app.groupid}</groupId>
<artifactId>hotelweb</artifactId>
<packaging>war</packaging>
<version>${app.version}</version>
<name>Hotel webapp tutorial application</name>
<dependencies>
<dependency>
<groupId>${app.groupid}</groupId>
<artifactId>business-logic</artifactId>
<version>${app.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
Для веб-модуля определили две зависимости – зависимость от
модуля business-logic и библиотеки servlet-api.
Однако для зависимости business-logic мы не указали область
действия scope. А значит, maven будет подключать к веб-модулю и
business-logic и нужные для business-logic ресурсы всегда (и при компи-
ляции проекта и при упаковке модуля в war-файл). Для того чтобы со-
общить maven о том, что какой-то артефакт не нужно упаковывать в
war-файл, нужно установить для этого артефакта область scope равной
―provided‖ (будет предоставлен кем-то еще). Добавьте к элементу зави-
симости (dependency) для артефакта business-logic новый тег
<scope>provided</scope>.
8. Перейдем к реализации модуля бизнес-логики приложения.
Создадим пакет domain для хранения классов бизнес-логики, и
services — для хранения сервисов нашего приложения.
Класс объекта гостиница Hotel.java:
22
Інженерія програмного забезпечення
package se.lab03.domain;
23
Методичні вказівки до виконання лабораторних робіт
import java.util.ArrayList;
import java.util.List;
import se.lab03.domain.Hotel;
24
Інженерія програмного забезпечення
import java.util.List;
import org.junit.*;
import static org.junit.Assert.*;
@Before
public void prepareTest() {
hotel = new Hotel();
assertNotNull(hotel);
}
@Test
public void testHotelNullFields() {
assertNull(hotel.getName());
assertNull(hotel.getAddress());
assertNull(hotel.getCity());
assertEquals(0,hotel.getStars());
}
}
Добавьте тесты для методов установки и получения (getters и
setters) характеристик объекта Hotel. Аналогично добавьте тесты мето-
дов класса HotelService.java.
25
Методичні вказівки до виконання лабораторних робіт
T E S T S
-------------------------------------------------------
Running se.lab03.services.HotelServiceTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time
elapsed: 0.065 sec
Running se.lab03.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time
elapsed: 0.01 sec
Running se.lab03.domain.HotelTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time
elapsed: 0.032 sec
Results :
[INFO] [jar:jar]
[INFO] ------------------------------------------------
----------------
[INFO] BUILD SUCCESSFUL
26
Інженерія програмного забезпечення
[INFO] ------------------------------------------------
----------------
[INFO] Total time: 5 seconds
[INFO] Finished at: Sat Dec 12 16:10:49 EET 2009
[INFO] Final Memory: 8M/112M
[INFO] ------------------------------------------------
----------------
Команда mvn install установит модуль бизнес-логики в локальный
репозиторий maven, что позволит использовать его в других модулях
или проектах.
11. Перейдем к реализации веб-модуля приложения. Он пред-
ставляет собой jsp-страницу, на которой выводим перечень го-
родов, и если выбран город, то перечень гостиниц этого горо-
да.
<html>
<body>
<h2>SELab3-Hotel application</h2>
<%@ page import="
java.util.List,
se.lab03.domain.Hotel,
se.lab03.services.HotelService"
%>
<%
HotelService service = new HotelService();
String[] cityList = service.findAvailableCities();
<h3>Choose a destination</h3>
<form action="index.jsp" method="get">
Please choose a city:
<SELECT name="city">
<OPTION value="">---No city---</OPTION>
<%
for(String cityName : cityList){
%>
<OPTION val-
ue="<%=cityName%>"><%=cityName%></OPTION>
<%
}
%>
</SELECT>
<BUTTON type="submit">GO</BUTTON>
</form>
<% if (hotelList.size() > 0) { %>
<h3>Available hotels in <%=selectedCity%> </h3>
27
Методичні вказівки до виконання лабораторних робіт
<table border="1">
<tr>
<th>Name</th>
<th>Address</th>
<th>City</th>
<th>Stars</th>
</tr>
<%
for(Hotel hotel : hotelList){
%>
<tr>
<td><%=hotel.getName()%></td>
<td><%=hotel.getAddress()%></td>
<td><%=hotel.getCity()%></td>
<td><%=hotel.getStars()%> stars</td>
</tr>
<%
}
%>
</table>
<%}%>
</body>
</html>
12. Выполните команды mvn install для веб-модуля. Получим
собранный веб-модуль приложения hotelweb-1.0.war в каталоге
/target и локальном репозитории maven.
Для запуска созданного веб-приложения необходимо установить
tomcat:
$> aptitude install tomcat6 tomcat6-admin tomcat6-docs
tomcat6-examples tomcat6-user
(точное название пакетов для Fedora проверьте через yum search
tomcat6).
В файле /etc/tomcat6/tomcat-users.xml задаем пароль для пользова-
теля admin.
После этого веб-приложение можно вручную развернуть на веб-
сервере. Для автоматизации этого процесса, необходимо настроить пла-
гин tomcat-maven-plugin:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<url>http://localhost:8080/manager/html</url>
<server>mainId</server>
</configuration>
</plugin>
Т.е. указываем адрес веб-сервера, где необходимо развернуть веб-
приложение.
28
Інженерія програмного забезпечення
29
Методичні вказівки до виконання лабораторних робіт
<mainClass>buldo0.Buldo0App
</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Для автоматического копирования всех библиотек, от которых
зависит наш проект, из локального репозитория артефактов в заданный
каталог (в данном случае /lib) добавляем соответствующие настройки
плагина dependency:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals><goal>copy-
dependencies</goal></goals>
<configuration>
<outputDirectory>target/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
4. Собираем и запускаем приложение:
mvn package
java -jar BuldoExample.jar
30
Інженерія програмного забезпечення
31
Методичні вказівки до виконання лабораторних робіт
3 Лабораторная работа №3
Засоби модульного тестування (JUnit)
3.1 Цель работы
Научиться разрабатывать Unit-тесты с использованием инстру-
ментальной библиотеки JUnit. Разработать тесты для одного из стан-
дартных классов JDK.
модульное тестирование;
интеграционное тестирование;
системное тестирование.
2. Объект тестирования:
функциональное тестирование;
нагрузочное тестирование;
тестирование удобства использования интерфейса;
тестирование безопасности;
тестирование совместимости.
3. Знание системы:
4. Время проведения:
альфа-тестирование;
бета-тестирование;
приемочное тестирование;
регрессионное тестирование.
5. Степень автоматизации:
ручное тестирование;
автоматизированное;
полуавтоматизированное.
32
Інженерія програмного забезпечення
6. Выполнение кода:
статическое тестирование;
динамическое тестирование [1].
import org.junit.Test;
33
Методичні вказівки до виконання лабораторних робіт
@Before
...
@Before
@After
@BeforeClass
@AfterClass
@Test
assertEquals(4, calculator.add(1, 3) );
assertEquals(0, calculator.add(0, 0) );
34
Інженерія програмного забезпечення
@Test
…..
@Test(expected=ArithmeticException.class)
35
Методичні вказівки до виконання лабораторних робіт
@Test(timeout=5000)
@SuiteClasses(value={CalculatorTest.class, AnotherT-
est.class})
public class AllTests {
...
}
36
Інженерія програмного забезпечення
@Parameters
{ 1, 1 },
{ 2, 2 },
{ 24, 4 },
{ 5040, 7 },
});
@Test
assertEquals(expected, calculator.factorial(value));
}
}
factorial#0: assertEquals(1,calculator.factorial(0));
factorial#1: assertEquals(1,calculator.factorial(1));
37
Методичні вказівки до виконання лабораторних робіт
factorial#2: assertEquals(2,calculator.factorial(2));
factorial#3: assertEquals(24,calculator.factorial(4));
factorial#4:assertEquals(5040,calculator.factorial(7));
№ Класс № Класс
1 java.util.ArrayList 1 java.lang.Enum
2 java.lang.Byte 2 java.util.HashMap
3 java.io.BufferedReader 3 java.util.Scanner
4 java.math.BigInteger 4 java.util.Vector
5 java.text.BreakIterator 5 java.lang.Long
6 java.util.Arrays 6 java.io.FileOutputStream
7 java.lang.Boolean 7 java.util.LinkedList
8 java.io.BufferedWriter 8 java.io.ObjectInputStream
9 java.text.DecimalFormat 9 java.io.ObjectOutputStream
10 java.util.BitSet 10 java.util.LinkedHashSet
11 java.lang.Character 11 java.util.HashTable
12 java.io.DataInputStream 12 java.util.jar.Manifest
13 java.math.BigDecimal 13 java.lang.reflect.Constructor
38
Інженерія програмного забезпечення
14 java.text.SimpleDateFormat 14 java.util.jar.Attributes
15 java.util.Calendar 15 java.io.FileInputStream
16 java.util.StringTokenizer 16 java.lang.reflect.Method
17 java.lang.Double 17 java.math.BigDecimal
18 java.io.DataOutputStream 18 java.io.File
19 java.io.File 19 java.text.BreakIterator
20 java.util.HashSet 20 java.io.StringReader
21 java.lang.StringBuffer 21 java.lang.Float
22 java.util.Collections 22 java.util.PriorityQueue
23 java.text.StringCharacterIterator 23 java.lang.Math
24 java.lang.String 24 java.io.DataOutputStream
25 java.lang.Math 25 java.io.StringReader
26 java.io.LineNumberReader 26 java.util.ArrayList
27 java.io.StringReader 27 java.util.Calendar
28 java.util.PriorityQueue 28 java.util.BitSet
29 java.util.Stack 29 java.util.Collections
30 java.lang.Integer 30 java.util.Stack
31 java.util.LinkedHashMap 31 java.lang.Double
32 java.lang.Float 32 java.io.BufferedWriter
33 java.lang.Short 33 java.util.Arrays
34 java.lang.reflect.Field 34 java.lang.Short
39
Методичні вказівки до виконання лабораторних робіт
Група КІт-191
1 java.util.jar.Attributes 18 java.lang.String
2 java.util.Stack 19 java.lang.Short
3 java.util.PriorityQueue 20 java.lang.reflect.Field
4 java.util.LinkedHashMap 21 java.lang.Math
5 java.util.HashSet 22 java.lang.Integer
6 java.util.Collections 23 java.lang.reflect.Constructor
7 java.util.Calendar 24 java.lang.Double
8 java.util.BitSet 25 java.util.jar.Manifest
9 java.util.Arrays 26 java.lang.Byte
10 java.util.ArrayList 27 java.lang.Boolean
11 java.text.StringCharacterIterator 28 java.io.StringReader
12 java.text.SimpleDateFormat 29 java.io.LineNumberReader
13 java.text.DecimalFormat 30 java.io.File
14 java.text.BreakIterator 31 java.io.DataOutputStream
15 java.lang.reflect.Method 32 java.io.DataInputStream
16 java.math.BigDecimal 33 java.io.BufferedWriter
17 java.lang.StringBuffer 34 java.io.BufferedReader
40
Інженерія програмного забезпечення
4 Лабораторная работа №4
Тестування продуктивності ПЗ (Apache Jmeter)
4.1 Цель работы
Изучение принципов нагрузочного тестирования. Практическое
применение кроссплатформенного инструмента Jmeter (Apache Jakarta
Project).
41
Методичні вказівки до виконання лабораторних робіт
42
Інженерія програмного забезпечення
<role rolename="manager"/>
<user username="manager" password="qwerty"
roles="manager"/>
Перезапускаем сервер.
sudo /etc/init.d/tomcat6 restart
Для запуска менеджера веб-приложений tomcat необходимо в
браузере ввести строку http://127.0.1.1:8080/manager/html. При этом
нужно указать пароль, который был создан ранее (user : «manager», pass
: «qwerty»).
После этого нужно поместить ваш проект на сервер. Для этого
при помощи графического интерфейса в меню WAR file to deploy (ри-
сунок 4.1) необходимо выбрать war-файл и нажать кнопку deploy. По-
сле чего можно заходить на главную страницу вашего приложения.
43
Методичні вказівки до виконання лабораторних робіт
44
Інженерія програмного забезпечення
45
Методичні вказівки до виконання лабораторних робіт
46
Інженерія програмного забезпечення
47
Методичні вказівки до виконання лабораторних робіт
48
Інженерія програмного забезпечення
по внешнему запросу,
по расписанию,
по факту обновления репозитория и по другим критериям.
49
Методичні вказівки до виконання лабораторних робіт
1. Установка ПО
sudo -s
//установим openjdk-6:
//устнаовим tomcat
wget http://apache.cp.if.ua/tomcat/tomcat-7/v7.0.21/bin/apache-tomcat-
7.0.21.zip
unzip apache-tomcat-7.0.21.zip
Установим Hudson
cd apache-tomcat-7.0.21/webapps/
50
Інженерія програмного забезпечення
wget http://java.net/projects/hudson/downloads/download/war/hudson-
2.1.1.war
mv hudson-2.1.1.war hudson.war
apache-tomcat-7.0.21/bin/startup.sh
Теперь можем отрывть веб бразуер и перейти по адресу:
Рисунок 1 — Развертывание.
По умолчанию все проекты буду сохраняться в /root/.hudson/jobs
2. Базовая настройка
51
Методичні вказівки до виконання лабораторних робіт
<target name="compile">
<mkdir dir="build/classes"/>
<javac srcdir="src" destdir="build/classes"/>
</target>
<target name="run">
<java jar="build/jar/HelloWorld.jar" fork="true"/>
</target>
</project>
52
Інженерія програмного забезпечення
Устновим subversion:
apt-get install subversion
После чего выполним инициализацию svn-репозитория и выпол-
ним коммит.
53
Методичні вказівки до виконання лабораторних робіт
Subversion
Repository URL (Путь к репозиторию):
svn://svn.code.sf.net/p/ololololololol/code/trunk
2. Build Triggers:
54
Інженерія програмного забезпечення
At revision 2
Buildfile: /root/.hudson/jobs/HelloWorldOnHudson/workspace/build.xml
clean:
compile:
55
Методичні вказівки до виконання лабораторних робіт
jar:
BUILD SUCCESSFUL
[DEBUG] Skipping watched dependency update; build not configured with trigger: HelloWorldOnHudson
#5
Finished: SUCCESS
56
Інженерія програмного забезпечення
Рекомендованная литература
1. Бек К. Экстремальное программирование: разработка через тес-
тирование. Библиотека программиста. – СПб.: Питер, 2003. – 224
с.: ил.
2. Гагарина Л.Г., Кокорева Е.В., Виснадул Б.Д. Технология разра-
ботки программного обеспечения: Учебное пособие. – М.: ИД
«ФОРУМ»: ИНФРА-М, 2008. – 400 с.: ил.
3. Котляров В.П., Коликова Т.В. Основы тестирования программно-
го обеспечения: Учебное пособие. – М.: Интернет-Университет
Информационных Технологий; БИНОМ. Лаборатория знаний,
2006. – 285 с.: ил. (Серия «Основы информационных техноло-
гий»).
4. Макгрегор Дж., Сайкс Д. Тестирование объектно-
ориентированного программного обеспечения. Практическое по-
собие: Пер. с англ. – К.: ООО «ТИД «ДС», 2002. – 432 с.
5. Управление проектами разработки ПО. Учебно-методическое по-
собие по дисциплине «Гибкие технологии разработки программ-
ного обеспечения» / Сост. Шопырин Д.Г. – Санкт-Петербург,
Санкт-Петербургский государственный университет информаци-
онных технологий, механики и оптики, 2007. – 131 с.
6. Фаулер М. Архитектура корпоративных программных приложе-
ний: Пер. с англ. – М.: Издательский дом «Вильямс», 2006. – 544
с.: ил.
7. Vincent Massol, Ted Husted. JUnit In Action. Manning. – Special
Sales Department, 2004. – P. 386.
8. Git – The Fast Version Control System [Электронный ресурс]. –
Режим доступа: URL: http://git-scm.com. – Название с экрана.
9. JMeter – Apache JMeter [Электронный ресурс]. – Режим доступа:
URL: http://jakarta.apache.org/jmeter. – Название с экрана.
10.JUnit.org Resources for Test Driven Development [Электронный ре-
сурс]. – Режим доступа: URL http://www.junit.org. – Название с
экрана.
11.Redmine – Overview [Электронный ресурс]. – Режим доступа:
URL: http://www.redmine.org. – Название с экрана.
12.Redprojects – инструменты, помогающие работать [Электронный
ресурс]. – Режим доступа: URL: http://www.redmine.net.ua. – На-
звание с экрана.
13.Welcome to Apache Maven [Электронный ресурс]. – Режим досту-
па: URL http://maven.apache.org. – Название с экрана.
57
Методичні вказівки до виконання лабораторних робіт
58