Разработка инструментария для расчета трудоемкости и стоимости разработки программного продукта по методике CETIN
Обзор и анализ существующих методик управления проектами и оценки трудоемкости. Разработка алгоритма задания параметров и вычисления трудоемкости и стоимости программного продукта. Отладка и тестирование продукта. Разработка руководства пользователя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 18.11.2017 |
Размер файла | 2,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
*/
self.s = [
/* c e t i n */
[32.12, 28.33, 0.000, 14.15, 0.000], //Бизнес-моделирование
[58.03, 28.04, 0.000, 20.32, 0.000], //Управление требованиями
[45.42, 61.75, 31.35, 37.52, 24.02], //Проектирование
[31.57, 81.51, 50.72, 36.11, 0.000], //Реализация
[88.96, 0.000, 0.000, 0.000, 0.000], //Тестирование
[8.690, 0.000, 0.000, 0.000, 23.74] //Развертывание
];
/**
* Трудоемкость по процессам в разрезе функциональных единиц
*/
self.sj = [
0, //Бизнес-моделирование
0, //Управление требованиями
0, //Проектирование
0, //Реализация
0, //Тестирование
0 //Развертывание
];
/**
* Формула для определения поправочного коэффициента.
* В данной таблице представлены индексы коэффициентов, которые необходимо перемножить.
*/
self.kp = [
[11, 16, 17], //Бизнес-моделирование
[1, 2, 4, 5, 6, 7, 8, 9, 16, 17, 18], //Управление требованиями
[1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18], //Проектирование
[1, 2, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18], //Реализация
[1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], //Тестирование
[1, 2, 11, 16, 18] //Развертывание
];
/**
* Срок разработки в трудоемкость.
*/
self.terms = [
[5, 30], //1 месяц
[10, 80], //2 месяца
[17, 140], //3 месяца
[26, 210], //4 месяца
[37, 280], //5 месяцев
[50, 340], //6 месяцев
[65, 400], //7 месяцев
[80, 450], //8 месяцев
[100, 500], //9 месяцев
[120, 550], //10 месяцев
[140, 610], //11 месяцев
[160, 670], //12 месяцев
[180, 720], //13 месяцев
[200, 770], //14 месяцев
[230, 820], //15 месяцев
[260, 870], //16 месяцев
[290, 930], //17 месяцев
[330, 990], //18 месяцев
[370, 1040], //19 месяцев
[420, 1090], //20 месяцев
[470, 1150], //21 месяц
[530, 1200], //22 месяца
[600, 1250], //23 месяца
[670, 1300], //24 месяца
[750, 1350], //25 месяцев
[830, 1400], //26 месяцев
[900, 1450], //27 месяцев
[970, 1500], //28 месяцев
[1150, 1550], //29 месяцев
[1230, 1600], //30 месяцев
[1310, 1660], //31 месяц
[1390, 1720], //32 месяца
[1470, 1780], //33 месяца
[1520, 1840], //34 месяца
[1570, 1900], //35 месяцев
[1620, 1960], //36 месяцев
[1680, 2020] //37 месяцев
];
/**
* Нормативные коэффициенты расхода разработчиков
*/
self.nkr = [71.5, 48, 25, 0.75, 15];
/* ПНР ПРП ПР L N */
/**
* Значения поправочных коэффициентов трудоемкости.
* По-умолчанию 1, т.е. всегда средние значения.
*/
self.k = [
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
];
/**
* Подсчет трудоемкости.
* @returns {Number} трудоемкость (человеко-месяц).
*/
self.peopleMonth = function() {
var calc = 0;
for (var j = 0; j < 6; j++) {
var kpj = 1;
for (var kk in self.kp[j]) {
kpj *= self.k[self.kp[j][kk] - 1];
}
calc += self.sj[j] * kpj;
}
return calc;
};
/**
* Подсчет среднего срока разрабокти.
*
* @returns {Cetin.time.res} минимальное и максимально время разработки (месяцы).
*/
self.time = function() {
var pt = self.peopleMonth();
var res = {max: 0, min: self.terms.length - 1};
//Если трудоемкость превышает минимум левой границы.
if (pt > 1680) {
res.min = 36; //Конец массива.
res.max = 31; //Начало массива, где начинается превышение.
//Если трудоемкость не превышает известной правой границы.
if (pt < 2020) {
while (res.min >= 0 && self.terms[res.min][1] > pt) {
res.min--;
}
res.min++;
res.max = Math.round(36 + (pt - 1680) / 40);
//Если превышает известную правую границу.
} else {
res.min = Math.round(36 + (pt - 2020) / 40);
res.max = Math.round(36 + (pt - 1680) / 40);
}
//Параметры срока можно расчитать на основании таблицы.
} else {
while (res.min >= 0 && self.terms[res.min][1] > pt) {
res.min--;
}
res.min++;
while (res.max < self.terms.length && self.terms[res.max][0] < pt) {
res.max++;
}
res.max--;
}
res.min++;
res.max++;
if (self.newTerm === 0)
self.newTerm = (res.min + res.max) / 2;
return res;
};
/**
* Новый срок разработки, введенный пользователем.
*/
self.newTerm = 0;
/**
* Расчитанная новая трудоемкость, на основании нового срока разработки.
*/
self.newPeopleMonth = 0;
/**
* Пересчет трудоемкости.
*/
self.recalcPeopleMonth = function() {
var terms = self.time();
var avgTerm = (terms.min + terms.max) / 2;
var incr = (avgTerm - self.newTerm) / avgTerm * 100;
self.newPeopleMonth = self.peopleMonth() + incr * self.nkr[3]; //Коэффициент элластичности.
};
/**
* Введенные параметры цены.
* cost - зарплата.
* inflation - нфляция за три года (указывается процент).
* psn - процент социальных выплат.
* pnds - процент НДС.
*/
self.cost = {cost: 0, inflation: [0, 0, 0], psn: 0, pnds: 0};
/**
* Расчет стоимости разработки.
*
* @returns {Cetin.calcCost.res} включает в себя стоимость разработки и стоимость сопровождения.
*/
self.calcCost = function() {
var c = self.cost;
var isr = (c.inflation[0] + c.inflation[1] + c.inflation[2]) / 3;
var gsr = Math.floor(self.newTerm / 12) + 1;
var costs = [];
var csr = [];
costs[0] = c.cost * (1 + isr / 100);
for (var i = 1; i < gsr; i++) {
costs[i] = costs[i - 1] * (1 + isr / 100);
}
for (var i = 0; i < gsr; i++) {
csr[i] = costs[i] * (1 + (0.9 * c.psn + self.nkr[0] + self.nkr[1]) / 100) * (1 + self.nkr[2] / 100) * (1 + c.pnds / 100);
}
var res = {sppo: 0, ssppo: 0};
for (var i = 0; i < gsr; i++) {
res.sppo += self.newPeopleMonth / gsr * csr[i];
}
res.ssppo = res.sppo * self.nkr[4] / 100 * self.k[1] * self.k[2] * self.k[15];
return res;
};
};
/**
* Менеджер шагов.
*
* @param {type} containerId идентификатор контейнера для вставки отображаемых шагов.
* @param {type} stepManagerName название менеджера шагов для обращения при кликах на шаги.
*/
var StepManager = function(containerId, stepManagerName) {
var self = this;
self.containerId = containerId;
self.stepManagerName = stepManagerName;
self.steps = [];
/**
* Текущий шаг.
*/
self.currentStep = "empty";
/**
* Переход к шагу с номеров stepNum.
* @param {type} stepNum номер шага для перехода.
*/
self.goStep = function(stepNum) {
/*
* При переходе к другому шагу необходимо сделать следующее:
* -проверить правильность заполнения полей.
* -снять активность с текущего шага.
* -выполнить дейстивя по сохранения данных введенных с формы в объект.
* -установаить активным шаг stepNum.
* -выполнить действия по обновлению отображаемых полей.
*
* -прокрутить экран к текущему шагу.
*/
if (self.currentStep !== "empty") {
$("#error" + self.currentStep).html("");
if (self.steps[self.currentStep].validators)
{
var validators = self.steps[self.currentStep].validators;
if (validators) {
for (var i = 0; i < validators.length; i++) {
var c = validators[i].validate();
if (c.error)
{
$("#" + c.id).addClass("error");
$("#error" + self.currentStep).html(c.error);
return;
} else {
$("#" + c.id).removeClass("error");
}
}
}
}
$("#step" + self.currentStep).removeClass("active");
self.steps[self.currentStep].onCloseFunction();
for (var qq = self.currentStep + 1; qq < stepNum; qq++) {
self.steps[qq].onOpenFunction();
self.steps[qq].onCloseFunction();
}
}
self.currentStep = stepNum;
$("#step" + self.currentStep).addClass("active");
self.steps[self.currentStep].onOpenFunction();
$('html, body').animate({
scrollTop: $("#step" + self.currentStep).offset().top - (stepNum === 0 ? 100 : 0)
}, 480);
};
/**
* Переход к предыдущему шагу.
*/
self.goPrev = function() {
self.goStep(self.steps[self.currentStep].prevStep);
};
/**
* Переход к следующему шагу.
*/
self.goNext = function() {
self.goStep(self.steps[self.currentStep].nextStep);
};
};
/**
* Шаг.
* @param onOpenFunction функция, вызываемая при открытии шага.
* @param onCloseFunction функция, вызываемая при закрытии шага.
* @param prevStep номер предыдущего шага.
* @param nextStep номер следующего шага.
* @param validators список валидаторов.
*/
var Step = function(onOpenFunction, onCloseFunction, prevStep, nextStep, validators) {
var self = this;
/**
* Функция при открытии шага (обновление параметров формы).
*/
self.onOpenFunction = onOpenFunction;
/**
* Функция при закрытии шага (сохранение параметров формы).
*/
self.onCloseFunction = onCloseFunction;
/**
* Номер предыдущего шага.
*/
self.prevStep = prevStep;
/**
* Номер следущего шага.
*/
self.nextStep = nextStep;
/**
* Проверки правильности введенных данных.
*/
self.validators = validators;
};
/**
* Функция установки значения в селект.
*
* @param {type} selectName название селекта.
* @param {type} value новое значение.
*/
function setSelected(selectName, value) {
$("select[name=" + selectName + "] option:selected").attr("selected", "");
$("select[name=" + selectName + "] option[value=\"" + value + "\"]").attr("selected", "selected");
}
/**
* Функция получения значения текущего селекта.
*
* @param {type} selectName навзвание селекта.
* @returns значение селекта.
*/
function getSelectedValue(selectName) {
return $("input[name=" + selectName + "Text]").val();
}
/**
* Смена значения поля Коэффициент у выбранного селекта.
*
* @param {type} selectName
* @returns {undefined}
*/
function changeSelected(selectName) {
$("input[name=" + selectName + "Text]").val($("select[name=" + selectName + "] option:selected").val());
}
/**
* Валидатор.
*
* @param {type} id поле для валидации.
* @param {type} regexp регулярное выражение валидации.
* @param {type} errorMessage сообщение при ошибке.
*/
var Validator = function(id, regexp, errorMessage)
{
var self = this;
self.id = id;
self.regexp = regexp;
self.errorMessage = errorMessage;
/**
* Функция для валидации.
* @returns {Validator.validate.Anonym$50|String}
*/
self.validate = function() {
if (!$("#" + self.id).val().match(self.regexp)) {
return {"id": self.id, "error": self.errorMessage};
}
return {"id": self.id};
};
};
Приложение 6
Текст файла CSS
body
{
padding: 0; margin: 0;
width: 209mm;
}
h1 {
font: bold 8mm 'Arial';
color: #00688B;
}
.step {
border-radius: 7px;
background-color: #00688B;
margin: 5px;
}
.step.active {
background-color: #ecf5ff;
}
.step.active .title {
background-color: #1dacd6;
color: #F0FFFF;
border-radius: 7px 7px 0 0;
}
.step.active .footer {
background-color: #e0efff;
color: #393939;
border-radius: 0 0 7px 7px;
display: block;
}
.step.active .content {
display: block;
}
.step .title{
padding: 2mm;
font: bold 7mm 'Arial';
color: #E0EEEE;
cursor: pointer;
}
.step .content{
padding: 3mm;
font: 5mm 'Arial';
color: #36648B;
display: none;
}
.step .content .error {
background-color: #ff7f7f;
color: #7f0000;
}
.step .content p, .step .content .p{
text-indent: 1cm;
line-height: 1.5;
margin: 0.5mm 0;
}
.step .content .p {padding: 8px 0;}
.step .content .p {
border-width: 1px 0;
border-color: #cccccc;
border-style: solid;
}
.step .content .p.error {
background-color: #ff7f7f;
}
.step .content .hint {
color: #797979;
font: 3mm 'Arial';
line-height: 1.0;
}
.step .content p input, .step .content .p input {float: right;}
.step .content p .select, .step .content .p .select {text-align: center;}
.step .content .p .select .hint {margin-top: 5px; margin-left: 1cm;}
.step .content .p .select input {float: none; width: 1.5cm;}.step .footer{
padding: 2mm;
font: bold 7mm 'Arial';
color: #797979;
margin: 0 auto;
display: none;
text-align: center;
}
.step .footer .button {
background-color: #00CD00;
border-radius: 5px;
padding: 2mm;
cursor: pointer;
width: 5cm;
margin: 0 2px;
text-align: center;
color: #ffffff;
display: inline-block;
}
.step .footer .button:hover {
background-color: #7FFF00;
color: #3f7f3f;
}
.step .footer .button:pressed {
background-color: #5da130;
color: #393939;
}
td {text-align: center; border-width: 0;}
td input {width: 40px; text-align: center;}
.step .legend {
font-size: 12px;
}
#saveButton {
margin-left: 657px;
width: 100px;
height: 26px;
}
Приложение 7
Код страницы инициализации.
<%@page import="java.util.Map"%>
<%@page import="ru.cetin.InitForm"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<html>
<head>
<title>Инициализация</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
</head>
<body style="background-image:url(1.jpg)" >
<font color="#008B8B">
<h1 align="center" >Методика оценки трудоемкости программного продукта CETIN</h1>
<h2>Выбор сохраненных парамтеров</h2>
<%
InitForm form = (InitForm)pageContext.getAttribute("InitForm", PageContext.REQUEST_SCOPE);
for (Map.Entry<Integer, String> entry: form.getIndexToName().entrySet())
{
%> <a class="info" href="cetin.do?id=<% out.append(Integer.toString(entry.getKey())); %>">
<% out.append(entry.getValue()); %>
</a><br> <%
%>
<a class="info" href="cetin.do?type=zakaz&id=<% out.append(Integer.toString(entry.getKey())); %>">
<br></br>
<br></br>
<% out.append(entry.getValue()); %> (заказчик)
</a><br> <%
}
%>
<a href="cetin.do" class="info">Добавить новые параметры</a><br>
<a href="cetin.do?type=zakaz" class="info">Добавить новые параметры (заказчик)</a>
</body>
</html>
Приложение 8
Код страниц Сайта-Визитки
1 страница.
<html>
<head>
<title>CETIN</title>
<link href="default.css" rel="stylesheet" type="text/css" />
</head>
<body>
<!-- start header -->
<div id="header">
<div id="logo">
<h1>CETIN</a></h1>
<h2><a>прогнозирование трудоемкостии </a></h2>
<h2><a>стоимости создания</a></h2>
<h2><a>программного продукта</a></h2>
</div>
<div id="menu">
<ul>
<li><a href="1.html">Назначение методики</a></li>
<li><a href="2.html"">Принципы расчета трудоемкости и стоимости</a></li>
<li><a href="3.html"">Основные процессы разработки</a></li>
<li><a href="4.html"">Функциональный размер ИС</a></li>
<li><a href="5.html"">Процесс расчета разработки ППО</a></li>
<li><a href="6.html"">Демонстрация программы</a></li>
</ul>
</div>
</div>
<!-- end header -->
<!-- start page -->
<div id="page">
<!-- start content -->
<div id="content">
<!-- start latest-post -->
<div id="latest-post" class="post">
<h1 class="title">Назначение методики</h1>
<hr>
<ul>
<li>Расчет трудоемкости разработки ИС</li>
<li>Расчет стоимости разработки ИС</li>
<li>Расчет срока разработки ИС</li>
<li>Расчет трудоемкости развития ИС</li>
<li>Расчет стоимости развития ИС</li>
<li>Расчет стоимости годового сопровождения ИС</li>
</ul>
<hr>
</div>
</body>
</html>
2 страница.
<html>
<head>
<title>CETIN</title>
<link href="default.css" rel="stylesheet" type="text/css" />
</head>
<body>
<!-- start header -->
<div id="header">
<div id="logo">
<h1>CETIN</a></h1>
<h2><a>прогнозирование трудоемкостии </a></h2>
<h2><a>стоимости создания</a></h2>
<h2><a>программного продукта</a></h2>
</div>
<div id="menu">
<ul>
<li><a href="1.html">Назначение методики</a></li>
<li><a href="2.html"">Принципы расчета трудоемкости и стоимости</a></li>
<li><a href="3.html"">Основные процессы разработки</a></li>
<li><a href="4.html"">Функциональный размер ИС</a></li>
<li><a href="5.html"">Процесс расчета разработки ППО</a></li>
<li><a href="6.html"">Демонстрация программы</a></li>
</ul>
</div>
</div>
<!-- end header -->
<!-- start page -->
<div id="page">
<!-- start content -->
<div id="content">
<!-- start latest-post -->
<div id="latest-post" class="post">
<h1 class="title">Принципы расчета трудоемкости и стоимости</h1>
<hr>
<ul>
<li>Принцип поддержки жизненого цикла</li>
<li>Принцип измерения функционального размера</li>
<li>Принцип универсальности</li>
<li>Принцип улучшающейся оценки</li>
<li>Принцип учета технологии производства программного обеспечения</li>
</ul>
<hr>
</div>
</body>
</html>
3 страница.
<html>
<head>
<title>CETIN</title>
<link href="default.css" rel="stylesheet" type="text/css" />
</head>
<body>
<!-- start header -->
<div id="header">
<div id="logo">
<h1>CETIN</a></h1>
<h2><a>прогнозирование трудоемкостии </a></h2>
<h2><a>стоимости создания</a></h2>
<h2><a>программного продукта</a></h2>
</div>
<div id="menu">
<ul>
<li><a href="1.html">Назначение методики</a></li>
<li><a href="2.html"">Принципы расчета трудоемкост и стоимости</a></li>
<li><a href="3.html"">Основные процессы разработки</a></li>
<li><a href="4.html"">Функциональный размер ИС</a></li>
<li><a href="5.html"">Процесс расчета разработки ППО</a></li>
<li><a href="6.html"">Демонстрация программы</a></li>
</ul>
</div>
</div>
<!-- end header -->
<!-- start page -->
<div id="page">
<!-- start content -->
<div id="content">
<!-- start latest-post -->
<div id="latest-post" class="post">
<h1 class="title">Основные процессы разработки</h1>
<hr>
<ul>
<li>Бизнес моделирование</li>
<li>Управление требованиями</li>
<li>Проектирование</li>
<li>Реализация</li>
<li>Тестирование</li>
<li>Развертывание</li>
</ul>
<hr>
</div>
</body>
</html>
4 страница.
<html>
<head>
<title>CETIN</title>
<link href="default.css" rel="stylesheet" type="text/css" />
</head>
<body>
<!-- start header -->
<div id="header">
<div id="logo">
<h1>CETIN</a></h1>
<h2><a>прогнозирование трудоемкостии </a></h2>
<h2><a>стоимости создания</a></h2>
<h2><a>программного продукта</a></h2>
</div>
<div id="menu">
<ul>
<li><a href="1.html">Назначение методики</a></li>
<li><a href="2.html"">Принципы расчета трудоемкости и стоимости</a></li>
<li><a href="3.html"">Основные процессы разработки</a></li>
<li><a href="4.html"">Функциональный размер ИС</a></li>
<li><a href="5.html"">Процесс расчета разработки ППО</a></li>
<li><a href="6.html"">Демонстрация программы</a></li>
</ul>
</div>
</div>
<!-- end header -->
<!-- start page -->
<div id="page">
<!-- start content -->
<div id="content">
<!-- start latest-post -->
<div id="latest-post" class="post">
<h1 class="title">Функциональный размер ИС</h1>
<hr>
<ul>
<li>Колличество вариантов использования (Case)-C</li>
<li>Колличество типов объектов(бизнес объектов)(Entity)-E</li>
<li>Колличество свойств типов объектов(Yool)-T</li>
<li>Колличество взаимодействий между типами объектов (Interaction)-I</li>
<li>Колличество типов узлов(Node)-N</li>
</ul>
<hr>
</div>
</body>
</html>
5 страница.
<html>
<head>
<title>CETIN</title>
<link href="default.css" rel="stylesheet" type="text/css" />
</head>
<body>
<!-- start header -->
<div id="header">
<div id="logo">
<h1>CETIN</a></h1>
<h2><a>прогнозирование трудоемкостии </a></h2>
<h2><a>стоимости создания</a></h2>
<h2><a>программного продукта</a></h2>
</div>
<div id="menu">
<ul>
<li><a href="1.html">Назначение методики</a></li>
<li><a href="2.html"">Принципы расчета трудоемкости и стоимости</a></li>
<li><a href="3.html"">Основные процессы разработки</a></li>
<li><a href="4.html"">Функциональный размер ИС</a></li>
<li><a href="5.html"">Процесс расчета разработки ППО</a></li>
<li><a href="6.html"">Демонстрация программы</a></li>
</ul>
</div>
</div>
<!-- end header -->
<!-- start page -->
<div id="page">
<!-- start content -->
<div id="content">
<!-- start latest-post -->
<div id="latest-post" class="post">
<h1 class="title">Процесс расчета разработки ППО</h1>
<hr>
<ul>
<li>Оценка функционального размера разрабатываемой ИС</li>
<li>Оценка базовой трудоемкости разработки ППО</li>
<li>Определение значений поправочных коэффициентов трудоемкости</li>
<li>Расчет трудоемкости разработки ППО с учетом поправочных коэффициентов</li>
<li>Оценка срока разработки ППО</li>
<li>Корректировка трудоемкости разработки ППо при уменьшении срока разработки</li>
<li>Оценка стоимости разработки ППО</li>
</ul>
<hr>
</div>
</body>
</html>
6 страница.
<html>
<head>
<title>CETIN</title>
<link href="default.css" rel="stylesheet" type="text/css" />
</head>
<body>
<!-- start header -->
<div id="header">
<div id="logo">
<h1>CETIN</a></h1>
<h2><a>прогнозирование трудоемкостии </a></h2>
<h2><a>стоимости создания</a></h2>
<h2><a>программного продукта</a></h2>
</div>
<div id="menu">
<ul>
<li><a href="1.html">Назначение методики</a></li>
<li><a href="2.html"">Принципы расчета трудоемкости и стоимости</a></li>
<li><a href="3.html"">Основные процессы разработки</a></li>
<li><a href="4.html"">Функциональный размер ИС</a></li>
<li><a href="5.html"">Процесс расчета разработки ППО</a></li>
<li><a href="6.html"">Демонстрация программы</a></li>
</ul>
</div>
</div>
<!-- end header -->
<!-- start page -->
<div id="page">
<!-- start content -->
<div id="content">
<!-- start latest-post -->
<div id="latest-post" class="post">
<h1 class="title">Демонстрация программы</h1>
<hr>
<div class="gallery">
<a tabindex="1"><img src="11.jpg"></a>
<a tabindex="2"><img src="12.jpg"></a>
<a tabindex="3"><img src="13.jpg"></a>
<a tabindex="4"><img src="14.jpg"></a>
<a tabindex="5"><img src="15.jpg"></a>
<a tabindex="6"><img src="16.jpg"></a>
<a tabindex="7"><img src="17.jpg"></a>
<a tabindex="8"><img src="18.jpg"></a>
<a tabindex="9"><img src="19.jpg"></a>
<a tabindex="10"><img src="110.jpg"></a>
<a tabindex="11"><img src="111.jpg"></a>
</div>
<hr>
</div>
</body>
</html>
Файл CSS
body {
margin: 0;
padding: 0;
background: #FFFFFF url(images/img01.jpg) repeat-x;
font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
font-size: 13px;
color: #666666;
}
form {
margin: 0;
padding: 0;
}
fieldset {
margin: 0;
padding: 0;
border: none;
}
input, textarea, select {
font: normal 1em "Trebuchet MS", Arial, Helvetica, sans-serif;
}
h1, h2 {
font-weight: normal;
color: #7CD300;
}
h1 {
letter-spacing: -1px;
font-size: 2.6em;
}
h2 {
font-size: 1.8em;
}
h3 {
font-size: 2em;
font-weight: bold;
}
p, ul, ol {
}
p {
}
blockquote {
font-style: italic;
}
ul {
}
ol {
}
a {
color: #7CD300;
}
a:hover {
text-decoration: none;
}
small {
}
hr {
display: none;
}
img {
border: none;
}
img.left {
float: left;
margin: 0 15px 0 0;
}
img.right {
float: left;
margin: 0 0 0 15px;
}
/* Header */
#header {
width: 920px;
height: 160px;
margin: 0 auto;
}
/* Logo */
#logo {
float: left;
}
#logo h1, #logo h2 {
margin: 0;
text-transform: lowercase;
}
#logo h1 {
padding-top: 52px;
font-size: 4em;
color: #554D49;
}
#logo h1 a {
color: #554D49;
}
#logo h2 {
margin-top: -10px;
padding-left: 1px;
letter-spacing: -1px;
font-size: 1.8em;
color: #7F7772;
}
#logo h2 a {
color: #7F7772;
}
#logo a {
text-decoration: none;
}
/* Menu */
#menu {
float: right;
}
#menu ul {
margin: 0;
padding: 40px 0 0 0;
list-style: none;
}
#menu li {
display: inline;
}
#menu a {
display: block;
float: left;
width: 184px;
height: 100px;
padding-top: 30px;
background: #73D000 url(images/img02111.jpg) no-repeat;
text-align: center;
text-decoration: none;
text-transform: lowercase;
font-size: 1.5em;
color: #FFFFFF;
}
/* Page */
#page {
width: 980px;
margin: 0 auto;
padding-top: 20px;
}
#latest-post {
float: left;
width:1000px;
}
.post .title {
margin: 0;
}
.post .meta {
margin: 0;
padding-bottom: 10px;
line-height: normal;
font-family: Arial, Helvetica, sans-serif;
color: #BABABA;
}
.post .meta a {
color: #BABABA;
}
.post .entry {
margin-bottom: 10px;
padding-bottom: 5px;
}
.gallery a img{
/* округления старт */
-webkit-border-radius: 25px;
-moz-border-radius: 25px;
border-radius: 25px;
/* округления конец */
/* transition старт */
-webkit-transition:All 1s ease;
-moz-transition:All 1s ease;
-o-transition:All 1s ease;
transition: all 1.0s ease;
/* transition конец */
/* Тень старт */
-webkit-box-shadow: 0px 2px 4px 1px #DFDFDF;
-moz-box-shadow: 0px 2px 4px 1px #DFDFDF;
box-shadow: 0px 2px 4px 1px #DFDFDF;
/* Тень конец */
/* Прозрачнсоть старт */
-moz-opacity: 0.70;
opacity: 0.70;
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha"(Opacity=70);
/* Прозрачнсоть конец */
margin-right:5px; /* Отступ справа */
padding:10px; /* Внутренние отступы */
display:inline-block; /* отображение */
height:150px; /* Высота */
}
.gallery a img:hover{
-moz-opacity: 1;
opacity: 1;
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha"(Opacity=100);
}
.gallery a:focus img{
position: relative; /* Позиционирование */
height:500px; /* Высота */
cursor: pointer; /* Вид курсора */
/* transition старт */
-webkit-transition:All 1s ease;
-moz-transition:All 1s ease;
-o-transition:All 1s ease;
transition: all 1.0s ease;
/* transition конец */
/* Тень старт */
-webkit-box-shadow: 0px 4px 4px 1px #DFDFDF;
-moz-box-shadow: 0px 4px 4px 1px #DFDFDF;
box-shadow: 0px 4px 4px 1px #DFDFDF;
/* Тень конец */
}
Размещено на Allbest.ru
Подобные документы
Архитектура программного продукта и требования к платформе, обоснование выбора разработки. Закономерности и основные этапы алгоритмизации и программирования, а также отладка и тестирование продукта. Разработка и содержание руководства пользователя.
дипломная работа [2,3 M], добавлен 19.01.2017Анализ существующих решений для составления расписания репетитора. Разработка архитектуры программного продукта. Выбор инструментальных средств. Проектирование реляционной базы данных. Определение методики тестирования. Реализация интерфейса пользователя.
дипломная работа [411,7 K], добавлен 22.03.2018Обоснование выбора языка программирования. Анализ входных и выходных документов. Логическая структура базы данных. Разработка алгоритма работы программы. Написание программного кода. Тестирование программного продукта. Стоимость программного продукта.
дипломная работа [1008,9 K], добавлен 13.10.2013Создание программного продукта, представляющего моделирование на компьютере логнормального распределения, определение вероятностной оценки стоимости актива. Описание работы программного продукта. Работа с графиками, таблицами, математическими функциями.
курсовая работа [742,7 K], добавлен 08.01.2009Этапы разработки и отладки приложения "Помощь почтальону". Составление сопроводительной документации. Выбор средств и методов программирования. Анализ проектных данных. Особенности создания базы данных, СУБД. Тестирование созданного программного продукта.
контрольная работа [2,5 M], добавлен 17.12.2014Разработка программного продукта, предназначенного для поиска туров, транспорта, мест проживания и расчета стоимости тура, а так же для работ с клиентской базой туристической фирмы. Тестирование программного продукта в среде Borland Developer Studio 2006.
курсовая работа [2,5 M], добавлен 08.11.2012Анализ предметной области разрабатываемого программного продукта. Разработка интерфейса пользователя и структурной схемы игровой программы "Крестики-нолики". Отладка и тестирование. Проведение исследования компонентов программной среды Borland Delphi 6.0.
курсовая работа [660,4 K], добавлен 08.03.2015Основные требования к составу и параметрам технических средства. Верификация программного продукта. Расширение функционала программы и его реализация. Отладка и тестирование программного продукта. Тестирование программы в граничных и реальных условиях.
курсовая работа [1,3 M], добавлен 29.12.2014Особенности разработки автоматизированной справочной системы по основным элементам языка ассемблера, анализ среды Borland Delphi 7.0. Способы определения трудоемкости разработки программного продукта: этапы расчета сметной стоимости, планирование цены.
дипломная работа [3,2 M], добавлен 03.04.2013Особенности алгоритмов, критерии качества. Создание и применение программного продукта на языке Delphi. Тип операционной системы. Внутренняя структура программного продукта. Руководство пользователя и программиста, расчет себестоимости и цены программы.
дипломная работа [1,5 M], добавлен 12.06.2009