{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Лабораторная 12"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Задача: Мультиклассовая классификация изображений на 5 категорий (daisy, dandelion, rose, sunflower, tulip)\n",
    "\n",
    "Ссылка на датасет: https://www.kaggle.com/datasets/rahmasleam/flowers-dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3.9.2\n"
     ]
    },
    {
     "data": {
      "image/png": "[encoded data, 2890656 characters]",
      "text/plain": [
       "<Figure size 1500x1500 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import os\n",
    "import cv2\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import keras\n",
    "\n",
    "os.environ[\"KERAS_BACKEND\"] = \"torch\"\n",
    "\n",
    "print(keras.__version__)\n",
    "def load_images_from_folder(folder, target_size=(512, 512)):\n",
    "    images = []\n",
    "    labels = []\n",
    "    for label in os.listdir(folder):\n",
    "        if label in ['daisy', 'dandelion', 'roses', 'sunflowers', 'tulips']:\n",
    "            label_folder = os.path.join(folder, label)\n",
    "            if os.path.isdir(label_folder):\n",
    "                for filename in os.listdir(label_folder):\n",
    "                    img_path = os.path.join(label_folder, filename)\n",
    "                    img = cv2.imread(img_path)\n",
    "                    if img is not None:\n",
    "                        img_resized = cv2.resize(img, target_size)\n",
    "                        images.append(img_resized)\n",
    "                        labels.append(label)\n",
    "    return images, labels\n",
    "\n",
    "folder_path = \"./static/csv/dataset_flower\"\n",
    "images, labels = load_images_from_folder(folder_path)\n",
    "num_images_to_display = min(8, len(images))\n",
    "\n",
    "def display_images(images, labels, max_images=10):\n",
    "    if not images:\n",
    "        print(\"Нет изображений для отображения.\")\n",
    "        return\n",
    "    \n",
    "    count = min(max_images, len(images))\n",
    "    cols = 4\n",
    "    rows = (count + cols - 1) // cols\n",
    "\n",
    "    plt.figure(figsize=(15, 5 * rows))\n",
    "    for i in range(count):\n",
    "        plt.subplot(rows, cols, i + 1)\n",
    "        plt.imshow(cv2.cvtColor(images[i], cv2.COLOR_BGR2RGB))\n",
    "        plt.title(labels[i])\n",
    "        plt.axis('off')\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n",
    "\n",
    "images, labels = load_images_from_folder(folder_path)\n",
    "display_images(images, labels)\n",
    "\n",
    "\n",
    "# Преобразование в массивы\n",
    "images = np.array(images)  \n",
    "labels = np.array(labels)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Предобработка изображений"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "[encoded data, 523560 characters]",
      "text/plain": [
       "<Figure size 1000x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import cv2\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "def preprocess_images(images):\n",
    "    processed_images = []\n",
    "    for img in images:\n",
    "        img_resized = cv2.resize(img, (128, 128))\n",
    "        img_gray = cv2.cvtColor(img_resized, cv2.COLOR_BGR2GRAY)\n",
    "        img_eq = cv2.equalizeHist(img_gray)\n",
    "        img_bin = cv2.adaptiveThreshold(img_eq, 255,  cv2.ADAPTIVE_THRESH_GAUSSIAN_C, \n",
    "    cv2.THRESH_BINARY, 11, 2)\n",
    "        processed_images.append(img_bin)\n",
    "    return np.array(processed_images)\n",
    "\n",
    "processed_images = preprocess_images(images)\n",
    "\n",
    "def display_single_image(original, processed, index):\n",
    "    plt.figure(figsize=(10, 5))\n",
    "    \n",
    "    plt.subplot(1, 2, 1)\n",
    "    plt.imshow(cv2.cvtColor(original[index], cv2.COLOR_BGR2RGB))\n",
    "    plt.title('Оригинальное изображение')\n",
    "    plt.axis('off')\n",
    "\n",
    "    plt.subplot(1, 2, 2)\n",
    "    plt.imshow(processed[index], cmap='gray')\n",
    "    plt.title('Обработанное изображение')\n",
    "    plt.axis('off')\n",
    "\n",
    "    plt.show()\n",
    "\n",
    "index = 0  \n",
    "display_single_image(images, processed_images, index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "images_resized = np.array([cv2.resize(img, (28, 28)) for img in processed_images])\n",
    "if images_resized.shape[-1] == 3:  # \n",
    "    images_resized = np.dot(images_resized[...,:3], [0.2989, 0.5870, 0.1140])  # Формула из OpenCV\n",
    "    images_resized = np.expand_dims(images_resized, axis=-1)  # Добавляем размерность канала\n",
    "images_resized = images_resized.astype(\"float32\") / 255.0\n",
    "\n",
    "X_train, X_valid, y_train, y_valid = train_test_split(\n",
    "    images_resized, labels, test_size=0.2, stratify=labels, random_state=42\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[3.7370243e-03],\n",
       "        [1.3994618e-03],\n",
       "        [1.0611304e-03],\n",
       "        [1.9530950e-03],\n",
       "        [3.0757401e-03],\n",
       "        [1.9377163e-03],\n",
       "        [1.3225683e-03],\n",
       "        [3.0757401e-03],\n",
       "        [3.9215689e-03],\n",
       "        [1.0611304e-03],\n",
       "        [1.9530950e-03],\n",
       "        [2.8604383e-03],\n",
       "        [1.3994618e-03],\n",
       "        [3.2602844e-03],\n",
       "        [3.7370243e-03],\n",
       "        [1.9377163e-03],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [2.7681663e-04],\n",
       "        [3.6139947e-03],\n",
       "        [3.9215689e-03],\n",
       "        [8.3044986e-04],\n",
       "        [2.2760478e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [2.4144561e-03]],\n",
       "\n",
       "       [[3.9215689e-03],\n",
       "        [1.3994618e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [1.6147635e-03],\n",
       "        [3.9215689e-03],\n",
       "        [1.6455210e-03],\n",
       "        [3.9215689e-03],\n",
       "        [9.2272203e-05],\n",
       "        [3.2141483e-03],\n",
       "        [2.5221070e-03],\n",
       "        [2.5221070e-03],\n",
       "        [5.3825456e-04],\n",
       "        [3.0757402e-04],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [2.6605153e-03],\n",
       "        [2.5221070e-03],\n",
       "        [1.3994618e-03],\n",
       "        [2.8143022e-03],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03]],\n",
       "\n",
       "       [[3.9215689e-03],\n",
       "        [2.6143792e-03],\n",
       "        [5.3825456e-04],\n",
       "        [3.9215689e-03],\n",
       "        [3.3833142e-03],\n",
       "        [3.9215689e-03],\n",
       "        [9.9961564e-04],\n",
       "        [3.1372549e-03],\n",
       "        [3.8139177e-03],\n",
       "        [1.5378702e-05],\n",
       "        [1.9530950e-03],\n",
       "        [3.6601308e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [2.3375626e-03],\n",
       "        [3.6447521e-03],\n",
       "        [2.0915035e-03],\n",
       "        [3.9061899e-03],\n",
       "        [1.3994618e-03],\n",
       "        [9.9961564e-04],\n",
       "        [0.0000000e+00],\n",
       "        [1.8454441e-04],\n",
       "        [3.9215689e-03],\n",
       "        [1.9530950e-03],\n",
       "        [3.3833142e-03],\n",
       "        [3.8139177e-03],\n",
       "        [3.6447521e-03]],\n",
       "\n",
       "       [[4.1522493e-04],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [2.9373318e-03],\n",
       "        [3.9215689e-03],\n",
       "        [1.2610535e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [9.8423695e-04],\n",
       "        [1.3840832e-04],\n",
       "        [1.2610535e-03],\n",
       "        [4.1522493e-04],\n",
       "        [3.5063438e-03],\n",
       "        [3.2141483e-03],\n",
       "        [0.0000000e+00],\n",
       "        [2.9373318e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [3.5063438e-03],\n",
       "        [3.9215689e-03],\n",
       "        [1.2610535e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03]],\n",
       "\n",
       "       [[3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [3.6447521e-03],\n",
       "        [2.7681663e-04],\n",
       "        [3.7062669e-03],\n",
       "        [0.0000000e+00],\n",
       "        [1.5840061e-03],\n",
       "        [5.2287587e-04],\n",
       "        [1.9530950e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.6143792e-03],\n",
       "        [3.1372549e-03],\n",
       "        [3.8600538e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.7681663e-04],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [3.6447521e-03],\n",
       "        [8.4582856e-04],\n",
       "        [3.1372549e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.6447521e-03],\n",
       "        [1.8146867e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03]],\n",
       "\n",
       "       [[3.0757402e-04],\n",
       "        [9.0734335e-04],\n",
       "        [3.9215689e-03],\n",
       "        [1.2610535e-03],\n",
       "        [3.8139177e-03],\n",
       "        [2.1222609e-03],\n",
       "        [0.0000000e+00],\n",
       "        [8.4582856e-04],\n",
       "        [3.4140716e-03],\n",
       "        [2.7681663e-04],\n",
       "        [0.0000000e+00],\n",
       "        [2.6143792e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.0757401e-03],\n",
       "        [0.0000000e+00],\n",
       "        [2.3068052e-03],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [8.4582856e-04],\n",
       "        [3.9215689e-03],\n",
       "        [2.3068052e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [3.4140716e-03],\n",
       "        [3.9215689e-03]],\n",
       "\n",
       "       [[3.9215689e-03],\n",
       "        [1.9377163e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.3836987e-03],\n",
       "        [3.0757401e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.1372549e-03],\n",
       "        [2.3836987e-03],\n",
       "        [6.1514809e-05],\n",
       "        [8.4582856e-04],\n",
       "        [0.0000000e+00],\n",
       "        [3.7370243e-03],\n",
       "        [3.0757402e-04],\n",
       "        [3.9215689e-03],\n",
       "        [1.9530950e-03],\n",
       "        [3.7062669e-03],\n",
       "        [2.8143022e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.2602844e-03],\n",
       "        [1.9377163e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.5990005e-03]],\n",
       "\n",
       "       [[1.8454441e-04],\n",
       "        [1.9838526e-03],\n",
       "        [2.8604383e-03],\n",
       "        [0.0000000e+00],\n",
       "        [2.8604383e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.2602844e-03],\n",
       "        [0.0000000e+00],\n",
       "        [1.6455210e-03],\n",
       "        [1.0611304e-03],\n",
       "        [4.1522493e-04],\n",
       "        [3.8600538e-03],\n",
       "        [1.9377163e-03],\n",
       "        [6.6128414e-04],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [2.7681663e-04],\n",
       "        [1.3994618e-03],\n",
       "        [3.9215689e-03],\n",
       "        [8.4582856e-04],\n",
       "        [1.1072665e-03],\n",
       "        [9.9961564e-04],\n",
       "        [1.9530950e-03],\n",
       "        [2.9219531e-03],\n",
       "        [3.3833142e-03],\n",
       "        [3.7370243e-03]],\n",
       "\n",
       "       [[2.8143022e-03],\n",
       "        [3.0142253e-03],\n",
       "        [9.2272203e-05],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [4.9211847e-04],\n",
       "        [3.6139947e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [7.0742023e-04],\n",
       "        [1.3071896e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.6139947e-03],\n",
       "        [3.0757401e-03],\n",
       "        [2.5221070e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [1.5840061e-03],\n",
       "        [4.9211847e-04],\n",
       "        [2.5221070e-03],\n",
       "        [5.3825456e-04],\n",
       "        [1.3994618e-03],\n",
       "        [0.0000000e+00],\n",
       "        [2.6605153e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [8.4582856e-04]],\n",
       "\n",
       "       [[2.1530181e-04],\n",
       "        [2.7681663e-04],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [3.6447521e-03],\n",
       "        [3.9215689e-03],\n",
       "        [8.4582856e-04],\n",
       "        [2.9219531e-03],\n",
       "        [2.6143792e-03],\n",
       "        [3.6601308e-03],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [1.8454441e-04],\n",
       "        [3.7062669e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.8139177e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [2.6143793e-04],\n",
       "        [3.9215689e-03],\n",
       "        [7.8431371e-04],\n",
       "        [7.8431371e-04],\n",
       "        [1.3994618e-03],\n",
       "        [0.0000000e+00],\n",
       "        [1.9530950e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.1372549e-03]],\n",
       "\n",
       "       [[3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.7831604e-03],\n",
       "        [3.9215689e-03],\n",
       "        [1.9684739e-03],\n",
       "        [1.9684739e-03],\n",
       "        [1.5378700e-03],\n",
       "        [3.5063438e-03],\n",
       "        [1.2610535e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [1.3840832e-04],\n",
       "        [3.2141483e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [1.2610535e-03],\n",
       "        [1.3840832e-04],\n",
       "        [2.9373318e-03],\n",
       "        [2.1068822e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [7.0742023e-04],\n",
       "        [3.6447521e-03],\n",
       "        [1.9684739e-03],\n",
       "        [3.9215689e-03],\n",
       "        [1.2610535e-03],\n",
       "        [3.9215689e-03]],\n",
       "\n",
       "       [[3.7062669e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [1.8146867e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.6447521e-03],\n",
       "        [2.8604383e-03],\n",
       "        [0.0000000e+00],\n",
       "        [2.7681663e-04],\n",
       "        [3.9215689e-03],\n",
       "        [3.7831604e-03],\n",
       "        [3.6447521e-03],\n",
       "        [2.5221070e-03],\n",
       "        [8.4582856e-04],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.6143793e-04],\n",
       "        [1.8454441e-04],\n",
       "        [8.4582856e-04],\n",
       "        [3.7062669e-03],\n",
       "        [1.3071896e-03],\n",
       "        [3.6601308e-03],\n",
       "        [1.9530950e-03],\n",
       "        [3.6447521e-03],\n",
       "        [1.8454441e-04],\n",
       "        [2.8604383e-03]],\n",
       "\n",
       "       [[3.9215689e-03],\n",
       "        [3.4140716e-03],\n",
       "        [3.9215689e-03],\n",
       "        [1.3994618e-03],\n",
       "        [0.0000000e+00],\n",
       "        [2.5221070e-03],\n",
       "        [2.8143022e-03],\n",
       "        [3.0757401e-03],\n",
       "        [1.6147635e-03],\n",
       "        [2.7681663e-04],\n",
       "        [7.0742023e-04],\n",
       "        [1.8454441e-04],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [3.6139947e-03],\n",
       "        [1.6147635e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [1.8454441e-04],\n",
       "        [0.0000000e+00],\n",
       "        [1.3994618e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [1.9530950e-03],\n",
       "        [2.6143792e-03],\n",
       "        [4.9211847e-04],\n",
       "        [3.9215689e-03]],\n",
       "\n",
       "       [[3.2602844e-03],\n",
       "        [1.9838526e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [3.6447521e-03],\n",
       "        [2.8143022e-03],\n",
       "        [0.0000000e+00],\n",
       "        [8.4582856e-04],\n",
       "        [3.0757401e-03],\n",
       "        [2.1530181e-04],\n",
       "        [2.3836987e-03],\n",
       "        [0.0000000e+00],\n",
       "        [1.9838526e-03],\n",
       "        [6.6128414e-04],\n",
       "        [6.6128414e-04],\n",
       "        [3.3833142e-03],\n",
       "        [2.8604383e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.7681663e-04],\n",
       "        [3.9215689e-03],\n",
       "        [3.2602844e-03],\n",
       "        [3.7370243e-03],\n",
       "        [2.5221070e-03],\n",
       "        [3.0757401e-03],\n",
       "        [3.9215689e-03],\n",
       "        [7.8431371e-04],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00]],\n",
       "\n",
       "       [[0.0000000e+00],\n",
       "        [3.3833142e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.3836987e-03],\n",
       "        [3.9215689e-03],\n",
       "        [1.9377163e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.5990005e-03],\n",
       "        [5.3825456e-04],\n",
       "        [6.1514809e-05],\n",
       "        [2.3836987e-03],\n",
       "        [2.7681663e-04],\n",
       "        [3.0757402e-04],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [2.5221070e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [6.1514809e-05],\n",
       "        [8.4582856e-04],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.0757402e-04],\n",
       "        [0.0000000e+00],\n",
       "        [1.5378700e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.6139947e-03],\n",
       "        [3.0757401e-03]],\n",
       "\n",
       "       [[1.1072665e-03],\n",
       "        [9.0734335e-04],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [2.7681663e-04],\n",
       "        [2.3068052e-03],\n",
       "        [3.0757401e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [7.0742023e-04],\n",
       "        [9.2272203e-05],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [1.9838526e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.8139177e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.7681663e-04],\n",
       "        [3.9215689e-03],\n",
       "        [5.3825456e-04],\n",
       "        [1.9377163e-03],\n",
       "        [2.5221070e-03],\n",
       "        [1.5840061e-03],\n",
       "        [1.9530950e-03],\n",
       "        [0.0000000e+00],\n",
       "        [2.5221070e-03],\n",
       "        [1.9838526e-03]],\n",
       "\n",
       "       [[3.0757401e-03],\n",
       "        [2.7681663e-04],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [1.5840061e-03],\n",
       "        [2.8604383e-03],\n",
       "        [3.8600538e-03],\n",
       "        [0.0000000e+00],\n",
       "        [2.6143793e-04],\n",
       "        [2.7681663e-04],\n",
       "        [2.7681663e-04],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9061899e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [3.1372549e-03],\n",
       "        [3.7370243e-03],\n",
       "        [1.5378702e-05],\n",
       "        [3.7831604e-03],\n",
       "        [2.6143793e-04],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00]],\n",
       "\n",
       "       [[0.0000000e+00],\n",
       "        [1.9684739e-03],\n",
       "        [3.7831604e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.1068822e-03],\n",
       "        [0.0000000e+00],\n",
       "        [1.9684739e-03],\n",
       "        [0.0000000e+00],\n",
       "        [1.3994618e-03],\n",
       "        [2.7681663e-04],\n",
       "        [2.9373318e-03],\n",
       "        [1.8146867e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [3.5063438e-03],\n",
       "        [1.9684739e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [2.6605153e-03],\n",
       "        [0.0000000e+00],\n",
       "        [4.1522493e-04],\n",
       "        [0.0000000e+00],\n",
       "        [2.1068822e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.7681663e-04],\n",
       "        [2.5221070e-03],\n",
       "        [1.5378700e-03]],\n",
       "\n",
       "       [[2.1530181e-04],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [1.3994618e-03],\n",
       "        [3.0757401e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.3375626e-03],\n",
       "        [2.7681663e-04],\n",
       "        [0.0000000e+00],\n",
       "        [2.7681663e-04],\n",
       "        [1.3994618e-03],\n",
       "        [2.7681663e-04],\n",
       "        [3.1372549e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [3.7831604e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.7370243e-03],\n",
       "        [3.6447521e-03],\n",
       "        [2.1530181e-04],\n",
       "        [1.5840061e-03],\n",
       "        [3.6601308e-03],\n",
       "        [3.7831604e-03],\n",
       "        [2.6143793e-04],\n",
       "        [2.6143792e-03],\n",
       "        [8.4582856e-04]],\n",
       "\n",
       "       [[3.9215689e-03],\n",
       "        [3.0142253e-03],\n",
       "        [0.0000000e+00],\n",
       "        [1.9530950e-03],\n",
       "        [2.5221070e-03],\n",
       "        [3.0142253e-03],\n",
       "        [3.0757402e-04],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [1.3994618e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [1.6147635e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.2760478e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.7370243e-03],\n",
       "        [7.0742023e-04],\n",
       "        [2.6143792e-03],\n",
       "        [2.3068052e-03],\n",
       "        [1.9838526e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.7681663e-04],\n",
       "        [1.2610535e-03],\n",
       "        [1.3071896e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.3833142e-03]],\n",
       "\n",
       "       [[8.3044986e-04],\n",
       "        [0.0000000e+00],\n",
       "        [8.4582856e-04],\n",
       "        [8.4582856e-04],\n",
       "        [9.9961564e-04],\n",
       "        [0.0000000e+00],\n",
       "        [3.7370243e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.3833142e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [7.8431371e-04],\n",
       "        [5.3825456e-04],\n",
       "        [3.7370243e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.3833142e-03],\n",
       "        [6.1514809e-05],\n",
       "        [2.3836987e-03],\n",
       "        [1.0611304e-03],\n",
       "        [3.0757401e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [7.8431371e-04],\n",
       "        [3.9215689e-03],\n",
       "        [2.1530181e-04],\n",
       "        [5.3825456e-04],\n",
       "        [0.0000000e+00]],\n",
       "\n",
       "       [[6.6128414e-04],\n",
       "        [0.0000000e+00],\n",
       "        [7.8431371e-04],\n",
       "        [2.3836987e-03],\n",
       "        [3.9215689e-03],\n",
       "        [5.3825456e-04],\n",
       "        [2.4144561e-03],\n",
       "        [8.3044986e-04],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [2.7681663e-04],\n",
       "        [3.9215689e-03],\n",
       "        [3.2602844e-03],\n",
       "        [1.8454441e-04],\n",
       "        [3.9215689e-03],\n",
       "        [2.7681663e-04],\n",
       "        [3.9215689e-03],\n",
       "        [2.8604383e-03],\n",
       "        [3.0757402e-04],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [5.3825456e-04],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [2.8604383e-03],\n",
       "        [1.9838526e-03],\n",
       "        [3.2602844e-03]],\n",
       "\n",
       "       [[3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.7681663e-04],\n",
       "        [3.9215689e-03],\n",
       "        [1.5840061e-03],\n",
       "        [3.0142253e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.3833142e-03],\n",
       "        [9.0734335e-04],\n",
       "        [2.3375626e-03],\n",
       "        [2.5221070e-03],\n",
       "        [1.3994618e-03],\n",
       "        [1.7993080e-03],\n",
       "        [3.0757402e-04],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [3.0757402e-04],\n",
       "        [3.9215689e-03],\n",
       "        [9.0734335e-04],\n",
       "        [2.3375626e-03],\n",
       "        [2.5221070e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03]],\n",
       "\n",
       "       [[3.7062669e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.6601308e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.7681663e-04],\n",
       "        [1.4763552e-03],\n",
       "        [3.8600538e-03],\n",
       "        [1.0611304e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.7681663e-04],\n",
       "        [0.0000000e+00],\n",
       "        [1.5378702e-05],\n",
       "        [3.7370243e-03],\n",
       "        [3.0757401e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.8139177e-03],\n",
       "        [2.7681663e-04],\n",
       "        [0.0000000e+00],\n",
       "        [3.3833142e-03],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [3.9215689e-03],\n",
       "        [1.5378702e-05],\n",
       "        [1.9530950e-03],\n",
       "        [1.5378702e-05],\n",
       "        [1.3994618e-03],\n",
       "        [3.9215689e-03]],\n",
       "\n",
       "       [[1.9684739e-03],\n",
       "        [1.9684739e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [1.9684739e-03],\n",
       "        [3.9215689e-03],\n",
       "        [1.5378700e-03],\n",
       "        [1.9684739e-03],\n",
       "        [1.2610535e-03],\n",
       "        [1.3840832e-04],\n",
       "        [3.9215689e-03],\n",
       "        [1.8146867e-03],\n",
       "        [7.0742023e-04],\n",
       "        [1.9684739e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.2141483e-03],\n",
       "        [3.6447521e-03],\n",
       "        [1.9684739e-03],\n",
       "        [1.8146867e-03],\n",
       "        [1.9530950e-03],\n",
       "        [0.0000000e+00],\n",
       "        [2.3836987e-03],\n",
       "        [1.3994618e-03],\n",
       "        [3.6447521e-03],\n",
       "        [9.8423695e-04],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [2.3836987e-03]],\n",
       "\n",
       "       [[9.9961564e-04],\n",
       "        [3.9215689e-03],\n",
       "        [1.5378702e-05],\n",
       "        [1.8146867e-03],\n",
       "        [0.0000000e+00],\n",
       "        [2.5221070e-03],\n",
       "        [2.8604383e-03],\n",
       "        [2.9219531e-03],\n",
       "        [1.3071896e-03],\n",
       "        [0.0000000e+00],\n",
       "        [0.0000000e+00],\n",
       "        [2.6143793e-04],\n",
       "        [2.5221070e-03],\n",
       "        [3.6447521e-03],\n",
       "        [1.0611304e-03],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [1.9530950e-03],\n",
       "        [3.3833142e-03],\n",
       "        [1.3994618e-03],\n",
       "        [2.1530181e-04],\n",
       "        [3.9215689e-03],\n",
       "        [2.6143792e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.7831604e-03],\n",
       "        [3.3833142e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.9219531e-03]],\n",
       "\n",
       "       [[3.0757402e-04],\n",
       "        [0.0000000e+00],\n",
       "        [2.7681663e-04],\n",
       "        [1.9530950e-03],\n",
       "        [9.2272203e-05],\n",
       "        [1.3994618e-03],\n",
       "        [2.8143022e-03],\n",
       "        [0.0000000e+00],\n",
       "        [4.9211847e-04],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [2.7681663e-04],\n",
       "        [1.3994618e-03],\n",
       "        [3.6139947e-03],\n",
       "        [3.0757402e-04],\n",
       "        [2.5221070e-03],\n",
       "        [3.9215689e-03],\n",
       "        [1.9530950e-03],\n",
       "        [2.3375626e-03],\n",
       "        [3.4140716e-03],\n",
       "        [1.9377163e-03],\n",
       "        [1.6455210e-03],\n",
       "        [1.6147635e-03],\n",
       "        [2.3375626e-03],\n",
       "        [3.9215689e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.4140716e-03],\n",
       "        [2.8143022e-03]],\n",
       "\n",
       "       [[0.0000000e+00],\n",
       "        [3.0757401e-03],\n",
       "        [8.4582856e-04],\n",
       "        [0.0000000e+00],\n",
       "        [2.1530181e-04],\n",
       "        [1.3994618e-03],\n",
       "        [3.9215689e-03],\n",
       "        [1.8454441e-04],\n",
       "        [3.0757402e-04],\n",
       "        [6.1514809e-05],\n",
       "        [0.0000000e+00],\n",
       "        [3.0757401e-03],\n",
       "        [2.8143022e-03],\n",
       "        [6.6128414e-04],\n",
       "        [6.6128414e-04],\n",
       "        [3.0757401e-03],\n",
       "        [7.8431371e-04],\n",
       "        [1.9530950e-03],\n",
       "        [3.6447521e-03],\n",
       "        [2.8143022e-03],\n",
       "        [6.6128414e-04],\n",
       "        [3.0757401e-03],\n",
       "        [0.0000000e+00],\n",
       "        [3.9215689e-03],\n",
       "        [1.5378700e-03],\n",
       "        [1.0611304e-03],\n",
       "        [3.9215689e-03],\n",
       "        [2.4144561e-03]]], dtype=float32)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "array([1., 0., 0., 0., 0.])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.preprocessing import LabelEncoder\n",
    "import tensorflow as tf\n",
    "\n",
    "n_classes = 5\n",
    "le = LabelEncoder()\n",
    "y_train = le.fit_transform(y_train) \n",
    "y_valid = le.transform(y_valid)\n",
    "\n",
    "X_train = X_train.reshape(-1, 28, 28, 1).astype(\"float32\") / 255\n",
    "X_valid = X_valid.reshape(-1, 28, 28, 1).astype(\"float32\") / 255\n",
    "y_train = keras.utils.to_categorical(y_train, n_classes)\n",
    "y_valid = keras.utils.to_categorical(y_valid, n_classes)\n",
    "\n",
    "display(X_train[0])\n",
    "display(y_train[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Проектирование архитектуры LeNet-5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential_1\"</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1mModel: \"sequential_1\"\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
       "┃<span style=\"font-weight: bold\"> Layer (type)                    </span>┃<span style=\"font-weight: bold\"> Output Shape           </span>┃<span style=\"font-weight: bold\">       Param # </span>┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
       "│ conv2d_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv2D</span>)               │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">26</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">26</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">32</span>)     │           <span style=\"color: #00af00; text-decoration-color: #00af00\">320</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ conv2d_3 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv2D</span>)               │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">24</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">24</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)     │        <span style=\"color: #00af00; text-decoration-color: #00af00\">18,496</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ max_pooling2d_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">MaxPooling2D</span>)  │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">12</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">12</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)     │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ flatten_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Flatten</span>)             │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">9216</span>)           │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>)            │     <span style=\"color: #00af00; text-decoration-color: #00af00\">1,179,776</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)             │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">128</span>)            │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_3 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">5</span>)              │           <span style=\"color: #00af00; text-decoration-color: #00af00\">645</span> │\n",
       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
       "</pre>\n"
      ],
      "text/plain": [
       "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
       "┃\u001b[1m \u001b[0m\u001b[1mLayer (type)                   \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape          \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m      Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
       "│ conv2d_2 (\u001b[38;5;33mConv2D\u001b[0m)               │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m26\u001b[0m, \u001b[38;5;34m26\u001b[0m, \u001b[38;5;34m32\u001b[0m)     │           \u001b[38;5;34m320\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ conv2d_3 (\u001b[38;5;33mConv2D\u001b[0m)               │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m24\u001b[0m, \u001b[38;5;34m24\u001b[0m, \u001b[38;5;34m64\u001b[0m)     │        \u001b[38;5;34m18,496\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ max_pooling2d_1 (\u001b[38;5;33mMaxPooling2D\u001b[0m)  │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m12\u001b[0m, \u001b[38;5;34m12\u001b[0m, \u001b[38;5;34m64\u001b[0m)     │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ flatten_1 (\u001b[38;5;33mFlatten\u001b[0m)             │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m9216\u001b[0m)           │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_2 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m)            │     \u001b[38;5;34m1,179,776\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_1 (\u001b[38;5;33mDropout\u001b[0m)             │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m)            │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_3 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m5\u001b[0m)              │           \u001b[38;5;34m645\u001b[0m │\n",
       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">1,199,237</span> (4.57 MB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m1,199,237\u001b[0m (4.57 MB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">1,199,237</span> (4.57 MB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m1,199,237\u001b[0m (4.57 MB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from keras.api.models import Sequential\n",
    "from keras.api.layers import InputLayer, Conv2D, MaxPooling2D, Dropout, Flatten, Dense\n",
    "\n",
    "lenet_model = Sequential()\n",
    "\n",
    "# Входной слой\n",
    "lenet_model.add(InputLayer(shape=(28, 28, 1)))\n",
    "\n",
    "# Первый скрытый слой\n",
    "lenet_model.add(Conv2D(32, kernel_size=(3, 3), activation=\"relu\"))\n",
    "\n",
    "# Второй скрытый слой\n",
    "lenet_model.add(Conv2D(64, kernel_size=(3, 3), activation=\"relu\"))\n",
    "lenet_model.add(MaxPooling2D(pool_size=(2, 2)))\n",
    "\n",
    "\n",
    "# Третий скрытый слой\n",
    "lenet_model.add(Flatten())\n",
    "lenet_model.add(Dense(128, activation=\"relu\"))\n",
    "lenet_model.add(Dropout(0.5))\n",
    "\n",
    "# Выходной слой\n",
    "lenet_model.add(Dense(n_classes, activation=\"softmax\"))\n",
    "\n",
    "lenet_model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Обучение глубокой модели"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/10\n",
      "\u001b[1m8/8\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 118ms/step - accuracy: 0.5089 - loss: 1.4596 - val_accuracy: 0.5652 - val_loss: 0.7946\n",
      "Epoch 2/10\n",
      "\u001b[1m8/8\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 91ms/step - accuracy: 0.5371 - loss: 0.7967 - val_accuracy: 0.4348 - val_loss: 0.7080\n",
      "Epoch 3/10\n",
      "\u001b[1m8/8\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 90ms/step - accuracy: 0.5210 - loss: 0.7743 - val_accuracy: 0.5652 - val_loss: 0.6919\n",
      "Epoch 4/10\n",
      "\u001b[1m8/8\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 89ms/step - accuracy: 0.5461 - loss: 0.7277 - val_accuracy: 0.5652 - val_loss: 0.6983\n",
      "Epoch 5/10\n",
      "\u001b[1m8/8\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 86ms/step - accuracy: 0.5538 - loss: 0.7081 - val_accuracy: 0.5652 - val_loss: 0.6918\n",
      "Epoch 6/10\n",
      "\u001b[1m8/8\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 86ms/step - accuracy: 0.5112 - loss: 0.7309 - val_accuracy: 0.5652 - val_loss: 0.6887\n",
      "Epoch 7/10\n",
      "\u001b[1m8/8\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 90ms/step - accuracy: 0.5446 - loss: 0.7038 - val_accuracy: 0.5652 - val_loss: 0.6871\n",
      "Epoch 8/10\n",
      "\u001b[1m8/8\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 102ms/step - accuracy: 0.5310 - loss: 0.7137 - val_accuracy: 0.5652 - val_loss: 0.6866\n",
      "Epoch 9/10\n",
      "\u001b[1m8/8\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 89ms/step - accuracy: 0.5198 - loss: 0.7142 - val_accuracy: 0.5652 - val_loss: 0.6878\n",
      "Epoch 10/10\n",
      "\u001b[1m8/8\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 90ms/step - accuracy: 0.5262 - loss: 0.7058 - val_accuracy: 0.5652 - val_loss: 0.6872\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.src.callbacks.history.History at 0x29089f104a0>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lenet_model.compile(\n",
    "    loss=\"categorical_crossentropy\",\n",
    "    optimizer=\"adam\",\n",
    "    metrics=[\"accuracy\"],\n",
    ")\n",
    "\n",
    "lenet_model.fit(\n",
    "    X_train,\n",
    "    y_train,\n",
    "    batch_size=128,\n",
    "    epochs=10,\n",
    "    validation_data=(X_valid, y_valid),\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Оценка качества модели"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m8/8\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 9ms/step - accuracy: 0.6047 - loss: 0.6794 \n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.6871750354766846, 0.5652173757553101]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lenet_model.evaluate(X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Классификация текстов"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Обработка документов: 100%|██████████| 41/41 [03:37<00:00,  5.30s/it]\n"
     ]
    },
    {
     "data": {
      "application/vnd.microsoft.datawrangler.viewer.v0+json": {
       "columns": [
        {
         "name": "index",
         "rawType": "int64",
         "type": "integer"
        },
        {
         "name": "doc",
         "rawType": "object",
         "type": "string"
        },
        {
         "name": "text",
         "rawType": "object",
         "type": "string"
        },
        {
         "name": "type",
         "rawType": "int32",
         "type": "integer"
        }
       ],
       "conversionMethod": "pd.DataFrame",
       "ref": "336e621a-9edf-4f03-ae10-998307c2951a",
       "rows": [
        [
         "0",
         "tz_01.doc",
         "2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\r2.2.1 Общие сведения\rполное наименование системы и ее условное обозначение: Конфигурация «Бухгалтерия предприятия» в среде «1С: Предприятие 8.1»; \rшифр темы: ДП – УлГТУ –  08080165 – 00/00000 – 2010;\rнаименование предприятий разработчика и заказчика системы, их реквизиты: УМКУП «Городской градостроительный сервис», 432063, г.Ульяновск, пер.Комсомольский 3, 8-962-633-01-77;\rперечень документов, на основании которых создается информационная система: ; \rплановые сроки начала и окончания работ:1 апреля 2010 г. – 15 июня 2010 г.;\rсведения об источниках и порядке финансирования работ: работа проводится на безвозмездной основе, не финансируется;\rпорядок оформления и предъявления заказчику результатов работ по созданию системы, ее частей и отдельных средств: по окончанию работ заказчику передается установочный диск со всеми дистрибутивами, необходимыми для функционирования разработанного программного продукта, а так же сопроводительная документация: техническое задание и методические указания пользователю и программисту.\r\rНазначение и цели создания системы\rРазработанный программный продукт предназначен для обеспечения полноты автоматизации деятельности бухгалтера организации УМКУП «Городской градостроительный сервис» при использовании конфигурации «Бухгалтерия предприятия» на платформе «1С: Предприятие 8.1» в части расчета заработной платы  и учета деятельности сотрудников организации. Предполагается использование системы на автоматизированном рабочем месте главного бухгалтера организации.\rОсновными целями создания системы являются:\rдополнение существующей информационной системы, которая не предоставляет возможность расчета заработной платы организации, имеющей специфические принципы оплаты труда соответствующим функционалом, который, кроме того, затрагивает автоматизацию процессов, влияющих на процесс формирования сумм заработной платы;\rповышение эффективности исполнения автоматизируемых процессов, путем сокращения непроизводительных и дублирующих операций, операций, выполняемых «вручную», оптимизации информационного взаимодействие участников процессов; \rповышение качества принятия управленческих решений за счет оперативности представления, полноты, достоверности и удобства форматов отображения информации;\r\rХарактеристика объектов автоматизации\rОбъектом автоматизации является процесс учета расчетов с работниками по оплате труда в организации, имеющей специфические принципы формирования расчетных сумм, в части расчета этих сумм и сбора данных из документов оперативного учета для проведения расчета.\r\rТребования к системе\rТребования к системе в целом\rа) Требования к структуре и функционированию системы\rНазначение и цели создания системы должны быть реализованы в двух подсистемах конфигурации «Бухгалтерия предприятия» на платформе «1С: Предприятие8.1»:\rСистема бухгалтерского учета\rСистема оперативного учета\rПодсистема оперативного учета должна содержать механизмы, позволяющие вводить в систему и хранить в ней информацию о текущей деятельности организации. В этой подсистеме должны фиксироваться и систематизироваться данные, необходимые для реализации расчета сумм начислений. \rПодсистема бухгалтерского учета должна содержать в себе механизмы для реализации учета расчетов с сотрудниками организации. Именно эта подсистема должна реализовывать процесс расчета, используя данные, содержащиеся в подсистеме оперативного учета.\rб) Требования к персоналу\rДля наиболее эффективного функционирования системы помимо пользователя – главного бухгалтера организации, для автоматизации деятельности которого предназначена система, необходимо иметь специалиста технической поддержки данного программного продукта. \rв) Показатели назначения \rСистема должна предусматривать возможность масштабирования по производительности и объему обрабатываемой информации без модификации ее программного обеспечения путем модернизации используемого комплекса технических средств. Изменение процессов управления не должно отражаться на правильности функционирования системы.\rг) Требования к надежности, эргономике, защите и сохранности информации, защите от внешних воздействий.\rСистема должна сохранять работоспособность и обеспечивать восстановление своих функций при возникновении следующих внештатных ситуаций:\rпри сбоях в системе электроснабжения аппаратной части, приводящих к перезагрузке ОС;\rпри ошибках в работе аппаратных средств (кроме носителей данных и программ) восстановление функции системы возлагается на ОС;\rпри ошибках, связанных с программным обеспечением (ОС и драйверы устройств), восстановление работоспособности возлагается на ОС\rсистема должна обеспечивать корректную обработку аварийных ситуаций, вызванных неверными действиями пользователей, неверным форматом или недопустимыми значениями входных данных. В указанных случаях система должна выдавать пользователю соответствующие сообщения, после чего возвращаться в рабочее состояние, предшествовавшее неверной (недопустимой) команде или некорректному вводу данных. \rСистема должна быть эргономичной. Интерфейс системы должен быть понятным и удобным, не должен быть перегружен графическими элементами и должен обеспечивать быстрое отображение экранных форм. Навигационные элементы должны быть выполнены в удобной для пользователя форме. Средства редактирования информации должны удовлетворять принятым соглашениям в части использования функциональных клавиш, режимов работы, поиска, использования оконной системы. Ввод-вывод данных системы, прием управляющих команд и отображение результатов их исполнения должны выполняться в интерактивном режиме. Интерфейс должен соответствовать современным эргономическим требованиям и обеспечивать удобный доступ к основным функциям и операциям системы.\rИнтерфейс должен быть рассчитан на преимущественное использование манипулятора типа «мышь», то есть управление системой должно осуществляться с помощью набора экранных меню, кнопок, значков и т. п. элементов. Клавиатурный режим ввода должен используется главным образом при заполнении и/или редактировании текстовых и числовых полей экранных форм.\rВсе надписи экранных форм, а также сообщения, выдаваемые пользователю (кроме системных сообщений) должны быть на русском языке.\rИС должна обеспечивать защиту от несанкционированного доступа. Компоненты подсистемы защиты от несанкционированного доступа должны обеспечивать:\rидентификацию пользователя;\rпроверку полномочий пользователя при работе с системой;\rразграничение доступа пользователей на уровне задач и информационных массивов.\r\rТребования к функциям (по подсистемам)\rПодсистема оперативного учета\rПодсистема оперативного учета должна осуществлять ввод и хранение оперативных данных системы, данных для формирования аналитических отчетов, документов системы, сформированных в процессе работы.\rВсе элементы, входящие в состав подсистемы оперативного учета, должны обладать следующей основной функциональностью:\rПостоянное хранение данных;\rДобавление новых элементов;\rРедактирование элементов;\rУдаление (удаление элементов возможно лишь в том случае, если другие существующие объекты системы не ссылаются на удаляемый элемент);\rПросмотр элементов;\rПросмотр списка элементов;\rФильтрация и сортировка списка элементов;\rПоиск элементов;\rЭкспорт и импорт элементов.\rПодсистема бухгалтерского учета\rПодсистема бухгалтерского учета должна иметь средства для регистрации бухгалтерских операций и формирования на их основе соответствующей итоговой информации, а также подготовки произвольных бухгалтерских отчетов. Подсистема бухгалтерского учета должна вести учет, ориентированный на первичные документы, относящиеся к подсистеме оперативного учета, и иметь функцию расчета сумм начислений заработной платы сотрудникам на основе этих документов.\r\rТребования к видам обеспечения\rК видам обеспечения предъявляются следующие требования:\rа) математическому: не предъявляются;\rб) информационному: уровень хранения данных в системе должен быть построен на основе современных СУБД. Для обеспечения целостности данных должны использоваться встроенные механизмы СУБД. Доступ к данным должен быть предоставлен только авторизованным пользователям с учетом их служебных полномочий, а также с учетом категории запрашиваемой информации. Технические средства, обеспечивающие хранение информации, должны использовать современные технологии, позволяющие обеспечить повышенную надежность хранения данных и оперативную замену оборудования.\rв) лингвистическому: система создана на основе языка программирования «1С 8.1»;\rг) программному и техническому:\rКомпьютер конечного пользователя \rоперационная систему: MS Windows 98/XP/Vista/Server 2003/2008;\rпроцессор Intel Pentium II 400 МГц и выше (рекомендуется Intel Pentium III 866 МГц);\rоперативная память 128 Мбайт и выше (рекомендуется 256 Мбайт);\rжесткий диск (при установке используется около 120 Мбайт).\rКомпьютер, используемый для разработки конфигураций\rоперационная система: MS Windows 2000/XP/Vista/Server 2003/2008;\rпроцессор Intel Pentium III 866 МГц и выше (рекомендуется Intel Pentium IV/Celeron 1800 МГц);\rоперативная память 256 Мбайт и выше (рекомендуется 512 Мбайт);\rжесткий диск (при установке используется около 120 Мбайт).\rКомпьютер сервера 1С:Предприятия 8.1\rоперационная система: MS Windows 2000/XP/Vista/Server 2003/2008;\rпроцессор Intel Pentium III 866 МГц и выше (рекомендуется Intel Pentium IV/Xeon 2,4 ГГц, для лучшей масштабируемости рекомендуется два и более процессоров);\rоперативная память 512 Мбайт и выше (рекомендуется 1024 Мбайт).\rСервер баз данных\rMicrosoft SQL Server 2000 + Service Pack 2 (рекомендуется Service Pack 3a) или Microsoft SQL Server 2005.\rКомпьютер сервера баз данных\rоперационная система: в соответствии с требованиями Microsoft SQL Server;\rтехнические характеристики компьютера должны соответствовать требованиям используемой версии сервера баз данных MS SQL Server.\rд) метрологическому: требования не предъявляются;\rе) организационному: для эффективного функционирования системы помимо пользователя необходим специалист по технической поддержке. К работе с системой должны допускаться сотрудники, имеющие навыки работы на персональном компьютере, ознакомленные с правилами эксплуатации и прошедшие обучение работе с системой.\rж) методическому: в состав методического обеспечения системы должны входить: инструкция программисту, инструкция пользователю.\r\rСостав и содержание работ по созданию системы\rПеречень стадий и этапов работ, а так же сроки их исполнения представлены в Таблице 2.\rТаблица 2.\rЭтапы и сроки исполнения работ\r№\r\u0007Выполняемая работа\r\u0007Сроки\r\u0007\r\u00071.\r\u0007Постановка задачи\r\u0007Март 2010 г.\r\u0007\r\u00072.\r\u0007Проектирование \r\u0007Апрель 2010 г.\r\u0007\r\u00073.\r\u0007Кодирование\r\u0007Май 2010 г.\r\u0007\r\u00074.\r\u0007Тестирование и отладка\r\u0007Май 2010 г\r\u0007\r\u00075.\r\u0007Анализ результатов\r\u0007Июнь 2010 г.\r\u0007\r\u0007Работы по созданию системы проводились физическим лицом – студенткой группы ИСЭд-51 УлГТУ, Башаровой И.С. Консультантом при разработке являлась Суркова Е.В., доцент кафедры «Информационные системы» УлГТУ, руководитель дипломного проекта.\r\rПорядок контроля и приемки системы\rПриемочные испытания должны включать проверку:\rполноты и качества реализации необходимых функций;\rвыполнения каждого требования, относящегося к эргономике;\rработы пользователей в диалоговом режиме;\rсредств и методов восстановления работоспособности системы после отказов;\rполноты действий, доступных пользователю, и их достаточность для функционирования системы;\rреакции системы на ошибки пользователя;\rтестирование на скорость реакции системы на команды пользователя.\r\rТребования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие\rДля подготовки объекта автоматизации к вводу системы в действие необходимо при помощи специалиста технической поддержки, осуществляющего обслуживание используемой в организации базовой конфигурации «Бухгалтерия предприятия», выгрузить все информацию, содержащуюся в этой конфигурации, для дальнейшего ее использования в разработанной системе. Загрузка информации в новую конфигурацию должна так же осуществляться специалистом технической поддержки.\rПеред началом использования системы пользователю необходимо ознакомится с руководством пользователя, содержащимся в сопроводительной документации разработанной системы и пройти обучение для ознакомления с принципами ее функционирования в течение 1 академического часа (при условии владения пользователя навыками работы в базовой конфигурации «Бухгалтерия предприятия» платформы «1С: Предприятие 8.1»). \r\rТребования к документированию\rРазработке подлежит следующая документация:\rИнструкция пользователю;\rИнструкция программисту.",
         "1"
        ],
        [
         "1",
         "tz_02.doc",
         "2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\r2.2.1 Общие сведения\rПолное наименование системы:   «Автоматизированное рабочее место  продавца-консультанта  в салоне  фотоуслуг» в среде «1С: Предприятие 8.1».\rШифр темы: ДП–УлГТУ– 08080165–05/0978–2010.\rНаименование предприятия заказчика системы, его реквизиты: ООО «УмКо», г.Ульяновск;\rПлановые сроки начала и окончания работ: 1 апреля 2009 года — 15 июня 2009 года;\rСведения об источниках и порядке финансирования работ: данные работы проводятся на безвозмездной основе;\rПорядок оформления и предъявления заказчику результатов работ по созданию системы, ее частей и отдельных средств: по окончанию работ заказчику должны быть предъявлены и переданы все необходимые дистрибутивы, набор инструкций и документации.\r\r2.2.2 Назначение и цели создания системы\rРазработанная система предназначена для автоматизации работы продавца-консультанта салона фотоуслуг по принятию заказов и выполнению различного рода операций над ними, ведению учета принятых, выполненных и выданных заказов.\rЦелью создания системы является повышение скорости и качества работы продавца-консультанта, упрощение выполнения им ряда операций, повышение качества обслуживания клиентов за счет актуальности и достоверности хранимой информации по заказам.     \r\r2.2.3 Характеристика объектов автоматизации\rОбъектом автоматизации является торговый зал салона фотоуслуг, в котором осуществляется продажа фототоваров и реализация услуг.\r\r2.2.3.1 Требования к системе в целом \rТребования к структуре и функционированию системы\rПрограммный продукт должен представлять собой единую систему, без разделения на подсистемы. Система должна функционировать в монопольном режиме.\rТребования к персоналу\rДля работы с программой пользователи должны обладать навыками работы  на ПЭВМ под управлением операционной системы семейства Windows. Кроме того, пользователи должны обладать знанием предметной области, связанной с оказанием фотоуслуг, а также  иметь представление о работе продавца-консультанта, выполняемых им операциях.    \rТребования к надежности\rПрограммный продукт должен отслеживать ошибки в работе программы, возникающие при некорректном вводе информации и других ошибочных действий пользователя, обеспечивать максимально возможное сохранение данных и реагировать специальными сообщениями для оповещения пользователя о его некорректных действиях.\rНеобходимо использование лицензионной копии программы «1С: Предприятие».\rТребования к эргономике и технической эстетике\rРазрабатываемая система должна обладать удобным, простым, интуитивно понятным интерфейсом. \rТребования к защите информации от несанкционированного доступа\rВ системе должна быть реализована аутентификация пользователей. Необходимо реализовать хранение данных пользователей и их паролей. Также необходима регулярная смена паролей.  \r\r2.2.3.2 Требования к функциям\rПеречень подлежащих автоматизации задач\rРазрабатываемая система должна поддерживать выполнение следующих задач:\rведение учета заказов на всех стадиях их жизненного цикла: прием, выполнение, оплата, выдача;\rоформление и регистрация нового заказа;\rрегистрация полного и частичного выполнения заказа;\rрегистрация оплаты заказа;\rрегистрация выдачи заказа;\rобмен данными между центральным подразделением и филиалами;\rформирование отчетов:\rпо принятым, но невыполненным заказам;\rпо выполненным, но невыданным заказам;\rпо выданным заказам;\rпо выработке сотрудников;\rпо оплатам;\rпо сертификатам.\r\r2.2.3.3 Требования к видам обеспечения\rТребования к техническому обеспечению\rВ состав технических средств должен входить IBM-совместимый персональный компьютер (ПЭВМ), включающий в себя:\rпроцессор – не менее Pentium, 2.0 Hz ;\rОЗУ – не менее 216 Мб;\rоперационная система – Windows 2000, XP, Vista.\rТребования к программному обеспечению\rДля функционирования разрабатываемой системы необходимо наличие:\rоперационной системы MS Windows 98/Me/2000/XP;\r1С: Предприятие 8.1.\rТребования к лингвистическому обеспечению\rПри создании программного продукта необходимо использовать язык программирования «1С v8.1».\rТребования к методическому обеспечению\rНеобходимо наличие следующей нормативно-технической документации:\rинструкция программисту; \rинструкция пользователю.\r\r2.2.4 Перечень этапов работ и сроки исполнения\rЭтапы и сроки проведения работ приведены в таблице 1.\r\rТаблица 1\rЭтапы и сроки выполнения работ\r№\r\u0007Выполняемая работа\r\u0007Сроки\r\u0007\r\u00071.\r\u0007Постановка задачи\r\u0007Март 2010 г.\r\u0007\r\u00072.\r\u0007Проектирование \r\u0007Апрель 2010 г.\r\u0007\r\u00073.\r\u0007Кодирование\r\u0007Апрель-Май 2010 г.\r\u0007\r\u00074.\r\u0007Тестирование и отладка\r\u0007Май 2010 г\r\u0007\r\u00075.\r\u0007Анализ результатов\r\u0007Июнь 2010г.\r\u0007\r\u0007\r2.2.5 Состав исполнителей работ\rРаботы по созданию системы проводятся физическим лицом, Гайдуковой Марией Николаевной, студенткой УлГТУ.\rПри этом консультантом выступает руководитель дипломного проекта Суркова Елена Викторовна.\r\r2.2.6 Требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие\rВ рамках подготовки объекта автоматизации к вводу системы  необходимо заполнить следующие справочники  для получения актуальной информации и возможности работы с системой:\rсправочник Подразделения;\rсправочник Номенклатура;\rсправочник Клиенты;\rсправочник Вид услуги;\rсправочник Скидка;\rсправочник Пользователи.\rКроме того, необходимо настроить план обмена «Основной». Для этого нужно заполнить данные текущего узла, а также тех узлов, с которыми он будет производить обмен данными. Необходимо указать узел, который будет считаться Центральным, так как обмен производится в следующих направлениях:\rвыгрузка данных производится со всех узлов, кроме Центрального;\rзагрузка данных производится только центральным узлом. \r\r2.2.7  Требования к документированию\rНеобходимо наличие следующих документов: \rинструкция пользователю;\rинструкция программисту.",
         "1"
        ],
        [
         "2",
         "tz_03.doc",
         "2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\rОбщие сведения:\rВ данной главе представлены общие сведения о системе:\rполное наименование системы и ее условное обозначение:\rWeb-ориентированная автоматизированная система учета услуг туристической фирмы;\rшифр темы или шифр (номер) договора: данный программный продукт разрабатывался в рамках дипломного проектирования, какой-либо договор не заключался; \rнаименование предприятий разработчика и заказчика системы, их реквизиты:\rпредприятие-разработчик: ООО «Волгасофт» (ИНН/КПП 7325082859/73251001, г.Ульяновск, ул.Брестская, 78);\rпредприятие-заказчик: ООО «Goodline» (ИНН/КПП 6313535100/631301001, г.Самара, МОСКОВСКОЕ ШОССЕ,81а);\rперечень документов, на основании которых создается информационная база: спецпредложения туроператора.\rплановые сроки начала и окончания работ:\rначало работы: 1 марта 2010 года;\rокончание работы: 31 мая 2010 года;\rсведения об источниках и порядке финансирования работ: данные работы проводятся на безвозмездной основе;\rпорядок оформления и предъявления заказчику результатов работ по созданию системы, ее частей и отдельных средств: по окончанию работ заказчику должны быть предъявлены и переданы установочный диск со всеми необходимыми дистрибутивами, набор инструкций и документации для полноценного функционирования указанной системы.\r\rНазначение и цели создания системы\rвид автоматизируемой деятельности.\rРазработанная система предназначена для автоматизации бронирования туров, учета клиентов, ведения базы данных туров.\rперечень объектов, на которых предполагается использование системы. \rДанную систему предполагается использовать в  ООО «Goodline».\rнаименование и требуемые значения технических, технологических, производственно-экономических и др. показателей объекта, которые должны быть достигнуты при внедрении ИС.\r При внедрении ИС должны быть достигнуты следующие цели: \rс технологической точки зрения: должен быть упрощен процесс взаимодействия турагента с клиентами, улучшено качество работы с клиентом;\rс производственно-экономической точки зрения: должно быть сокращено время на организацию работы с клиентами и формирование соответствующей отчетности.\r\rХарактеристика объектов автоматизации\rОбъектом автоматизации является ООО «Goodline». Это предприятие специализируется в области предоставления туристических услуг. В фирме существуют разные типы туров: горнолыжные, отдых на море, лечебные и др. Осуществляются поездки по различным направлениям.\rВ своей работе ООО «Goodline» использует только зарекомендовавшие себя в российских условиях туроператоры, таких как Coral Travel, Pegas Touristic, Ingtour. Профессиональные и доброжелательные сотрудники, оказывают внимание каждому клиенту. Фирма предлагает идеальное соотношение цены и качества. В программы включено максимальное количество оригинальных экскурсий. Большой выбор отелей и апартаментов любой категории по конкурентоспособным ценам. Турфирма предлагает гибкую систему скидок клиентам. Оплата услуг осуществляется в любой удобной для клиента форме – наличный и безналичный расчет\rПолитика организации нацелена на обслуживание клиентов по популярным направлениям а также принятие заказов на индивидуальные туры.\r\rТребования к системе\rТребования к системе в целом\rТребования к структуре и функционированию системы\rРазработанная система должна состоять из следующих подсистем:\rпланирование работы с клиентами;\rанализ сбытовой деятельности.\rПервая подсистема должна предоставить турагенту возможность спланировать своевременное взаимодействие с клиентом с тем, чтобы ни один клиент не оказался «забытым».\rВторая подсистема должна подсчитывать и наглядно представлять экономический результат деятельности, сбыт товаров и услуг.\rТребования к персоналу\rЧисло человек, работающих с системой, неограниченно. Оно определяется количеством турагентов в организации. Кроме того, необходим системный администратор.\rСистемный администратор должен обладать знаниями по настройке веб-сервера, а также выполнять соответствующую настройку и поддержку.\rТурагент должен иметь соответственно квалификацию турагента и быть уверенным пользователем интернет и обладать навыками работы с браузерами.\rСтепень приспособляемости системы\rДанная система должна быть гибкой в отношении изменения отчетов, должна обеспечивать настройку их параметров.\rТребования к надежности, безопасности, эргономике, транспортабельности, эксплуатации, техническому обслуживанию и ремонту, защите и сохранности информации, защите от внешних воздействий, к патентной чистоте, по стандартизации и унификации.\rСистема должна быть надежной, т.е. отказоустойчивой к ошибкам пользователя (нарушения правильной последовательности действий).\rОна должна быть удобна для работы пользователя. \r\tДолжна быть предусмотрена возможность обслуживания системы, в том числе и сторонними разработчиками.\r\tДолжна присутствовать авторизация и аутентификация пользователя, возможность тонкой настройки доступа к объектам и функциям системы. \rПрограммный продукт должен быть патентно чист и иметь возможность законно использоваться в коммерческих целях. Разрабатываемый программный продукт является патентно-чистым. Для функционирования системы необходима покупка либо аренда веб-сервера.\r\r2.2.4.2 Требования к функциям (по подсистемам)\rПеречень подлежащих автоматизации задач:\rбронирование тура;\rголосование;\rобратная связь;\rхранение базы клиентов;\rхранение и обновление базы туров;\rудобный интерфейс;\rдружественный дизайн;\rтуристический форум;\rпередача ссылки;\rновости.\rВременной регламент реализации каждой функции.\rРеализация всех функций должна быть выполнена согласно с этапами и сроками выполнения работ.\rТребования к качеству реализации каждой функции, к форме представления выходной информации, характеристики точности, достоверности выдачи результатов.\rПеречень и критерии отказов.\r\r2.2.4.3 Требования к видам обеспечения\rСистема предъявляет следующие требования к видам обеспечения:\rа) математическому: пользователь должен быть знаком с методикой проведения горизонтального (временного) анализа, вертикального (структурного) анализа;\rб) информационному: Denwer 3 (Apache, PHP, MySQL) – набор дистрибутивов (Apache, PHP, MySQL, Perl и т.д.) и программная оболочка, используемые Web-разработчиками для разработки сайтов на «домашней» (локальной) Windows-машине без необходимости выхода в Интернет. Главная особенность Денвера — удобство при удаленной работе сразу над несколькими независимыми проектами и возможность размещения на Flash-накопителе.;\rв) лингвистическому: используется язык программирования «PHP» и Java-script;\rг) программному и техническому: \r 1) компьютер конечного пользователя (рекомендуемые параметры): \rоперационная система: MS Windows 2000/ XP / Server 2003; \rпроцессор Intel Pentium III 866 МГц; \rоперативная память 256 Мбайт; \r2) компьютер, используемый для разработки конфигураций: \rоперационная система: MS Windows 2000/ XP / Server 2003; \rIntel Pentium IV/Celeron 1800  МГц ; \rоперативная память 512 Мбайт; \r3) сервер ПП: \rоперационная система: MS Windows 2000/Server 2003, ОС семейства UNIX; \rпроцессор Intel Pentium IV/Xeon 2,4 ГГц, рекомендуется два и более процессоров; \rоперативная память 1024 Мбайт; \r4) сервер баз данных: \rтехнические характеристики компьютера и операционная система должны соответствовать требованиям Microsoft SQL Server 2005, MYSQL Server; \rд) организационному: для функционирования системы необходимы системный администратор и несколько менеджеров;\rе) методическому (состав нормативно-технической документации):\rинструкция программисту; \rинструкция пользователю.\r\rСостав и содержание работ по созданию системы\rПеречень этапов работ и сроки исполнения\rПеречень этапов работ и сроки исполнения представлены в таблице 2.1\rТаблица 2.1 \rОсновные этапы работ и сроки их исполнения\r№\r\u0007Выполняемая работа\r\u0007Сроки\r\u0007\r\u00071.\r\u0007Постановка задачи\r\u0007Март 2010 г.\r\u0007\r\u00072.\r\u0007Проектирование \r\u0007Апрель 2010 г.\r\u0007\r\u00073.\r\u0007Кодирование\r\u0007Май 2010 г.\r\u0007\r\u00074.\r\u0007Тестирование и отладка\r\u0007Май 2010 г.\r\u0007\r\u00075.\r\u0007Анализ результатов\r\u0007Июнь 2010г.\r\u0007\r\u0007\rСостав исполнителей работ\rРаботы по созданию системы проводились физическим лицом – Гимадиевой Ч.Р., студенткой УлГТУ, под руководством преподавателя кафедры «Информационные системы» Наместникова Алексея Михайловича.\r\r2.2.6 Требования к программной документации\rТехническое задание\rЭкономическая часть\rИнструкция пользователя  ГОСТ 19.505-79 \"РУКОВОДСТВО ОПЕРАТОРА. ТРЕБОВАНИЯ К СОДЕРЖАНИЮ И ОФОРМЛЕНИЮ\"\rИнструкция программиста ГОСТ 19.503-79 \"РУКОВОДСТВО СИСТЕМНОГО ПРОГРАММИСТА. ТРЕБОВАНИЯ К СОДЕРЖАНИЮ И ОФОРМЛЕНИЮ\" и ГОСТ 19.504-79 \"РУКОВОДСТВО ПРОГРАММИСТА. ТРЕБОВАНИЯ К СОДЕРЖАНИЮ И ОФОРМЛЕНИЮ\"\rПояснительная записка",
         "1"
        ],
        [
         "3",
         "tz_04.doc",
         "ТЕХНИЧЕСКОЕ ЗАДАНИЕ\r2.2.1 ОБЩИЕ СВЕДЕНИЯ\rИнтернет-магазин ООО «Практика» разработан для осуществления торгоаой деятельности через Интернет. Данный продукт разработала Громакова Елена для ООО «Практика». Плановый срок начала работ — февраль 2010 года, окончание работ — июнь 2010 года. Данный программный родукт выполняется безвозмездно. \r\r2.2.2 Назначение и цели создания системы\rИнтернет-магазин ООО «Практика» разрабатывается для \rосуществления оптовой и розничной реализации товаров через Интернет. \rОсновными элементами прикладного решения являются:\rОформление заказа;\rОповещение покупателя об успешном совершении заказа;\rОповещение продавца о новом заказе.\rДанный интернет-магазин разрабатывается для удобства поупателей, чтобы они могли наглядно ознакомиться с предлагаемой продукцией. А также для удобства менеджеров которые будут обрабатывать эти заказы, т.к. намного проще обработать готовый заказ, чем вначале записать на листок, затем перенести эти данные в базу, после чего согласовать счет. В интернет-магазине покупатель самостоятельно будет формировать свой заказ, где будет видеть цены и итоговую сумму.\r\r2.2.3 Характеристика объектов автоматизации\rИнтернет-магазин – это магазин, «витрина» которого расположена в интернете и который дает возможность заказывать товар через интернет. \rНа сайте магазина представлен подробный каталог товаров с ценами, на основе которого пользователь формирует свой заказ. Заказывая товары в интернет-магазине, покупатель может получать их с курьером, а расплачиваться наличным или безналичным расчетом.\rПреимущества которые дает интернет-магазин:\rИнтернет-магазин работает 24 часа в сутки, 365 дней в году, без перерыва на обед, без выходных и праздничных дней.\rДоступ к виртуальной витрине магазина может получить любой покупатель.\rИнтернет-магазин не имеет ограничений на виртуальную площадь. Можно разместить сколь угодно товаров.\rСрок и стоимость создания интернет-магазина несоизмеримо ниже, чем обычного магазина.\rДля создания интернет-магазина не требуется получения многочисленных разрешений и лицензий. Его не проверяет пожарный инспектор, санэпидемстанция и другие службы.\rИнтернет-магазины — это наше недалекое будущее. В городах миллионниках они пользуются большим спросом. Кажется что их уже достаточно много, но перенасыщенности в этой сфере пока нет. Содержать интернет-магазин намного выгоднее чем его аналог. За него не нужно платить арендную плату или зарплату продавцам. Он прост и удобен в применении. Экспуатировать его так же легко. Все что для этого нужно — это подключение к сети Интернет.\r\r2.2.4 Требования к системе\rТребования к системе в целом:\r- удобный интерфейс, рассчитанный на неопытного пользователя;\r- возможность быстрого поиска как по наименованию товара, так и по его характеристикам;\r- возможность ввода и хранения данных неограниченного числа зарегистрированных пользователей;\r- защита от ошибок пользователей (не заполнение всех необходимы полей при регистрации пользователя или при оформлении заказа);\r- воозможность необходимых настроек системы.\rТребования к составу функций:\rВсе пользователи, работающие с программой могут иметь разные права. В пользовательском режиме это может быть, например, группа «оптовики» (их преимущество в том, что когда они зайдут на сайт под своим пролем - получат 5% скидку на весь товар). В режиме администратора также может быть несколько пользователей. Наделяет пользователей правами главный администратор. \rГлавный администратор может:\r1. Добавлять и удалять любую информацию на сайте (новости, товар, описание продукции, баннеры и т.д.);\r2. Изменять внешний вид сайта;\r3. Наделять правами пользователей.\rТребования к  инструментальным средствам\rДля разработки программного продукта использовать систему управления сайтом (CMS) Joomla 1.5 и расширение Virtuemart 1.1. Если разработка осуществляется на локальном компьютере, то необходимо использовать Денвер. Денвер — набор дистрибутивов и программная оболочка, предназначенный для создания и отладки сайтов на локальной Windows-машине, без подключения к сети Интернет. \rТребования к системному ПО и техническому обеспечению\rПрограммный продукт ориентирован на работу под управлением операционной системы Windows: 98, 2000, XP, Vista, 7, CPU 1 Ghz, 256 Мб оперативной памяти, подключение к интернет.\rТребования к  интерфейсу\rПрограммный продукт должен быть ориентирован на неподготовленного пользователя ЭВМ, имеющего начальные навыки работы с ОС Windows и Internet. Общение с компьютером должно осуществляться на основе графического оконного интерфейса в виде меню, списков, кнопок, полей ввода данных. \rПеречень этапов работ и сроки исполнения \rПеречень этапов работ и сроки исполнения представлены в таблице 2.1\r№\r\u0007Этапы работ\r\u0007Период выполнения\r\u0007\r\u00071.\r\u0007Сбор фактического материала, обзор состояния вопроса и анализ предметной области, составление плана работы\r\u0007Февраль 2010 – Март 2010\r\u0007\r\u00072. \r\u0007Систематизация материала; описание бизнес-процессов\r\u0007Апрель 2010\r\u0007\r\u00073.\r\u0007Проектирование и разработка предметно-ориентированной информационной системы\r\u0007Апрель 2010 г. – Май 2010 г.\r\u0007\r\u00074.\r\u0007Тестирование программного проекта\r\u0007Июнь 2010 г.\r\u0007\r\u0007             Таблица 2.1 Перечень этапов работ и сроки исполнения.",
         "1"
        ],
        [
         "4",
         "tz_05.doc",
         "2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\r2.2.1 Общие сведения.\r1) полное наименование системы и ее условное обозначение: АРМ сотрудника организационно-методического кабинета МУЗ «Сенгилеевская ЦРБ»;\r2) шифр темы или шифр (номер договора): данный программный продукт разрабатывался вне рамок какого-либо договора;\r3) наименование предприятий разработчика и заказчика системы, их реквизиты: МУЗ «Сенгилеевская ЦРБ», 433380, г. Сенгилей, ул. Н. Выборная, 8.;\r4) перечень документов, на основании которых создается информационная система:\r1.Приказ Минздрава РФ от 30 декабря 2002 г. N 413 «Об утверждении учетной и отчетной медицинской документации»\r2. Распоряжение Минздрава Ульяновской области РФ от 15 декабря 2009 г. №512 «О проведении временной оперативной отчетности о деятельности учреждений здравоохранения»\r5) плановые сроки начала и окончания работ: 29 марта 2010 года – 7 мая 2010 года;\r6) сведения об источниках и порядке финансирования работ: данные работы проводятся на некоммерческой основе;\r7) порядок оформления и предъявления заказчику результатов работ по созданию системы, ее частей и отдельных средств: по окончанию работ заказчику должны быть предъявлены и переданы установочный диск со всеми необходимыми дистрибутивами, набор инструкций и документации для полноценного функционирования системы.\r \r2.2.2 Назначение и цели создания системы\rРазработанная система призвана автоматизировать процессы организационно-методического кабинета. Данная система предназначена для использования в ОМК МУЗ «Сенгилеевская ЦРБ», а также в организационно-методических кабинетах других лечебно-профилактических учреждений. После доработок продукта предполагается возможность его внедрения и использования.\rПри внедрении данной системы должны быть следующие показатели:\rтехнические: показателей нет;\rтехнологические: уменьшение числа этапов выполнения расчетов численных показателей при подготовке отчетной информации;\rпроизводственно-экономические: сокращение времени на расчеты при подготовке отчетной информации, повышение производительности работы организационно-методического кабинета.\r\r2.2.3 Характеристика объектов автоматизации\r\tОбъектом автоматизации является Организационно-методический кабинет МУЗ «Сенгилеевская центральная районная больница».\r\tОсновные: учет первичной медицинской документации (талон амбулаторного пациента, карта выбывшего из стационара)\r\tВспомогательные: вывод отчетов на экран.\r\r2.2.4 Требования к системе в целом\r2.1.4.1 Требования к структуре и функционированию системы\r\tСистема должна обеспечивать выполнение перечисленных ниже функций:\r\t\t- добавление новой учетной медицинской документации;\r- редактирование и удаление существующей учетной медицинской документации;\r- формирование отчетной медицинской документации\r\r2.2.4.2 Требования к персоналу\r\tДля функционирования системы необходим сотрудник организационно-методического кабинета. Он должен обладать знаниями в области статистического учета медицинской информации, а так же навыками заполнения учетной медицинской документации и работы с программой на базе платформы 1С:Предприятие 8.1.\r\r2.2.4.3 Степень приспособляемости системы\r\tСистема должна легко дорабатываться для добавления новых или изменения имеющихся функций.\r\r2.2.4.4 Требования к надежности\r\tНадежность и отказоустойчивость системы к ошибкам пользователей и ошибкам загружаемых данных обеспечивают внутренние средства 1С.\r\tИнтерфейс системы должен быть эргономичным с точки зрения пользователя. Интерфейсы программных продуктов на базе «1С:Предприятие 8.1» ориентированы на удобную работу и простоту освоения.\r\tСистема должна обладать патентной чистотой. Это предполагает использование программы на лицензионных копиях программ «1С:Предприятие».\r\tДолжен быть предусмотрен режим раздельной работы с конфигурацией нескольких пользователей. Для этого необходимо, чтобы при входе в конфигурацию присутствовала авторизация и аутентификация пользователей, а значит, каждый пользователь должен иметь свой прописанный в конфигурации набор прав.\r\r2.2.5 Требования к функциям\r2.2.5.1 Перечень подлежащих автоматизации задач\r\tДля системы должны быть реализованы следующие возможности:\rФормирование документов (Талон амбулаторного пациента, Карта выбывшего из стационара), а также по скорой помощи и выполненным объемам учреждений;\rВведение амбулаторной карты пациента;\rРегистрация заболеваний;\rУчет врачебного посещения;\rУчет движения больных;\rФормирование отчетной медицинской документации.\r\r2.2.5.2 Перечень критериев и отказов\r\tФатальные ошибки. Сбои в системе, которые приводят к потере ее работоспособности или порче данных.\r\tСерьезные ошибки. Ошибки, которые не позволяют достичь желаемого результата при использовании некоторого средства или функции программного продукта, включая невозможность исполнения содержащейся в меню или диалоговом окне команды, выполнения процесса или формирования текста.\r\tМаленькие ошибки. Ошибки, которые вызывают неудобство работы с системой, например, ошибки в задании порядка перехода от одного элемента управления к другому в форме ввода информации. К данному типу ошибок можно отнести также беспричинные сообщения об ошибках.\r\tНезначительные ошибки. К данному типу ошибок относятся орфографические ошибки в надписях или не выровненные элементы управления.\r\r2.2.6 Требования к видам обеспечения\r\tСистема предъявляет следующие требования к видам обеспечения:\r\tа) математическому: к пользователю конфигурации не предъявляется особых требований в области математического анализа;\r\tб) информационному: конфигурация доступна для использования только при установленной платформе 1С:Предприятие 8.1, которая в свою очередь рекомендуется к использованию совместно с операционной системой Windows 98/2000/XP/Vista/7.\r\tв) лингвистическому: для написания системы конфигурации использовался встроенный язык системы 1С:Предприятие 8.1. Изменением конфигурации рекомендуется заниматься только специалистам, владеющим этим языком.\r\tг) программному и техническому: для работы с «1С:Предприятием 8.1» рекомендуемая конфигурация компьютера, приведенная «Руководстве по установке и запуску» имеет следующие характеристики:\r\t1) компьютер конечного пользователя:\r\t\ta) операционная система: MS Windows 2000 / XP / Server 2003;\r\t\tb) процессор Intel Pentium III 866 МГц;\r\t\tc) оперативная память 256 Мбайт;\r\t2) компьютер, используемый для разработки конфигураций:\r\t\ta) операционная система: MS Windows 2000 / XP / Server 2003;\r\t\tb) процессор Intel Pentium IV/Celeron 1800 МГц;\r\t\tc) оперативная память 512 Мбайт;\r\t3) сервер «1С:Предприятие 8.0»:\r\t\ta) операционная система: MS Windows 2000 / XP / Server 2003;\r\t\tb) процессор Intel Pentium IV/Xeon 2,4 ГГц;\r\t\tc) оперативная память 1024 Мбайт;\r\tИз программных средств необходимы: платформа «1С:Предприятие 8.1».\r\tд) метрологическому: нет требований к данному виду обеспечения.\r\tе) организационному: при работе с конфигурацией сразу нескольких пользователей существует требование каждому пользователю входить в информационную базу только со своими правами.\r\tж) методическому (состав нормативно-технической документации):\r\t\ta) инструкция программисту;\r\t\tb) инструкция пользователю;\r\t\tc) презентация программного продукта.\r\r2.2.7 Перечень этапов работ и сроки исполнения\r№\r\u0007Выполняемая работа\r\u0007Сроки\r\u0007\r\u00071.\r\u0007Постановка задачи\r\u0007февраль 2010 г. - март 2010 г.\r\u0007\r\u00072.\r\u0007Проектирование\r\u0007март 2010 г.\r\u0007\r\u00073.\r\u0007Кодирование\r\u0007апрель 2010 г. – май 2010 г.\r\u0007\r\u00074.\r\u0007Тестирование и отладка\r\u0007май 2010 г.\r\u0007\r\u00075.\r\u0007Анализ результатов\r\u0007Июнь 2010 г.\r\u0007\r\u0007\r2.2.8 Состав исполнителей работ\rРаботы по созданию системы проводились физическим лицом, Давыдовым Денисом Васильевичем студентом УлГТУ. При этом консультантами выступали:\r\tа) Меркулова Тамара Алексеевна – УлГТУ, доцент кафедры «Информационные системы», руководитель дипломного проекта.\r\tб) Давыдова Ольга Николаевна – заведующий организационно-методическим кабинетом МУЗ «Сенгилеевская ЦРБ».\r\r2.2.9 Порядок контроля системы\rДля контроля необходимо провести следующие виды тестирования:\r\tФункциональное тестирование. Оно включает проверку каждой команды меню, панели инструментов и каждой операции, которую выполняет система.\r\tТестирование приложения. При выполнении тестирования приложения испытатель моделирует действия пользователя. Воспроизводя различные комбинации действий, можно найти ошибки, относящиеся к интеграции компонентов, а также недоработки, которые не были обнаружены при функциональном тестировании.\r\tТестирование на скорость выполнения. Измеряется время отклика системы на некоторое действие, документа. Обычно при этом определяются параметры эффективности. Одновременно с измерением времени на выполнение запроса записать также размер базы данных.\r\tВсе этапы тестирования программы проводились непосредственным разработчиком Давыдовым Денисом Васильевичем.\r\r2.2.10 Требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие\rДля ввода системы в эксплуатацию необходимо провести обучение персонала с программой с использованием всех ее возможностей: сотрудника организационно-методического кабинета – 2 академических часа.\r\tНеобходимо заполнить во внедряемой системе справочники.\r\r2.2.11 Перечень подлежащих разработке документов\r\t- инструкция пользователю;\r\t- инструкция администратору;\r\t- презентация программного продукта.",
         "1"
        ]
       ],
       "shape": {
        "columns": 3,
        "rows": 5
       }
      },
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>doc</th>\n",
       "      <th>text</th>\n",
       "      <th>type</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>tz_01.doc</td>\n",
       "      <td>2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1 Общие сведения\\...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>tz_02.doc</td>\n",
       "      <td>2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1 Общие сведения\\...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>tz_03.doc</td>\n",
       "      <td>2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\rОбщие сведения:\\rВ д...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>tz_04.doc</td>\n",
       "      <td>ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1 ОБЩИЕ СВЕДЕНИЯ\\rИнт...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>tz_05.doc</td>\n",
       "      <td>2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1 Общие сведения....</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         doc                                               text  type\n",
       "0  tz_01.doc  2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1 Общие сведения\\...     1\n",
       "1  tz_02.doc  2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1 Общие сведения\\...     1\n",
       "2  tz_03.doc  2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\rОбщие сведения:\\rВ д...     1\n",
       "3  tz_04.doc  ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1 ОБЩИЕ СВЕДЕНИЯ\\rИнт...     1\n",
       "4  tz_05.doc  2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1 Общие сведения....     1"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Ошибка в основном потоке: name 'files' is not defined\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import os\n",
    "import win32com.client as win32\n",
    "from tqdm import tqdm\n",
    "\n",
    "def read_doc(file_path):\n",
    "    try:\n",
    "        if not os.path.exists(file_path):\n",
    "            raise FileNotFoundError(f\"Файл {file_path} не существует\")\n",
    "        if not file_path.lower().endswith('.doc'):\n",
    "            raise ValueError(f\"Неверное расширение файла: {file_path}\")\n",
    "        word = win32.Dispatch(\"Word.Application\")\n",
    "        word.Visible = False  \n",
    "        try:\n",
    "            doc = word.Documents.Open(os.path.abspath(file_path))\n",
    "            text = doc.Content.Text\n",
    "            doc.Close(False)  \n",
    "            return text.strip()\n",
    "        except Exception as e:\n",
    "            print(f\"Ошибка при чтении {file_path}: {e}\")\n",
    "            return None\n",
    "        finally:\n",
    "            word.Quit()\n",
    "    except Exception as e:\n",
    "        print(f\"Критическая ошибка для {file_path}: {e}\")\n",
    "        return None\n",
    "\n",
    "def load_docs(dataset_path):\n",
    "    dataset_path = os.path.abspath(dataset_path)\n",
    "    if not os.path.exists(dataset_path):\n",
    "        raise FileNotFoundError(f\"Директория {dataset_path} не существует\")\n",
    "    df = pd.DataFrame(columns=[\"doc\", \"text\"])\n",
    "    files = [f for f in os.listdir(dataset_path) \n",
    "             if f.lower().endswith('.doc') and not f.startswith('~$')]\n",
    "    for file_name in tqdm(files, desc=\"Обработка документов\"):\n",
    "        full_path = os.path.join(dataset_path, file_name)\n",
    "        text = read_doc(full_path)\n",
    "        if text:  \n",
    "            df.loc[len(df)] = {\n",
    "                \"doc\": file_name,\n",
    "                \"text\": text\n",
    "            }\n",
    "    return df\n",
    "try:\n",
    "    base_path = \".//static//csv//wsw\"\n",
    "    df = load_docs(base_path)\n",
    "\n",
    "    df[\"type\"] = df[\"doc\"].str.lower().str.startswith(\"tz_\").astype(int)\n",
    "    df.sort_values(\"doc\", inplace=True)\n",
    "\n",
    "    display(df.head())\n",
    "    print(f\"Успешно обработано {len(df)} из {len(files)} файлов\")\n",
    "\n",
    "except Exception as e:\n",
    "    print(f\"Ошибка в основном потоке: {e}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Предобработка текста"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.microsoft.datawrangler.viewer.v0+json": {
       "columns": [
        {
         "name": "index",
         "rawType": "int64",
         "type": "integer"
        },
        {
         "name": "doc",
         "rawType": "object",
         "type": "string"
        },
        {
         "name": "text",
         "rawType": "object",
         "type": "string"
        },
        {
         "name": "type",
         "rawType": "int32",
         "type": "integer"
        },
        {
         "name": "prep_text",
         "rawType": "object",
         "type": "unknown"
        }
       ],
       "conversionMethod": "pd.DataFrame",
       "ref": "8fdc2110-671b-47db-87c6-ebaa69a0434b",
       "rows": [
        [
         "0",
         "tz_01.doc",
         "2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\r2.2.1 Общие сведения\rполное наименование системы и ее условное обозначение: Конфигурация «Бухгалтерия предприятия» в среде «1С: Предприятие 8.1»; \rшифр темы: ДП – УлГТУ –  08080165 – 00/00000 – 2010;\rнаименование предприятий разработчика и заказчика системы, их реквизиты: УМКУП «Городской градостроительный сервис», 432063, г.Ульяновск, пер.Комсомольский 3, 8-962-633-01-77;\rперечень документов, на основании которых создается информационная система: ; \rплановые сроки начала и окончания работ:1 апреля 2010 г. – 15 июня 2010 г.;\rсведения об источниках и порядке финансирования работ: работа проводится на безвозмездной основе, не финансируется;\rпорядок оформления и предъявления заказчику результатов работ по созданию системы, ее частей и отдельных средств: по окончанию работ заказчику передается установочный диск со всеми дистрибутивами, необходимыми для функционирования разработанного программного продукта, а так же сопроводительная документация: техническое задание и методические указания пользователю и программисту.\r\rНазначение и цели создания системы\rРазработанный программный продукт предназначен для обеспечения полноты автоматизации деятельности бухгалтера организации УМКУП «Городской градостроительный сервис» при использовании конфигурации «Бухгалтерия предприятия» на платформе «1С: Предприятие 8.1» в части расчета заработной платы  и учета деятельности сотрудников организации. Предполагается использование системы на автоматизированном рабочем месте главного бухгалтера организации.\rОсновными целями создания системы являются:\rдополнение существующей информационной системы, которая не предоставляет возможность расчета заработной платы организации, имеющей специфические принципы оплаты труда соответствующим функционалом, который, кроме того, затрагивает автоматизацию процессов, влияющих на процесс формирования сумм заработной платы;\rповышение эффективности исполнения автоматизируемых процессов, путем сокращения непроизводительных и дублирующих операций, операций, выполняемых «вручную», оптимизации информационного взаимодействие участников процессов; \rповышение качества принятия управленческих решений за счет оперативности представления, полноты, достоверности и удобства форматов отображения информации;\r\rХарактеристика объектов автоматизации\rОбъектом автоматизации является процесс учета расчетов с работниками по оплате труда в организации, имеющей специфические принципы формирования расчетных сумм, в части расчета этих сумм и сбора данных из документов оперативного учета для проведения расчета.\r\rТребования к системе\rТребования к системе в целом\rа) Требования к структуре и функционированию системы\rНазначение и цели создания системы должны быть реализованы в двух подсистемах конфигурации «Бухгалтерия предприятия» на платформе «1С: Предприятие8.1»:\rСистема бухгалтерского учета\rСистема оперативного учета\rПодсистема оперативного учета должна содержать механизмы, позволяющие вводить в систему и хранить в ней информацию о текущей деятельности организации. В этой подсистеме должны фиксироваться и систематизироваться данные, необходимые для реализации расчета сумм начислений. \rПодсистема бухгалтерского учета должна содержать в себе механизмы для реализации учета расчетов с сотрудниками организации. Именно эта подсистема должна реализовывать процесс расчета, используя данные, содержащиеся в подсистеме оперативного учета.\rб) Требования к персоналу\rДля наиболее эффективного функционирования системы помимо пользователя – главного бухгалтера организации, для автоматизации деятельности которого предназначена система, необходимо иметь специалиста технической поддержки данного программного продукта. \rв) Показатели назначения \rСистема должна предусматривать возможность масштабирования по производительности и объему обрабатываемой информации без модификации ее программного обеспечения путем модернизации используемого комплекса технических средств. Изменение процессов управления не должно отражаться на правильности функционирования системы.\rг) Требования к надежности, эргономике, защите и сохранности информации, защите от внешних воздействий.\rСистема должна сохранять работоспособность и обеспечивать восстановление своих функций при возникновении следующих внештатных ситуаций:\rпри сбоях в системе электроснабжения аппаратной части, приводящих к перезагрузке ОС;\rпри ошибках в работе аппаратных средств (кроме носителей данных и программ) восстановление функции системы возлагается на ОС;\rпри ошибках, связанных с программным обеспечением (ОС и драйверы устройств), восстановление работоспособности возлагается на ОС\rсистема должна обеспечивать корректную обработку аварийных ситуаций, вызванных неверными действиями пользователей, неверным форматом или недопустимыми значениями входных данных. В указанных случаях система должна выдавать пользователю соответствующие сообщения, после чего возвращаться в рабочее состояние, предшествовавшее неверной (недопустимой) команде или некорректному вводу данных. \rСистема должна быть эргономичной. Интерфейс системы должен быть понятным и удобным, не должен быть перегружен графическими элементами и должен обеспечивать быстрое отображение экранных форм. Навигационные элементы должны быть выполнены в удобной для пользователя форме. Средства редактирования информации должны удовлетворять принятым соглашениям в части использования функциональных клавиш, режимов работы, поиска, использования оконной системы. Ввод-вывод данных системы, прием управляющих команд и отображение результатов их исполнения должны выполняться в интерактивном режиме. Интерфейс должен соответствовать современным эргономическим требованиям и обеспечивать удобный доступ к основным функциям и операциям системы.\rИнтерфейс должен быть рассчитан на преимущественное использование манипулятора типа «мышь», то есть управление системой должно осуществляться с помощью набора экранных меню, кнопок, значков и т. п. элементов. Клавиатурный режим ввода должен используется главным образом при заполнении и/или редактировании текстовых и числовых полей экранных форм.\rВсе надписи экранных форм, а также сообщения, выдаваемые пользователю (кроме системных сообщений) должны быть на русском языке.\rИС должна обеспечивать защиту от несанкционированного доступа. Компоненты подсистемы защиты от несанкционированного доступа должны обеспечивать:\rидентификацию пользователя;\rпроверку полномочий пользователя при работе с системой;\rразграничение доступа пользователей на уровне задач и информационных массивов.\r\rТребования к функциям (по подсистемам)\rПодсистема оперативного учета\rПодсистема оперативного учета должна осуществлять ввод и хранение оперативных данных системы, данных для формирования аналитических отчетов, документов системы, сформированных в процессе работы.\rВсе элементы, входящие в состав подсистемы оперативного учета, должны обладать следующей основной функциональностью:\rПостоянное хранение данных;\rДобавление новых элементов;\rРедактирование элементов;\rУдаление (удаление элементов возможно лишь в том случае, если другие существующие объекты системы не ссылаются на удаляемый элемент);\rПросмотр элементов;\rПросмотр списка элементов;\rФильтрация и сортировка списка элементов;\rПоиск элементов;\rЭкспорт и импорт элементов.\rПодсистема бухгалтерского учета\rПодсистема бухгалтерского учета должна иметь средства для регистрации бухгалтерских операций и формирования на их основе соответствующей итоговой информации, а также подготовки произвольных бухгалтерских отчетов. Подсистема бухгалтерского учета должна вести учет, ориентированный на первичные документы, относящиеся к подсистеме оперативного учета, и иметь функцию расчета сумм начислений заработной платы сотрудникам на основе этих документов.\r\rТребования к видам обеспечения\rК видам обеспечения предъявляются следующие требования:\rа) математическому: не предъявляются;\rб) информационному: уровень хранения данных в системе должен быть построен на основе современных СУБД. Для обеспечения целостности данных должны использоваться встроенные механизмы СУБД. Доступ к данным должен быть предоставлен только авторизованным пользователям с учетом их служебных полномочий, а также с учетом категории запрашиваемой информации. Технические средства, обеспечивающие хранение информации, должны использовать современные технологии, позволяющие обеспечить повышенную надежность хранения данных и оперативную замену оборудования.\rв) лингвистическому: система создана на основе языка программирования «1С 8.1»;\rг) программному и техническому:\rКомпьютер конечного пользователя \rоперационная систему: MS Windows 98/XP/Vista/Server 2003/2008;\rпроцессор Intel Pentium II 400 МГц и выше (рекомендуется Intel Pentium III 866 МГц);\rоперативная память 128 Мбайт и выше (рекомендуется 256 Мбайт);\rжесткий диск (при установке используется около 120 Мбайт).\rКомпьютер, используемый для разработки конфигураций\rоперационная система: MS Windows 2000/XP/Vista/Server 2003/2008;\rпроцессор Intel Pentium III 866 МГц и выше (рекомендуется Intel Pentium IV/Celeron 1800 МГц);\rоперативная память 256 Мбайт и выше (рекомендуется 512 Мбайт);\rжесткий диск (при установке используется около 120 Мбайт).\rКомпьютер сервера 1С:Предприятия 8.1\rоперационная система: MS Windows 2000/XP/Vista/Server 2003/2008;\rпроцессор Intel Pentium III 866 МГц и выше (рекомендуется Intel Pentium IV/Xeon 2,4 ГГц, для лучшей масштабируемости рекомендуется два и более процессоров);\rоперативная память 512 Мбайт и выше (рекомендуется 1024 Мбайт).\rСервер баз данных\rMicrosoft SQL Server 2000 + Service Pack 2 (рекомендуется Service Pack 3a) или Microsoft SQL Server 2005.\rКомпьютер сервера баз данных\rоперационная система: в соответствии с требованиями Microsoft SQL Server;\rтехнические характеристики компьютера должны соответствовать требованиям используемой версии сервера баз данных MS SQL Server.\rд) метрологическому: требования не предъявляются;\rе) организационному: для эффективного функционирования системы помимо пользователя необходим специалист по технической поддержке. К работе с системой должны допускаться сотрудники, имеющие навыки работы на персональном компьютере, ознакомленные с правилами эксплуатации и прошедшие обучение работе с системой.\rж) методическому: в состав методического обеспечения системы должны входить: инструкция программисту, инструкция пользователю.\r\rСостав и содержание работ по созданию системы\rПеречень стадий и этапов работ, а так же сроки их исполнения представлены в Таблице 2.\rТаблица 2.\rЭтапы и сроки исполнения работ\r№\r\u0007Выполняемая работа\r\u0007Сроки\r\u0007\r\u00071.\r\u0007Постановка задачи\r\u0007Март 2010 г.\r\u0007\r\u00072.\r\u0007Проектирование \r\u0007Апрель 2010 г.\r\u0007\r\u00073.\r\u0007Кодирование\r\u0007Май 2010 г.\r\u0007\r\u00074.\r\u0007Тестирование и отладка\r\u0007Май 2010 г\r\u0007\r\u00075.\r\u0007Анализ результатов\r\u0007Июнь 2010 г.\r\u0007\r\u0007Работы по созданию системы проводились физическим лицом – студенткой группы ИСЭд-51 УлГТУ, Башаровой И.С. Консультантом при разработке являлась Суркова Е.В., доцент кафедры «Информационные системы» УлГТУ, руководитель дипломного проекта.\r\rПорядок контроля и приемки системы\rПриемочные испытания должны включать проверку:\rполноты и качества реализации необходимых функций;\rвыполнения каждого требования, относящегося к эргономике;\rработы пользователей в диалоговом режиме;\rсредств и методов восстановления работоспособности системы после отказов;\rполноты действий, доступных пользователю, и их достаточность для функционирования системы;\rреакции системы на ошибки пользователя;\rтестирование на скорость реакции системы на команды пользователя.\r\rТребования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие\rДля подготовки объекта автоматизации к вводу системы в действие необходимо при помощи специалиста технической поддержки, осуществляющего обслуживание используемой в организации базовой конфигурации «Бухгалтерия предприятия», выгрузить все информацию, содержащуюся в этой конфигурации, для дальнейшего ее использования в разработанной системе. Загрузка информации в новую конфигурацию должна так же осуществляться специалистом технической поддержки.\rПеред началом использования системы пользователю необходимо ознакомится с руководством пользователя, содержащимся в сопроводительной документации разработанной системы и пройти обучение для ознакомления с принципами ее функционирования в течение 1 академического часа (при условии владения пользователя навыками работы в базовой конфигурации «Бухгалтерия предприятия» платформы «1С: Предприятие 8.1»). \r\rТребования к документированию\rРазработке подлежит следующая документация:\rИнструкция пользователю;\rИнструкция программисту.",
         "1",
         "[['2.2', 'техническое', 'задание', '2.2.1', 'общий', 'сведение', 'полный', 'наименование', 'система', 'условный', 'обозначение', 'конфигурация', 'бухгалтерия', 'предприятие', 'среда', '1с', 'предприятие', '8.1', 'шифр', 'тема', 'дп', 'улгту', '08080165', '00/00000', '2010', 'наименование', 'предприятие', 'разработчик', 'заказчик', 'система', 'реквизит', 'умкуп', 'городской', 'градостроительный', 'сервис', '432063', 'г.', 'ульяновск', 'пер.', 'комсомольский', '3', '8', '962', '633', '01', '77', 'перечень', 'документ', 'основание', 'создаваться', 'информационный', 'система', 'плановый', 'срок', 'окончание', 'работ:1', 'апрель', '2010_г.', '15', 'июнь', '2010_г.', 'сведение', 'источник', 'порядок', 'финансирование', 'работа', 'работа', 'проводиться', 'безвозмездный', 'основа', 'финансироваться', 'порядок', 'оформление', 'предъявление', 'заказчик', 'результат', 'работа', 'создание', 'система', 'часть', 'отдельный', 'средство', 'окончание', 'работа', 'заказчик', 'передаваться', 'установочный', 'диск', 'дистрибутив', 'необходимый', 'функционирование', 'разработать', 'программный', 'продукт', 'сопроводительный', 'документация', 'технический', 'задание', 'методический', 'указание', 'пользователь', 'программист'], ['назначение', 'цель', 'создание', 'система', 'разработанный', 'программный', 'продукт', 'предназначить', 'обеспечение', 'полнота', 'автоматизация', 'деятельность', 'бухгалтер', 'организация', 'умкуп', 'городской', 'градостроительный', 'сервис', 'использование', 'конфигурация', 'бухгалтерия', 'предприятие', 'платформа', '1с', 'предприятие', '8.1', 'часть', 'расчёт', 'заработный', 'плата', 'учёт', 'деятельность', 'сотрудник', 'организация'], ['предполагаться', 'использование', 'система', 'автоматизированный', 'рабочий', 'место', 'главный', 'бухгалтер', 'организация'], ['основный', 'цель', 'создание', 'система', 'являться', 'дополнение', 'существовать', 'информационный', 'система', 'предоставлять', 'возможность', 'расчёт', 'заработный', 'плата', 'организация', 'иметь', 'специфический', 'принцип', 'оплата', 'труд', 'соответствующий', 'функционал', 'затрагивать', 'автоматизация', 'процесс', 'влиять', 'процесс', 'формирование', 'сумма', 'заработный', 'плата', 'повышение', 'эффективность', 'исполнение', 'автоматизируемых', 'процесс', 'путем', 'сокращение', 'непроизводительный', 'дублировать', 'операция', 'операция', 'выполнять', 'вручную', 'оптимизация', 'информационный', 'взаимодействие', 'участник', 'процесс', 'повышение', 'качество', 'принятие', 'управленческий', 'решение', 'счёт', 'оперативность', 'представление', 'полнота', 'достоверность', 'удобство', 'формат', 'отображение', 'информация', 'характеристика', 'объект', 'автоматизация', 'объект', 'автоматизация', 'являться', 'процесс', 'учёт', 'расчёт', 'работник', 'оплата', 'труд', 'организация', 'иметь', 'специфический', 'принцип', 'формирование', 'расчётный', 'сумма', 'часть', 'расчёт', 'сумма', 'сбор', 'документ', 'оперативный_учёт', 'проведение', 'расчёт'], ['требование', 'система', 'требование', 'система', 'целое', 'требование', 'структура', 'функционирование', 'система', 'назначение', 'цель', 'создание', 'система', 'реализовать', 'два', 'подсистема', 'конфигурация', 'бухгалтерия', 'предприятие', 'платформа', '1с', 'предприятие8.1', 'система', 'бухгалтерский', 'учёт', 'система', 'оперативный_учёт', 'подсистема', 'оперативный_учёт', 'содержать', 'механизм', 'позволять', 'вводить', 'система', 'хранить', 'информация', 'текущий', 'деятельность', 'организация'], ['подсистема', 'фиксироваться', 'систематизироваться', 'реализация', 'расчёт', 'сумма', 'начисление'], ['подсистема', 'бухгалтерский', 'учёт', 'содержать', 'механизм', 'реализация', 'учёт', 'расчёт', 'сотрудник', 'организация'], ['подсистема', 'реализовывать', 'процесс', 'расчёт', 'использовать', 'содержаться', 'подсистема', 'оперативный_учёт'], [], ['требование', 'персонал', 'эффективный', 'функционирование', 'система', 'пользователь', 'главный', 'бухгалтер', 'организация', 'автоматизация', 'деятельность', 'предназначить', 'система', 'специалист', 'технический', 'поддержка', 'программный', 'продукт'], [], ['показатель', 'назначение', 'система', 'предусматривать', 'возможность', 'масштабирование', 'производительность', 'объём', 'обрабатывать', 'информация', 'модификация', 'программный', 'обеспечение', 'путем', 'модернизация', 'использовать', 'комплекс', 'технический', 'средство'], ['изменение', 'процесс', 'управление', 'отражаться', 'правильность', 'функционирование', 'система', 'требование', 'надёжность', 'эргономика', 'защита', 'сохранность', 'информация', 'защита', 'внешний', 'воздействие'], ['система', 'сохранять', 'работоспособность', 'обеспечивать', 'восстановление', 'функция', 'возникновение', 'следующий', 'внештатный', 'ситуация', 'сбой', 'система', 'электроснабжение', 'аппаратный', 'часть', 'приводить', 'перезагрузка', 'ос', 'ошибка', 'работа', 'аппаратный', 'средство', 'носитель', 'программа', 'восстановление', 'функция', 'система', 'возлагаться', 'ос', 'ошибка', 'связать', 'программный', 'обеспечение', 'ос', 'драйвер', 'устройство', 'восстановление', 'работоспособность', 'возлагаться', 'ос', 'система', 'обеспечивать', 'корректный', 'обработка', 'аварийный', 'ситуация', 'вызвать', 'неверный', 'действие', 'пользователь', 'неверный', 'формат', 'недопустимый', 'значение', 'входной'], ['указать', 'случай', 'система', 'выдавать', 'пользователь', 'соответствующий', 'сообщение', 'возвращаться', 'рабочий', 'состояние', 'предшествовать', 'неверный', 'недопустимый', 'команда', 'некорректный', 'ввод'], ['система', 'эргономичный'], ['интерфейс', 'система', 'понятный', 'удобный', 'перегрузить', 'графический', 'элемент', 'обеспечивать', 'быстрый', 'отображение', 'экранный', 'форма'], ['навигационный', 'элемент', 'выполнить', 'удобный', 'пользователь', 'форма'], ['средство', 'редактирование', 'информация', 'удовлетворять', 'принять', 'соглашение', 'часть', 'использование', 'функциональный', 'клавиш', 'режим', 'работа', 'поиск', 'использование', 'оконный', 'система'], ['ввод', 'вывод', 'система', 'приём', 'управлять', 'команда', 'отображение', 'результат', 'исполнение', 'выполняться', 'интерактивный', 'режим'], ['интерфейс', 'соответствовать', 'современный', 'эргономический', 'требование', 'обеспечивать', 'удобный', 'доступ', 'основный', 'функция', 'операция', 'система'], ['интерфейс', 'рассчитать', 'преимущественный', 'использование', 'манипулятор', 'тип', 'мышь', 'управление', 'система', 'осуществляться', 'помощь', 'набор', 'экранный', 'меню', 'кнопка', 'значок', 'т'], ['п.', 'элемент'], ['клавиатурный', 'режим', 'ввод', 'использоваться', 'главный', 'образ', 'заполнение', 'редактирование', 'текстовый', 'числовой', 'поле', 'экранный', 'форма'], ['надпись', 'экранный', 'форма', 'сообщение', 'выдавать', 'пользователь', 'системный', 'сообщение', 'русский', 'язык'], ['ис', 'обеспечивать', 'защита', 'несанкционированный', 'доступ'], ['компонент', 'подсистема', 'защита', 'несанкционированный', 'доступ', 'обеспечивать', 'идентификация', 'пользователь', 'проверка', 'полномочие', 'пользователь', 'работа', 'система', 'разграничение', 'доступ', 'пользователь', 'уровень', 'задача', 'информационный', 'массив'], ['требование', 'функциям', 'подсистемам', 'подсистема', 'оперативный_учёт', 'подсистема', 'оперативный_учёт', 'осуществлять', 'ввод', 'хранение', 'оперативный', 'система', 'формирование', 'аналитический', 'отчёт', 'документ', 'система', 'сформировать', 'процесс', 'работа'], ['элемент', 'входить', 'состав', 'подсистема', 'оперативный_учёт', 'обладать', 'следующий', 'основный', 'функциональность', 'постоянный', 'хранение', 'добавление', 'новый', 'элемент', 'редактирование', 'элемент', 'удаление', 'удаление', 'элемент', 'случай', 'существовать', 'объект', 'система', 'ссылаться', 'удалять', 'элемент', 'просмотр', 'элемент', 'просмотр', 'список', 'элемент', 'фильтрация', 'сортировка', 'список', 'элемент', 'поиск', 'элемент', 'экспорт', 'импорт', 'элемент'], ['подсистема', 'бухгалтерский', 'учёт', 'подсистема', 'бухгалтерский', 'учёт', 'средство', 'регистрация', 'бухгалтерский', 'операция', 'формирование', 'основа', 'соответствующий', 'итоговый', 'информация', 'подготовка', 'произвольный', 'бухгалтерский', 'отчёт'], ['подсистема', 'бухгалтерский', 'учёт', 'вести', 'учёт', 'ориентировать', 'первичный', 'документ', 'относиться', 'подсистема', 'оперативный_учёт', 'функция', 'расчёт', 'сумма', 'начисление', 'заработный', 'плата', 'сотрудник', 'основа', 'документ'], ['требование', 'вид', 'обеспечение', 'вид', 'обеспечение', 'предъявляться', 'следующий', 'требование', 'математический', 'предъявляться', 'информационный', 'уровень', 'хранение', 'система', 'построить', 'основа', 'современный', 'субд'], ['обеспечение', 'целостность', 'использоваться', 'встроенные', 'механизм', 'субд'], ['доступ', 'данным', 'предоставить', 'авторизованный', 'пользователь', 'учёт', 'служебный', 'полномочие', 'учёт', 'категория', 'запрашивать', 'информация'], ['технический', 'средство', 'обеспечивать', 'хранение', 'информация', 'использовать', 'современный', 'технология', 'позволять', 'обеспечить', 'повышенный', 'надёжность', 'хранение', 'оперативный', 'замена', 'оборудование'], ['лингвистический', 'система', 'создать', 'основа', 'язык', 'программирование', '1с', '8.1', 'программный', 'технический', 'компьютер', 'конечный', 'пользователь', 'операционный', 'система', 'ms', 'windows', '98', 'xp', 'vista', 'server', '2003/2008', 'процессор', 'intel_pentium', 'ii', '400', 'мгц', 'высоко_рекомендоваться', 'intel_pentium', 'iii', '866', 'мгц', 'оперативный', 'память', '128', 'мбайт', 'высоко_рекомендоваться', '256', 'мбайт', 'жёсткий', 'диск', 'установка', 'использоваться', '120', 'мбайт'], ['компьютер', 'использовать', 'разработка', 'конфигурация', 'операционный', 'система', 'ms', 'windows', '2000', 'xp', 'vista', 'server', '2003/2008', 'процессор', 'intel_pentium', 'iii', '866', 'мгц', 'высоко_рекомендоваться', 'intel_pentium', 'iv', 'celeron', '1800', 'мгц', 'оперативный', 'память', '256', 'мбайт', 'высоко_рекомендоваться', '512', 'мбайт', 'жёсткий', 'диск', 'установка', 'использоваться', '120', 'мбайт', 'компьютер', 'сервер', '1с', 'предприятия', '8.1', 'операционный', 'система', 'ms', 'windows', '2000', 'xp', 'vista', 'server', '2003/2008', 'процессор', 'intel_pentium', 'iii', '866', 'мгц', 'высоко_рекомендоваться', 'intel_pentium', 'iv', 'xeon', '2,4', 'ггц', 'хороший', 'масштабируемость', 'рекомендоваться', 'два', 'процессор', 'оперативный', 'память', '512', 'мбайт', 'высоко_рекомендоваться', '1024', 'мбайт'], ['сервер', 'база', 'microsoft', 'sql', 'server', '2000', '+', 'service', 'pack', '2', 'рекомендоваться', 'service', 'pack', '3a', 'microsoft', 'sql', 'server', '2005'], ['компьютер', 'сервер', 'база', 'операционный', 'система', 'соответствие', 'требование', 'microsoft', 'sql', 'server', 'технический', 'характеристика', 'компьютер', 'соответствовать', 'требование', 'использовать', 'версия', 'сервер', 'база', 'ms', 'sql', 'server', 'метрологический', 'требование', 'предъявляться', 'организационный', 'эффективный', 'функционирование', 'система', 'пользователь', 'необходимый', 'специалист', 'технический', 'поддержка'], ['работа', 'система', 'допускаться', 'сотрудник', 'иметь', 'навык', 'работа', 'персональный', 'компьютер', 'ознакомить', 'правило', 'эксплуатация', 'пройти', 'обучение', 'работа', 'система', 'методический', 'состав', 'методический', 'обеспечение', 'система', 'входить', 'инструкция', 'программист', 'инструкция', 'пользователь'], ['состав', 'содержание', 'работа', 'создание', 'система', 'перечень', 'стадия', 'этап', 'работа', 'срок', 'исполнение', 'представить', 'таблица', '2'], ['таблица', '2'], ['этапы', 'срок', 'исполнение', 'работа', '№', '\\x07выполняемая', 'работа', '\\x07сроки', '\\x07', '\\x071', '\\x07постановка', 'задача', '\\x07март', '2010_г.', '\\x07', '\\x072', '\\x07проектирование', '\\x07апрель', '2010_г.', '\\x07', '\\x073', '\\x07кодирование', '\\x07май', '2010_г.', '\\x07', '\\x074', '\\x07тестирование', 'отладка', '\\x07май', '2010', '\\x07', '\\x075', '\\x07анализ', 'результат', '\\x07июнь', '2010_г.', '\\x07', '\\x07работы', 'создание', 'система', 'проводиться', 'физический', 'лицо', 'студентка', 'группа', 'исэд-51', 'улгту', 'башаровой', 'и.с.', 'консультант', 'разработка', 'являться', 'сурков', 'е.в.', 'доцент', 'кафедра', 'информационный', 'система', 'улгту', 'руководитель', 'дипломный', 'проект'], ['порядок', 'контроль', 'приёмка', 'система', 'приёмочный', 'испытание', 'включать', 'проверка', 'полнота', 'качество', 'реализация', 'необходимый', 'функция', 'выполнение', 'каждый', 'требование', 'относиться', 'эргономика', 'работа', 'пользователь', 'диалоговый', 'режим', 'средство', 'метод', 'восстановление', 'работоспособность', 'система', 'отказ', 'полнота', 'действие', 'доступный', 'пользователь', 'достаточность', 'функционирование', 'система', 'реакция', 'система', 'ошибка', 'пользователь', 'тестирование', 'скорость', 'реакция', 'система', 'команда', 'пользователь'], ['требование', 'состав', 'содержание', 'работа', 'подготовка', 'объект', 'автоматизация', 'ввод', 'система', 'действие', 'подготовка', 'объект', 'автоматизация', 'ввод', 'система', 'действие', 'помощь', 'специалист', 'технический', 'поддержка', 'осуществлять', 'обслуживание', 'использовать', 'организация', 'базовый', 'конфигурация', 'бухгалтерия', 'предприятие', 'выгрузить', 'информация', 'содержаться', 'конфигурация', 'дальнейший', 'использование', 'разработать', 'система'], ['загрузка', 'информация', 'новый', 'конфигурация', 'осуществляться', 'специалист', 'технический', 'поддержка'], ['начало', 'использование', 'система', 'пользователь', 'ознакомиться', 'руководство', 'пользователь', 'содержащимся', 'сопроводительный', 'документация', 'разработать', 'система', 'пройти', 'обучение', 'ознакомление', 'принцип', 'функционирование', 'течение', '1', 'академический', 'час', 'условие', 'владение', 'пользователь', 'навык', 'работа', 'базовый', 'конфигурация', 'бухгалтерия', 'предприятие', 'платформа', '1с', 'предприятие', '8.1'], ['требование', 'документирование', 'разработке', 'подлежать', 'следующий', 'документация', 'инструкция', 'пользователь', 'инструкция', 'программист']]"
        ],
        [
         "1",
         "tz_02.doc",
         "2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\r2.2.1 Общие сведения\rПолное наименование системы:   «Автоматизированное рабочее место  продавца-консультанта  в салоне  фотоуслуг» в среде «1С: Предприятие 8.1».\rШифр темы: ДП–УлГТУ– 08080165–05/0978–2010.\rНаименование предприятия заказчика системы, его реквизиты: ООО «УмКо», г.Ульяновск;\rПлановые сроки начала и окончания работ: 1 апреля 2009 года — 15 июня 2009 года;\rСведения об источниках и порядке финансирования работ: данные работы проводятся на безвозмездной основе;\rПорядок оформления и предъявления заказчику результатов работ по созданию системы, ее частей и отдельных средств: по окончанию работ заказчику должны быть предъявлены и переданы все необходимые дистрибутивы, набор инструкций и документации.\r\r2.2.2 Назначение и цели создания системы\rРазработанная система предназначена для автоматизации работы продавца-консультанта салона фотоуслуг по принятию заказов и выполнению различного рода операций над ними, ведению учета принятых, выполненных и выданных заказов.\rЦелью создания системы является повышение скорости и качества работы продавца-консультанта, упрощение выполнения им ряда операций, повышение качества обслуживания клиентов за счет актуальности и достоверности хранимой информации по заказам.     \r\r2.2.3 Характеристика объектов автоматизации\rОбъектом автоматизации является торговый зал салона фотоуслуг, в котором осуществляется продажа фототоваров и реализация услуг.\r\r2.2.3.1 Требования к системе в целом \rТребования к структуре и функционированию системы\rПрограммный продукт должен представлять собой единую систему, без разделения на подсистемы. Система должна функционировать в монопольном режиме.\rТребования к персоналу\rДля работы с программой пользователи должны обладать навыками работы  на ПЭВМ под управлением операционной системы семейства Windows. Кроме того, пользователи должны обладать знанием предметной области, связанной с оказанием фотоуслуг, а также  иметь представление о работе продавца-консультанта, выполняемых им операциях.    \rТребования к надежности\rПрограммный продукт должен отслеживать ошибки в работе программы, возникающие при некорректном вводе информации и других ошибочных действий пользователя, обеспечивать максимально возможное сохранение данных и реагировать специальными сообщениями для оповещения пользователя о его некорректных действиях.\rНеобходимо использование лицензионной копии программы «1С: Предприятие».\rТребования к эргономике и технической эстетике\rРазрабатываемая система должна обладать удобным, простым, интуитивно понятным интерфейсом. \rТребования к защите информации от несанкционированного доступа\rВ системе должна быть реализована аутентификация пользователей. Необходимо реализовать хранение данных пользователей и их паролей. Также необходима регулярная смена паролей.  \r\r2.2.3.2 Требования к функциям\rПеречень подлежащих автоматизации задач\rРазрабатываемая система должна поддерживать выполнение следующих задач:\rведение учета заказов на всех стадиях их жизненного цикла: прием, выполнение, оплата, выдача;\rоформление и регистрация нового заказа;\rрегистрация полного и частичного выполнения заказа;\rрегистрация оплаты заказа;\rрегистрация выдачи заказа;\rобмен данными между центральным подразделением и филиалами;\rформирование отчетов:\rпо принятым, но невыполненным заказам;\rпо выполненным, но невыданным заказам;\rпо выданным заказам;\rпо выработке сотрудников;\rпо оплатам;\rпо сертификатам.\r\r2.2.3.3 Требования к видам обеспечения\rТребования к техническому обеспечению\rВ состав технических средств должен входить IBM-совместимый персональный компьютер (ПЭВМ), включающий в себя:\rпроцессор – не менее Pentium, 2.0 Hz ;\rОЗУ – не менее 216 Мб;\rоперационная система – Windows 2000, XP, Vista.\rТребования к программному обеспечению\rДля функционирования разрабатываемой системы необходимо наличие:\rоперационной системы MS Windows 98/Me/2000/XP;\r1С: Предприятие 8.1.\rТребования к лингвистическому обеспечению\rПри создании программного продукта необходимо использовать язык программирования «1С v8.1».\rТребования к методическому обеспечению\rНеобходимо наличие следующей нормативно-технической документации:\rинструкция программисту; \rинструкция пользователю.\r\r2.2.4 Перечень этапов работ и сроки исполнения\rЭтапы и сроки проведения работ приведены в таблице 1.\r\rТаблица 1\rЭтапы и сроки выполнения работ\r№\r\u0007Выполняемая работа\r\u0007Сроки\r\u0007\r\u00071.\r\u0007Постановка задачи\r\u0007Март 2010 г.\r\u0007\r\u00072.\r\u0007Проектирование \r\u0007Апрель 2010 г.\r\u0007\r\u00073.\r\u0007Кодирование\r\u0007Апрель-Май 2010 г.\r\u0007\r\u00074.\r\u0007Тестирование и отладка\r\u0007Май 2010 г\r\u0007\r\u00075.\r\u0007Анализ результатов\r\u0007Июнь 2010г.\r\u0007\r\u0007\r2.2.5 Состав исполнителей работ\rРаботы по созданию системы проводятся физическим лицом, Гайдуковой Марией Николаевной, студенткой УлГТУ.\rПри этом консультантом выступает руководитель дипломного проекта Суркова Елена Викторовна.\r\r2.2.6 Требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие\rВ рамках подготовки объекта автоматизации к вводу системы  необходимо заполнить следующие справочники  для получения актуальной информации и возможности работы с системой:\rсправочник Подразделения;\rсправочник Номенклатура;\rсправочник Клиенты;\rсправочник Вид услуги;\rсправочник Скидка;\rсправочник Пользователи.\rКроме того, необходимо настроить план обмена «Основной». Для этого нужно заполнить данные текущего узла, а также тех узлов, с которыми он будет производить обмен данными. Необходимо указать узел, который будет считаться Центральным, так как обмен производится в следующих направлениях:\rвыгрузка данных производится со всех узлов, кроме Центрального;\rзагрузка данных производится только центральным узлом. \r\r2.2.7  Требования к документированию\rНеобходимо наличие следующих документов: \rинструкция пользователю;\rинструкция программисту.",
         "1",
         "[['2.2', 'техническое', 'задание', '2.2.1', 'общий', 'сведение', 'полный', 'наименование', 'система', 'автоматизированный', 'рабочий', 'место', 'продавец', 'консультант', 'салон', 'фотоуслуг', 'среда', '1с', 'предприятие', '8.1'], ['шифр', 'тема', 'дп', 'улгту', '08080165–05/0978–2010'], ['наименование', 'предприятие', 'заказчик', 'система', 'реквизит', 'ооо', 'умко', 'г.', 'ульяновск', 'плановый', 'срок', 'окончание', 'работа', '1', 'апрель', '2009', 'год', '15', 'июнь', '2009', 'год', 'сведение', 'источник', 'порядок', 'финансирование', 'работа', 'работа', 'проводиться', 'безвозмездный', 'основа', 'порядок', 'оформление', 'предъявление', 'заказчик', 'результат', 'работа', 'создание', 'система', 'часть', 'отдельный', 'средство', 'окончание', 'работа', 'заказчик', 'предъявить', 'передать', 'дистрибутив', 'набор', 'инструкция', 'документация'], ['2.2.2', 'назначение', 'цель', 'создание', 'система', 'разработанная', 'система', 'предназначить', 'автоматизация', 'работа', 'продавец', 'консультант', 'салон', 'фотоуслуг', 'принятие', 'заказ', 'выполнение', 'различный', 'род', 'операция', 'ведение', 'учёт', 'принять', 'выполнить', 'выдать', 'заказ'], ['цель', 'создание', 'система', 'являться', 'повышение', 'скорость', 'качество', 'работа', 'продавец', 'консультант', 'упрощение', 'выполнение', 'ряд', 'операция', 'повышение', 'качество', 'обслуживание', 'клиент', 'счёт', 'актуальность', 'достоверность', 'хранить', 'информация', 'заказ'], ['2.2.3', 'характеристика', 'объект', 'автоматизация', 'объект', 'автоматизация', 'являться', 'торговый', 'зал', 'салон', 'фотоуслуг', 'осуществляться', 'продажа', 'фототоваров', 'реализация', 'услуга'], ['2.2.3.1', 'требование', 'система', 'целое', 'требование', 'структура', 'функционирование', 'система', 'программный', 'продукт', 'представлять', 'единый', 'система', 'разделение', 'подсистема'], ['система', 'функционировать', 'монопольный', 'режим'], ['требование', 'персонал', 'работа', 'программа', 'пользователь', 'обладать', 'навык', 'работа', 'пэвм', 'управление', 'операционный', 'система', 'семейство', 'windows'], ['пользователь', 'обладать', 'знание', 'предметный', 'область', 'связать', 'оказание', 'фотоуслуг', 'представление', 'работа', 'продавец', 'консультант', 'выполнять', 'операция'], ['требование', 'надёжность', 'программный', 'продукт', 'отслеживать', 'ошибка', 'работа', 'программа', 'возникать', 'некорректный', 'ввод', 'информация', 'ошибочный', 'действие', 'пользователь', 'обеспечивать', 'максимально', 'возможный', 'сохранение', 'реагировать', 'специальный', 'сообщение', 'оповещение', 'пользователь', 'некорректный', 'действие'], ['использование', 'лицензионный', 'копия', 'программа', '1с', 'предприятие'], ['требование', 'эргономика', 'технический', 'эстетика', 'разрабатываемая', 'система', 'обладать', 'удобный', 'простой', 'интуитивно', 'понятный', 'интерфейс'], ['требование', 'защита', 'информация', 'несанкционированный', 'доступ', 'система', 'реализовать', 'аутентификация', 'пользователь'], ['реализовать', 'хранение', 'пользователь', 'пароль'], ['необходимый', 'регулярный', 'смена', 'пароль'], ['2.2.3.2', 'требование', 'функция', 'перечень', 'подлежать', 'автоматизация', 'задача', 'разрабатываемая', 'система', 'поддерживать', 'выполнение', 'следующий', 'задача', 'ведение', 'учёт', 'заказ', 'стадия', 'жизненный', 'цикл', 'приём', 'выполнение', 'оплата', 'выдача', 'оформление', 'регистрация', 'новый', 'заказ', 'регистрация', 'полный', 'частичный', 'выполнение', 'заказ', 'регистрация', 'оплата', 'заказ', 'регистрация', 'выдача', 'заказ', 'обмен', 'данными', 'центральный', 'подразделение', 'филиал', 'формирование', 'отчёт', 'принять', 'невыполненный', 'заказ', 'выполнить', 'невыданным', 'заказ', 'выдать', 'заказ', 'выработка', 'сотрудник', 'оплатам', 'сертификат'], ['2.2.3.3', 'требование', 'вид', 'обеспечение', 'требование', 'технический', 'обеспечение', 'состав', 'технический', 'средство', 'входить', 'ibm', 'совместимый', 'персональный', 'компьютер', 'пэвм', 'включать', 'процессор', 'pentium', '2.0', 'hz', 'озу', '216', 'мб', 'операционный', 'система', 'windows', '2000', 'xp', 'vista'], ['требование', 'программный', 'обеспечение', 'функционирование', 'разрабатывать', 'система', 'наличие', 'операционный', 'система', 'ms', 'windows', '98', 'me/2000', 'xp', '1с', 'предприятие', '8.1'], ['требование', 'лингвистический', 'обеспечение', 'создание', 'программный', 'продукт', 'использовать', 'язык', 'программирование', '1с', 'v8.1'], ['требование', 'методический', 'обеспечение', 'наличие', 'следующий', 'нормативный', 'технический', 'документация', 'инструкция', 'программист', 'инструкция', 'пользователь'], ['2.2.4', 'перечень', 'этап', 'работа', 'срок', 'исполнение', 'этапы', 'срок', 'проведение', 'работа', 'привести', 'таблица', '1'], ['таблица', '1', 'этапы', 'срок', 'выполнение', 'работа', '№', '\\x07выполняемая', 'работа', '\\x07сроки', '\\x07', '\\x071', '\\x07постановка', 'задача', '\\x07март', '2010', 'г.', '\\x07', '\\x072', '\\x07проектирование', '\\x07апрель', '2010', 'г.', '\\x07', '\\x073', '\\x07кодирование', '\\x07апрель', 'май', '2010', 'г.', '\\x07', '\\x074', '\\x07тестирование', 'отладка', '\\x07май', '2010', '\\x07', '\\x075'], ['\\x07анализ', 'результат', '\\x07июнь', '2010', 'г.', '\\x07', '\\x07', '2.2.5', 'состав', 'исполнитель', 'работа', 'работа', 'создание', 'система', 'проводиться', 'физический', 'лицо', 'гайдуковой', 'мария', 'николаевич', 'студентка', 'улгту'], ['консультант', 'выступать', 'руководитель', 'дипломный', 'проект', 'сурков', 'елена', 'викторович'], ['2.2.6', 'требование', 'состав', 'содержание', 'работа', 'подготовка', 'объект', 'автоматизация', 'ввод', 'система', 'действие', 'рамка', 'подготовка', 'объект', 'автоматизация', 'ввод', 'система', 'заполнить', 'следующий', 'справочник', 'получение', 'актуальный', 'информация', 'возможность', 'работа', 'система', 'справочник', 'подразделение', 'справочник', 'номенклатура', 'справочник', 'клиенты', 'справочник', 'вид', 'услуга', 'справочник', 'скидка', 'справочник', 'пользователь'], ['настроить', 'план', 'обмен', 'основной'], ['заполнить', 'текущий', 'узел', 'узел', 'производить', 'обмен', 'данными'], ['указать', 'узел', 'считаться', 'центральным', 'обмен', 'производиться', 'следующий', 'направление', 'выгрузка', 'производиться', 'узел', 'центральный', 'загрузка', 'производиться', 'центральный', 'узел'], ['2.2.7', 'требование', 'документирование', 'наличие', 'следующий', 'документ', 'инструкция', 'пользователь', 'инструкция', 'программист']]"
        ],
        [
         "2",
         "tz_03.doc",
         "2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\rОбщие сведения:\rВ данной главе представлены общие сведения о системе:\rполное наименование системы и ее условное обозначение:\rWeb-ориентированная автоматизированная система учета услуг туристической фирмы;\rшифр темы или шифр (номер) договора: данный программный продукт разрабатывался в рамках дипломного проектирования, какой-либо договор не заключался; \rнаименование предприятий разработчика и заказчика системы, их реквизиты:\rпредприятие-разработчик: ООО «Волгасофт» (ИНН/КПП 7325082859/73251001, г.Ульяновск, ул.Брестская, 78);\rпредприятие-заказчик: ООО «Goodline» (ИНН/КПП 6313535100/631301001, г.Самара, МОСКОВСКОЕ ШОССЕ,81а);\rперечень документов, на основании которых создается информационная база: спецпредложения туроператора.\rплановые сроки начала и окончания работ:\rначало работы: 1 марта 2010 года;\rокончание работы: 31 мая 2010 года;\rсведения об источниках и порядке финансирования работ: данные работы проводятся на безвозмездной основе;\rпорядок оформления и предъявления заказчику результатов работ по созданию системы, ее частей и отдельных средств: по окончанию работ заказчику должны быть предъявлены и переданы установочный диск со всеми необходимыми дистрибутивами, набор инструкций и документации для полноценного функционирования указанной системы.\r\rНазначение и цели создания системы\rвид автоматизируемой деятельности.\rРазработанная система предназначена для автоматизации бронирования туров, учета клиентов, ведения базы данных туров.\rперечень объектов, на которых предполагается использование системы. \rДанную систему предполагается использовать в  ООО «Goodline».\rнаименование и требуемые значения технических, технологических, производственно-экономических и др. показателей объекта, которые должны быть достигнуты при внедрении ИС.\r При внедрении ИС должны быть достигнуты следующие цели: \rс технологической точки зрения: должен быть упрощен процесс взаимодействия турагента с клиентами, улучшено качество работы с клиентом;\rс производственно-экономической точки зрения: должно быть сокращено время на организацию работы с клиентами и формирование соответствующей отчетности.\r\rХарактеристика объектов автоматизации\rОбъектом автоматизации является ООО «Goodline». Это предприятие специализируется в области предоставления туристических услуг. В фирме существуют разные типы туров: горнолыжные, отдых на море, лечебные и др. Осуществляются поездки по различным направлениям.\rВ своей работе ООО «Goodline» использует только зарекомендовавшие себя в российских условиях туроператоры, таких как Coral Travel, Pegas Touristic, Ingtour. Профессиональные и доброжелательные сотрудники, оказывают внимание каждому клиенту. Фирма предлагает идеальное соотношение цены и качества. В программы включено максимальное количество оригинальных экскурсий. Большой выбор отелей и апартаментов любой категории по конкурентоспособным ценам. Турфирма предлагает гибкую систему скидок клиентам. Оплата услуг осуществляется в любой удобной для клиента форме – наличный и безналичный расчет\rПолитика организации нацелена на обслуживание клиентов по популярным направлениям а также принятие заказов на индивидуальные туры.\r\rТребования к системе\rТребования к системе в целом\rТребования к структуре и функционированию системы\rРазработанная система должна состоять из следующих подсистем:\rпланирование работы с клиентами;\rанализ сбытовой деятельности.\rПервая подсистема должна предоставить турагенту возможность спланировать своевременное взаимодействие с клиентом с тем, чтобы ни один клиент не оказался «забытым».\rВторая подсистема должна подсчитывать и наглядно представлять экономический результат деятельности, сбыт товаров и услуг.\rТребования к персоналу\rЧисло человек, работающих с системой, неограниченно. Оно определяется количеством турагентов в организации. Кроме того, необходим системный администратор.\rСистемный администратор должен обладать знаниями по настройке веб-сервера, а также выполнять соответствующую настройку и поддержку.\rТурагент должен иметь соответственно квалификацию турагента и быть уверенным пользователем интернет и обладать навыками работы с браузерами.\rСтепень приспособляемости системы\rДанная система должна быть гибкой в отношении изменения отчетов, должна обеспечивать настройку их параметров.\rТребования к надежности, безопасности, эргономике, транспортабельности, эксплуатации, техническому обслуживанию и ремонту, защите и сохранности информации, защите от внешних воздействий, к патентной чистоте, по стандартизации и унификации.\rСистема должна быть надежной, т.е. отказоустойчивой к ошибкам пользователя (нарушения правильной последовательности действий).\rОна должна быть удобна для работы пользователя. \r\tДолжна быть предусмотрена возможность обслуживания системы, в том числе и сторонними разработчиками.\r\tДолжна присутствовать авторизация и аутентификация пользователя, возможность тонкой настройки доступа к объектам и функциям системы. \rПрограммный продукт должен быть патентно чист и иметь возможность законно использоваться в коммерческих целях. Разрабатываемый программный продукт является патентно-чистым. Для функционирования системы необходима покупка либо аренда веб-сервера.\r\r2.2.4.2 Требования к функциям (по подсистемам)\rПеречень подлежащих автоматизации задач:\rбронирование тура;\rголосование;\rобратная связь;\rхранение базы клиентов;\rхранение и обновление базы туров;\rудобный интерфейс;\rдружественный дизайн;\rтуристический форум;\rпередача ссылки;\rновости.\rВременной регламент реализации каждой функции.\rРеализация всех функций должна быть выполнена согласно с этапами и сроками выполнения работ.\rТребования к качеству реализации каждой функции, к форме представления выходной информации, характеристики точности, достоверности выдачи результатов.\rПеречень и критерии отказов.\r\r2.2.4.3 Требования к видам обеспечения\rСистема предъявляет следующие требования к видам обеспечения:\rа) математическому: пользователь должен быть знаком с методикой проведения горизонтального (временного) анализа, вертикального (структурного) анализа;\rб) информационному: Denwer 3 (Apache, PHP, MySQL) – набор дистрибутивов (Apache, PHP, MySQL, Perl и т.д.) и программная оболочка, используемые Web-разработчиками для разработки сайтов на «домашней» (локальной) Windows-машине без необходимости выхода в Интернет. Главная особенность Денвера — удобство при удаленной работе сразу над несколькими независимыми проектами и возможность размещения на Flash-накопителе.;\rв) лингвистическому: используется язык программирования «PHP» и Java-script;\rг) программному и техническому: \r 1) компьютер конечного пользователя (рекомендуемые параметры): \rоперационная система: MS Windows 2000/ XP / Server 2003; \rпроцессор Intel Pentium III 866 МГц; \rоперативная память 256 Мбайт; \r2) компьютер, используемый для разработки конфигураций: \rоперационная система: MS Windows 2000/ XP / Server 2003; \rIntel Pentium IV/Celeron 1800  МГц ; \rоперативная память 512 Мбайт; \r3) сервер ПП: \rоперационная система: MS Windows 2000/Server 2003, ОС семейства UNIX; \rпроцессор Intel Pentium IV/Xeon 2,4 ГГц, рекомендуется два и более процессоров; \rоперативная память 1024 Мбайт; \r4) сервер баз данных: \rтехнические характеристики компьютера и операционная система должны соответствовать требованиям Microsoft SQL Server 2005, MYSQL Server; \rд) организационному: для функционирования системы необходимы системный администратор и несколько менеджеров;\rе) методическому (состав нормативно-технической документации):\rинструкция программисту; \rинструкция пользователю.\r\rСостав и содержание работ по созданию системы\rПеречень этапов работ и сроки исполнения\rПеречень этапов работ и сроки исполнения представлены в таблице 2.1\rТаблица 2.1 \rОсновные этапы работ и сроки их исполнения\r№\r\u0007Выполняемая работа\r\u0007Сроки\r\u0007\r\u00071.\r\u0007Постановка задачи\r\u0007Март 2010 г.\r\u0007\r\u00072.\r\u0007Проектирование \r\u0007Апрель 2010 г.\r\u0007\r\u00073.\r\u0007Кодирование\r\u0007Май 2010 г.\r\u0007\r\u00074.\r\u0007Тестирование и отладка\r\u0007Май 2010 г.\r\u0007\r\u00075.\r\u0007Анализ результатов\r\u0007Июнь 2010г.\r\u0007\r\u0007\rСостав исполнителей работ\rРаботы по созданию системы проводились физическим лицом – Гимадиевой Ч.Р., студенткой УлГТУ, под руководством преподавателя кафедры «Информационные системы» Наместникова Алексея Михайловича.\r\r2.2.6 Требования к программной документации\rТехническое задание\rЭкономическая часть\rИнструкция пользователя  ГОСТ 19.505-79 \"РУКОВОДСТВО ОПЕРАТОРА. ТРЕБОВАНИЯ К СОДЕРЖАНИЮ И ОФОРМЛЕНИЮ\"\rИнструкция программиста ГОСТ 19.503-79 \"РУКОВОДСТВО СИСТЕМНОГО ПРОГРАММИСТА. ТРЕБОВАНИЯ К СОДЕРЖАНИЮ И ОФОРМЛЕНИЮ\" и ГОСТ 19.504-79 \"РУКОВОДСТВО ПРОГРАММИСТА. ТРЕБОВАНИЯ К СОДЕРЖАНИЮ И ОФОРМЛЕНИЮ\"\rПояснительная записка",
         "1",
         "[['2.2'], ['техническое', 'задание', 'общий', 'сведение', 'глава', 'представить', 'общий', 'сведение', 'система', 'полный', 'наименование', 'система', 'условный', 'обозначение', 'web', 'ориентированный', 'автоматизированный', 'система', 'учёт', 'услуга', 'туристический', 'фирма', 'шифр', 'тема', 'шифр', 'номер', 'договор', 'программный', 'продукт', 'разрабатываться', 'рамка', 'дипломный', 'проектирование', 'договор', 'заключаться', 'наименование', 'предприятие', 'разработчик', 'заказчик', 'система', 'реквизит', 'предприятие', 'разработчик', 'ооо', 'волгасофт', 'инн', 'кпп', '7325082859/73251001', 'г.', 'ульяновск', 'ул.', 'брестский', '78', 'предприятие', 'заказчик', 'ооо', 'goodline', 'инн', 'кпп', '6313535100/631301001', 'г.', 'самара', 'московское', 'шоссе,81а', 'перечень', 'документ', 'основание', 'создаваться', 'информационный', 'база', 'спецпредложения', 'туроператор'], ['плановый', 'срок', 'окончание', 'работа', 'начало', 'работа', '1', 'март', '2010', 'год', 'окончание', 'работа', '31', 'май', '2010', 'год', 'сведение', 'источник', 'порядок', 'финансирование', 'работа', 'работа', 'проводиться', 'безвозмездный', 'основа', 'порядок', 'оформление', 'предъявление', 'заказчик', 'результат', 'работа', 'создание', 'система', 'часть', 'отдельный', 'средство', 'окончание', 'работа', 'заказчик', 'предъявить', 'передать', 'установочный', 'диск', 'необходимый', 'дистрибутив', 'набор', 'инструкция', 'документация', 'полноценный', 'функционирование', 'указать', 'система'], ['назначение', 'цель', 'создание', 'система', 'вид', 'автоматизировать', 'деятельность'], ['разработанная', 'система', 'предназначить', 'автоматизация', 'бронирование', 'тур', 'учёт', 'клиент', 'ведение', 'база', 'тур'], ['перечень', 'объект', 'предполагаться', 'использование', 'система'], ['данную', 'система', 'предполагаться', 'использовать', 'ооо', 'goodline'], ['наименование', 'требуемые', 'значение', 'технический', 'технологический', 'производственный', 'экономический', 'и др.'], ['показатель', 'объект', 'достигнуть', 'внедрение', 'ис'], ['внедрение', 'ис', 'достигнуть', 'следующий', 'цель', 'технологический', 'точка', 'зрение', 'упростить', 'процесс', 'взаимодействие', 'турагента', 'клиент', 'улучшить', 'качество', 'работа', 'клиент', 'производственный', 'экономический', 'точка', 'зрение', 'сократить', 'время', 'организация', 'работа', 'клиент', 'формирование', 'соответствующий', 'отчётность'], ['характеристика', 'объект', 'автоматизация', 'объект', 'автоматизация', 'являться', 'ооо', 'goodline'], ['предприятие', 'специализироваться', 'область', 'предоставление', 'туристический', 'услуга'], ['фирма', 'существовать', 'разный', 'тип', 'тур', 'горнолыжный', 'отдых', 'море', 'лечебный', 'и др.'], ['осуществляться', 'поездка', 'различный', 'направление'], ['работа', 'ооо', 'goodline', 'использовать', 'зарекомендовать', 'российский', 'условие', 'туроператор', 'coral', 'travel', 'pegas', 'touristic', 'ingtour'], ['профессиональный', 'доброжелательный', 'сотрудник', 'оказывать', 'внимание', 'каждый', 'клиент'], ['фирма', 'предлагать', 'идеальный', 'соотношение', 'цена', 'качество'], ['программы', 'включить', 'максимальный', 'количество', 'оригинальный', 'экскурсия'], ['большой', 'выбор', 'отель', 'апартамент', 'категория', 'конкурентоспособный', 'цена'], ['турфирма', 'предлагать', 'гибкий', 'система', 'скидка', 'клиент'], ['оплата', 'услуга', 'осуществляться', 'удобный', 'клиент', 'форме', 'наличный', 'безналичный', 'расчёт', 'политик', 'организация', 'нацелить', 'обслуживание', 'клиент', 'популярный', 'направление', 'принятие', 'заказ', 'индивидуальный', 'тур'], ['требование', 'система', 'требование', 'система', 'целое', 'требование', 'структура', 'функционирование', 'система', 'разработанная', 'система', 'состоять', 'следующий', 'подсистема', 'планирование', 'работа', 'клиент', 'анализ', 'сбытовый', 'деятельность'], ['первый', 'подсистема', 'предоставить', 'турагенту', 'возможность', 'спланировать', 'своевременный', 'взаимодействие', 'клиент', 'ни', 'клиент', 'оказаться', 'забыть'], ['второй', 'подсистема', 'подсчитывать', 'наглядно', 'представлять', 'экономический', 'результат', 'деятельность', 'сбыт', 'товар', 'услуга'], ['требование', 'персонал', 'число', 'человек', 'работать', 'система', 'неограниченный'], ['определяться', 'количество', 'турагентов', 'организация'], ['необходимый', 'системный', 'администратор'], ['системный', 'администратор', 'обладать', 'знание', 'настройка', 'веб', 'сервера', 'выполнять', 'соответствующий', 'настройка', 'поддержка'], ['турагент', 'соответственно', 'квалификация', 'турагента', 'уверенный', 'пользователь', 'интернет', 'обладать', 'навык', 'работа', 'браузер'], ['степень', 'приспособляемость', 'система', 'система', 'гибкий', 'отношение', 'изменение', 'отчёт', 'обеспечивать', 'настройка', 'параметр'], ['требование', 'надёжность', 'безопасность', 'эргономика', 'транспортабельность', 'эксплуатация', 'технический', 'обслуживание', 'ремонт', 'защита', 'сохранность', 'информация', 'защита', 'внешний', 'воздействие', 'патентный', 'чистота', 'стандартизация', 'унификация'], ['система', 'надёжный', 'т.е.', 'отказоустойчивой', 'ошибка', 'пользователь', 'нарушение', 'правильный', 'последовательность', 'действие'], ['удобный', 'работа', 'пользователь'], ['предусмотреть', 'возможность', 'обслуживание', 'система', 'число', 'сторонний', 'разработчик'], ['присутствовать', 'авторизация', 'аутентификация', 'пользователь', 'возможность', 'тонкий', 'настройка', 'доступ', 'объект', 'функция', 'система'], ['программный', 'продукт', 'патентный', 'чистый', 'возможность', 'законно', 'использоваться', 'коммерческий', 'цель'], ['разрабатываемый', 'программный', 'продукт', 'являться', 'патентный', 'чистый'], ['функционирование', 'система', 'необходимый', 'покупка', 'аренда', 'веб', 'сервера'], ['2.2.4.2', 'требование', 'функциям', 'подсистемам', 'перечень', 'подлежать', 'автоматизация', 'задача', 'бронирование', 'тур', 'голосование', 'обратный', 'связь', 'хранение', 'база', 'клиент', 'хранение', 'обновление', 'база', 'тур', 'удобный', 'интерфейс', 'дружественный', 'дизайн', 'туристический', 'форум', 'передача', 'ссылка', 'новость'], ['временной', 'регламент', 'реализация', 'каждый', 'функция'], ['реализация', 'функция', 'выполнить', 'согласно', 'этап', 'срок', 'выполнение', 'работа'], ['требование', 'качество', 'реализация', 'каждый', 'функция', 'форма', 'представление', 'выходной', 'информация', 'характеристика', 'точность', 'достоверность', 'выдача', 'результат'], ['перечень', 'критерий', 'отказ'], ['2.2.4.3', 'требование', 'вид', 'обеспечение', 'система', 'предъявлять', 'следующий', 'требование', 'вид', 'обеспечение', 'математический', 'пользователь', 'знакомый', 'методика', 'проведение', 'горизонтальный', 'временной', 'анализ', 'вертикальный', 'структурный', 'анализ', 'информационный', 'denwer', '3', 'apache', 'php', 'mysql', 'набор', 'дистрибутив', 'apache', 'php', 'mysql', 'perl', 'т.д.', 'программный', 'оболочка', 'использовать', 'web', 'разработчик', 'разработка', 'сайт', 'домашний', 'локальный', 'windows', 'машина', 'выход', 'интернет'], ['главный', 'особенность', 'денвер', 'удобство', 'удалённый', 'работа', 'несколько', 'независимый', 'проект', 'возможность', 'размещение', 'flash', 'накопитель'], ['лингвистический', 'использоваться', 'язык', 'программирование', 'php', 'java', 'script', 'программный', 'технический', '1', 'компьютер', 'конечный', 'пользователь', 'рекомендовать', 'параметр', 'операционный', 'система', 'ms', 'windows', '2000/', 'xp', 'server', '2003', 'процессор', 'intel', 'pentium', 'iii', '866', 'мгц', 'оперативный', 'память', '256', 'мбайт', '2', 'компьютер', 'использовать', 'разработка', 'конфигурация', 'операционный', 'система', 'ms', 'windows', '2000/', 'xp', 'server', '2003', 'intel', 'pentium', 'iv', 'celeron', '1800', 'мгц', 'оперативный', 'память', '512', 'мбайт', '3', 'сервер', 'пп', 'операционный', 'система', 'ms', 'windows', '2000', 'server', '2003', 'ос', 'семейство', 'unix', 'процессор', 'intel', 'pentium', 'iv', 'xeon', '2,4', 'ггц', 'рекомендоваться', 'два', 'процессор', 'оперативный', 'память', '1024', 'мбайт', '4', 'сервер', 'база', 'технический', 'характеристика', 'компьютер', 'операционный', 'система', 'соответствовать', 'требование', 'microsoft', 'sql', 'server', '2005', 'mysql', 'server', 'организационный', 'функционирование', 'система', 'необходимый', 'системный', 'администратор', 'менеджер', 'методический', 'состав', 'нормативный', 'технический', 'документация', 'инструкция', 'программист', 'инструкция', 'пользователь'], ['состав', 'содержание', 'работа', 'создание', 'система', 'перечень', 'этап', 'работа', 'срок', 'исполнение', 'перечень', 'этап', 'работа', 'срок', 'исполнение', 'представить', 'таблица', '2.1', 'таблица', '2.1', 'основной', 'этап', 'работа', 'срок', 'исполнение', '№', '\\x07выполняемая', 'работа', '\\x07сроки', '\\x07', '\\x071'], ['\\x07постановка', 'задача', '\\x07март', '2010', 'г.', '\\x07', '\\x072'], ['\\x07проектирование', '\\x07апрель', '2010', 'г.', '\\x07', '\\x073'], ['\\x07кодирование', '\\x07май', '2010', 'г.', '\\x07', '\\x074'], ['\\x07тестирование', 'отладка', '\\x07май', '2010', 'г.', '\\x07', '\\x075'], ['\\x07анализ', 'результат', '\\x07июнь', '2010', 'г.', '\\x07', '\\x07', 'состав', 'исполнитель', 'работа', 'работа', 'создание', 'система', 'проводиться', 'физический', 'лицо', 'гимадиевой', 'ч.р.', 'студентка', 'улгту', 'руководство', 'преподаватель', 'кафедра', 'информационный', 'система', 'наместникова', 'алексей', 'михаилович'], ['2.2.6', 'требование', 'программный', 'документация', 'технический', 'задание', 'экономический', 'часть', 'инструкция', 'пользователь', 'гост', '19.505', '79', 'руководство', 'оператора'], ['требования', 'содержанию', 'оформлению', 'инструкция', 'программист', 'гост', '19.503', '79', 'руководство', 'системного', 'программист'], ['требования', 'содержанию', 'оформлению', 'гост', '19.504', '79', 'руководство', 'программист'], ['требования', 'содержанию', 'оформлению', 'пояснительный', 'записка']]"
        ],
        [
         "3",
         "tz_04.doc",
         "ТЕХНИЧЕСКОЕ ЗАДАНИЕ\r2.2.1 ОБЩИЕ СВЕДЕНИЯ\rИнтернет-магазин ООО «Практика» разработан для осуществления торгоаой деятельности через Интернет. Данный продукт разработала Громакова Елена для ООО «Практика». Плановый срок начала работ — февраль 2010 года, окончание работ — июнь 2010 года. Данный программный родукт выполняется безвозмездно. \r\r2.2.2 Назначение и цели создания системы\rИнтернет-магазин ООО «Практика» разрабатывается для \rосуществления оптовой и розничной реализации товаров через Интернет. \rОсновными элементами прикладного решения являются:\rОформление заказа;\rОповещение покупателя об успешном совершении заказа;\rОповещение продавца о новом заказе.\rДанный интернет-магазин разрабатывается для удобства поупателей, чтобы они могли наглядно ознакомиться с предлагаемой продукцией. А также для удобства менеджеров которые будут обрабатывать эти заказы, т.к. намного проще обработать готовый заказ, чем вначале записать на листок, затем перенести эти данные в базу, после чего согласовать счет. В интернет-магазине покупатель самостоятельно будет формировать свой заказ, где будет видеть цены и итоговую сумму.\r\r2.2.3 Характеристика объектов автоматизации\rИнтернет-магазин – это магазин, «витрина» которого расположена в интернете и который дает возможность заказывать товар через интернет. \rНа сайте магазина представлен подробный каталог товаров с ценами, на основе которого пользователь формирует свой заказ. Заказывая товары в интернет-магазине, покупатель может получать их с курьером, а расплачиваться наличным или безналичным расчетом.\rПреимущества которые дает интернет-магазин:\rИнтернет-магазин работает 24 часа в сутки, 365 дней в году, без перерыва на обед, без выходных и праздничных дней.\rДоступ к виртуальной витрине магазина может получить любой покупатель.\rИнтернет-магазин не имеет ограничений на виртуальную площадь. Можно разместить сколь угодно товаров.\rСрок и стоимость создания интернет-магазина несоизмеримо ниже, чем обычного магазина.\rДля создания интернет-магазина не требуется получения многочисленных разрешений и лицензий. Его не проверяет пожарный инспектор, санэпидемстанция и другие службы.\rИнтернет-магазины — это наше недалекое будущее. В городах миллионниках они пользуются большим спросом. Кажется что их уже достаточно много, но перенасыщенности в этой сфере пока нет. Содержать интернет-магазин намного выгоднее чем его аналог. За него не нужно платить арендную плату или зарплату продавцам. Он прост и удобен в применении. Экспуатировать его так же легко. Все что для этого нужно — это подключение к сети Интернет.\r\r2.2.4 Требования к системе\rТребования к системе в целом:\r- удобный интерфейс, рассчитанный на неопытного пользователя;\r- возможность быстрого поиска как по наименованию товара, так и по его характеристикам;\r- возможность ввода и хранения данных неограниченного числа зарегистрированных пользователей;\r- защита от ошибок пользователей (не заполнение всех необходимы полей при регистрации пользователя или при оформлении заказа);\r- воозможность необходимых настроек системы.\rТребования к составу функций:\rВсе пользователи, работающие с программой могут иметь разные права. В пользовательском режиме это может быть, например, группа «оптовики» (их преимущество в том, что когда они зайдут на сайт под своим пролем - получат 5% скидку на весь товар). В режиме администратора также может быть несколько пользователей. Наделяет пользователей правами главный администратор. \rГлавный администратор может:\r1. Добавлять и удалять любую информацию на сайте (новости, товар, описание продукции, баннеры и т.д.);\r2. Изменять внешний вид сайта;\r3. Наделять правами пользователей.\rТребования к  инструментальным средствам\rДля разработки программного продукта использовать систему управления сайтом (CMS) Joomla 1.5 и расширение Virtuemart 1.1. Если разработка осуществляется на локальном компьютере, то необходимо использовать Денвер. Денвер — набор дистрибутивов и программная оболочка, предназначенный для создания и отладки сайтов на локальной Windows-машине, без подключения к сети Интернет. \rТребования к системному ПО и техническому обеспечению\rПрограммный продукт ориентирован на работу под управлением операционной системы Windows: 98, 2000, XP, Vista, 7, CPU 1 Ghz, 256 Мб оперативной памяти, подключение к интернет.\rТребования к  интерфейсу\rПрограммный продукт должен быть ориентирован на неподготовленного пользователя ЭВМ, имеющего начальные навыки работы с ОС Windows и Internet. Общение с компьютером должно осуществляться на основе графического оконного интерфейса в виде меню, списков, кнопок, полей ввода данных. \rПеречень этапов работ и сроки исполнения \rПеречень этапов работ и сроки исполнения представлены в таблице 2.1\r№\r\u0007Этапы работ\r\u0007Период выполнения\r\u0007\r\u00071.\r\u0007Сбор фактического материала, обзор состояния вопроса и анализ предметной области, составление плана работы\r\u0007Февраль 2010 – Март 2010\r\u0007\r\u00072. \r\u0007Систематизация материала; описание бизнес-процессов\r\u0007Апрель 2010\r\u0007\r\u00073.\r\u0007Проектирование и разработка предметно-ориентированной информационной системы\r\u0007Апрель 2010 г. – Май 2010 г.\r\u0007\r\u00074.\r\u0007Тестирование программного проекта\r\u0007Июнь 2010 г.\r\u0007\r\u0007             Таблица 2.1 Перечень этапов работ и сроки исполнения.",
         "1",
         "[['техническое', 'задание', '2.2.1', 'общие', 'сведение', 'интернет', 'магазин', 'ооо', 'практика', 'разработать', 'осуществление', 'торгоаой', 'деятельность', 'интернет'], ['продукт', 'разработать', 'громаков', 'елена', 'ооо', 'практика'], ['плановый', 'срок', 'работа', 'февраль', '2010', 'год', 'окончание', 'работа', 'июнь', '2010', 'год'], ['программный', 'родукт', 'выполняться', 'безвозмездно'], ['2.2.2', 'назначение', 'цель', 'создание', 'система', 'интернет', 'магазин', 'ооо', 'практика', 'разрабатываться', 'осуществление', 'оптовый', 'розничный', 'реализация', 'товар', 'интернет'], ['основный', 'элемент', 'прикладной', 'решение', 'являться', 'оформление', 'заказ', 'оповещение', 'покупатель', 'успешный', 'совершение', 'заказ', 'оповещение', 'продавец', 'новый', 'заказ'], ['интернет', 'магазин', 'разрабатываться', 'удобство', 'поупателей', 'наглядно', 'ознакомиться', 'предлагать', 'продукция'], ['удобство', 'менеджер', 'обрабатывать', 'заказ', 'т.к.', 'намного', 'обработать', 'готовый', 'заказ', 'записать', 'листок', 'перенести', 'база', 'согласовать', 'счёт'], ['интернет', 'магазине', 'покупатель', 'самостоятельно', 'формировать', 'заказ', 'видеть', 'цена', 'итоговый', 'сумма'], ['2.2.3', 'характеристика', 'объект', 'автоматизация', 'интернет', 'магазин', 'магазин', 'витрина', 'расположена', 'интернет', 'давать', 'возможность', 'заказывать', 'товар', 'интернет'], ['сайт', 'магазин', 'представить', 'подробный', 'каталог', 'товар', 'цена', 'основа', 'пользователь', 'формировать', 'заказ'], ['заказывать', 'товар', 'интернет', 'магазине', 'покупатель', 'получать', 'курьер', 'расплачиваться', 'наличный', 'безналичный', 'расчёт'], ['преимущество', 'давать', 'интернет', 'магазин', 'интернет', 'магазин', 'работать', '24', 'час', 'сутки', '365', 'день', 'год', 'перерыв', 'обед', 'выходной', 'праздничный', 'день'], ['доступ', 'виртуальный', 'витрина', 'магазин', 'получить', 'покупатель'], ['интернет', 'магазин', 'ограничение', 'виртуальный', 'площадь'], ['разместить', 'сколь', 'угодно', 'товар'], ['срок', 'стоимость', 'создание', 'интернет', 'магазина', 'несоизмеримый', 'обычный', 'магазин'], ['создание', 'интернет', 'магазина', 'требоваться', 'получение', 'многочисленный', 'разрешение', 'лицензия'], ['проверять', 'пожарный', 'инспектор', 'санэпидемстанция', 'служба'], ['интернет', 'магазины', 'недалёкий', 'будущее'], ['город', 'миллионник', 'пользоваться', 'больший', 'спрос'], ['достаточно', 'перенасыщенность', 'сфера'], ['содержать', 'интернет', 'магазин', 'намного', 'выгодный', 'аналог'], ['платить', 'арендный', 'плата', 'зарплата', 'продавец'], ['простой', 'удобный', 'применение'], ['экспуатировать', 'лёгкий'], ['подключение', 'сеть', 'интернет'], ['2.2.4', 'требование', 'система', 'требование', 'система', 'целое', 'удобный', 'интерфейс', 'рассчитать', 'неопытный', 'пользователь', 'возможность', 'быстрый', 'поиск', 'наименование', 'товар', 'характеристика', 'возможность', 'ввод', 'хранение', 'неограниченный', 'число', 'зарегистрировать', 'пользователь', 'защита', 'ошибка', 'пользователь', 'заполнение', 'необходимый', 'поле', 'регистрация', 'пользователь', 'оформление', 'заказ', 'воозможность', 'необходимый', 'настройка', 'система'], ['требование', 'состав', 'функция', 'пользователь', 'работать', 'программа', 'разный', 'право'], ['пользовательский', 'режим', 'группа', 'оптовик', 'преимущество', 'зайти', 'сайт', 'пролем', 'получить', '5', 'скидка', 'товар'], ['режим', 'администратор', 'пользователь'], ['наделять', 'пользователь', 'право', 'главный', 'администратор'], ['главный', 'администратор', '1'], ['добавлять', 'удалять', 'информация', 'сайт', 'новость', 'товар', 'описание', 'продукция', 'баннер', 'т.д.', '2'], ['изменять', 'внешний', 'вид', 'сайт', '3'], ['наделять', 'право', 'пользователь'], ['требование', 'инструментальный', 'средство', 'разработка', 'программный', 'продукт', 'использовать', 'система', 'управление', 'сайт', 'cms', 'joomla', '1.5', 'расширение', 'virtuemart', '1.1'], ['разработка', 'осуществляться', 'локальный', 'компьютер', 'использовать', 'денвер'], ['денвер', 'набор', 'дистрибутив', 'программный', 'оболочка', 'предназначить', 'создание', 'отладка', 'сайт', 'локальный', 'windows', 'машина', 'подключение', 'сеть', 'интернет'], ['требование', 'системный', 'технический', 'обеспечение', 'программный', 'продукт', 'ориентировать', 'работа', 'управление', 'операционный', 'система', 'windows', '98', '2000', 'xp', 'vista', '7', 'cpu', '1', 'ghz', '256', 'мб', 'оперативный', 'память', 'подключение', 'интернет'], ['требование', 'интерфейс', 'программный', 'продукт', 'ориентировать', 'неподготовленный', 'пользователь', 'эвм', 'иметь', 'начальный', 'навык', 'работа', 'ос', 'windows', 'internet'], ['общение', 'компьютер', 'осуществляться', 'основа', 'графический', 'оконный', 'интерфейс', 'вид', 'меню', 'список', 'кнопка', 'поле', 'ввод'], ['перечень', 'этап', 'работа', 'срок', 'исполнение', 'перечень', 'этап', 'работа', 'срок', 'исполнение', 'представить', 'таблица', '2.1', '№', '\\x07этапы', 'работа', '\\x07период', 'выполнение', '\\x07', '\\x071'], ['\\x07сбор', 'фактический', 'материал', 'обзор', 'состояние', 'вопрос', 'анализ', 'предметный', 'область', 'составление', 'план', 'работа', '\\x07февраль', '2010', 'март', '2010', '\\x07', '\\x072'], ['\\x07систематизация', 'материал', 'описание', 'бизнес', 'процессов', '\\x07апрель', '2010', '\\x07', '\\x073', '\\x07проектирование', 'разработка', 'предметный', 'ориентированный', 'информационный', 'система', '\\x07апрель', '2010', 'г.', 'май', '2010', 'г.', '\\x07', '\\x074', '\\x07тестирование', 'программный', 'проект', '\\x07июнь', '2010', 'г.', '\\x07', '\\x07', 'таблица', '2.1', 'перечень', 'этап', 'работа', 'срок', 'исполнение']]"
        ],
        [
         "4",
         "tz_05.doc",
         "2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\r2.2.1 Общие сведения.\r1) полное наименование системы и ее условное обозначение: АРМ сотрудника организационно-методического кабинета МУЗ «Сенгилеевская ЦРБ»;\r2) шифр темы или шифр (номер договора): данный программный продукт разрабатывался вне рамок какого-либо договора;\r3) наименование предприятий разработчика и заказчика системы, их реквизиты: МУЗ «Сенгилеевская ЦРБ», 433380, г. Сенгилей, ул. Н. Выборная, 8.;\r4) перечень документов, на основании которых создается информационная система:\r1.Приказ Минздрава РФ от 30 декабря 2002 г. N 413 «Об утверждении учетной и отчетной медицинской документации»\r2. Распоряжение Минздрава Ульяновской области РФ от 15 декабря 2009 г. №512 «О проведении временной оперативной отчетности о деятельности учреждений здравоохранения»\r5) плановые сроки начала и окончания работ: 29 марта 2010 года – 7 мая 2010 года;\r6) сведения об источниках и порядке финансирования работ: данные работы проводятся на некоммерческой основе;\r7) порядок оформления и предъявления заказчику результатов работ по созданию системы, ее частей и отдельных средств: по окончанию работ заказчику должны быть предъявлены и переданы установочный диск со всеми необходимыми дистрибутивами, набор инструкций и документации для полноценного функционирования системы.\r \r2.2.2 Назначение и цели создания системы\rРазработанная система призвана автоматизировать процессы организационно-методического кабинета. Данная система предназначена для использования в ОМК МУЗ «Сенгилеевская ЦРБ», а также в организационно-методических кабинетах других лечебно-профилактических учреждений. После доработок продукта предполагается возможность его внедрения и использования.\rПри внедрении данной системы должны быть следующие показатели:\rтехнические: показателей нет;\rтехнологические: уменьшение числа этапов выполнения расчетов численных показателей при подготовке отчетной информации;\rпроизводственно-экономические: сокращение времени на расчеты при подготовке отчетной информации, повышение производительности работы организационно-методического кабинета.\r\r2.2.3 Характеристика объектов автоматизации\r\tОбъектом автоматизации является Организационно-методический кабинет МУЗ «Сенгилеевская центральная районная больница».\r\tОсновные: учет первичной медицинской документации (талон амбулаторного пациента, карта выбывшего из стационара)\r\tВспомогательные: вывод отчетов на экран.\r\r2.2.4 Требования к системе в целом\r2.1.4.1 Требования к структуре и функционированию системы\r\tСистема должна обеспечивать выполнение перечисленных ниже функций:\r\t\t- добавление новой учетной медицинской документации;\r- редактирование и удаление существующей учетной медицинской документации;\r- формирование отчетной медицинской документации\r\r2.2.4.2 Требования к персоналу\r\tДля функционирования системы необходим сотрудник организационно-методического кабинета. Он должен обладать знаниями в области статистического учета медицинской информации, а так же навыками заполнения учетной медицинской документации и работы с программой на базе платформы 1С:Предприятие 8.1.\r\r2.2.4.3 Степень приспособляемости системы\r\tСистема должна легко дорабатываться для добавления новых или изменения имеющихся функций.\r\r2.2.4.4 Требования к надежности\r\tНадежность и отказоустойчивость системы к ошибкам пользователей и ошибкам загружаемых данных обеспечивают внутренние средства 1С.\r\tИнтерфейс системы должен быть эргономичным с точки зрения пользователя. Интерфейсы программных продуктов на базе «1С:Предприятие 8.1» ориентированы на удобную работу и простоту освоения.\r\tСистема должна обладать патентной чистотой. Это предполагает использование программы на лицензионных копиях программ «1С:Предприятие».\r\tДолжен быть предусмотрен режим раздельной работы с конфигурацией нескольких пользователей. Для этого необходимо, чтобы при входе в конфигурацию присутствовала авторизация и аутентификация пользователей, а значит, каждый пользователь должен иметь свой прописанный в конфигурации набор прав.\r\r2.2.5 Требования к функциям\r2.2.5.1 Перечень подлежащих автоматизации задач\r\tДля системы должны быть реализованы следующие возможности:\rФормирование документов (Талон амбулаторного пациента, Карта выбывшего из стационара), а также по скорой помощи и выполненным объемам учреждений;\rВведение амбулаторной карты пациента;\rРегистрация заболеваний;\rУчет врачебного посещения;\rУчет движения больных;\rФормирование отчетной медицинской документации.\r\r2.2.5.2 Перечень критериев и отказов\r\tФатальные ошибки. Сбои в системе, которые приводят к потере ее работоспособности или порче данных.\r\tСерьезные ошибки. Ошибки, которые не позволяют достичь желаемого результата при использовании некоторого средства или функции программного продукта, включая невозможность исполнения содержащейся в меню или диалоговом окне команды, выполнения процесса или формирования текста.\r\tМаленькие ошибки. Ошибки, которые вызывают неудобство работы с системой, например, ошибки в задании порядка перехода от одного элемента управления к другому в форме ввода информации. К данному типу ошибок можно отнести также беспричинные сообщения об ошибках.\r\tНезначительные ошибки. К данному типу ошибок относятся орфографические ошибки в надписях или не выровненные элементы управления.\r\r2.2.6 Требования к видам обеспечения\r\tСистема предъявляет следующие требования к видам обеспечения:\r\tа) математическому: к пользователю конфигурации не предъявляется особых требований в области математического анализа;\r\tб) информационному: конфигурация доступна для использования только при установленной платформе 1С:Предприятие 8.1, которая в свою очередь рекомендуется к использованию совместно с операционной системой Windows 98/2000/XP/Vista/7.\r\tв) лингвистическому: для написания системы конфигурации использовался встроенный язык системы 1С:Предприятие 8.1. Изменением конфигурации рекомендуется заниматься только специалистам, владеющим этим языком.\r\tг) программному и техническому: для работы с «1С:Предприятием 8.1» рекомендуемая конфигурация компьютера, приведенная «Руководстве по установке и запуску» имеет следующие характеристики:\r\t1) компьютер конечного пользователя:\r\t\ta) операционная система: MS Windows 2000 / XP / Server 2003;\r\t\tb) процессор Intel Pentium III 866 МГц;\r\t\tc) оперативная память 256 Мбайт;\r\t2) компьютер, используемый для разработки конфигураций:\r\t\ta) операционная система: MS Windows 2000 / XP / Server 2003;\r\t\tb) процессор Intel Pentium IV/Celeron 1800 МГц;\r\t\tc) оперативная память 512 Мбайт;\r\t3) сервер «1С:Предприятие 8.0»:\r\t\ta) операционная система: MS Windows 2000 / XP / Server 2003;\r\t\tb) процессор Intel Pentium IV/Xeon 2,4 ГГц;\r\t\tc) оперативная память 1024 Мбайт;\r\tИз программных средств необходимы: платформа «1С:Предприятие 8.1».\r\tд) метрологическому: нет требований к данному виду обеспечения.\r\tе) организационному: при работе с конфигурацией сразу нескольких пользователей существует требование каждому пользователю входить в информационную базу только со своими правами.\r\tж) методическому (состав нормативно-технической документации):\r\t\ta) инструкция программисту;\r\t\tb) инструкция пользователю;\r\t\tc) презентация программного продукта.\r\r2.2.7 Перечень этапов работ и сроки исполнения\r№\r\u0007Выполняемая работа\r\u0007Сроки\r\u0007\r\u00071.\r\u0007Постановка задачи\r\u0007февраль 2010 г. - март 2010 г.\r\u0007\r\u00072.\r\u0007Проектирование\r\u0007март 2010 г.\r\u0007\r\u00073.\r\u0007Кодирование\r\u0007апрель 2010 г. – май 2010 г.\r\u0007\r\u00074.\r\u0007Тестирование и отладка\r\u0007май 2010 г.\r\u0007\r\u00075.\r\u0007Анализ результатов\r\u0007Июнь 2010 г.\r\u0007\r\u0007\r2.2.8 Состав исполнителей работ\rРаботы по созданию системы проводились физическим лицом, Давыдовым Денисом Васильевичем студентом УлГТУ. При этом консультантами выступали:\r\tа) Меркулова Тамара Алексеевна – УлГТУ, доцент кафедры «Информационные системы», руководитель дипломного проекта.\r\tб) Давыдова Ольга Николаевна – заведующий организационно-методическим кабинетом МУЗ «Сенгилеевская ЦРБ».\r\r2.2.9 Порядок контроля системы\rДля контроля необходимо провести следующие виды тестирования:\r\tФункциональное тестирование. Оно включает проверку каждой команды меню, панели инструментов и каждой операции, которую выполняет система.\r\tТестирование приложения. При выполнении тестирования приложения испытатель моделирует действия пользователя. Воспроизводя различные комбинации действий, можно найти ошибки, относящиеся к интеграции компонентов, а также недоработки, которые не были обнаружены при функциональном тестировании.\r\tТестирование на скорость выполнения. Измеряется время отклика системы на некоторое действие, документа. Обычно при этом определяются параметры эффективности. Одновременно с измерением времени на выполнение запроса записать также размер базы данных.\r\tВсе этапы тестирования программы проводились непосредственным разработчиком Давыдовым Денисом Васильевичем.\r\r2.2.10 Требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие\rДля ввода системы в эксплуатацию необходимо провести обучение персонала с программой с использованием всех ее возможностей: сотрудника организационно-методического кабинета – 2 академических часа.\r\tНеобходимо заполнить во внедряемой системе справочники.\r\r2.2.11 Перечень подлежащих разработке документов\r\t- инструкция пользователю;\r\t- инструкция администратору;\r\t- презентация программного продукта.",
         "1",
         "[['2.2', 'техническое', 'задание', '2.2.1', 'общий', 'сведение'], ['1'], ['полный', 'наименование', 'система', 'условный', 'обозначение', 'арм', 'сотрудник', 'организационный_методический', 'кабинет', 'муз', 'сенгилеевский', 'црб', '2', 'шифр', 'тема', 'шифр', 'номер', 'договор', 'программный', 'продукт', 'разрабатываться', 'рамка', 'договор', '3', 'наименование', 'предприятие', 'разработчик', 'заказчик', 'система', 'реквизит', 'муз', 'сенгилеевский', 'црб', '433380', 'г.', 'сенгилей', 'ул.', 'н.', 'выборный', '8'], ['4'], ['перечень', 'документ', 'основание', 'создаваться', 'информационный', 'система', '1.приказ', 'минздрав', 'рф', '30', 'декабрь', '2002', 'г.', 'n', '413', 'утверждение', 'учётный', 'отчётный', 'медицинский_документация', '2'], ['распоряжение', 'минздрав', 'ульяновский', 'область', 'рф', '15', 'декабрь', '2009', 'г.', '№', '512', 'проведение', 'временной', 'оперативный', 'отчётность', 'деятельность', 'учреждение', 'здравоохранение', '5', 'плановый', 'срок', 'окончание', 'работа', '29', 'март', '2010', 'год', '7', 'май', '2010', 'год', '6', 'сведение', 'источник', 'порядок', 'финансирование', 'работа', 'работа', 'проводиться', 'некоммерческий', 'основа', '7', 'порядок', 'оформление', 'предъявление', 'заказчик', 'результат', 'работа', 'создание', 'система', 'часть', 'отдельный', 'средство', 'окончание', 'работа', 'заказчик', 'предъявить', 'передать', 'установочный', 'диск', 'необходимый', 'дистрибутив', 'набор', 'инструкция', 'документация', 'полноценный', 'функционирование', 'система', '2.2.2', 'назначение', 'цель', 'создание', 'система', 'разработанная', 'система', 'призвана', 'автоматизировать', 'процесс', 'организационный_методический', 'кабинет'], ['система', 'предназначить', 'использование', 'омк', 'муз', 'сенгилеевский', 'црб', 'организационный_методический', 'кабинет', 'лечебно', 'профилактический', 'учреждение'], ['доработка', 'продукт', 'предполагаться', 'возможность', 'внедрение', 'использование'], ['внедрение', 'система', 'следующий', 'показатель', 'технический', 'показатель', 'технологический', 'уменьшение', 'число', 'этап', 'выполнение', 'расчёт', 'численный', 'показатель', 'подготовка', 'отчётный', 'информация', 'производственный', 'экономический', 'сокращение', 'время', 'расчёт', 'подготовка', 'отчётный', 'информация', 'повышение', 'производительность', 'работа', 'организационный_методический', 'кабинет'], ['2.2.3', 'характеристика', 'объект', 'автоматизация', 'объект', 'автоматизация', 'являться', 'организационный_методический', 'кабинет', 'муз', 'сенгилеевский', 'центральный', 'районный', 'больница'], ['основной', 'учёт', 'первичный', 'медицинский_документация', 'талон', 'амбулаторный', 'пациент', 'карта', 'выбыть', 'стационар', 'вспомогательный', 'вывод', 'отчёт', 'экран'], ['2.2.4', 'требование', 'система', 'целое', '2.1.4.1', 'требование', 'структура', 'функционирование', 'система', 'система', 'обеспечивать', 'выполнение', 'перечислить', 'функция', 'добавление', 'новый', 'учётный', 'медицинский_документация', 'редактирование', 'удаление', 'существовать', 'учётный', 'медицинский_документация', 'формирование', 'отчётный', 'медицинский_документация', '2.2.4.2', 'требование', 'персонал', 'функционирование', 'система', 'необходимый', 'сотрудник', 'организационный_методический', 'кабинет'], ['обладать', 'знание', 'область', 'статистический', 'учёт', 'медицинский', 'информация', 'навык', 'заполнение', 'учётный', 'медицинский_документация', 'работа', 'программа', 'база', 'платформа', '1с_предприятие', '8.1'], ['2.2.4.3', 'степень', 'приспособляемость', 'система', 'система', 'легко', 'дорабатываться', 'добавление', 'новый', 'изменение', 'иметься', 'функция'], ['2.2.4.4', 'требование', 'надёжность', 'надёжность', 'отказоустойчивость', 'система', 'ошибка', 'пользователь', 'ошибка', 'загружать', 'обеспечивать', 'внутренний', 'средство', '1с.', 'интерфейс', 'система', 'эргономичный', 'точка', 'зрение', 'пользователь'], ['интерфейсы', 'программный', 'продукт', 'база', '1с_предприятие', '8.1', 'ориентировать', 'удобный', 'работа', 'простота', 'освоение'], ['система', 'обладать', 'патентный', 'чистота'], ['предполагать', 'использование', 'программа', 'лицензионный', 'копия', 'программа', '1с_предприятие'], ['предусмотреть', 'режим', 'раздельный', 'работа', 'конфигурация', 'несколько', 'пользователь'], ['вход', 'конфигурация', 'присутствовать', 'авторизация', 'аутентификация', 'пользователь', 'пользователь', 'прописать', 'конфигурация', 'набор', 'право'], ['2.2.5', 'требование', 'функция', '2.2.5.1', 'перечень', 'подлежать', 'автоматизация', 'задача', 'система', 'реализовать', 'следующий', 'возможность', 'формирование', 'документ', 'талон', 'амбулаторный', 'пациент', 'карта', 'выбыть', 'стационар', 'скорый', 'помощь', 'выполнить', 'объём', 'учреждение', 'введение', 'амбулаторный', 'карта', 'пациент', 'регистрация', 'заболевание', 'учёт', 'врачебный', 'посещение', 'учёт', 'движение', 'больных', 'формирование', 'отчётный', 'медицинский_документация'], ['2.2.5.2', 'перечень', 'критерий', 'отказ', 'фатальный', 'ошибка'], ['сбой', 'система', 'приводить', 'потеря', 'работоспособность', 'порча'], ['серьёзный', 'ошибка'], ['ошибка', 'позволять', 'достигнуть', 'желаемого', 'результат', 'использование', 'некоторый', 'средство', 'функция', 'программный', 'продукт', 'невозможность', 'исполнение', 'содержаться', 'меню', 'диалоговый', 'окно', 'команда', 'выполнение', 'процесс', 'формирование', 'текст'], ['маленький', 'ошибка'], ['ошибка', 'вызывать', 'неудобство', 'работа', 'система', 'ошибка', 'задание', 'порядок', 'переход', 'элемент', 'управление', 'другому', 'форма', 'ввод', 'информация'], ['тип', 'ошибка', 'отнести', 'беспричинный', 'сообщение', 'ошибка'], ['незначительный', 'ошибка'], ['тип', 'ошибка', 'относиться', 'орфографический', 'ошибка', 'надпись', 'выровнять', 'элемент', 'управление'], ['2.2.6', 'требование', 'вид', 'обеспечение', 'система', 'предъявлять', 'следующий', 'требование', 'вид', 'обеспечение', 'математический', 'пользователь', 'конфигурация', 'предъявляться', 'особый', 'требование', 'область', 'математический', 'анализ', 'информационный', 'конфигурация', 'доступный', 'использование', 'установить', 'платформа', '1с_предприятие', '8.1', 'очередь', 'рекомендоваться', 'использование', 'совместно', 'операционный', 'система', 'windows', '98/2000', 'xp', 'vista/7'], ['лингвистический', 'написание', 'система', 'конфигурация', 'использоваться', 'встроенный', 'язык', 'система', '1с_предприятие', '8.1'], ['изменение', 'конфигурация', 'рекомендоваться', 'заниматься', 'специалист', 'владеть', 'язык', 'программный', 'технический', 'работа', '1с_предприятие', '8.1', 'рекомендовать', 'конфигурация', 'компьютер', 'привести', 'руководство', 'установка', 'запуск', 'следующий', 'характеристика', '1', 'компьютер', 'конечный', 'пользователь', 'a', 'операционный', 'система', 'ms', 'windows', '2000', 'xp', 'server', '2003', 'b', 'процессор', 'intel', 'pentium', 'iii', '866', 'мгц', 'c', 'оперативный', 'память', '256', 'мбайт', '2', 'компьютер', 'использовать', 'разработка', 'конфигурация', 'a', 'операционный', 'система', 'ms', 'windows', '2000', 'xp', 'server', '2003', 'b', 'процессор', 'intel', 'pentium', 'iv', 'celeron', '1800', 'мгц', 'c', 'оперативный', 'память', '512', 'мбайт', '3', 'сервер', '1с_предприятие', '8.0', 'a', 'операционный', 'система', 'ms', 'windows', '2000', 'xp', 'server', '2003', 'b', 'процессор', 'intel', 'pentium', 'iv', 'xeon', '2,4', 'ггц', 'c', 'оперативный', 'память', '1024', 'мбайт', 'программный', 'средство', 'необходимый', 'платформа', '1с_предприятие', '8.1', 'метрологический', 'требование', 'вид', 'обеспечение', 'организационный', 'работа', 'конфигурация', 'несколько', 'пользователь', 'существовать', 'требование', 'каждый', 'пользователь', 'входить', 'информационный', 'база', 'право', 'методический', 'состав', 'нормативный', 'технический', 'документация', 'a', 'инструкция', 'программист', 'b', 'инструкция', 'пользователь', 'c', 'презентация', 'программный', 'продукт'], ['2.2.7', 'перечень', 'этап', 'работа', 'срок', 'исполнение', '№', '\\x07выполняемая', 'работа', '\\x07сроки', '\\x07', '\\x071', '\\x07постановка', 'задача', '\\x07февраль', '2010_г.', 'март', '2010_г.', '\\x07', '\\x072', '\\x07проектирование', '\\x07март', '2010_г.', '\\x07', '\\x073', '\\x07кодирование', '\\x07апрель', '2010_г.', 'май', '2010_г.', '\\x07', '\\x074', '\\x07тестирование', 'отладка', '\\x07май', '2010_г.', '\\x07', '\\x075', '\\x07анализ', 'результат', '\\x07июнь', '2010_г.', '\\x07', '\\x07', '2.2.8', 'состав', 'исполнитель', 'работа', 'работа', 'создание', 'система', 'проводиться', 'физический', 'лицо', 'давыдов', 'денис', 'василиевич', 'студент', 'улгту'], ['консультант', 'выступать', 'меркулов', 'тамара', 'алексеевич', 'улгту', 'доцент', 'кафедра', 'информационный', 'система', 'руководитель', 'дипломный', 'проект', 'давыдов', 'ольга', 'николаевич', 'заведующий', 'организационный_методический', 'кабинет', 'муз', 'сенгилеевский', 'црб'], ['2.2.9', 'порядок', 'контроль', 'система', 'контроль', 'провести', 'следующий', 'вид', 'тестирование', 'функциональный', 'тестирование'], ['включать', 'проверка', 'каждый', 'команда', 'меню', 'панель', 'инструмент', 'каждый', 'операция', 'выполнять', 'система'], ['тестирование', 'приложение'], ['выполнение', 'тестирование', 'приложение', 'испытатель', 'моделировать', 'действие', 'пользователь'], ['воспроизводить', 'различный', 'комбинация', 'действие', 'найти', 'ошибка', 'относиться', 'интеграция', 'компонент', 'недоработка', 'обнаружить', 'функциональный', 'тестирование'], ['тестирование', 'скорость', 'выполнение'], ['измеряться', 'время', 'отклик', 'система', 'некоторый', 'действие', 'документ'], ['определяться', 'параметр', 'эффективность'], ['одновременно', 'измерение', 'время', 'выполнение', 'запрос', 'записать', 'размер', 'база'], ['этап', 'тестирование', 'программа', 'проводиться', 'непосредственный', 'разработчик', 'давыдов', 'денис', 'василиевич'], ['2.2.10', 'требование', 'состав', 'содержание', 'работа', 'подготовка', 'объект', 'автоматизация', 'ввод', 'система', 'действие', 'ввод', 'система', 'эксплуатация', 'провести', 'обучение', 'персонал', 'программа', 'использование', 'возможность', 'сотрудник', 'организационный_методический', 'кабинет', '2', 'академический', 'час'], ['заполнить', 'внедрять', 'система', 'справочник'], ['2.2.11', 'перечень', 'подлежать', 'разработка', 'документ', 'инструкция', 'пользователь', 'инструкция', 'администратор', 'презентация', 'программный', 'продукт']]"
        ],
        [
         "5",
         "tz_06.doc",
         "2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\t\r1.Общие сведения\rПолное наименование системы: Станция технического обслуживания автомобилей. Условное обозначение – СТО автомобилей.\rШифр темы или шифр (номер) договора: данный программный продукт разрабатывался в рамках выполнения должностных обязанностей в компании-заказчике.\r Наименование предприятий разработчика и заказчика системы, их реквизиты: ООО «АвтоРай» (432026 Ульяновск, ул. Московское шоссе, 17а).\rПеречень документов, на основании которых создается информационная система: основанием для разработки системы является  необходимость ведения автоматизированного контроля  и учета деятельности на станции технического обслуживания  в организации-заказчике. \rПлановые сроки начала и окончания работ работ:\rНачало работ – февраль 2010 г.\rОкончание работ – июнь 2010 г.\rСведения об источниках и порядке финансирования работ: источником финансирования является ежемесячная зарплата. Результаты работы предъявляются по мере выполнения отдельных функциональных блоков.\rПорядок оформления и предъявления заказчику результатов работ по созданию системы, ее частей и отдельных средств : результаты работы внедряются в типовую конфигурацию по мере разработки отдельных функциональных блоков.\r\r2. Назначение и цели создания системы\r2.1 Назначение системы:  предоставление удобных механизмов для работы с клиентами на станции технического обслуживания. \r2.2 Цели создания системы: \rавтоматизация работы станции технического обслуживания;\rпредоставление удобных механизмов для работы мастеров-приемщиков и оформителей на станции;\rВозможность получения точной информации о работе станции, расчет прибыли (убытков) от работы станции.\r\r3. Характеристики объекта автоматизации\r3.1  Объект автоматизации: объектом автоматизации в данной системе являются заявки, поступающие на СТО, документы и договора, составляющиеся в ходе работы с клиентами, а также дополнительные документы, создаваемые в процессе работы на станции. Информация о заявках на обслуживание, договорах, актах и прочие документы заносится и обрабатывается в данной автоматизированной системе.\r3.2 Условия эксплуатации: ограничиваются только правилами эксплуатации вычислительной техники. К окружающей среде особых требований не предъявляется.\r\r4.  Требования к системе\r4.1 Требования к системе в целом\r4.1.1 Требования к структуре и функционированию системы\rПеречень подсистем:\rОформление документов\rРабота с клиентами\rОтчетность\rПодсистема оформления документов должна представлять собой совокупность документов, оформляемых в процессе работы по каждой заявке, начиная документом записи на ремонт и заканчивая документами реализации.\rБлок работы с клиентами должен включать в себя обработки по формированию списков клиентов для обзвона, сбора и обработки полученных результатов анкетирования.\rБлок отчетов должен содержать отчеты, необходимые для анализа работы станции  и для предоставления сводной информации руководству. \rСистема  должна иметь два режима работы: \r- конфигурирование\r- пользовательский режим.\r\r4.1.2 Требования к персоналу \rПользователями разрабатываемой системы должны выступать:\rОформители \rМастер-приемщик\rМенеджер по работе с персоналом\rНачальник СТО\rКладовщик\rПредоставляемые требования к ним — обладание навыками работы в системе 1С 8.1.\rКоличество пользователей, одновременно работающих в системе, ограничено только ресурсами сети.\r\r4.1.3 Показатели назначения \rДанная система должна быть гибкой в отношении изменения отчетов  и легко модернизироваться под изменяющиеся нужды станции технического обслуживания. \r\r4.1.4 ТРЕБОВАНИЯ К НАДЕЖНОСТИ, БЕЗОПАСНОСТИ, ЭКСПЛУАТАЦИИ И ТЕХНИЧЕСКОМУ ОБСЛУЖИВАНИЮ\r4.1.4.1 Требования по обеспечению надежности системы\rбесперебойное питание технических средств;\rиспользование лицензионного программного обеспечения;\rсоблюдение рекомендаций по условиям эксплуатации данной системы;\rдоступ к системе только квалифицированных специалистов.\r\r4.1.4.2 Спецификации по безопасности  информации\r - С целью избежания несанкционированного доступа к документам, справочникам и отчетам в системе должно быть предусмотрено разграничение прав пользователей в зависимости от занимаемой ими должности (реализовано с помощью ролей, ограничивающих  изменение, добавление или удаление вышеназванных объектов), а также должна быть реализована возможность авторизации пользователей. \r - С целью обеспечения безопасности в системе должна отсутствовать возможность «физического» удаления объектов, возможна только пометка на удаление.\r - При вводе первичных данных там, где это необходимо, необходимо осуществлять проверку корректности ввода данных.\r\r4.1.4.3 Требования к эксплуатации\rДолжна быть предусмотрена возможность обновления и обслуживания системы, в том числе и сторонними разработчиками. Возможность доработки программных продуктов на базе платформы «1С: Предприятие 8.1» под конкретного пользователя является их главным преимуществом перед другими системами.\r\r4.2 Требования к функциям, выполняемым системой\r4.2.1 Перечень подлежащих автоматизации задач:\rФиксирование заявок на ремонт, поступающих от клиентов.\rУчет данных о клиентах (в справочнике «Контрагенты») и о их договорах с организацией (документ «Договор») , о машинах контрагентов, заезжающих на СТО ( справочник «Автомобили»).\rФиксирование наряд-заказов, открывающихся в момент заезда машины на станцию и закрывающихся после выполнения всех работ.\rФункционирование механизма обзвона клиентов.\rКонтроль списания запасных частей со склада под конкретный наряд-заказ\rФормирование отчетности по работе станции.\r\r4.2.2 Перечень критериев и отказов:\rФатальные ошибки. Сбои в системе, которые приводят к потере ее ра\u001fботоспособности или к порче данных.\rСерьезные ошибки. Ошибки, которые не позволяют достичь желаемого результата при использовании некоторого средства или функции про\u001fграммного продукта, включая невозможность исполнения содержащейся в меню или диалоговом окне команды, выполнения процесса или фор\u001fматирования текста.\rМаленькие ошибки. Ошибки, которые вызывают неудобство работы с системой, например, ошибки в задании порядка перехода от одного элемента управления к другому в форме ввода информации. К данному типу ошибок можно отнести также беспричинные сообщения об ошиб\u001fках.\rНезначительные ошибки. К данному типу ошибок относятся орфографи\u001fческие ошибки в надписях или не выровненные элементы управления.\r\r4.3 Требования к видам обеспечения\rматематическому: особых требований к математическому обеспечению не предъявляется;\rинформационному:\t реквизиты документов должны соответствовать требованиям, установленным Стандартом предприятия.\rлингвистическому: должен использоваться язык программирования «1С v8.1».\rпрограммному и техническому: для работы с «1С:Предприятием 8.1» рекомендуемыми являются следующие характеристики: \r1) компьютер конечного пользователя: \r- операционная система: MS Windows 2000/ XP / Server 2003; \r- процессор Intel Pentium III 866 МГц ; \r- оперативная память 256 Мбайт; \r2) компьютер, используемый для разработки конфигураций: \r- операционная система: MS Windows 2000/ XP / Server 2003; \r- процессор Intel Pentium III 866 МГц ; \r- оперативная память 256 Мбайт;    \r3) программное обеспечение:\r- наличие типовой конфигурации «Управление производственным предприятием».\rметрологическому: нет требований к данному виду обеспечения.\rорганизационному:  для функционирования системы необходимо минимум 2 человека: мастер-приемщик, осуществляющий ввод первичных данных в документы «Запись на СТО», «Договор на ремонт», и оформитель, на основании созданных документов создающий документ «Наряд-заказ», документы списания товаров и услуг.  \rметодическому (состав нормативно-технической документации):\rИнструкция программисту; \rИнструкция пользователю.\r\r5. Состав и содержание работ по созданию системы\r5.1 Перечень стадий и этапов работ\r1. Постановка задачи. На этом этапе   должен быть выполнен этап разработки, согласования и утверждения технического задания к проекту.\r2. Проектирование. На стадии проектирования должна быть создана модель разрабатываемой системы (должны быть созданы диаграммы в нотации IDEF  и DFD).\r3. Кодирование. Должны быть разработаны все необходимые функциональные блоки в среде 1С 8.1.\r4. Тестирование и отладка. На стадии тестирования должна быть осуществлена проверка системы на наличие сбоев и отказов, корректность работы всех функциональных блоков.\r5. Анализ результатов.\r\r5.2 Сроки исполнения\rТаблица 1\r№\r\u0007Выполняемая работа\r\u0007Сроки\r\u0007\r\u00071.\r\u0007Постановка задачи\r\u0007Сентябрь 2009 г.\r\u0007\r\u00072.\r\u0007Проектирование \r\u0007Октябрь 2009 г.\r\u0007\r\u00073.\r\u0007Кодирование\r\u0007Октябрь 2009 – май 2010 г.\r\u0007\r\u00074.\r\u0007Тестирование и отладка\r\u0007Октябрь 2009 -  2010 г\r\u0007\r\u00075.\r\u0007Анализ результатов\r\u0007Июнь 2010г.\r\u0007\r\u0007\r5.3 Состав исполнителей работ\rРаботы по созданию системы должны проводиться Дюкаревой Ольгой Владимировной, студенткой УлГТУ, инженером-программистом ООО «Авторай».\rПри этом консультантами выступают:\rМеркулова Тамара Алексеевна – УлГТУ, доцент кафедры «Информационные системы», руководитель дипломного проекта.\rОрлова Светлана Владимировна – ООО «Авторай», начальник сектора 1С, руководитель преддипломной практики от предприятия.  \r\r6. Порядок контроля и приемки системы\r Виды, состав, объем и методы испытаний системы\rФункциональное тестирование. Оно включает проверку каждой команды меню, панели инструментов и каждой опе\u001fрации, которую выполняет система. \rТестирование приложения. При выполнении тестирования приложения испытатель моделирует действия пользователя. Моделируя различные комбина\u001fции действий, можно найти ошибки, относящиеся к интеграции ком\u001fпонентов, а также недоработки, которые не были обнаружены при функциональном тестировании.\rТестирование на скорость выполнения. Измеряется время отклика системы на некоторое действие, документа. Обычно при этом оп\u001fределяются параметры эффективности. Одновременно с из\u001fмерением времени на выполнение запроса необходимо записать также размер базы данных.\rПредельное тестирование. Позволяет опреде\u001fлить пропускную способность программного продукта. За\u001fпускаются задачи, увеличивая размеры файлов или баз данных, и таким образом выявляют предельное значение объема данных, при котором завершение выполнения задачи невозможно. Максимальный объем данных является существенным ограничением при программировании. \rПри тестировании системы были получены следующие результаты\rПриемлемое время запуска программы – менее 5 секунд.\rВремя проведения документа «Наряд-заказ» – 2 секунды.\rВремя для формирования сводного отчета по услугам и запчастям (за месяц) – 8 секунд.\rВремя формирования отчета «Отчет СТО по мастерам» (за месяц) – 2 секунды\rФатальные ошибки, приводящие к потере системой работоспособности или порче данных, не обнаружены.\rСерьезные ошибки не обнаружены.\rМаленькие ошибки не обнаружены.\rНезначительных ошибок не обнаружено.\r\r7. Требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие.\rОсобых требований не предъявляется, поскольку все подготовки к вводу системы в действие были реализованы на этапе внедрения УПП (приобретение и настройка сервера БД, необходимой компьютерной техники, конфигурация сети и прочее).\r7.1 Преобразование входной информации к машиночитаемому виду.\r Дополнительных подгрузок справочной информации не было. Все вновь разработанные объекты конфигурации заполняются данными интерактивно.\r Изменения в объекте автоматизации.\rВозможность модификации конфигурации предусмотрена самой платформой.\r Сроки и порядок комплектования и обучения персонала.\r   Первоначальное обучение работе в разработанной подсистеме осуществлялось в течение 12 часов. Дальнейшее обучение предполагается только в рамках консультаций.\r\r8. Требования к документированию\r8.1 перечень подлежащих разработке документов.\rВ состав программной документации должны входить следующие документы:\r- техническое задание;\r- руководство программиста;\r- руководство пользователя.\r\r9. Источники разработки\r9.1 Источниками разработки являются документы «Стандарт предприятия» для автосалонов ЛАДА, КИА.",
         "1",
         "[['2.2', 'техническое', 'задание', '1.общие', 'сведение', 'полный', 'наименование', 'система', 'станция', 'технический', 'обслуживание', 'автомобиль'], ['условный', 'обозначение', 'сто', 'автомобиль'], ['шифр', 'тема', 'шифр', 'номер', 'договор', 'программный', 'продукт', 'разрабатываться', 'рамка', 'выполнение', 'должностной', 'обязанность', 'компания', 'заказчике'], ['наименование', 'предприятие', 'разработчик', 'заказчик', 'система', 'реквизит', 'ооо', 'авторай', '432026', 'ульяновск', 'ул.', 'московский', 'шоссе', '17а'], ['перечень', 'документ', 'основание', 'создаваться', 'информационный', 'система', 'основание', 'разработка', 'система', 'являться', 'необходимость', 'ведение', 'автоматизировать', 'контроль', 'учёт', 'деятельность', 'станция', 'технический', 'обслуживание', 'организация', 'заказчике'], ['плановый', 'срок', 'окончание', 'работа', 'работа', 'начало', 'работа', 'февраль', '2010', 'г.', 'окончание', 'работа', 'июнь', '2010', 'г.', 'сведение', 'источник', 'порядок', 'финансирование', 'работа', 'источник', 'финансирование', 'являться', 'ежемесячный', 'зарплата'], ['результат', 'работа', 'предъявляться', 'мера', 'выполнение', 'отдельный', 'функциональный', 'блок'], ['порядок', 'оформление', 'предъявление', 'заказчик', 'результат', 'работа', 'создание', 'система', 'часть', 'отдельный', 'средство', 'результат', 'работа', 'внедряться', 'типовой', 'конфигурация', 'мера', 'разработка', 'отдельный', 'функциональный', 'блок', '2'], ['назначение', 'цель', 'создание', 'система', '2.1', 'назначение', 'система', 'предоставление', 'удобный', 'механизм', 'работа', 'клиент', 'станция', 'технический', 'обслуживание'], ['2.2', 'цель', 'создание', 'система', 'автоматизация', 'работа', 'станция', 'технический', 'обслуживание', 'предоставление', 'удобный', 'механизм', 'работа', 'мастер', 'приёмщик', 'оформитель', 'станция', 'возможность', 'получение', 'точный', 'информация', 'работа', 'станция', 'расчёт', 'прибыль', 'убытков', 'работа', 'станция'], ['3'], ['характеристики', 'объект', 'автоматизация', '3.1', 'объект', 'автоматизация', 'объект', 'автоматизация', 'система', 'являться', 'заявка', 'поступать', 'сто', 'документ', 'договор', 'составляющиеся', 'ход', 'работа', 'клиент', 'дополнительный', 'документ', 'создавать', 'процесс', 'работа', 'станция'], ['информация', 'заявка', 'обслуживание', 'договор', 'акт', 'прочие', 'документ', 'заноситься', 'обрабатываться', 'автоматизированный', 'система'], ['3.2', 'условие', 'эксплуатация', 'ограничиваться', 'правило', 'эксплуатация', 'вычислительный', 'техника'], ['окружать', 'среда', 'особый', 'требование', 'предъявляться', '4'], ['требование', 'система', '4.1', 'требование', 'система', 'целое', '4.1.1', 'требование', 'структура', 'функционирование', 'система', 'перечень', 'подсистема', 'оформление', 'документ', 'работа', 'клиент', 'отчётность', 'подсистема', 'оформление', 'документ', 'представлять', 'совокупность', 'документ', 'оформлять', 'процесс', 'работа', 'каждый', 'заявка', 'начинать', 'документ', 'запись', 'ремонт', 'заканчивать', 'документ', 'реализация'], ['блок', 'работа', 'клиент', 'включать', 'обработка', 'формирование', 'список', 'клиент', 'обзвона', 'сбор', 'обработка', 'получить', 'результат', 'анкетирование'], ['блок', 'отчёт', 'содержать', 'отчёт', 'анализ', 'работа', 'станция', 'предоставление', 'сводный', 'информация', 'руководство'], ['система', 'два', 'режим', 'работа', 'конфигурирование', 'пользовательский', 'режим'], ['4.1.2', 'требование', 'персонал', 'пользователь', 'разрабатывать', 'система', 'выступать', 'оформитель', 'мастер', 'приёмщик', 'менеджер', 'работа', 'персонал', 'начальник', 'сто', 'кладовщик', 'предоставлять', 'требование', 'обладание', 'навык', 'работа', 'система', '1с', '8.1'], ['количество', 'пользователь', 'одновременно', 'работать', 'система', 'ограничить', 'ресурс', 'сеть'], ['4.1.3', 'показатели', 'назначение', 'система', 'гибкий', 'отношение', 'изменение', 'отчёт', 'легко', 'модернизироваться', 'изменяться', 'нужда', 'станция', 'технический', 'обслуживание'], ['4.1.4', 'требование', 'надежности', 'безопасности', 'эксплуатации', 'техническому', 'обслуживанию', '4.1.4.1', 'требование', 'обеспечение', 'надёжность', 'система', 'бесперебойный', 'питание', 'технический', 'средство', 'использование', 'лицензионный', 'программный', 'обеспечение', 'соблюдение', 'рекомендация', 'условие', 'эксплуатация', 'система', 'доступ', 'система', 'квалифицировать', 'специалист'], ['4.1.4.2', 'спецификация', 'безопасность', 'информация', 'цель', 'избежание', 'несанкционированный', 'доступ', 'документ', 'справочникам', 'отчёт', 'система', 'предусмотреть', 'разграничение', 'право', 'пользователь', 'зависимость', 'занимать', 'должность', 'реализовать', 'помощь', 'роль', 'ограничивать', 'изменение', 'добавление', 'удаление', 'вышеназванный', 'объект', 'реализовать', 'возможность', 'авторизация', 'пользователь'], ['цель', 'обеспечение', 'безопасность', 'система', 'отсутствовать', 'возможность', 'физический', 'удаление', 'объект', 'возможный', 'пометка', 'удаление'], ['ввод', 'первичный', 'осуществлять', 'проверка', 'корректность', 'ввод'], ['4.1.4.3', 'требование', 'эксплуатация', 'предусмотреть', 'возможность', 'обновление', 'обслуживание', 'система', 'число', 'сторонний', 'разработчик'], ['возможность', 'доработка', 'программный', 'продукт', 'база', 'платформа', '1с', 'предприятие', '8.1', 'конкретный', 'пользователь', 'являться', 'главный', 'преимущество', 'система'], ['4.2', 'требование', 'функция', 'выполнять', 'система', '4.2.1', 'перечень', 'подлежать', 'автоматизация', 'задача', 'фиксирование', 'заявка', 'ремонт', 'поступать', 'клиент'], ['учёт', 'клиент', 'справочник', 'контрагент', 'договор', 'организация', 'документ', 'договор', 'машина', 'контрагент', 'заезжать', 'сто', 'справочник', 'автомобиль'], ['фиксирование', 'наряд', 'заказов', 'открываться', 'момент', 'заезд', 'машина', 'станция', 'закрывающихся', 'выполнение', 'работа'], ['функционирование', 'механизм', 'обзвона', 'клиент'], ['контроль', 'списание', 'запасный', 'часть', 'склад', 'конкретный', 'наряд', 'заказ', 'формирование', 'отчётность', 'работа', 'станция'], ['4.2.2', 'перечень', 'критерий', 'отказ', 'фатальный', 'ошибка'], ['сбой', 'система', 'приводить', 'потеря', 'ра', 'ботоспособности', 'порча'], ['серьёзный', 'ошибка'], ['ошибка', 'позволять', 'достигнуть', 'желаемого', 'результат', 'использование', 'некоторый', 'средство', 'функция', 'граммного', 'продукт', 'невозможность', 'исполнение', 'содержаться', 'меню', 'диалоговый', 'окно', 'команда', 'выполнение', 'процесс', 'фор', 'матирование', 'текст'], ['маленький', 'ошибка'], ['ошибка', 'вызывать', 'неудобство', 'работа', 'система', 'ошибка', 'задание', 'порядок', 'переход', 'элемент', 'управление', 'другому', 'форма', 'ввод', 'информация'], ['тип', 'ошибка', 'отнести', 'беспричинный', 'сообщение', 'ошиб', 'ках'], ['незначительный', 'ошибка'], ['тип', 'ошибка', 'относиться', 'орфографить', 'ческие', 'ошибка', 'надпись', 'выровнять', 'элемент', 'управление'], ['4.3', 'требование', 'вид', 'обеспечение', 'математический', 'особый', 'требование', 'математический', 'обеспечение', 'предъявляться', 'информационный', 'реквизит', 'документ', 'соответствовать', 'требование', 'установить', 'стандарт', 'предприятие'], ['лингвистический', 'использоваться', 'язык', 'программирование', '1с', 'v8.1'], ['программный', 'технический', 'работа', '1с', 'предприятие', '8.1', 'рекомендуемыми', 'являться', 'следующий', 'характеристика', '1', 'компьютер', 'конечный', 'пользователь', 'операционный', 'система', 'ms', 'windows', '2000/', 'xp', 'server', '2003', 'процессор', 'intel', 'pentium', 'iii', '866', 'мгц', 'оперативный', 'память', '256', 'мбайт', '2', 'компьютер', 'использовать', 'разработка', 'конфигурация', 'операционный', 'система', 'ms', 'windows', '2000/', 'xp', 'server', '2003', 'процессор', 'intel', 'pentium', 'iii', '866', 'мгц', 'оперативный', 'память', '256', 'мбайт', '3', 'программный', 'обеспечение', 'наличие', 'типовой', 'конфигурация', 'управление', 'производственный', 'предприятие'], ['метрологический', 'требование', 'вид', 'обеспечение', 'организационный', 'функционирование', 'система', 'минимум', '2', 'человек', 'мастер', 'приёмщик', 'осуществлять', 'ввод', 'первичный', 'документ', 'запись', 'сто', 'договор', 'ремонт', 'оформитель', 'основание', 'создать', 'документ', 'создавать', 'документ', 'наряд', 'заказ', 'документ', 'списание', 'товар', 'услуга'], ['методический', 'состав', 'нормативный', 'технический', 'документация', 'инструкция', 'программист', 'инструкция', 'пользователь'], ['5'], ['состав', 'содержание', 'работа', 'создание', 'система', '5.1', 'перечень', 'стадия', 'этап', 'работа', '1'], ['постановка', 'задача'], ['этап', 'выполнить', 'этап', 'разработка', 'согласование', 'утверждение', 'технический', 'задание', 'проект'], ['2'], ['проектирование'], ['стадия', 'проектирование', 'создать', 'модель', 'разрабатывать', 'система', 'создать', 'диаграмма', 'нотация', 'idef', 'dfd'], ['3'], ['кодирование'], ['разработать', 'функциональный', 'блок', 'среда', '1с', '8.1', '4'], ['тестирование', 'отладка'], ['стадия', 'тестирование', 'осуществить', 'проверка', 'система', 'наличие', 'сбой', 'отказ', 'корректность', 'работа', 'функциональный', 'блок'], ['5'], ['анализ', 'результат'], ['5.2', 'сроки', 'исполнение', 'таблица', '1', '№', '\\x07выполняемая', 'работа', '\\x07сроки', '\\x07', '\\x071', '\\x07постановка', 'задача', '\\x07сентябрь', '2009', 'г.', '\\x07', '\\x072'], ['\\x07проектирование', '\\x07октябрь', '2009', 'г.', '\\x07', '\\x073'], ['\\x07кодирование', '\\x07октябрь', '2009', 'май', '2010', 'г.', '\\x07', '\\x074'], ['\\x07тестирование', 'отладка', '\\x07октябрь', '2009', '2010', '\\x07', '\\x075'], ['\\x07анализ', 'результат', '\\x07июнь', '2010', 'г.', '\\x07', '\\x07', '5.3', 'состав', 'исполнитель', 'работа', 'работа', 'создание', 'система', 'проводиться', 'дюкарев', 'ольга', 'владимирович', 'студентка', 'улгту', 'инженер', 'программист', 'ооо', 'авторай'], ['консультант', 'выступать', 'меркулов', 'тамара', 'алексеевич', 'улгту', 'доцент', 'кафедра', 'информационный', 'система', 'руководитель', 'дипломный', 'проект'], ['орлов', 'светлана', 'владимирович', 'ооо', 'авторай', 'начальник', 'сектор', '1с', 'руководитель', 'преддипломный', 'практика', 'предприятие'], ['6'], ['порядок', 'контроль', 'приёмка', 'система', 'виды', 'состав', 'объём', 'метод', 'испытание', 'система', 'функциональный', 'тестирование'], ['включать', 'проверка', 'каждый', 'команда', 'меню', 'панель', 'инструмент', 'каждый', 'опе', 'рация', 'выполнять', 'система'], ['тестирование', 'приложение'], ['выполнение', 'тестирование', 'приложение', 'испытатель', 'моделировать', 'действие', 'пользователь'], ['моделировать', 'различный', 'комбина', 'ции', 'действие', 'найти', 'ошибка', 'относиться', 'интеграция', 'понентов', 'недоработка', 'обнаружить', 'функциональный', 'тестирование'], ['тестирование', 'скорость', 'выполнение'], ['измеряться', 'время', 'отклик', 'система', 'некоторый', 'действие', 'документ'], ['ределяются', 'параметр', 'эффективность'], ['одновременно', 'мерением', 'время', 'выполнение', 'запрос', 'записать', 'размер', 'база'], ['предельный', 'тестирование'], ['позволять', 'опреде', 'лить', 'пропускной', 'способность', 'программный', 'продукт'], ['пускаться', 'задача', 'увеличивать', 'размер', 'файл', 'база', 'образ', 'выявлять', 'предельный', 'значение', 'объём', 'завершение', 'выполнение', 'задача', 'невозможный'], ['максимальный', 'объём', 'являться', 'существенный', 'ограничение', 'программирование'], ['тестирование', 'система', 'получить', 'следующий', 'результат', 'приемлемое', 'время', 'запуск', 'программа', '5', 'секунда'], ['время', 'проведение', 'документ', 'наряд', 'заказ', '2', 'секунда'], ['время', 'формирование', 'сводный', 'отчёт', 'услуга', 'запчасть', 'месяц', '8', 'секунда'], ['время', 'формирование', 'отчёт', 'отчёт', 'сто', 'мастер', 'месяц', '2', 'секунда', 'фатальный', 'ошибка', 'приводить', 'потеря', 'система', 'работоспособность', 'порча', 'обнаружить'], ['серьёзный', 'ошибка', 'обнаружить'], ['маленький', 'ошибка', 'обнаружить'], ['незначительный', 'ошибка', 'обнаружить'], ['7'], ['требование', 'состав', 'содержание', 'работа', 'подготовка', 'объект', 'автоматизация', 'ввод', 'система', 'действие'], ['особый', 'требование', 'предъявляться', 'подготовка', 'ввод', 'система', 'действие', 'реализовать', 'этап', 'внедрение', 'упп', 'приобретение', 'настройка', 'сервер', 'бд', 'необходимый', 'компьютерный', 'техника', 'конфигурация', 'сеть'], ['7.1', 'преобразование', 'входной', 'информация', 'машиночитаемый', 'вид'], ['дополнительный', 'подгрузок', 'справочный', 'информация'], ['разработать', 'объект', 'конфигурация', 'заполняться', 'данными', 'интерактивно'], ['изменение', 'объект', 'автоматизация'], ['возможность', 'модификация', 'конфигурация', 'предусмотреть', 'платформа'], ['срок', 'порядок', 'комплектование', 'обучение', 'персонал'], ['первоначальный', 'обучение', 'работа', 'разработать', 'подсистема', 'осуществляться', 'течение', '12', 'час'], ['дальнейший', 'обучение', 'предполагаться', 'рамка', 'консультация'], ['8'], ['требование', 'документирование', '8.1', 'перечень', 'подлежать', 'разработка', 'документ'], ['состав', 'программный', 'документация', 'входить', 'следующий', 'документ', 'технический', 'задание', 'руководство', 'программист', 'руководство', 'пользователь', '9'], ['источник', 'разработка', '9.1', 'источник', 'разработка', 'являться', 'документ', 'стандарт', 'предприятие', 'автосалон', 'лад', 'киа']]"
        ],
        [
         "6",
         "tz_07.doc",
         "ТЕХНИЧЕСКОЕ ЗАДАНИЕ\rОбщие сведения\rВ данном разделе представлены общие сведения о системе:\rполное наименование системы и ее условное обозначение:  \r«Автоматизация документооборота по заключению договоров» в среде «1С: Предприятие 8.1»;\rшифр темы – ДП – УлГТУ – 080801625 – 05/986 – 2010 \rнаименование предприятия заказчика системы, его реквизиты: ООО «УмКо», г.Ульяновск; \rплановые сроки начала и окончания работ:  29 марта 2010 года — 15 июня 2010 года;\rсведения об источниках и порядке финансирования работ: данные работы проводятся на безвозмездной основе;\rпорядок оформления и предъявления заказчику результатов работ по созданию системы, ее частей и отдельных средств: по окончанию работ заказчику должны быть предъявлены и переданы установочный диск со всеми необходимыми дистрибутивами, набор инструкций и документации для полноценного функционирования системы.\r\rНазначение и цели создания системы\rРазработанная система призвана  автоматизировать работу по заключению договор с клиентами и оформлению сопутствующих документов по договору при реализации услуг.\r\rХарактеристика объектов автоматизации\rОбъектом автоматизации является отдел по работе с клиентами, для которого автоматизируется процесс документооборота.\r\rТребования к системе\rТребования к системе в целом \rТребования к персоналу\rФункционирование программы обеспечивается лицами, обученными работе на ПЭВМ под управлением операционной системы семейства Windows и в программе 1С  на платформе 1С Предприятие 8.1 в конфигурации 1С Бухгалтерия предприятия.\rСтепень приспособляемости системы\rСистема должна легко дорабатываться для добавления новых или изменения имеющихся функций. \rТребования к надежности\rНадежность и отказоустойчивость системы к ошибкам пользователей и ошибкам загружаемых данных обеспечивают внутренние средства 1С.\rТребования к эргономичности\rИнтерфейс системы должен быть эргономичным с точки зрения пользователя. Интерфейсы программных продуктов на базе «1С: Предприятие 8.1» ориентированы на удобную работу и простоту освоения.\rСистема должна обладать патентной чистотой. Это предполагает использование программы на лицензионных копиях программ «1С: Предприятие».\r\rТребования к функциям (по подсистемам)\rПеречень подлежащих автоматизации задач\rС помощью данной системы требуется решать следующие задачи:\rзаключение договоров с клиентом\rоформление документа «Реализация товаров, услуг»\rоформление документа «Установка цен и услуг»\rоформление «Счетов-фактур» к документам «Реализация услуг»\rоформление «Счетов» по документам «Реализация услуг» \rТребования к качеству реализации каждой функции\rСистема должна запрашивать подтверждение пользователя на разрешение всех существенных изменений в системе. \rПеречень критериев и отказов\rФатальные ошибки. Сбои в системе, которые приводят к потере ее ра\u001fботоспособности или к порче данных.\rСерьезные ошибки. Ошибки, которые не позволяют достичь желаемого результата при использовании некоторого средства или функции программного продукта, включая невозможность исполнения содержащейся в меню или диалоговом окне команды, выполнения процесса или форматирования текста.\rМаленькие ошибки. Ошибки, которые вызывают неудобство работы с системой, например, ошибки в задании порядка перехода от одного элемента управления к другому в форме ввода информации. К данному типу ошибок можно отнести также беспричинные сообщения об ошибках.\rНезначительные ошибки. К данному типу ошибок относятся орфографические ошибки в надписях или не выровненные элементы управления.\r\rТребования к видам обеспечения\rСистема предъявляет следующие требования к видам обеспечения:\r1) математическому: нет требований;\r2) информационному: необходимо знать процесс документооборота в фирмах, занимающихся 1С Франчайзингом.\r3) лингвистическому: используется язык программирование «1С v8.1».\r4) программному и техническому: \rДля работы с «1С: Предприятием 8.1» рекомендуемая конфигурация компьютера, имеет следующие характеристики: \rа) компьютер конечного пользователя: \rоперационная система: MS Windows 2000/ XP / Vista ; \rпроцессор Intel Pentium III 866 МГц; \rоперативная память  не менее 256 Мбайт; \rб) компьютер, используемый для разработки конфигураций: \rоперационная система: Microsoft Windows XP ; \rIntel Pentium IV 3.00 ГГц; \rоперативная память 512 Мбайт; \r5) метрологическому: нет требований к данному виду обеспечения.\r6) организационному:  для функционирования системы необходим один человек, отвечающий за документооборот по работе с клиентами. \r7) методическому (состав нормативно-технической документации):\rИнструкция программисту; \rИнструкция пользователю.\r\rСостав и содержание работ по созданию системы\rПеречень этапов работ и сроки исполнения\rЭтапы и сроки проведения работ приведены в таблице 1.\r\r                                                                             Таблица 1\rЭтапы и сроки выполнения работ\r№\r\u0007Выполняемая работа\r\u0007Сроки\r\u0007\r\u00071.\r\u0007Постановка задачи и сбор информации\r\u0007Март 2010 г.\r\u0007\r\u00072.\r\u0007Проектирование \r\u0007Апрель 2010 г.\r\u0007\r\u00073.\r\u0007Кодирование\r\u0007Апрель-Май 2010 г.\r\u0007\r\u00074.\r\u0007Тестирование и отладка\r\u0007Май 2010 г\r\u0007\r\u00075.\r\u0007Анализ результатов\r\u0007Июнь 2010г.\r\u0007\r\u0007\rСостав исполнителей работ\rРаботы по созданию системы проводились физическим лицом, Жарковой Натальей Владимировной студенткой УлГТУ.\rПри этом консультантом выступала Суркова Елена Викторовна – УлГТУ.\r\r Порядок контроля и приемки системы\rДля контроля необходимо провести следующие виды тестирования:\rФункциональное тестирование. Оно включает проверку каждой команды меню, панели инструментов и каждой операции, которую выполняет система. \rТестирование приложения. При выполнении тестирования приложения испытатель моделирует действия пользователя. Воспроизводя различные комбина\u001fции действий, можно найти ошибки, относящиеся к интеграции ком\u001fпонентов, а также недоработки, которые не были обнаружены при функциональном тестировании.\rТестирование на скорость выполнения. Измеряется время отклика системы на некоторое действие, документа. Обычно при этом оп\u001fределяются параметры эффективности. Одновременно с из\u001fмерением времени на выполнение запроса необходимо записать также размер базы данных.\rВсе этапы тестирования программы должны проводиться непосредственным разработчиком Жарковой Натальей Владимировной.\r\r Требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие\rДля ввода системы в эксплуатацию необходимо правильно (актуальной информацией) заполнить справочники: \rКонтрагенты (папка Клиенты);\rНоменклатура (папка Программные продукты фирмы 1С, Виды услуг, Услуги абонентского обслуживания 1С);\rТарифный план;\rВалюты;\rБанки;\rКлассификатор единиц измерения;\rОрганизации.\rНеобходимо настроить учетную политику предприятия. Необходимо обучить персонал работе с новой системой документооборота.\r\r Требования к документированию: \rИнструкция пользователю\rИнструкция программисту",
         "1",
         "[['техническое', 'задание', 'общий', 'сведение', 'раздел', 'представить', 'общий', 'сведение', 'система', 'полный', 'наименование', 'система', 'условный', 'обозначение', 'автоматизация', 'документооборот', 'заключение', 'договор', 'среда', '1с', 'предприятие', '8.1', 'шифр', 'тема', 'дп', 'улгту', '080801625', '05/986', '2010', 'наименование', 'предприятие', 'заказчик', 'система', 'реквизит', 'ооо', 'умко', 'г.', 'ульяновск', 'плановый', 'срок', 'окончание', 'работа', '29', 'март', '2010', 'год', '15', 'июнь', '2010', 'год', 'сведение', 'источник', 'порядок', 'финансирование', 'работа', 'работа', 'проводиться', 'безвозмездный', 'основа', 'порядок', 'оформление', 'предъявление', 'заказчик', 'результат', 'работа', 'создание', 'система', 'часть', 'отдельный', 'средство', 'окончание', 'работа', 'заказчик', 'предъявить', 'передать', 'установочный', 'диск', 'необходимый', 'дистрибутив', 'набор', 'инструкция', 'документация', 'полноценный', 'функционирование', 'система'], ['назначение', 'цель', 'создание', 'система', 'разработанная', 'система', 'призвана', 'автоматизировать', 'работа', 'заключение', 'договор', 'клиент', 'оформление', 'сопутствовать', 'документ', 'договор', 'реализация', 'услуга'], ['характеристика', 'объект', 'автоматизация', 'объект', 'автоматизация', 'являться', 'отдел', 'работа', 'клиент', 'автоматизироваться', 'процесс', 'документооборот'], ['требование', 'система', 'требование', 'система', 'целое', 'требование', 'персонал', 'функционирование', 'программа', 'обеспечиваться', 'лицо', 'обучить', 'работа', 'пэвм', 'управление', 'операционный', 'система', 'семейство', 'windows', 'программа', '1с', 'платформа', '1с', 'предприятие', '8.1', 'конфигурация', '1с', 'бухгалтерия', 'предприятие'], ['степень', 'приспособляемость', 'система', 'система', 'легко', 'дорабатываться', 'добавление', 'новый', 'изменение', 'иметься', 'функция'], ['требование', 'надёжность', 'надёжность', 'отказоустойчивость', 'система', 'ошибка', 'пользователь', 'ошибка', 'загружать', 'обеспечивать', 'внутренний', 'средство', '1с.', 'требование', 'эргономичность', 'интерфейс', 'система', 'эргономичный', 'точка', 'зрение', 'пользователь'], ['интерфейсы', 'программный', 'продукт', 'база', '1с', 'предприятие', '8.1', 'ориентировать', 'удобный', 'работа', 'простота', 'освоение'], ['система', 'обладать', 'патентный', 'чистота'], ['предполагать', 'использование', 'программа', 'лицензионный', 'копия', 'программа', '1с', 'предприятие'], ['требование', 'функциям', 'подсистемам', 'перечень', 'подлежать', 'автоматизация', 'задача', 'помощь', 'система', 'требоваться', 'решать', 'следующий', 'задача', 'заключение', 'договор', 'клиент', 'оформление', 'документ', 'реализация', 'товар', 'услуга', 'оформление', 'документ', 'установка', 'цена', 'услуга', 'оформление', 'счёт', 'фактура', 'документ', 'реализация', 'услуга', 'оформление', 'счёт', 'документ', 'реализация', 'услуга', 'требование', 'качество', 'реализация', 'каждый', 'функция', 'система', 'запрашивать', 'подтверждение', 'пользователь', 'разрешение', 'существенный', 'изменение', 'система'], ['перечень', 'критерий', 'отказ', 'фатальный', 'ошибка'], ['сбой', 'система', 'приводить', 'потеря', 'ра', 'ботоспособности', 'порча'], ['серьёзный', 'ошибка'], ['ошибка', 'позволять', 'достигнуть', 'желаемого', 'результат', 'использование', 'некоторый', 'средство', 'функция', 'программный', 'продукт', 'невозможность', 'исполнение', 'содержаться', 'меню', 'диалоговый', 'окно', 'команда', 'выполнение', 'процесс', 'форматирование', 'текст'], ['маленький', 'ошибка'], ['ошибка', 'вызывать', 'неудобство', 'работа', 'система', 'ошибка', 'задание', 'порядок', 'переход', 'элемент', 'управление', 'другому', 'форма', 'ввод', 'информация'], ['тип', 'ошибка', 'отнести', 'беспричинный', 'сообщение', 'ошибка'], ['незначительный', 'ошибка'], ['тип', 'ошибка', 'относиться', 'орфографический', 'ошибка', 'надпись', 'выровнять', 'элемент', 'управление'], ['требование', 'вид', 'обеспечение', 'система', 'предъявлять', 'следующий', 'требование', 'вид', 'обеспечение', '1', 'математический', 'требование', '2', 'информационный', 'знать', 'процесс', 'документооборот', 'фирма', 'заниматься', '1с', 'франчайзинг', '3', 'лингвистический', 'использоваться', 'язык', 'программирование', '1с', 'v8.1', '4', 'программный', 'технический', 'работа', '1с', 'предприятие', '8.1', 'рекомендовать', 'конфигурация', 'компьютер', 'следующий', 'характеристика', 'компьютер', 'конечный', 'пользователь', 'операционный', 'система', 'ms', 'windows', '2000/', 'xp', 'vista', 'процессор', 'intel', 'pentium', 'iii', '866', 'мгц', 'оперативный', 'память', '256', 'мбайт', 'компьютер', 'использовать', 'разработка', 'конфигурация', 'операционный', 'система', 'microsoft', 'windows', 'xp', 'intel', 'pentium', 'iv', '3.00', 'ггц', 'оперативный', 'память', '512', 'мбайт', '5', 'метрологический', 'требование', 'вид', 'обеспечение'], ['6'], ['организационный', 'функционирование', 'система', 'необходимый', 'человек', 'отвечать', 'документооборот', 'работа', 'клиент'], ['7'], ['методический', 'состав', 'нормативный', 'технический', 'документация', 'инструкция', 'программист', 'инструкция', 'пользователь'], ['состав', 'содержание', 'работа', 'создание', 'система', 'перечень', 'этап', 'работа', 'срок', 'исполнение', 'этапы', 'срок', 'проведение', 'работа', 'привести', 'таблица', '1'], ['таблица', '1', 'этапы', 'срок', 'выполнение', 'работа', '№', '\\x07выполняемая', 'работа', '\\x07сроки', '\\x07', '\\x071', '\\x07постановка', 'задача', 'сбор', 'информация', '\\x07март', '2010', 'г.', '\\x07', '\\x072'], ['\\x07проектирование', '\\x07апрель', '2010', 'г.', '\\x07', '\\x073'], ['\\x07кодирование', '\\x07апрель', 'май', '2010', 'г.', '\\x07', '\\x074'], ['\\x07тестирование', 'отладка', '\\x07май', '2010', '\\x07', '\\x075'], ['\\x07анализ', 'результат', '\\x07июнь', '2010', 'г.', '\\x07', '\\x07', 'состав', 'исполнитель', 'работа', 'работа', 'создание', 'система', 'проводиться', 'физический', 'лицо', 'жарков', 'наталья', 'владимирович', 'студентка', 'улгту'], ['консультант', 'выступать', 'сурков', 'елена', 'викторович', 'улгту'], ['порядок', 'контроль', 'приёмка', 'система', 'контроль', 'провести', 'следующий', 'вид', 'тестирование', 'функциональный', 'тестирование'], ['включать', 'проверка', 'каждый', 'команда', 'меню', 'панель', 'инструмент', 'каждый', 'операция', 'выполнять', 'система'], ['тестирование', 'приложение'], ['выполнение', 'тестирование', 'приложение', 'испытатель', 'моделировать', 'действие', 'пользователь'], ['воспроизводить', 'различный', 'комбина', 'ции', 'действие', 'найти', 'ошибка', 'относиться', 'интеграция', 'понентов', 'недоработка', 'обнаружить', 'функциональный', 'тестирование'], ['тестирование', 'скорость', 'выполнение'], ['измеряться', 'время', 'отклик', 'система', 'некоторый', 'действие', 'документ'], ['ределяются', 'параметр', 'эффективность'], ['одновременно', 'мерением', 'время', 'выполнение', 'запрос', 'записать', 'размер', 'база'], ['этап', 'тестирование', 'программа', 'проводиться', 'непосредственный', 'разработчик', 'жарков', 'наталья', 'владимирович'], ['требование', 'состав', 'содержание', 'работа', 'подготовка', 'объект', 'автоматизация', 'ввод', 'система', 'действие', 'ввод', 'система', 'эксплуатация', 'правильно', 'актуальный', 'информация', 'заполнить', 'справочник', 'контрагент', 'папка', 'клиенты', 'номенклатура', 'папка', 'программный', 'продукт', 'фирма', '1с', 'вид', 'услуга', 'услуга', 'абонентский', 'обслуживание', '1с', 'тарифный', 'план', 'валюты', 'банк', 'классификатор', 'единица', 'измерение', 'организация'], ['настроить', 'учётный', 'политика', 'предприятие'], ['обучить', 'персонал', 'работа', 'новый', 'система', 'документооборот'], ['требование', 'документирование', 'инструкция'], ['пользователь', 'инструкция', 'программист']]"
        ],
        [
         "7",
         "tz_08.doc",
         "Техническое задание\r1 Общие сведения\r1.1 Полное наименование: Автоматизированная информационная система «Управление финансово-хозяйственной деятельностью товарищества собственников жилья (ТСЖ)».\r1.2 Условное обозначение: АИС «Товарищество собственников жилья».\r1.3 Информация о Заказчике и Исполнителе:\rЗаказчик: ТИВК «Труд»\rИНН/КПП 7328018562/732801001\rАдрес: 432010 г. Ульяновск, ул. Тельмана, 3\rОГРН 1027301584815\rИсполнитель: Фомин Александр Сергеевич\rИНН 732815886103\rАдрес: 432010 г. Ульяновск, ул. 40 лет Октября 15/20, 25\r1.4 Основания для разработки: \rПрограммный продукт разрабатывается по заказу ТИВК «Труд» в лице главного бухгалтера Тиминой А.С., а также на основе имеющейся проектной документации на часть программного продукта. Программный продукт является развитием прототипа в форме подсистемы управления жилищно-коммунальным хозяйством.\r1.5 Плановые сроки начала и окончания разработки – 1 полугодие 2010 г.\r1.6 Результаты разработки оформляются соответствующей документацией и предъявляются Заказчику в составе:\r- отлаженный программный продукт с тестовым набором данных, демонстрирующим функционирование прикладного решения (демо-версия);\r- отлаженный программный продукт с пустой информационной базой, готовый для эксплуатации заказчиком;\r- руководство по эксплуатации прикладного решения.\rИсполнитель при необходимости обязуется произвести установку и настройку соответствующего программного обеспечения на автоматизированном рабочем месте Заказчика.\r\r2 Назначение и цели создания системы\r2.1 Вид автоматизируемой деятельности и объект автоматизации\rОбъектом автоматизации выступает юридическое лицо с организационно-правовой формой товарищества собственников жилья. Вид автоматизируемой деятельности – управление финансово-хозяйственной деятельностью хозяйствующего субъекта.\r\r2.2 Цели создания системы\r- организация эффективной системы сбора, хранения, обработки и анализа данных о хозяйственной деятельности товарищества;\r- переход на форму бухгалтерского учета с использованием системы счетов;\r- сокращение времени на подготовку отчетности;\r- минимизация рутинных операций;\r- достижение своевременного обеспечения необходимой информацией соответствующих заинтересованных лиц;\r- увеличение скорости и качества расчетных операций.\r\r3 Характеристики объекта автоматизации\r3.1 Объект автоматизации: некоммерческая организация – товарищество собственников жилья. Общие сведения об объекте автоматизации и особенностях его деятельности представлены в Жилищном кодексе РФ от 01.03.2005 года (разделы VI-VIII). Финансово-хозяйственная деятельность ТСЖ регламентируется общепринятыми законодательными актами (положения по БУ, НК РФ, письма Минфина РФ, Госстроя и т.д.)\r3.2 В настоящее время информационные системы в организации не эксплуатируются. Для формирования и сдачи некоторых видов отчетности применяются официально выпущенные программные средства.\r\r4 Требования к системе\r4.1 Требования к системе в целом\r4.1.1 Требования к структуре и функционированию системы\r4.1.1.1 Информационная система предназначена для работы одного пользователя и логически состоит из нескольких взаимосвязанных подсистем:\r- подсистема управления жилищно-коммунальным хозяйством;\r- подсистема бухгалтерского учета;\r- подсистема кадрового учета и зарплаты;\r- подсистема налогового учета и отчетности.\rПодсистемы не являются самостоятельными программными продуктами и не могут функционировать локально, так как деление на подсистемы условно и лишь отражает направления финансово-хозяйственной деятельности ТСЖ.\r4.1.1.2 Компоненты системы и их взаимосвязь\rФизически информационная система представляет собой интеграцию двух программных продуктов, между которыми организуется обмен данными посредством технологии OLE Automation.\rФизические компоненты информационной системы:\r- конфигурация «ТСЖ» (основная), содержащая специфический функционал;\r- типовая конфигурация «Бухгалтерия предприятия 8», автоматизирующая общепринятые процессы хозяйствующего субъекта.\r4.1.1.3 Система должна работать в двух режимах:\r- пользовательский режим с доступными функциями системы;\r- режим конфигурирования.\rКроме того, прикладное решение должно иметь возможность функционировать как в файловом, так и по необходимости в клиент-серверном варианте.\r4.1.1.4 Разрабатываемая информационная система представляет собой законченный программный продукт для автоматизации деятельности по управлению ТСЖ, и при необходимости может быть развита путем доработки ее функционала в соответствии с новыми требованиями и выпуском новых версий.\r\r4.1.2 Требования к численности и квалификации персонала системы и режиму его работы\r4.1.2.1 Для эксплуатации информационной системы достаточно одной штатной единицы.\r4.1.2.2 Предполагаемый пользователь должен владеть следующими знаниями и навыками:\r- знание области профессиональной деятельности;\r- владение компьютером на уровне пользователя.\rВ качестве подготовительных мероприятий по обучению пользователя должны выступать:\r- ознакомление пользователя с общими принципами работы с системой;\r- изучение эксплуатационной документации.\r4.1.2.3 Режим работы персонала с информационной системой устанавливается произвольно. Информационная система используется по мере необходимости в процессе работы.\r\r4.1.3 Требования к безопасности и надежности\r4.1.3.1 Система должна быть защищена от несанкционированного доступа, что должно достигаться путем авторизации пользователя и временной блокировки во время работы.\r4.1.3.2 Данные требуется хранить в недоступном для чтения формате с помощью сторонних приложений.\r4.1.3.3 При работе пользователя необходимо вести контроль входной информации. Целесообразно иметь возможность ведения журнала регистрации действий пользователя, возникающих ошибок, для последующего анализа в исключительных ситуациях.\r\r4.1.4 Требования к эргономике и технической эстетике\r4.1.4.1 Требования к интерфейсу системы:\r- удобство манипулирования и простота использования;\r- структуризация интерфейса. Выполняемые функции должны быть сгруппированы по смыслу по разделам меню, подменю. Наиболее часто используемые функции вынести на панель инструментов;\r- диалоговая форма работы системы с пользователем посредством вывода сообщений, вопросов, диалогов;\r- оформление элементов интерфейса в строгих, спокойных тонах, не раздражающих психику человека; \r- формы необходимо разрабатывать таким образом, чтобы они не были перегружены различными элементами, элементы, в свою очередь, располагать максимально удобно, предусмотреть порядок обхода элементов;\r- использование элементов справочной системы;\r- наличие возможности использования панели функций, режима рабочего стола.\r4.1.4.2 Требования к эксплуатации:\r- созданная система эксплуатируется с использованием компьютерной техники;\r- в производственных помещениях, в которых работа с исполь\u001fзованием ПК является вспомогательной, температура, относитель\u001fная влажность и скорость движения воздуха на рабочих местах должны соответствовать действующим санитарным нормам микроклимата про\u001fизводственных помещений (СанПиН 2.2.2/2.4.1340-03);\r- при эксплуатации системы рекомендуется соблюдать общие правила техники безопасности.\r4.1.4.3 Требования к сохранности информации\rИнформационная система должна обеспечивать сохранность информации, введенную в базу данных системы, а также средства для восстановления, тестирования и исправления информационной базы в случае отказа технических средств, отключения питания, сбоя программного обеспечения.\r4.1.4.5 Требования к стандартизации и унификации\rПри разработке и реализации информационной системы следует использовать соответствующие стандарты и методологии (стандарты IDEF, UML, структурный анализ, методологии разработки программных систем).\rПри необходимости максимально использовать типовые проектные решения в целях оптимизации процесса разработки и сокращения затрат на создание системы.\rИнформационная система должна поддерживать документооборот, отвечающий требованиям законодательства РФ и использовать унифицированные системы документации, кодирования и классификации.\r\r4.2 Требования к функциям (задачам)\r4.2.1 Перечень функций по подсистемам\r4.2.1.1 Функции подсистемы управления ЖКХ\r- организация накопления и хранения необходимой информации об общем имуществе, собственниках и жильцах, льготах, тарифах, услугах, нормативах;\r- ведение списка квартир и жильцов;\r- формирование справок для собственников и жильцов;\r- организация учета движения жильцов;\r- ведение списка льготников по оплате ЖКУ;\r- расчет начислений по оплате коммунальных услуг;\r- расчет компенсаций по оплате коммунальных услуг (ЕДК);\r- учет приборов учета (счетчиков) квартир;\r- учет потребленной электроэнергии.\r4.2.1.2 Функции подсистемы бухгалтерского учета:\r- ввод начальных остатков по счетам;\r- начисление и прием платежей за коммунальные услуги;\r- регистрация показаний счетчиков и начисление по факту;\r- формирование лицевых счетов и выписок;\r- учет потребленных товаров, работ, услуг (по видам затрат);\r- оплата поставщикам и подрядчикам;\r- учет входящих и исходящих счетов-фактур;\r- формирование книги покупок и книги продаж;\r- ведение списка сотрудников и кадровых документов;\r- учет расчетов по заработной плате (расчет, начисление, выплата);\r- учет наличных и безналичных денежных средств (кассовые и банковские операции, по статьям движения);\r- закрытие отчетного периода;\r- формирование бухгалтерской отчетности (бухгалтерский баланс, отчет о прибылях и убытках, отчет о целевом использовании полученных средств).\r4.2.1.3 Функции подсистемы налогового учета:\r- исчисление и перечисление налогов и взносов (страховые взносы с ФОТ, НДФЛ, земельный налог, плата за негативное воздействие на окружающую среду);\r- распределение суммы земельного налога между жильцами;\r- формирование ведомостей учета налогов;\r- формирование налоговой отчетности.\r4.2.1.4 Общие функции и механизмы\r4.2.1.4.1 Формирование внутренней отчетности\r- список жилых помещений кондоминимума;\r- список собственников и жильцов;\r- список льготников по категориям;\r- отчет о движении жильцов за период;\r- список приборов учета квартир;\r- список граждан, имеющих право на ЕДК;\r- отчет по рассчитанной ЕДК;\r- оборотно-сальдовая ведомость (в целом и по счету);\r- главная книга (приход и расход по банку – в целом и по статьям);\r- отчет по проводкам (по счетам);\r- ведомость ФОТ;\r4.2.1.4.2 Организация обмена данными между компонентами системы\r4.2.1.4.3 Формирование аналитической информации о хозяйственной деятельности\r- анализ дебиторской и кредиторской задолженности;\r- анализ использования целевых средств и резервов.\r4.2.2 Требования к качеству реализации функций:\r- доступ к функциям осуществляется посредством диалоговых форм. Организовать эффективную структуру и взаимодействие экранных форм;\r- выходная информация может быть представлена как в форме данных, так и в форме отчетов;\r- расчетные функции должны требовать минимум действий от пользователя и безошибочно исчислять необходимые показатели в соответствии с имеющейся информацией;\r- расчетные функции не должны занимать много времени;\r- наличие возможности хранения периодических массивов данных;\r- наличие возможности сохранения информации в других форматах за пределами информационной базы.\r\r4.3 Требования к видам обеспечения\r4.3.1 Требования к программному обеспечению:\r- информационная система должна эксплуатироваться на платформе операционной системы Windows 2000/XP;\r- инструмент для реализации – платформа 1С:Предприятие 8.1;\r- наличие типовой конфигурации «Бухгалтерия предприятия 8» (профессиональная или базовая версия);\r- установленная библиотека машиночитаемых форм отчетности.\r4.3.2 Требования к техническому обеспечению:\r- для эксплуатации системы необходим персональный компьютер средних характеристик (объем оперативной памяти – от 512 Мбайт, процессор: от 2,4 ГГц, жесткий диск – от 80 Гбайт);\r- монитор с разрешением экрана не менее 1024х768 пикселей;\r- необходимо наличие принтера с черно-белой печатью формата А4.\r4.3.3 Требования к информационному и методическому обеспечению:\r- необходимость удобной организации данных в системе, их структуризация в соответствии с их семантикой, иерархическая упорядоченность и взаимосвязь;\r- для функционирования системы необходимо начальное заполнение информационной базы;\r- обмен данными между компонентами системы по технологии OLE Automation должен осуществляться соответствующим модулем;\r- последующий сбор, обработка данных в системе осуществляется в динамике протекающих бизнес-процессов;\r- в процессе функционирования системы наряду с эксплуатационной документацией к системе по необходимости применять справочную информацию по системе программ 1С:Предприятие 8, поставляемой фирмой 1С.\r\r4.4 Состав и содержание работ по созданию системы\r4.4.1 Состав и содержание работ по разработке системы определяется календарным планом работы в соответствии с выбранной методологией разработки систем.\r\r4.5 Порядок контроля и приемки системы\r4.5.1 Система после завершения разработки передается в опытную эксплуатацию Заказчику с целью тестирования работы системы и ее адекватности поставленным целям.\r4.5.2 Разработчик по требованию Заказчика дорабатывает систему или отдельные ее части при обнаружении ошибок и в других необходимых случаях.\r4.5.3 Приемочная комиссия представляется ответственным лицом Заказчика, с которым осуществляется взаимодействие по вопросам разработки системы.\r\r4.6 Требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие\r4.6.1 Приведение поступающей в систему информации к виду, пригодному для обработки с помощью ЭВМ\rДля функционирования системы необходимо определить списковую и условно-постоянную информацию предметной области и ввести ее в информационную базу для многократного использования.\rХозяйственные операции отражаются в информационной системе посредством периодического ввода и проведения документов.\r4.6.2 Для ввода системы в эксплуатацию необходимо выполнить следующие действия:\r- приобретение соответствующих технических средств и их установка;\r- установка необходимых программных средств;\r- установка системы и ее настройка;\r- обучение пользователя.\r\r4.7 Требования к документированию\rВ состав эксплуатационной документации должны входить следующие документы:\r- руководство пользователя;\r- руководство программиста;\r- официальная документация по системе программ 1С:Предприятие 8.\r\r4.8 Источники разработки\rОсновные источники разработки системы:\r- учредительные, первичные учетные документы и отчетность организации-заказчика;\r- нормативно-правовая документация;\r- литературные источники и статьи.",
         "1",
         "[['технический', 'задание', '1', 'общий', 'сведение', '1.1', 'полный', 'наименование', 'автоматизированный', 'информационный_система', 'управление', 'финансово', 'хозяйственный_деятельность', 'товарищество', 'собственник', 'жильё', 'тсж'], ['1.2', 'условный', 'обозначение', 'аис', 'товарищество', 'собственник', 'жильё'], ['1.3', 'информация', 'заказчике', 'исполнитель', 'заказчик', 'тивк', 'труд', 'инн', 'кпп', '7328018562/732801001', 'адрес', '432010', 'г.', 'ульяновск', 'ул.', 'тельман', '3', 'огрн', '1027301584815', 'исполнитель', 'фомин', 'александр', 'сергеевич', 'инн', '732815886103', 'адрес', '432010', 'г.', 'ульяновск', 'ул.', '40', 'год', 'октябрь', '15/20', '25', '1.4', 'основание', 'разработка', 'программный_продукт', 'разрабатываться', 'заказ', 'тивк', 'труд', 'лицо', 'главный', 'бухгалтер', 'тиминой', 'а.с.', 'основа', 'иметься', 'проектный', 'документация', 'часть', 'программный_продукт'], ['программный_продукт', 'являться', 'развитие', 'прототип', 'форма', 'подсистема', 'управление', 'жилищный', 'коммунальный', 'хозяйство'], ['1.5', 'плановый', 'срок', 'окончание', 'разработка', '1', 'полугодие', '2010', 'г.', '1.6', 'результат', 'разработка', 'оформляться', 'соответствующий', 'документация', 'предъявляться', 'заказчик', 'состав', 'отладить', 'программный_продукт', 'тестовый', 'набор', 'демонстрировать', 'функционирование', 'прикладной', 'решение', 'демо', 'версия', 'отладить', 'программный_продукт', 'пустой', 'информационный', 'база', 'готовый', 'эксплуатация', 'заказчик', 'руководство', 'эксплуатация', 'прикладной', 'решение'], ['исполнитель', 'обязываться', 'произвести', 'установка', 'настройка', 'соответствующий', 'программный', 'обеспечение', 'автоматизированный', 'рабочий', 'место', 'заказчик'], ['2', 'назначение', 'цель', 'создание', 'система', '2.1', 'вид', 'автоматизировать', 'деятельность', 'объект_автоматизация', 'объект_автоматизация', 'выступать', 'юридический', 'лицо', 'организационный', 'правовой', 'форма', 'товарищество', 'собственник', 'жильё'], ['вид', 'автоматизировать', 'деятельность', 'управление', 'финансово', 'хозяйственный_деятельность', 'хозяйствовать', 'субъект'], ['2.2', 'цель', 'создание', 'система', 'организация', 'эффективный', 'система', 'сбор', 'хранение', 'обработка', 'анализ', 'хозяйственный_деятельность', 'товарищество', 'переход', 'форма', 'бухгалтерский', 'учёт', 'использование', 'система', 'счёт', 'сокращение', 'время', 'подготовка', 'отчётность', 'минимизация', 'рутинный', 'операция', 'достижение', 'своевременный', 'обеспечение', 'необходимый', 'информация', 'соответствующий', 'заинтересованный', 'лицо', 'увеличение', 'скорость', 'качество', 'расчётный', 'операция'], ['3', 'характеристика', 'объект_автоматизация', '3.1', 'объект_автоматизация', 'некоммерческий', 'организация', 'товарищество', 'собственник', 'жильё'], ['общий', 'сведение', 'объект_автоматизация', 'особенность', 'деятельность', 'представить', 'жилищный', 'кодекс', 'рф', '01.03.2005', 'год', 'раздел', 'vi', 'viii'], ['финансово', 'хозяйственный_деятельность', 'тсж', 'регламентироваться', 'общепринятый', 'законодательный', 'акт', 'положение', 'бу', 'нк', 'рф', 'письмо', 'минфин', 'рф', 'госстрой', 'т.д.', '3.2', 'время', 'информационный_система', 'организация', 'эксплуатироваться'], ['формирование', 'сдача', 'вид', 'отчётность', 'применяться', 'официально', 'выпустить', 'программный', 'средство'], ['4', 'требование', 'система', '4.1', 'требование', 'система', 'целое', '4.1.1', 'требование', 'структура', 'функционирование', 'система', '4.1.1.1', 'информационный_система', 'предназначить', 'работа', 'пользователь', 'логически', 'состоять', 'несколько', 'взаимосвязанный', 'подсистема', 'подсистема', 'управление', 'жилищный', 'коммунальный', 'хозяйство', 'подсистема', 'бухгалтерский', 'учёт', 'подсистема', 'кадровый', 'учёт', 'зарплата', 'подсистема', 'налоговый', 'учёт', 'отчётность'], ['подсистемы', 'являться', 'самостоятельный', 'программный_продукт', 'функционировать', 'локально', 'деление', 'подсистема', 'условно', 'отражать', 'направление', 'финансово', 'хозяйственный_деятельность', 'тсж'], ['4.1.1.2', 'компоненты', 'система', 'взаимосвязь', 'физически', 'информационный_система', 'представлять', 'интеграция', 'два', 'программный_продукт', 'организуется', 'обмен', 'данными', 'технология', 'ole', 'automation'], ['физический', 'компонент', 'информационный_система', 'конфигурация', 'тсж', 'основный', 'содержать', 'специфический', 'функционал', 'типовой', 'конфигурация', 'бухгалтерия', 'предприятие', '8', 'автоматизировать', 'общепринятый', 'процесс', 'хозяйствовать', 'субъект'], ['4.1.1.3', 'система', 'работать', 'два', 'режим', 'пользовательский', 'режим', 'доступный', 'функция', 'система', 'режим', 'конфигурирование'], ['прикладной', 'решение', 'возможность', 'функционировать', 'файловый', 'клиент', 'серверный', 'вариант'], ['4.1.1.4', 'разрабатываемая', 'информационный_система', 'представлять', 'закончить', 'программный_продукт', 'автоматизация', 'деятельность', 'управление', 'тсж', 'развить', 'путем', 'доработка', 'функционал', 'соответствие', 'новый', 'требование', 'выпуск', 'новый', 'версия'], ['4.1.2', 'требование', 'численность', 'квалификация', 'персонал', 'система', 'режим', 'работа', '4.1.2.1', 'эксплуатация', 'информационный_система', 'достаточно', 'штатный', 'единица'], ['4.1.2.2', 'предполагать', 'пользователь', 'владеть', 'следующий', 'знание', 'навык', 'знание', 'область', 'профессиональный', 'деятельность', 'владение', 'компьютер', 'уровень', 'пользователь'], ['качество', 'подготовительный', 'мероприятие', 'обучение', 'пользователь', 'выступать', 'ознакомление', 'пользователь', 'общий', 'принцип', 'работа', 'система', 'изучение', 'эксплуатационный', 'документация'], ['4.1.2.3', 'режим', 'работа', 'персонал', 'информационный_система', 'устанавливаться', 'произвольно'], ['информационный_система', 'использоваться', 'мера', 'процесс', 'работа'], ['4.1.3', 'требование', 'безопасность', 'надёжность', '4.1.3.1', 'система', 'защитить', 'несанкционированный', 'доступ', 'достигаться', 'путем', 'авторизация', 'пользователь', 'временной', 'блокировка', 'время', 'работа'], ['4.1.3.2', 'требоваться', 'хранить', 'недоступный', 'чтение', 'формат', 'помощь', 'сторонний', 'приложение'], ['4.1.3.3', 'работа', 'пользователь', 'вести', 'контроль', 'входной', 'информация'], ['целесообразный', 'возможность', 'ведение', 'журнал', 'регистрация', 'действие', 'пользователь', 'возникать', 'ошибка', 'последующий', 'анализ', 'исключительный', 'ситуация'], ['4.1.4', 'требование', 'эргономика', 'технический', 'эстетика', '4.1.4.1', 'требование', 'интерфейс', 'система', 'удобство', 'манипулирование', 'простота', 'использование', 'структуризация', 'интерфейс'], ['выполняемые', 'функция', 'сгруппировать', 'смысл', 'раздел', 'меню', 'подменю'], ['использовать', 'функция', 'вынести', 'панель', 'инструмент', 'диалоговый', 'форма', 'работа', 'система', 'пользователь', 'вывод', 'сообщение', 'вопрос', 'диалог', 'оформление', 'элемент', 'интерфейс', 'строгий', 'спокойный', 'тон', 'раздражать', 'психика', 'человек', 'форма', 'разрабатывать', 'образ', 'перегрузить', 'различный', 'элемент', 'элемент', 'очередь', 'располагать', 'максимально', 'удобный', 'предусмотреть', 'порядок', 'обход', 'элемент', 'использование', 'элемент', 'справочный', 'система', 'наличие', 'возможность', 'использование', 'панель', 'функция', 'режим', 'рабочий', 'стол'], ['4.1.4.2', 'требование', 'эксплуатация', 'создать', 'система', 'эксплуатироваться', 'использование', 'компьютерный', 'техника', 'производственный', 'помещение', 'работа', 'исполь', 'зованием', 'пк', 'являться', 'вспомогательный', 'температура', 'относитель', 'ная', 'влажность', 'скорость', 'движение', 'воздух', 'рабочий', 'место', 'соответствовать', 'действовать', 'санитарный', 'норма', 'микроклимат', 'изводственных', 'помещение', 'санпин', '2.2.2/2.4.1340', '03', 'эксплуатация', 'система', 'рекомендоваться', 'соблюдать', 'общий', 'правило', 'техника', 'безопасность'], ['4.1.4.3', 'требование', 'сохранность', 'информация', 'информационный_система', 'обеспечивать', 'сохранность', 'информация', 'ввести', 'база', 'система', 'средство', 'восстановление', 'тестирование', 'исправление', 'информационный', 'база', 'случай', 'отказ', 'технический', 'средство', 'отключение', 'питание', 'сбой', 'программный', 'обеспечение'], ['4.1.4.5', 'требование', 'стандартизация', 'унификация', 'разработка', 'реализация', 'информационный_система', 'использовать', 'соответствующий', 'стандарт', 'методология', 'стандарт', 'idef', 'uml', 'структурный', 'анализ', 'методология', 'разработка', 'программный', 'система'], ['максимально', 'использовать', 'типовой', 'проектный', 'решение', 'цель', 'оптимизация', 'процесс', 'разработка', 'сокращение', 'затрата', 'создание', 'система'], ['информационный_система', 'поддерживать', 'документооборот', 'отвечать', 'требование', 'законодательство', 'рф', 'использовать', 'унифицированный', 'система', 'документация', 'кодирование', 'классификация'], ['4.2', 'требование', 'функциям', 'задача', '4.2.1', 'перечень', 'функция', 'подсистемам', '4.2.1.1', 'функция', 'подсистема', 'управление', 'жкх', 'организация', 'накопление', 'хранение', 'необходимый', 'информация', 'общий', 'имущество', 'собственниках', 'жилец', 'льгота', 'тариф', 'услуга', 'норматив', 'ведение', 'список', 'квартира', 'жилец', 'формирование', 'справка', 'собственник', 'жилец', 'организация', 'учёт', 'движение', 'жилец', 'ведение', 'список', 'льготник', 'оплата', 'жку', 'расчёт', 'начисление', 'оплата', 'коммунальный', 'услуга', 'расчёт', 'компенсация', 'оплата', 'коммунальный', 'услуга', 'едк', 'учёт', 'прибор', 'учёт', 'счётчик', 'квартира', 'учёт', 'потребленной', 'электроэнергия'], ['4.2.1.2', 'функция', 'подсистема', 'бухгалтерский', 'учёт', 'ввод', 'начальный', 'остаток', 'счёт', 'начисление', 'приём', 'платёж', 'коммунальный', 'услуга', 'регистрация', 'показание', 'счётчик', 'начисление', 'факт', 'формирование', 'лицевой', 'счёт', 'выписка', 'учёт', 'потребить', 'товар', 'работа', 'услуга', 'вид', 'затрата', 'оплата', 'поставщик', 'подрядчик', 'учёт', 'входить', 'исходить', 'счёт', 'фактура', 'формирование', 'книга', 'покупка', 'книга', 'продажа', 'ведение', 'список', 'сотрудник', 'кадровый', 'документ', 'учёт', 'расчёт', 'заработный', 'плата', 'расчёт', 'начисление', 'выплата', 'учёт', 'наличный', 'безналичный', 'денежный', 'средство', 'кассовый', 'банковский', 'операция', 'статья', 'движение', 'закрытие', 'отчётный', 'период', 'формирование', 'бухгалтерский', 'отчётность', 'бухгалтерский', 'баланс', 'отчёт', 'прибылях', 'убыток', 'отчёт', 'целевой', 'использование', 'получить', 'средство'], ['4.2.1.3', 'функция', 'подсистема', 'налоговый', 'учёт', 'исчисление', 'перечисление', 'налог', 'взнос', 'страховой', 'взнос', 'фот', 'ндфл', 'земельный', 'налог', 'плата', 'негативный', 'воздействие', 'окружать', 'среда', 'распределение', 'сумма', 'земельный', 'налог', 'жилец', 'формирование', 'ведомость', 'учёт', 'налог', 'формирование', 'налоговый', 'отчётность'], ['4.2.1.4', 'общий', 'функция', 'механизм', '4.2.1.4.1', 'формирование', 'внутренний', 'отчётность', 'список', 'жилой', 'помещение', 'кондоминимума', 'список', 'собственник', 'жилец', 'список', 'льготник', 'категория', 'отчёт', 'движение', 'жилец', 'период', 'список', 'прибор', 'учёт', 'квартира', 'список', 'гражданин', 'иметь', 'право', 'едк', 'отчёт', 'рассчитать', 'едк', 'оборотный', 'сальдовый', 'ведомость', 'целое', 'счёт', 'главный', 'книга', 'приход', 'расход', 'банк', 'целое', 'статья', 'отчёт', 'проводка', 'счёт', 'ведомость', 'фот', '4.2.1.4.2', 'организация', 'обмен', 'данными', 'компонент', 'система', '4.2.1.4.3', 'формирование', 'аналитический', 'информация', 'хозяйственный_деятельность', 'анализ', 'дебиторский', 'кредиторский', 'задолженность', 'анализ', 'использование', 'целевой', 'средство', 'резерв'], ['4.2.2', 'требование', 'качество', 'реализация', 'функция', 'доступ', 'функция', 'осуществляться', 'диалоговый', 'форма'], ['организовать', 'эффективный', 'структура', 'взаимодействие', 'экранный', 'форма', 'выходной', 'информация', 'представить', 'форма', 'форма', 'отчёт', 'расчётный', 'функция', 'требовать', 'минимум', 'действие', 'пользователь', 'безошибочно', 'исчислять', 'показатель', 'соответствие', 'иметься', 'информация', 'расчётный', 'функция', 'занимать', 'время', 'наличие', 'возможность', 'хранение', 'периодический', 'массив', 'наличие', 'возможность', 'сохранение', 'информация', 'формат', 'предел', 'информационный', 'база'], ['4.3', 'требование', 'вид', 'обеспечение', '4.3.1', 'требование', 'программный', 'обеспечение', 'информационный_система', 'эксплуатироваться', 'платформа', 'операционный', 'система', 'windows', '2000', 'xp', 'инструмент', 'реализация', 'платформа', '1с', 'предприятие', '8.1', 'наличие', 'типовой', 'конфигурация', 'бухгалтерия', 'предприятие', '8', 'профессиональный', 'базовый', 'версия', 'установить', 'библиотека', 'машиночитаемый', 'форма', 'отчётность'], ['4.3.2', 'требование', 'технический', 'обеспечение', 'эксплуатация', 'система', 'необходимый', 'персональный', 'компьютер', 'средний', 'характеристика', 'объём', 'оперативный', 'память', '512', 'мбайт', 'процессор', '2,4', 'ггц', 'жёсткий', 'диск', '80', 'гбайт', 'монитор', 'разрешение', 'экран', '1024х768', 'пиксель', 'наличие', 'принтер', 'черно', 'белый', 'печать', 'формат', 'а4'], ['4.3.3', 'требование', 'информационный', 'методический', 'обеспечение', 'необходимость', 'удобный', 'организация', 'система', 'структуризация', 'соответствие', 'семантика', 'иерархический', 'упорядоченность', 'взаимосвязь', 'функционирование', 'система', 'начальный', 'заполнение', 'информационный', 'база', 'обмен', 'данными', 'компонент', 'система', 'технология', 'ole', 'automation', 'осуществляться', 'соответствующий', 'модуль', 'последующий', 'сбор', 'обработка', 'система', 'осуществляться', 'динамика', 'протекать', 'бизнес', 'процессов', 'процесс', 'функционирование', 'система', 'наряду', 'эксплуатационный', 'документация', 'система', 'применять', 'справочный', 'информация', 'система', 'программа', '1с', 'предприятие', '8', 'поставлять', 'фирма', '1с.', '4.4', 'состав', 'содержание', 'работа', 'создание', 'система', '4.4.1', 'состав', 'содержание', 'работа', 'разработка', 'система', 'определяться', 'календарный', 'план', 'работа', 'соответствие', 'выбрать', 'методология', 'разработка', 'система'], ['4.5', 'порядок', 'контроль', 'приёмка', 'система', '4.5.1', 'система', 'завершение', 'разработка', 'передаваться', 'опытный', 'эксплуатация', 'заказчику', 'цель', 'тестирование', 'работа', 'система', 'адекватность', 'поставить', 'цель'], ['4.5.2', 'разработчик', 'требование', 'заказчик', 'дорабатывать', 'система', 'отдельный', 'часть', 'обнаружение', 'ошибка', 'необходимый', 'случай'], ['4.5.3', 'приёмочный', 'комиссия', 'представляться', 'ответственный', 'лицо', 'заказчик', 'осуществляться', 'взаимодействие', 'вопрос', 'разработка', 'система'], ['4.6', 'требование', 'состав', 'содержание', 'работа', 'подготовка', 'объект_автоматизация', 'ввод', 'система', 'действие', '4.6.1', 'приведение', 'поступать', 'система', 'информация', 'вид', 'пригодный', 'обработка', 'помощь', 'эвм', 'функционирование', 'система', 'определить', 'списковый', 'условно', 'постоянный', 'информация', 'предметный', 'область', 'ввести', 'информационный', 'база', 'многократный', 'использование'], ['хозяйственный', 'операция', 'отражаться', 'информационный_система', 'периодический', 'ввод', 'проведение', 'документ'], ['4.6.2', 'ввод', 'система', 'эксплуатация', 'выполнить', 'следующий', 'действие', 'приобретение', 'соответствующий', 'технический', 'средство', 'установка', 'установка', 'необходимый', 'программный', 'средство', 'установка', 'система', 'настройка', 'обучение', 'пользователь'], ['4.7', 'требование', 'документирование', 'состав', 'эксплуатационный', 'документация', 'входить', 'следующий', 'документ', 'руководство', 'пользователь', 'руководство', 'программист', 'официальный', 'документация', 'система', 'программа', '1с', 'предприятие', '8'], ['4.8', 'источник', 'разработка', 'основной', 'источник', 'разработка', 'система', 'учредительный', 'первичный', 'учётный', 'документ', 'отчётность', 'организация', 'заказчика', 'нормативный', 'правовой', 'документация', 'литературный', 'источник', 'статья']]"
        ],
        [
         "8",
         "tz_09.doc",
         "2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\r2.2.1.\rОбщие сведения\rВ данной главе представлены общие сведения о системе:\rполное наименование системы и ее условное обозначение:  Web-приложение «Аутсорсинг Информационных Систем и Технологий » (АИСТ);\rшифр темы или шифр (номер) договора: данный программный продукт разрабатывался в рамках дипломного проектирования, какой-либо договор не заключался; \rнаименование предприятий разработчика и заказчика системы, их реквизиты: ООО «Торговая компания «Альфа» (ИНН/КПП, г. Ульяновск, ул.); \rплановые сроки начала и окончания работ: 1 марта 2009 года — 30 мая 2009 года;\rсведения об источниках и порядке финансирования работ: данные работы проводятся на абсолютно безвозмездной основе;\rпорядок оформления и предъявления заказчику результатов работ по созданию системы, ее частей и отдельных средств: по окончанию работ заказчику должны быть предъявлены и переданы установочный диск со всеми необходимыми дистрибутивами, набор инструкций и документации для полноценного функционирования указанной системы.\r\r2.2.2. Назначение и цели создания системы\rРазработанная система предназначена для автоматизации деятельности отдела по обслуживанию клиентов. Данную систему предполагается использовать в  ООО «ТК «Альфа» .\r При внедрении ИС должны быть достигнуты следующие цели: \rс технологической точки зрения: должен быть упрощен процесс взаимодействия начальника отдела с сотрудниками, находящимися в его подчинении, улучшено качество работы отдела;\rс производственно-экономической точки зрения: должно быть сокращено время на организацию работы сотрудников и формирование соответствующей отчетности.\r\r2.2.3. Характеристика объектов автоматизации\rОбъектом автоматизации является процесс управления отделом обслуживания клиентов ООО «ТК «Альфа». Процесс заключается в учете рабочего времени сотрудников данного отдела, а так же учете выполненных работ.\rООО «ТК «Альфа»» ведет различные виды деятельности:\rПродажа компьютерной техники.\rУстановка, настройка и техническая поддержка компьютерной  техники.\rПродажа программного обеспечения.\rРемонт оборудования.\rВнедрение программных продуктов фирмы 1С.\rРазработка веб-сайтов.\r\r2.2.4. Требования к системе \rТребования к системе в целом:\rа) требования к структуре и функционированию системы:\rРазработанная система должна состоять из следующих подсистем:\rпланирование работы с клиентами;\rанализ деятельности отдела.\rПервая подсистема должна предоставить руководителю отдела возможность видеть своевременное взаимодействие сотрудников с клиентами с тем, чтобы ни один клиент не оказался «забытым», во время выявить возникшие проблемы. \rВторая подсистема должна подсчитывать и наглядно представлять экономический результат деятельности, среднее время работы.\r\rб) требования к персоналу:\rКоличество пользователей системы соответствует количеству сотрудников отдела обслуживания клиентов предприятия ООО «ТК «Альфа». Так же, необходим администратор системы, к чьим обязанностям относится:\rУстановка и настройка системы.\rУстановка и настройка дополнительного программного обеспечения.\rИсправление ошибок в случае их возникновения.\rАдминистратор системы должен иметь навыки:\rПрограммирования на языках высокого уровня.\rНаписание запросов на языке SQL.\rКоличество пользователей системы соответствует количеству сотрудников отдела обслуживания клиентов предприятия ООО «ТК «Альфа».\r\rв) степень приспособляемости системы:\rДанная система должна быть гибкой в отношении изменения отчетов, должна обеспечивать настройку их параметров.\r\rг) требования к системе:\r         Система должна быть надежной, т.е. отказоустойчивой к ошибкам пользователя (нарушения правильной последовательности действий).\rОна должна быть удобна для работы пользователя. \r\t\tДолжна присутствовать авторизация и аутентификация пользователя, возможность тонкой настройки доступа к объектам и функциям системы. \rПрограммный продукт должен быть патентно чист и иметь возможность законно использоваться в коммерческих целях. Разрабатываемый программный продукт является патентно-чистым. \rДля безопасности системы необходимо, чтобы пользователи:\rНадежно хранили свои данные для входа в систему.\rОсуществляли доступ в систему только с рабочего места.\rИспользовали систему только для рабочих целей.\rИмели  понимание о проблемах безопасности.\rУмели преобразовывать задачи к возможностям системы.\rНеобходимо исключать ситуации:\rНеопытность пользователя.\rНеисправность ПК.\rНеисправность каналов связи.\rПеребои с электроэнергией.\rНаделение пользователей лишними правами в системе.\rПредоставление информации пользователю, которому она не предназначена.\r\rТребования к видам обеспечения:\rСистема предъявляет следующие требования к видам обеспечения:\rа) информационному: Microsoft SQL Server 2005, либо MYSQL Server;\rб) лингвистическому: используется язык программирования «PHP» и Java-script;\rв) программному и техническому: \r 1) компьютер конечного пользователя (рекомендуемые параметры): \rоперационная система: MS Windows 2000/ XP / Server 2003; \rпроцессор Intel Pentium III 866 МГц; \rоперативная память 256 Мбайт; \r2) компьютер, используемый для разработки конфигураций: \rоперационная система: MS Windows 2000/ XP / Server 2003; \rIntel Pentium IV/Celeron 1800  МГц ; \rоперативная память 512 Мбайт; \r3) сервер ПП: \rоперационная система: MS Windows 2000/Server 2003, ОС семейства UNIX; \rпроцессор Intel Pentium IV/Xeon 2,4 ГГц, рекомендуется два и более процессоров; \rоперативная память 1024 Мбайт; \r4) сервер баз данных: \rтехнические характеристики компьютера и операционная система должны соответствовать требованиям Microsoft SQL Server 2005, MYSQL Server; \rг) организационному: для функционирования системы необходимы системный администратор и несколько сотрудников;\rд) методическому (состав нормативно-технической документации):\rинструкция программисту; \rинструкция пользователю.\r\r2.2.5. Состав и содержание работ по созданию системы\rПеречень этапов работ и сроки исполнения:\rПеречень этапов работ и сроки исполнения представлены в таблице 2.1\rТаблица 2.1 \rОсновные этапы работ и сроки их исполнения\r№\r\u0007Выполняемая работа\r\u0007Сроки\r\u0007\r\u00071.\r\u0007Постановка задачи\r\u0007Март 2010 г.\r\u0007\r\u00072.\r\u0007Проектирование \r\u0007Апрель 2010 г.\r\u0007\r\u00073.\r\u0007Кодирование\r\u0007Май 2010 г.\r\u0007\r\u00074.\r\u0007Тестирование и отладка\r\u0007Май 2010 г.\r\u0007\r\u00075.\r\u0007Анализ результатов\r\u0007Июнь 2010г.\r\u0007\r\u0007\rСостав исполнителей работ:\rРаботы по созданию системы проводились физическим лицом - _______, студентом УлГТУ, под руководством преподавателя кафедры «Информационные системы» Наместникова Алексея Михайловича.\r\rПеречень подлежащих разработке документов:\rИнструкция пользователю\rИнструкция системному администратору",
         "1",
         "[['2.2'], ['техническое', 'задание', '2.2.1'], ['общий', 'сведение', 'глава', 'представить', 'общий', 'сведение', 'система', 'полный', 'наименование', 'система', 'условный', 'обозначение', 'web', 'приложение', 'аутсорсинг', 'информационный', 'система', 'технологий', 'аист', 'шифр', 'тема', 'шифр', 'номер', 'договор', 'программный', 'продукт', 'разрабатываться', 'рамка', 'дипломный', 'проектирование', 'договор', 'заключаться', 'наименование', 'предприятие', 'разработчик', 'заказчик', 'система', 'реквизит', 'ооо', 'торговый', 'компания', 'альфа', 'инн', 'кпп', 'г.', 'ульяновск', 'ул.', 'плановый', 'срок', 'окончание', 'работа', '1', 'март', '2009', 'год', '30', 'май', '2009', 'год', 'сведение', 'источник', 'порядок', 'финансирование', 'работа', 'работа', 'проводиться', 'абсолютно', 'безвозмездный', 'основа', 'порядок', 'оформление', 'предъявление', 'заказчик', 'результат', 'работа', 'создание', 'система', 'часть', 'отдельный', 'средство', 'окончание', 'работа', 'заказчик', 'предъявить', 'передать', 'установочный', 'диск', 'необходимый', 'дистрибутив', 'набор', 'инструкция', 'документация', 'полноценный', 'функционирование', 'указать', 'система', '2.2.2'], ['назначение', 'цель', 'создание', 'система', 'разработанная', 'система', 'предназначить', 'автоматизация', 'деятельность', 'отдел', 'обслуживание', 'клиент'], ['данную', 'система', 'предполагаться', 'использовать', 'ооо', 'тк', 'альфа'], ['внедрение', 'ис', 'достигнуть', 'следующий', 'цель', 'технологический', 'точка', 'зрение', 'упростить', 'процесс', 'взаимодействие', 'начальник', 'отдел', 'сотрудник', 'находиться', 'подчинение', 'улучшить', 'качество', 'работа', 'отдел', 'производственный', 'экономический', 'точка', 'зрение', 'сократить', 'время', 'организация', 'работа', 'сотрудник', 'формирование', 'соответствующий', 'отчётность', '2.2.3'], ['характеристика', 'объект', 'автоматизация', 'объект', 'автоматизация', 'являться', 'процесс', 'управление', 'отдел', 'обслуживание', 'клиент', 'ооо', 'тк', 'альфа'], ['процесс', 'заключаться', 'учёт', 'рабочий', 'время', 'сотрудник', 'отдел', 'учёт', 'выполнить', 'работа'], ['ооо', 'тк', 'альфа', 'вести', 'различный', 'вид', 'деятельность', 'продажа', 'компьютерный', 'техника'], ['установка', 'настройка', 'технический', 'поддержка', 'компьютерный', 'техника'], ['продажа', 'программный', 'обеспечение'], ['ремонт', 'оборудование'], ['внедрение', 'программный', 'продукт', 'фирма', '1с.', 'разработка', 'веб', 'сайтов'], ['2.2.4'], ['требование', 'система', 'требование', 'система', 'целое', 'требование', 'структура', 'функционирование', 'система', 'разработанная', 'система', 'состоять', 'следующий', 'подсистема', 'планирование', 'работа', 'клиент', 'анализ', 'деятельность', 'отдел'], ['первый', 'подсистема', 'предоставить', 'руководитель', 'отдел', 'возможность', 'видеть', 'своевременный', 'взаимодействие', 'сотрудник', 'клиент', 'ни', 'клиент', 'оказаться', 'забыть', 'время', 'выявить', 'возникнуть', 'проблема'], ['второй', 'подсистема', 'подсчитывать', 'наглядно', 'представлять', 'экономический', 'результат', 'деятельность', 'средний', 'время', 'работа', 'требование', 'персонал', 'количество', 'пользователь', 'система', 'соответствовать', 'количество', 'сотрудник', 'отдел', 'обслуживание', 'клиент', 'предприятие', 'ооо', 'тк', 'альфа'], ['необходимый', 'администратор', 'система', 'обязанность', 'относиться', 'установка', 'настройка', 'система'], ['установка', 'настройка', 'дополнительный', 'программный', 'обеспечение'], ['исправление', 'ошибка', 'случай', 'возникновение'], ['администратор', 'система', 'навык', 'программирование', 'язык', 'высокий', 'уровень'], ['написание', 'запрос', 'язык', 'sql'], ['количество', 'пользователь', 'система', 'соответствовать', 'количество', 'сотрудник', 'отдел', 'обслуживание', 'клиент', 'предприятие', 'ооо', 'тк', 'альфа'], ['степень', 'приспособляемость', 'система', 'система', 'гибкий', 'отношение', 'изменение', 'отчёт', 'обеспечивать', 'настройка', 'параметр'], [], ['требование', 'система', 'система', 'надёжный', 'т.е.', 'отказоустойчивой', 'ошибка', 'пользователь', 'нарушение', 'правильный', 'последовательность', 'действие'], ['удобный', 'работа', 'пользователь'], ['присутствовать', 'авторизация', 'аутентификация', 'пользователь', 'возможность', 'тонкий', 'настройка', 'доступ', 'объект', 'функция', 'система'], ['программный', 'продукт', 'патентный', 'чистый', 'возможность', 'законно', 'использоваться', 'коммерческий', 'цель'], ['разрабатываемый', 'программный', 'продукт', 'являться', 'патентный', 'чистый'], ['безопасность', 'система', 'пользователь', 'надежно', 'хранить', 'вход', 'система'], ['осуществлять', 'доступ', 'система', 'рабочий', 'место'], ['использовать', 'система', 'рабочий', 'цель'], ['иметь', 'понимание', 'проблема', 'безопасность'], ['умели', 'преобразовывать', 'задача', 'возможность', 'система'], ['исключать', 'ситуация', 'неопытность', 'пользователь'], ['неисправность', 'пк'], ['неисправность', 'канал', 'связь'], ['перебой', 'электроэнергия'], ['наделение', 'пользователь', 'лишний', 'право', 'система'], ['предоставление', 'информация', 'пользователь', 'предназначить', 'требование', 'вид', 'обеспечение', 'система', 'предъявлять', 'следующий', 'требование', 'вид', 'обеспечение', 'информационный', 'microsoft', 'sql', 'server', '2005', 'mysql', 'server', 'лингвистический', 'использоваться', 'язык', 'программирование', 'php', 'java', 'script', 'программный', 'технический', '1', 'компьютер', 'конечный', 'пользователь', 'рекомендовать', 'параметр', 'операционный', 'система', 'ms', 'windows', '2000/', 'xp', 'server', '2003', 'процессор', 'intel', 'pentium', 'iii', '866', 'мгц', 'оперативный', 'память', '256', 'мбайт', '2', 'компьютер', 'использовать', 'разработка', 'конфигурация', 'операционный', 'система', 'ms', 'windows', '2000/', 'xp', 'server', '2003', 'intel', 'pentium', 'iv', 'celeron', '1800', 'мгц', 'оперативный', 'память', '512', 'мбайт', '3', 'сервер', 'пп', 'операционный', 'система', 'ms', 'windows', '2000', 'server', '2003', 'ос', 'семейство', 'unix', 'процессор', 'intel', 'pentium', 'iv', 'xeon', '2,4', 'ггц', 'рекомендоваться', 'два', 'процессор', 'оперативный', 'память', '1024', 'мбайт', '4', 'сервер', 'база', 'технический', 'характеристика', 'компьютер', 'операционный', 'система', 'соответствовать', 'требование', 'microsoft', 'sql', 'server', '2005', 'mysql', 'server', 'организационный', 'функционирование', 'система', 'необходимый', 'системный', 'администратор', 'сотрудник', 'методический', 'состав', 'нормативный', 'технический', 'документация', 'инструкция', 'программист', 'инструкция', 'пользователь', '2.2.5'], ['состав', 'содержание', 'работа', 'создание', 'система', 'перечень', 'этап', 'работа', 'срок', 'исполнение', 'перечень', 'этап', 'работа', 'срок', 'исполнение', 'представить', 'таблица', '2.1', 'таблица', '2.1', 'основной', 'этап', 'работа', 'срок', 'исполнение', '№', '\\x07выполняемая', 'работа', '\\x07сроки', '\\x07', '\\x071'], ['\\x07постановка', 'задача', '\\x07март', '2010', 'г.', '\\x07', '\\x072'], ['\\x07проектирование', '\\x07апрель', '2010', 'г.', '\\x07', '\\x073'], ['\\x07кодирование', '\\x07май', '2010', 'г.', '\\x07', '\\x074'], ['\\x07тестирование', 'отладка', '\\x07май', '2010', 'г.', '\\x07', '\\x075'], ['\\x07анализ', 'результат', '\\x07июнь', '2010', 'г.', '\\x07', '\\x07', 'состав', 'исполнитель', 'работа', 'работа', 'создание', 'система', 'проводиться', 'физический', 'лицо', 'студент', 'улгту', 'руководство', 'преподаватель', 'кафедра', 'информационный', 'система', 'наместникова', 'алексей', 'михаилович'], ['перечень', 'подлежать', 'разработка', 'документ', 'инструкция', 'пользователь', 'инструкция', 'системный', 'администратор']]"
        ],
        [
         "9",
         "tz_10.doc",
         "2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\r2.2.1. Общие сведения\rВ данной главе представлены общие сведения о системе:\rполное наименование системы и ее условное обозначение:  web-сайт территориально-производственного предприятия «Урайнефтегаз»\rшифр темы или шифр (номер) договора: данный программный продукт разрабатывался вне рамок какого-либо договора, а в рамках дипломного проектирования.\rнаименование предприятий разработчика и заказчика системы, их реквизиты: \rперечень документов, на основании которых создается информационная система: нет\rплановые сроки начала и окончания работ: 1 апреля 2010 года — 30 мая 2010 года;\rсведения об источниках и порядке финансирования работ: данные работы проводятся на безвозмездной основе;\rпорядок оформления и предъявления заказчику результатов работ по созданию системы, ее частей и отдельных средств: по окончанию работ заказчику должны быть предъявлены и переданы диск с данными проекта,  набор инструкций и документации для полноценного функционирования сайта.\r\r2.2.2. Назначение и цели создания системы\rВидом автоматизируемой деятельности является распространение информации, получение обратной связи. Данную систему предполагается использовать в организации. \rЦелью создания системы является всестороннее представление предприятия, как на местном, так и на федеральном уровне. В следствии - привлечение молодых квалифицированных специалистов, организация обратной связи с сотрудниками предприятия, взаимодействие со СМИ.\r\r2.2.3. Характеристика объектов автоматизации\rОбъектом автоматизации являются: \rполучение пользователями внутренних документов предприятия,\rразмещение контактной информации, \rразмещение информации о вакансиях, \rразмещение данных о производственной деятельности предприятия,\rразмещение внутренних нормативных документов.\rТребований к условиям эксплуатации и характеристиках окружающей среды нет.\r\r2.2.4. Требования к системе в целом\rа) Требования к структуре и функционированию системы.\rРазработанная система сайта должна состоять из следующих подсистем: \rдоступа к БД MySQL\rпользовательского интерфейса\rвизуализации данных\rхранения данных\rклассов уровня приложения\rПодсистема доступа к БД должна позволять легко изменять структуру БД без изменения большей части программы, обеспечить корректную загрузку и выгрузку данных, правильную работу запросов и снижать вероятность ошибок.\rПодсистема пользовательского интерфейса должна обеспечивать динамическую сборку страниц, легкость корректировки отдельных частей и отсутствие конфликтов между ними, правильный вывод страниц.\rПодсистема визуализации данных должна корректно и визуально привлекательно для пользователя предоставлять информацию.\rСтруктура таблиц БД, каталогов и файлов подсистемы хранения данных должна быть разработана таким образом, что бы легко было найти и изменить хранящуюся в них информацию.\rПодсистема классов должна строится таким образом, чтобы каждый класс обладал хорошо определённой сферой ответственности. Код должен быть снабжен комментариями и был понятен другому программисту.\rВ проекте должно быть несколько режимов функционирования. Главные – это режим администратора и режим пользователя.\rВ перспективе развитие системы должно быть легко осуществимо. Возможно добавление новых сервисов.\rб) Требования к персоналу.\rДля функционирования системы необходим 1 человека: администратор.\rСистемный администратор должен уметь работать с оболочкой phpMyAdmin, обладать знаниями по web-программированию, в частности на языке php. А также выполнять роль модератора при проверке комментариев и добавлять в базу новые данные.\rПользователь должен обладать знаниями об использовании браузера.\rв) Требования к системе.\rСистема должна быть надежной: отказоустойчивой к ошибкам пользователя (нарушения правильной последовательности действий), ошибкам в загружаемых данных. Также система должна восстанавливаться после различных сбоев (отключение электричества, сбой в работе операционной системы, оборудования т т.д.). За данный функционал отвечает сервер MySQL\rПрограммный комплекс должен быть кросс-платформенен, легко мигрировать на разные архитектуры серверов и операционные системы. \rПродукт должен обладать  эргономичным и интуитивно-понятным интерфейсом. \rДолжна быть предусмотрена возможность обновления и обслуживания системы, в том числе и сторонними разработчиками. Возможность расширения функционала приложений.\rДолжна присутствовать аутентификация пользователя на сервере, для разграничения доступа к информации и ее защите от изменений, настройки доступа к БД. \r\r2.2.5. Требования к функциям (по подсистемам)\rПеречень подлежащих автоматизации задач:\rПоступление сообщений с вопросами от пользователей, \rОрганизация обратной связи,\rВозможность скачивания внутренних документов предприятия.\r\r2.2.6. Перечень критериев и отказов\rФатальные ошибки. Сбои в системе, которые приводят к потере ее работоспособности или к порче данных. Ошибка управления или попытка взлома системы. Ошибка авторизации.\rСерьезные ошибки. Ошибки, которые не позволяют достичь желаемого результата при использовании некоторого средства или функции программного продукта. Ошибка выполнения SQL-запроса. Ошибка запроса открытия файла.\rМаленькие ошибки. Ошибки, которые вызывают неудобство работы с системой, например, ошибки в задании порядка перехода от одного элемента управления к другому в форме ввода информации.\rНезначительные ошибки. К данному типу ошибок относятся орфографические ошибки в надписях или не выровненные элементы управления. Ошибки ввода данных в форму.\r\r2.2.7. Требования к видам обеспечения.\rСистема предъявляет следующие требования к видам обеспечения:\rа) информационному: для хранения данных использовать СУБД MySQL, запущенную на удаленном, либо этом же компьютере. Для выполнения скриптов, написанных на языке PHP понадобится интерпретатор PHP. Для управления базами данных phpMyAdmin.\rв) лингвистическому: использовать язык программирования PHP, язык запросов SQL, язык описания HTML, язык разметки CSS, XML.\rг) программному и техническому: \rХарактеристики компьютера пользователя: \rоперационная система: Windows/Linux/MacOS/Solaris; \rIntel Pentium III/Celeron 800  МГц ; \rоперативная память 256 Мбайт;  \rСервер баз данных:\rоперационная система: Windows/Linux/MacOS/Solaris; \rIntel Pentium III/Celeron 800  МГц; \rоперативная память 256 Мбайт;  \rНеобходимый набор программ пользователя:\rбраузер Internet Explorer/ Opera и др.; \rНеобходимый набор программ администратора:\rбраузер Internet Explorer/ Opera и др.; \rphpMyAdmin;\rтекстовый редактор\rе) организационному:  для функционирования системы необходим 1 человека: администратор.\rСистемный администратор должен уметь работать с оболочкой phpMyAdmin, обладать знаниями по web-программированию, в частности на языке php. А также выполнять роль модератора при проверке комментариев и добавлять в базу новые данные.\rж) методическому (состав нормативно-технической документации):\rИнструкция программисту\rИнструкция администратору \rИнструкция пользователю\r\r2.2.8. Перечень этапов работ и сроки исполнения\rТаблица 1 Этапы и сроки выполнения проекта\rПериод учебного процесса\r\u0007Кол-во недель\r\u0007Ориентировочные сроки\r\u0007Выполняемые работы\r\u0007\r\u0007дипломное \u000bпроектирование\r\u00072 недели\r\u0007Апрель-Май\r\r\u0007систематизация материала; описание бизнес-процессов, формулировка постановки задачи, подготовка обзора состояния вопроса\r\u0007\r\u0007\r\u00072 недели\r\u0007\r\u0007решение задач экономического раздела дипломного проекта \r\u0007\r\u0007\r\u00076 недель\r\u0007\r\u0007проектирование и разработка предметно-ориентированной информационной системы\r\u0007\r\u0007\r\u00072 недели\r\u0007\r\u0007оформление проекта \r\u0007\r\u0007Защита\r\u00072 недели\r\u0007Июнь\r\u0007защита проекта перед Государственной \u000bаттестационной комиссией\r\u0007\r\u0007\r2.2.9. Состав исполнителей работ\rРаботы по созданию проекта проводились физическим лицом - студентом УлГТУ, Кандрушиным Алексеем Олеговичем. Консультантом по разработке являлся к.э.н. доцент кафедры «Информационные системы», руководитель дипломного проекта Суркова Елена Викторовна.\r\r2.2.10. Порядок контроля системы\rДля контроля необходимо провести следующие виды тестирования:\rФункциональное тестирование. Оно включает проверку каждой команды меню, панели инструментов и каждой операции, которую выполняет система. \rТестирование приложения. При выполнении тестирования приложения испытатель моделирует действия пользователя. Моделируя различные комбинации действий, можно найти ошибки, относящиеся к интеграции компонентов, а также недоработки, которые не были обнаружены при функциональном тестировании.\rТестирование на скорость выполнения. Измеряется время отклика системы на некоторое действие, документа. Обычно при этом определяются параметры эффективности. Одновременно с измерением времени на выполнение запроса необходимо записать также размер базы данных.\rПредельное тестирование. Позволяет определить пропускную способность программного продукта. Запускаются задачи, увеличивая размеры файлов или баз данных, и таким образом выявляют предельное значение объема данных, при котором завершение выполнения задачи невозможно. Максимальный объем данных является существенным ограничением при программировании. \r\r2.2.11. Перечень подлежащих разработке документов\rИнструкция пользователю\rИнструкция программисту\rИнструкция системному администратору",
         "1",
         "[['2.2'], ['техническое', 'задание', '2.2.1'], ['общий', 'сведение', 'глава', 'представить', 'общий', 'сведение', 'система', 'полный', 'наименование', 'система', 'условный', 'обозначение', 'web', 'сайт', 'территориальный', 'производственный', 'предприятие', 'урайнефтегаз', 'шифр', 'тема', 'шифр', 'номер', 'договор', 'программный', 'продукт', 'разрабатываться', 'рамка', 'договор', 'рамка', 'дипломный', 'проектирование'], ['наименование', 'предприятие', 'разработчик', 'заказчик', 'система', 'реквизит', 'перечень', 'документ', 'основание', 'создаваться', 'информационный', 'система', 'плановый', 'срок', 'окончание', 'работа', '1', 'апрель', '2010', 'год', '30', 'май', '2010', 'год', 'сведение', 'источник', 'порядок', 'финансирование', 'работа', 'работа', 'проводиться', 'безвозмездный', 'основа', 'порядок', 'оформление', 'предъявление', 'заказчик', 'результат', 'работа', 'создание', 'система', 'часть', 'отдельный', 'средство', 'окончание', 'работа', 'заказчик', 'предъявить', 'передать', 'диск', 'данными', 'проект', 'набор', 'инструкция', 'документация', 'полноценный', 'функционирование', 'сайт'], ['2.2.2'], ['назначение', 'цель', 'создание', 'система', 'вид', 'автоматизируемой', 'деятельность', 'являться', 'распространение', 'информация', 'получение', 'обратный', 'связь'], ['данную', 'система', 'предполагаться', 'использовать', 'организация'], ['цель', 'создание', 'система', 'являться', 'всесторонний', 'представление', 'предприятие', 'местный', 'федеральный', 'уровень'], ['следствие', 'привлечение', 'молодой', 'квалифицированный', 'специалист', 'организация', 'обратный', 'связь', 'сотрудник', 'предприятие', 'взаимодействие', 'сми'], ['2.2.3'], ['характеристика', 'объект', 'автоматизация', 'объект', 'автоматизация', 'являться', 'получение', 'пользователь', 'внутренний', 'документ', 'предприятие', 'размещение', 'контактный', 'информация', 'размещение', 'информация', 'вакансиях', 'размещение', 'производственный', 'деятельность', 'предприятие', 'размещение', 'внутренний', 'нормативный', 'документ'], ['требование', 'условие', 'эксплуатация', 'характеристика', 'окружать', 'среда'], ['2.2.4'], ['требование', 'система', 'целое', 'требование', 'структура', 'функционирование', 'система'], ['разработанная', 'система', 'сайт', 'состоять', 'следующий', 'подсистема', 'доступ', 'бд', 'mysql', 'пользовательский', 'интерфейс', 'визуализация', 'хранение', 'класс', 'уровень', 'приложение', 'подсистема', 'доступ', 'бд', 'позволять', 'легко', 'изменять', 'структура', 'бд', 'изменение', 'больший', 'часть', 'программа', 'обеспечить', 'корректный', 'загрузка', 'выгрузка', 'правильный', 'работа', 'запрос', 'снижать', 'вероятность', 'ошибка'], ['подсистема', 'пользовательский', 'интерфейс', 'обеспечивать', 'динамический', 'сборка', 'страница', 'лёгкость', 'корректировка', 'отдельный', 'часть', 'отсутствие', 'конфликт', 'правильный', 'вывод', 'страница'], ['подсистема', 'визуализация', 'корректно', 'визуально', 'привлекательный', 'пользователь', 'предоставлять', 'информация'], ['структура', 'таблица', 'бд', 'каталог', 'файл', 'подсистема', 'хранение', 'разработать', 'образ', 'лёгкий', 'найти', 'изменить', 'храниться', 'информация'], ['подсистема', 'класс', 'строиться', 'образ', 'класс', 'обладать', 'определённый', 'сфера', 'ответственность'], ['код', 'снабдить', 'комментариями', 'понятный', 'другому', 'программист'], ['проект', 'режим', 'функционирование'], ['главный', 'режим', 'администратор', 'режим', 'пользователь'], ['перспектива', 'развитие', 'система', 'легко', 'осуществимый'], ['добавление', 'новый', 'сервис'], [], ['требование', 'персонал'], ['функционирование', 'система', 'необходимый', '1', 'человек', 'администратор'], ['системный', 'администратор', 'уметь', 'работать', 'оболочка', 'phpmyadmin', 'обладать', 'знание', 'web', 'программирование', 'частность', 'язык', 'php'], ['выполнять', 'роль', 'модератор', 'проверка', 'комментарий', 'добавлять', 'база', 'новый'], ['пользователь', 'обладать', 'знание', 'использование', 'браузер'], ['требование', 'система'], ['система', 'надёжный', 'отказоустойчивый', 'ошибка', 'пользователь', 'нарушение', 'правильный', 'последовательность', 'действие', 'ошибка', 'загружать'], ['система', 'восстанавливаться', 'различный', 'сбой', 'отключение', 'электричество', 'сбой', 'работа', 'операционный', 'система', 'оборудование', 'т', 'т.д.'], ['функционал', 'отвечать', 'сервер', 'mysql', 'программный', 'комплекс', 'кросс', 'платформенен', 'легко', 'мигрировать', 'разный', 'архитектура', 'сервер', 'операционный', 'система'], ['продукт', 'обладать', 'эргономичный', 'интуитивный', 'понятный', 'интерфейс'], ['предусмотреть', 'возможность', 'обновление', 'обслуживание', 'система', 'число', 'сторонний', 'разработчик'], ['возможность', 'расширение', 'функционал', 'приложение'], ['присутствовать', 'аутентификация', 'пользователь', 'сервер', 'разграничение', 'доступ', 'информация', 'защита', 'изменение', 'настройка', 'доступ', 'бд'], ['2.2.5'], ['требование', 'функциям', 'подсистемам', 'перечень', 'подлежать', 'автоматизация', 'задача', 'поступление', 'сообщение', 'вопрос', 'пользователь', 'организация', 'обратный', 'связь', 'возможность', 'скачивание', 'внутренний', 'документ', 'предприятие'], ['2.2.6'], ['перечень', 'критерий', 'отказ', 'фатальный', 'ошибка'], ['сбой', 'система', 'приводить', 'потеря', 'работоспособность', 'порча'], ['ошибка', 'управление', 'попытка', 'взлом', 'система'], ['ошибка', 'авторизация'], ['серьёзный', 'ошибка'], ['ошибка', 'позволять', 'достигнуть', 'желаемого', 'результат', 'использование', 'некоторый', 'средство', 'функция', 'программный', 'продукт'], ['ошибка', 'выполнение', 'sql', 'запрос'], ['ошибка', 'запрос', 'открытие', 'файл'], ['маленький', 'ошибка'], ['ошибка', 'вызывать', 'неудобство', 'работа', 'система', 'ошибка', 'задание', 'порядок', 'переход', 'элемент', 'управление', 'другому', 'форма', 'ввод', 'информация'], ['незначительный', 'ошибка'], ['тип', 'ошибка', 'относиться', 'орфографический', 'ошибка', 'надпись', 'выровнять', 'элемент', 'управление'], ['ошибка', 'ввод', 'форма'], ['2.2.7'], ['требование', 'вид', 'обеспечение'], ['система', 'предъявлять', 'следующий', 'требование', 'вид', 'обеспечение', 'информационный', 'хранение', 'использовать', 'субд', 'mysql', 'запустить', 'удалённый', 'компьютер'], ['выполнение', 'скрипт', 'написать', 'язык', 'php', 'понадобиться', 'интерпретатор', 'php'], ['управление', 'база', 'phpmyadmin', 'лингвистический', 'использовать', 'язык', 'программирование', 'php', 'язык', 'запрос', 'sql', 'язык', 'описание', 'html', 'язык', 'разметка', 'css', 'xml', 'программный', 'технический', 'характеристики', 'компьютер', 'пользователь', 'операционный', 'система', 'windows', 'linux', 'macos', 'solaris', 'intel', 'pentium', 'iii', 'celeron', '800', 'мгц', 'оперативный', 'память', '256', 'мбайт', 'сервер', 'база', 'операционный', 'система', 'windows', 'linux', 'macos', 'solaris', 'intel', 'pentium', 'iii', 'celeron', '800', 'мгц', 'оперативный', 'память', '256', 'мбайт', 'необходимый', 'набор', 'программа', 'пользователь', 'браузер', 'internet', 'explorer/', 'opera', 'и др.', 'необходимый', 'набор', 'программа', 'администратор', 'браузер', 'internet', 'explorer/', 'opera', 'и др.', 'phpmyadmin', 'текстовый', 'редактор'], ['организационный', 'функционирование', 'система', 'необходимый', '1', 'человек', 'администратор'], ['системный', 'администратор', 'уметь', 'работать', 'оболочка', 'phpmyadmin', 'обладать', 'знание', 'web', 'программирование', 'частность', 'язык', 'php'], ['выполнять', 'роль', 'модератор', 'проверка', 'комментарий', 'добавлять', 'база', 'новый', 'методический', 'состав', 'нормативный', 'технический', 'документация', 'инструкция', 'программист', 'инструкция', 'администратор', 'инструкция', 'пользователь', '2.2.8'], ['перечень', 'этап', 'работа', 'срок', 'исполнение', 'таблица', '1', 'этапы', 'срок', 'выполнение', 'проект', 'период', 'учебный', 'процесс', '\\x07кол', 'неделя', '\\x07ориентировочные', 'срок', '\\x07выполняемые', 'работа', '\\x07', '\\x07дипломное', 'проектирование', '\\x072', 'неделя', '\\x07апрель', 'май', '\\x07систематизация', 'материал', 'описание', 'бизнес', 'процессов', 'формулировка', 'постановка', 'задача', 'подготовка', 'обзор', 'состояние', 'вопрос', '\\x07', '\\x07', '\\x072', 'неделя', '\\x07', '\\x07решение', 'задача', 'экономический', 'раздел', 'дипломный', 'проект', '\\x07', '\\x07', '\\x076', 'неделя', '\\x07', '\\x07проектирование', 'разработка', 'предметный', 'ориентированный', 'информационный', 'система', '\\x07', '\\x07', '\\x072', 'неделя', '\\x07', '\\x07оформление', 'проект', '\\x07', '\\x07защита', '\\x072', 'неделя', '\\x07июнь', '\\x07защита', 'проект', 'государственный', 'аттестационный', 'комиссия', '\\x07', '\\x07', '2.2.9'], ['состав', 'исполнитель', 'работа', 'работа', 'создание', 'проект', 'проводиться', 'физический', 'лицо', 'студент', 'улгту', 'кандрушиным', 'алексей', 'олегович'], ['консультант', 'разработка', 'являться', 'к.э.н.', 'доцент', 'кафедра', 'информационный', 'система', 'руководитель', 'дипломный', 'проект', 'сурков', 'елена', 'викторович', '2.2.10'], ['порядок', 'контроль', 'система', 'контроль', 'провести', 'следующий', 'вид', 'тестирование', 'функциональный', 'тестирование'], ['включать', 'проверка', 'каждый', 'команда', 'меню', 'панель', 'инструмент', 'каждый', 'операция', 'выполнять', 'система'], ['тестирование', 'приложение'], ['выполнение', 'тестирование', 'приложение', 'испытатель', 'моделировать', 'действие', 'пользователь'], ['моделировать', 'различный', 'комбинация', 'действие', 'найти', 'ошибка', 'относиться', 'интеграция', 'компонент', 'недоработка', 'обнаружить', 'функциональный', 'тестирование'], ['тестирование', 'скорость', 'выполнение'], ['измеряться', 'время', 'отклик', 'система', 'некоторый', 'действие', 'документ'], ['определяться', 'параметр', 'эффективность'], ['одновременно', 'измерение', 'время', 'выполнение', 'запрос', 'записать', 'размер', 'база'], ['предельный', 'тестирование'], ['позволять', 'определить', 'пропускной', 'способность', 'программный', 'продукт'], ['запускаться', 'задача', 'увеличивать', 'размер', 'файл', 'база', 'образ', 'выявлять', 'предельный', 'значение', 'объём', 'завершение', 'выполнение', 'задача', 'невозможный'], ['максимальный', 'объём', 'являться', 'существенный', 'ограничение', 'программирование'], ['2.2.11'], ['перечень', 'подлежать', 'разработка', 'документ', 'инструкция', 'пользователь', 'инструкция', 'программист', 'инструкция', 'системный', 'администратор']]"
        ],
        [
         "10",
         "tz_11.doc",
         "2.2.\tТЕХНИЧЕСКОЕ ЗАДАНИЕ\r2.2.1.\tОбщие сведения\r2.2.1.1. Полное наименование системы: «Анализ финансового состояния предприятия» \r2.2.1.2. Шифр темы: АФСП.\r2.2.1.3. Наименование предприятия заказчика: ООО «Газовая компания»\r2.2.1.4. Основание для разработки системы: Задание на выполнение дипломного проекта. \r2.2.1.5. Плановые сроки начала и окончания работ\rНачало работ: 26 марта 2010 г.\rОкончание работ: 31 мая 2010 г.\r2.2.1.6. Порядок оформления и предъявления заказчику \u000bрезультатов работ\rРезультаты работ оформляются в виде пояснительной записки, иллюстративного материала и ИС. «Пояснительная записка является основным документом, в котором излагаются исчерпывающие сведения о выполненном дипломном проекте» [1, с.8].\r«Структура пояснительной записки включает: \rтитульный лист;\rзадание на выполнение дипломного проекта \rсодержание; \rаннотация  \rперечень сокращений, символов и специальных терминов с их определениями; \rвведение;\rосновная часть (главы);\rзаключение;\rсписок использованной литературы; \rприложения.\r\r2.2.2.\tНазначение и цели создания системы\r2.2.2.1. Вид автоматизируемой деятельности: анализ деятельности предприятия различными методами и предоставление выводов, советующего характера.\r2.2.2.2. Перечень объектов, на которых предполагается \u000bиспользование системы: Автоматизированное рабочее место аналитика, бухгалтера, руководителя.\r2.2.2.3. Цели создания ИС\rРазработать программное средство позволяющее автоматизировать процесс анализа ликвидности и платежеспособности, сравнительного баланса, деловой активности и рентабельности, финансовой независимости, вероятности банкротства, эффективности вложения заемных средств в оборот предприятия, производить трендовый анализ финансовых коэффициентов с использованием типового программного продукта 1С: Бухгалтерия предприятия 8.1. \rЦель разработки – повышение оперативности и качества процесса анализа предприятия и достоверности результатов анализа, предоставление выводов, как в текстовой формулировке, так и посредством диаграмм, графиков.\r\r2.2.3.\tХарактеристика объектов автоматизации\rОбъектом автоматизации является деятельность предприятия в срезе анализа  деятельности, указанной в пункте 2.2.2.3.\r2.2.3.2. Сведения об условиях эксплуатации и характеристиках окружающей среды.\rКлиматические условия эксплуатации должны удовлетворять требованиям, предъявляемым к техническим средствам в части условий их эксплуатации.\r\r2.2.4.\tТребования к системе:\r2.2.4.1. Требования к системе в целом:\rТребования к персоналу\rКоличество персонала, требуемого для работы программы, должно составлять минимум 1 штатную единицу — конечный пользователь программы — аналитик. Аналитик должен быть уверенным пользователем ПК.\rТребования к надежности\rНадёжное (устойчивое) функционирование программы должно быть обеспечено выполнением фотографом совокупности организационно-технических мероприятий, перечень которых приведён ниже:\rорганизацией бесперебойного питания технических средств;\rрегулярным выполнением рекомендаций Министерства труда и социального развития РФ, изложенных в постановлении от 23 июля 1998г. «Об утверждении межотраслевых типовых норм времени на работы по сервисному обслуживанию ПЭВМ и оргтехники и сопровождению программных средств»;\rОтказы программы вследствие некорректных действий пользователя при взаимодействии с программой через интерфейс недопустим.\rТребования к интерфейсу программы: \rПрограммный продукт должен быть ориентирован на неподготовленного пользователя ЭВМ, имеющего начальные навыки работы с ОС Windows и программным продуктом 1С:Бухгалтерия предприятия 8.1. Общение с компьютером должно осуществляться на основе графического оконного интерфейса в виде иерархической системы меню, кнопок, полей ввода данных. \r\r2.2.4.2. Требования к функциям\rПрограмма должна обеспечивать выполнение перечисленных ниже функций:\rТребования к составу входной информации:\rв качестве входной информации используются данные стандартных форм бухгалтерской отчетности с привязкой к отчетному периоду и организации – Форма №1, Форма №2;\rввод данных за различные отчетные периоды;\rввод данных по различным организациям.\rТребования к составу выходной информации:\rВыходная информация включает\rисходные данные;\rчисленные значения рассчитанных показателей;\rрезультаты расчетов показателей за последовательные периоды в виде таблиц и диаграмм и значений отдельных показателей;\rтекстовые комментарии к результатам анализа.\r Требования к подсистеме анализа:\rПодсистема анализа должна предоставлять следующие возможности:\rрасчет абсолютных показателей финансового состояния предприятия;\rрасчет относительных показателей финансового состояния предприятия;\rпостроение диаграмма по рассчитанным показателям (автоматически и по запросу пользователя);\rлогические заключения на основании полученных данных. \rввод данных с привязкой к отчетному периоду;\rхранение данных за различные отчетные периоды;\rпредставление результатов анализа в виде численных значений отдельных показателей, таблиц, диаграмм; \rреализация  следующих методов финансового анализа:\rтрендовый анализ;\rвертикальный анализ;\rгоризонтальный анализ;\rметод финансовых показателей;\rметод аналитических таблиц;\rформирование отчетных материалов по результатам анализа;\r\r2.2.4.3. Требования к видам обеспечения:\rТребования к программному обеспечению\rПрограммный продукт должен работать на платформе 1С:Предприятие 8.1.\rТребования к техническому обеспечению:\rоперационная система: MS Windows 98/Me, MS Windows NT 4.0/2000/XP/Server 2003 (рекомендуется MS Windows 2000/XP/Server 2003);\rпроцессор Intel Pentium II 400 МГц и выше (рекомендуется Intel Pentium III 866 МГц);\rоперативная память 128 Мбайт и выше (рекомендуется 256 Мбайт);\rSVGA дисплей.\r\r2.2.5.\tСостав и содержание работ по созданию системы\r2.2.5.1. Перечень стадий и этапов работ:\r 1 – систематизация материала;\r2 – описание бизнес-процессов;\r3 – формулировка постановки задачи;\r4 – подготовка обзора состояния вопроса;\r5 – решение задач экономического раздела дипломного проекта; \r6 – проектирование и разработка информационной системы;\r7 – оформление проекта.\r2.2.5.2. Сроки исполнения \r15 апреля 2010 г.: этапы 1 –4;\r30 апреля 2010г.: этап 5;\r15 мая 2010г.: этап 6;\r31 мая 2010г.: этап 7.\r\r2.2.6.\tПорядок контроля и приемки системы\r2.2.6.1. Виды, состав, объем и методы испытаний системы\rИспытания системы проходят по факту ее готовности. Методами испытаний являются тестовый пример проведения анализа на тестовых данных.\r2.2.6.2. Общие требования к приемке работ по стадиям\rТак как разработка системы ведется как единое целое, то и особых требований к приемке по стадиям не выдвигалось. \r2.2.6.3. Статус приемной комиссии\rВ составе приемной комиссии присутствовали главный бухгалтер предприятия и два учредителя компании. \r\r2.2.7.\tТребования к документированию\r2.2.7.1. Перечень подлежащих разработке документов\rПояснительная записка, структура которой приведена в пункте 2.2.1.6\r\r2.2.8.\tИсточники разработки\rДокументами и информационными материалами, на основании которых разрабатывается ТЗ и система, являются требования и пожелания руководства предприятия, нормативная база по проведению финансового анализа на предприятии.",
         "1",
         "[['2.2'], ['техническое', 'задание', '2.2.1'], ['общий', 'сведение', '2.2.1.1'], ['полный', 'наименование', 'система', 'анализ', 'финансовый', 'состояние', 'предприятие', '2.2.1.2'], ['шифр', 'тема', 'афсп', '2.2.1.3'], ['наименование', 'предприятие', 'заказчик', 'ооо', 'газовый', 'компания', '2.2.1.4'], ['основание', 'разработка', 'система', 'задание', 'выполнение', 'дипломный', 'проект'], ['2.2.1.5'], ['плановый', 'срок', 'окончание', 'работа', 'начало', 'работа', '26', 'март', '2010_г.', 'окончание', 'работа', '31', 'май', '2010_г.', '2.2.1.6'], ['порядок', 'оформление', 'предъявление', 'заказчик', 'результат', 'работа', 'результат', 'работа', 'оформляться', 'вид', 'пояснительный', 'записка', 'иллюстративный', 'материал', 'ис'], ['пояснительный', 'записка', 'являться', 'основный', 'документ', 'излагаться', 'исчерпывающий', 'сведение', 'выполнить', 'дипломный', 'проект', '1', 'с.8'], ['структура', 'пояснительный', 'записка', 'включать', 'титульный', 'лист', 'задание', 'выполнение', 'дипломный', 'проект', 'содержание', 'аннотация', 'перечень', 'сокращение', 'символ', 'специальный', 'термин', 'определениями', 'введение', 'основный', 'часть', 'глава', 'заключение', 'список', 'использовать', 'литература', 'приложение', '2.2.2'], ['назначение', 'цель', 'создание', 'система', '2.2.2.1'], ['вид', 'автоматизировать', 'деятельность', 'анализ', 'деятельность', 'предприятие', 'различный', 'метод', 'предоставление', 'вывод', 'советующего', 'характер'], ['2.2.2.2'], ['перечень', 'объект', 'предполагаться', 'использование', 'система', 'автоматизированный', 'рабочий', 'место', 'аналитик', 'бухгалтер', 'руководитель'], ['2.2.2.3'], ['цель', 'создание', 'ис', 'разработать', 'программный', 'средство', 'позволять', 'автоматизировать', 'процесс', 'анализ', 'ликвидность', 'платёжеспособность', 'сравнительный', 'баланс', 'деловой', 'активность', 'рентабельность', 'финансовый', 'независимость', 'вероятность', 'банкротство', 'эффективность', 'вложение', 'заёмный', 'средство', 'оборот', 'предприятие', 'производить', 'трендовый', 'анализ', 'финансовый', 'коэффициент', 'использование', 'типовой', 'программный', 'продукт', '1с', 'бухгалтерия', 'предприятие', '8.1'], ['цель', 'разработка', 'повышение', 'оперативность', 'качество', 'процесс', 'анализ', 'предприятие', 'достоверность', 'результат', 'анализ', 'предоставление', 'вывод', 'текстовый', 'формулировка', 'диаграмма', 'график'], ['2.2.3'], ['характеристика', 'объект', 'автоматизация', 'объект', 'автоматизация', 'являться', 'деятельность', 'предприятие', 'срез', 'анализ', 'деятельность', 'указать', 'пункт', '2.2.2.3', '2.2.3.2'], ['сведение', 'условие', 'эксплуатация', 'характеристика', 'окружать', 'среда'], ['климатический', 'условие', 'эксплуатация', 'удовлетворять', 'требование', 'предъявлять', 'технический', 'средство', 'часть', 'условие', 'эксплуатация', '2.2.4'], ['требование', 'система', '2.2.4.1'], ['требование', 'система', 'целое', 'требование', 'персонал', 'количество', 'персонал', 'требуемого', 'работа', 'программа', 'составлять', 'минимум', '1', 'штатный', 'единица', 'конечный', 'пользователь', 'программа', 'аналитик'], ['аналитик', 'уверенный', 'пользователь', 'пк'], ['требование', 'надёжность', 'надёжный', 'устойчивый', 'функционирование', 'программа', 'обеспечить', 'выполнение', 'фотограф', 'совокупность', 'организационно', 'технический', 'мероприятие', 'перечень', 'привести', 'организация', 'бесперебойный', 'питание', 'технический', 'средство', 'регулярный', 'выполнение', 'рекомендация', 'министерство', 'труд', 'социальный', 'развитие', 'рф', 'изложить', 'постановление', '23', 'июль', '1998', 'г.', 'утверждение', 'межотраслевой', 'типовой', 'норма', 'время', 'работа', 'сервисный', 'обслуживание', 'пэвм', 'оргтехника', 'сопровождение', 'программный', 'средство', 'отказ', 'программа', 'вследствие', 'некорректный', 'действие', 'пользователь', 'взаимодействие', 'программа', 'интерфейс', 'недопустимый'], ['требование', 'интерфейс', 'программа', 'программный', 'продукт', 'ориентировать', 'неподготовленный', 'пользователь', 'эвм', 'иметь', 'начальный', 'навык', 'работа', 'ос', 'windows', 'программный', 'продукт', '1с', 'бухгалтерия', 'предприятие', '8.1'], ['общение', 'компьютер', 'осуществляться', 'основа', 'графический', 'оконный', 'интерфейс', 'вид', 'иерархический', 'система', 'меню', 'кнопка', 'поле', 'ввод'], ['2.2.4.2'], ['требование', 'функция', 'программа', 'обеспечивать', 'выполнение', 'перечислить', 'функция', 'требование', 'состав', 'входной', 'информация', 'качество', 'входной', 'информация', 'использоваться', 'стандартный', 'форма', 'бухгалтерский', 'отчётность', 'привязка', 'отчётный', 'период', 'организация', 'форма', '№', '1', 'форма', '№', '2', 'ввод', 'различный', 'отчётный', 'период', 'ввод', 'различный', 'организация'], ['требование', 'состав', 'выходной', 'информация', 'выходной', 'информация', 'включать', 'исходный', 'численный', 'значение', 'рассчитать', 'показатель', 'результат', 'расчёт', 'показатель', 'последовательный', 'период', 'вид', 'таблица', 'диаграмма', 'значение', 'отдельный', 'показатель', 'текстовый', 'комментарий', 'результат', 'анализ'], ['требование', 'подсистема', 'анализ', 'подсистема', 'анализ', 'предоставлять', 'следующий', 'возможность', 'расчёт', 'абсолютный', 'показатель', 'финансовый', 'состояние', 'предприятие', 'расчёт', 'относительный', 'показатель', 'финансовый', 'состояние', 'предприятие', 'построение', 'диаграмма', 'рассчитанным', 'показатель', 'автоматически', 'запрос', 'пользователь', 'логический', 'заключение', 'основание', 'получить'], ['ввод', 'привязка', 'отчётный', 'период', 'хранение', 'различный', 'отчётный', 'период', 'представление', 'результат', 'анализ', 'вид', 'численный', 'значение', 'отдельный', 'показатель', 'таблица', 'диаграмма', 'реализация', 'следующий', 'метод', 'финансовый', 'анализ', 'трендовый', 'анализ', 'вертикальный', 'анализ', 'горизонтальный', 'анализ', 'метод', 'финансовый', 'показатель', 'метод', 'аналитический', 'таблица', 'формирование', 'отчётный', 'материал', 'результат', 'анализ', '2.2.4.3'], ['требование', 'вид', 'обеспечение', 'требование', 'программный', 'обеспечение', 'программный', 'продукт', 'работать', 'платформа', '1с', 'предприятие', '8.1'], ['требование', 'технический', 'обеспечение', 'операционный', 'система', 'ms', 'windows', '98', 'me', 'ms', 'windows', 'nt', '4.0/2000', 'xp', 'server', '2003', 'рекомендоваться', 'ms', 'windows', '2000', 'xp', 'server', '2003', 'процессор', 'intel', 'pentium', 'ii', '400', 'мгц', 'высоко', 'рекомендоваться', 'intel', 'pentium', 'iii', '866', 'мгц', 'оперативный', 'память', '128', 'мбайт', 'высоко', 'рекомендоваться', '256', 'мбайт', 'svga', 'дисплей'], ['2.2.5'], ['состав', 'содержание', 'работа', 'создание', 'система', '2.2.5.1'], ['перечень', 'стадия', 'этап', 'работа', '1', 'систематизация', 'материал', '2', 'описание', 'бизнес', 'процессов', '3', 'формулировка', 'постановка', 'задача', '4', 'подготовка', 'обзор', 'состояние', 'вопрос', '5', 'решение', 'задача', 'экономический', 'раздел', 'дипломный', 'проект', '6', 'проектирование', 'разработка', 'информационный', 'система', '7', 'оформление', 'проект', '2.2.5.2'], ['срок', 'исполнение', '15', 'апрель', '2010_г.', 'этап', '1', '4', '30', 'апрель', '2010_г.', 'этап', '5', '15', 'май', '2010_г.', 'этап', '6', '31', 'май', '2010_г.', 'этап', '7', '2.2.6', 'порядок', 'контроль', 'приёмка', 'система', '2.2.6.1'], ['вид', 'состав', 'объём', 'метод', 'испытание', 'система', 'испытание', 'система', 'проходить', 'факт', 'готовность'], ['метод', 'испытание', 'являться', 'тестовый', 'пример', 'проведение', 'анализ', 'тестовый', '2.2.6.2'], ['общий', 'требование', 'приёмка', 'работа', 'стадия', 'разработка', 'система', 'вестись', 'единый', 'целое', 'особый', 'требование', 'приёмка', 'стадия', 'выдвигаться'], ['2.2.6.3'], ['статус', 'приёмный', 'комиссия', 'состав', 'приёмный', 'комиссия', 'присутствовать', 'главный', 'бухгалтер', 'предприятие', 'два', 'учредитель', 'компания'], ['2.2.7'], ['требование', 'документирование', '2.2.7.1'], ['перечень', 'подлежать', 'разработка', 'документ', 'пояснительный', 'записка', 'структура', 'привести', 'пункт', '2.2.1.6', '2.2.8', 'источник', 'разработка', 'документ', 'информационный', 'материал', 'основание', 'разрабатываться', 'тз', 'система', 'являться', 'требование', 'пожелание', 'руководство', 'предприятие', 'нормативный', 'база', 'проведение', 'финансовый', 'анализ', 'предприятие']]"
        ],
        [
         "11",
         "tz_12.doc",
         "2.2\tТЕХНИЧЕСКОЕ ЗАДАНИЕ\r2.2.1\tОбщие сведения\r2.2.1.1 Полное наименование системы: Учёт фотоуслуг.\r2.2.1.2 Шифр темы: УФ.\r2.2.1.3 Наименование предприятия заказчика: Ульяновский государственный технический университет.\r2.2.1.4 Основание для разработки системы: Задание на выполнение дипломного проекта. \r2.2.1.5 Плановые сроки начала и окончания работ\rНачало работ: 1 апреля 2010 г.\rОкончание работ: 31 мая 2010 г.\r2.2.1.6 Порядок оформления и предъявления заказчику \u000bрезультатов работ\rРезультаты работ оформляются в виде пояснительной записки, иллюстративного материала и ИС. «Пояснительная записка является основным документом, в котором излагаются исчерпывающие сведения о выполненном дипломном проекте» [1, с.8].\r«Структура пояснительной записки включает: \rтитульный лист (Приложение 4); \rзадание на выполнение дипломного проекта (Приложение 2);\rсодержание (на первой странице содержания располагается основная надпись по форме 2); \rаннотация (Приложение 5); \rперечень сокращений, символов и специальных терминов с их определениями; \rвведение;\rосновная часть (главы);\rзаключение;\rсписок использованной литературы; \rприложения» [1, с.9].\r\r2.2.2\tНазначение и цели создания системы\r2.2.2.1 Вид автоматизируемой деятельности: учёт фотоуслуг и подготовка отчётов.\r2.2.2.2 Перечень объектов, на которых предполагается \u000bиспользование системы: Автоматизированное рабочее место фотографа.\r2.2.2.3 Цели создания ИС\rЦелью проектирования ИС является сокращение посредствам автоматизации затрат времени на выполнение следующих функций:\rучёт совершённых операций (фиксация информации о событиях);\rподготовка данных для анализа (осуществления расчётных процедур);\rпредставления информации для анализа в наглядном виде (отчёты).\r\r2.2.3\tХарактеристика объектов автоматизации\r2.2.3.1 Краткие сведения об объекте автоматизации\rОбъектом автоматизации является деятельность фотографа в срезе вспомогательной деятельности, указанной в пункте 2.2.2.3.\r2.2.3.2 Сведения об условиях эксплуатации и характеристиках окружающей среды\rКлиматические условия эксплуатации должны удовлетворять требованиям, предъявляемым к техническим средствам в части условий их эксплуатации.\r\r2.2.4\tТребования к системе:\r2.2.4.1 Требования к системе в целом:\r2.2.4.1.1 Требования к персоналу\rКоличество персонала, требуемого для работы программы, должно составлять 1 штатную единицу — конечный пользователь программы — фотограф. Фотограф должен быть уверенным пользователем ПК.\r2.2.4.1.2 Требования к надежности\rНадёжное (устойчивое) функционирование программы должно быть обеспечено выполнением фотографом совокупности организационно-технических мероприятий, перечень которых приведён ниже:\rорганизацией бесперебойного питания технических средств;\rрегулярным выполнением рекомендаций Министерства труда и социального развития РФ, изложенных в постановлении от 23 июля 1998г. «Об утверждении межотраслевых типовых норм времени на работы по сервисному обслуживанию ПЭВМ и оргтехники и сопровождению программных средств»;\rрегулярным выполнением требований ГОСТ 51188-98. Защита информации. Испытания программных средств на наличие компьютерных вирусов.\rОтказы программы вследствие некорректных действий пользователя при взаимодействии с программой через интерфейс недопустим.\r2.2.4.1.3 Требования к интерфейсу программы: Классический интерфейс Windows.\r2.2.4.2 Требования к функциям\rПрограмма должна обеспечивать выполнение перечисленных ниже функций:\r2.2.4.2.1Ввод, хранение и вывод информации, соответствующей операциям:\rоформить заказ (номер заказа, дата, наименование заказа, срок исполнения, комментарий, стоимость заказа, вид фотосъёмки, продолжительность фотосъёмки, дата съемки, время съемки, результат съёмки, количество результирующих продуктов; оформленный заказ будем называть договором);\rзакупка материалов (номер, дата, поставщик, наименование материала, цена единицы, количество единиц, сумма покупки);\rрасход материалов в рамках заказа (номер, дата, договор, наименование расходного материала, количество расходного материала);\rсписание брака (номер, дата, наименование расходного материала, количество расходного материала);\rпечать (номер, дата, заказ, кто оказывает услуги, вид печати, цена за единицу, количество единиц, сумма печати);\rоплата заказа (номер, дата, заказ, вносимая сумма);\rзаказ выполнен (номер, дата, договор);\rаренда (номер, дата, договор, предмет договора аренды, контрагент, дата съёмки, время съёмки, продолжительность, стоимость аренды);\rоплата работы (номер, дата, работник, сумма);\rпрочие расходы (номер, дата, вид расхода, сумма, комментарий)\rДанные для ввода информации по операциям должны иметь следующую структуру:\rзаказчики (код, ФИО, дата рождения, телефон, идентификационный номер в социальной сети «В контакте», электронный адрес, комментарий);\rконтрагенты (код, наименование, режим работы, улица, дом, офис, телефон, электронный адрес, комментарий);\rработники (код, ФИО, комментарий, является ли ИП);\rрасходные материалы (код, наименование материала);\rвиды фотосъёмки (код, наименование, описание);\rвиды результата (код, наименование, описание);\rвид печати(код, наименование, описание);\rоборудование (код, наименование, контрагент, комментарий);\rстудии (код, наименование, контрагент, комментарий);\rпрочие расходы (код, наименование).\r2.2.4.2.2 Вывод следующей информации о заказе (состояние заказа) на экран и на печать на конкретную дату:\rномер заказа;\rдата, на которую действительна информация;\rкогда принят заказ;\rсуть заказа;\rвыполнен ли заказ;\rкакая сумма внесена заказчиком;\rоплачен ли заказ;\rна заказ произведено затрат;\rесли заказ выполнен, то какова ожидаемая прибыль от заказа (разница между суммой прихода денежных средств и суммой произведённых для выполнения данного заказа расходов).\r2.2.4.2.3Вывод списка активных заказов (не выполненных и/или не оплаченных):\rномер договора;\rназвание;\rоплачен ли заказ либо сколько внесено денежных средств;\rвыполнен ли заказ\rДолжна быть предусмотрена возможность быстрого перехода к просмотру состояния любого заказа из выведенного списка.\r2.2.4.2.4 Вывод остатков материалов на выбранную дату (наименование материала и количество).\r2.2.4.2.5 Вывод информации по выданной зарплате за выбранный период по месяцам (период, работник, сумма).\r2.2.4.2.6 Вывод остатка в кассе на выбранную дату.\r2.2.4.2.7 Отразить динамику прибыли (доходы минус расходы за период) за выбранный промежуток времени с заданной периодичностью (год или месяц): значения прибыли в периоде и изменение прибыли в % в к предыдущему периоду. Значения вывести в числовом и наглядном представлении (график в абсолютных единицах и гистограмма изменения).\r2.2.4.2.8 Вывод информации, детализирующей доход и расходы по месяцам за выбранный период. Для каждого месяца, должна быть выведена сумма прихода по каждому виду съёмки, сумма общего прихода денежных средств, сумма по каждому виду расхода (со знаком минус) и по всем расходам в целом. Данные должны быть представлены в табличной форме и на графике. При необходимости должна быть возможность скрыть на графике любой вид дохода/расхода, при этом ещё одна таблица должна отображать значения только выведенных доходов/расходов.\r2.2.4.2.9 Вывод для выбранного месяца списка заказчиков, день рождения которых в этом месяце (ФИО, день рождения, телефон).\r\r2.2.4.3 Требования к видам обеспечения:\r2.2.4.3.1 Требования к программному обеспечению\rПрограммный продукт должен работать на платформе 1С:Предприятие 8.1.\r2.2.4.3.2 Требования к техническому обеспечению:\rоперационная система: MS Windows 98/Me, MS Windows NT 4.0/2000/XP/Server 2003 (рекомендуется MS Windows 2000/XP/Server 2003);\rпроцессор Intel Pentium II 400 МГц и выше (рекомендуется Intel Pentium III 866 МГц);\rоперативная память 128 Мбайт и выше (рекомендуется 256 Мбайт);\rжесткий диск (при установке используется около 120 Мбайт);\rустройство чтения компакт дисков;\rUSB-порт;\rSVGA дисплей.\r\r2.2.5\tСостав и содержание работ по созданию системы\r2.2.5.1 Перечень стадий и этапов работ: 1 – систематизация материала, 2 – описание бизнес-процессов, 3 – формулировка постановки задачи, 4 – подготовка обзора состояния вопроса, 5 – решение задач экономического раздела дипломного проекта, 6 – проектирование и разработка информационной системы, 7 – оформление проекта.\r2.2.5.2 Сроки исполнения \r15 апреля 2010 г.: этапы 1 –4;\r30 апреля 2010г.: этап 5;\r15 мая 2010г.: этап 6;\r31 мая 2010г.: этап 7.\r\r2.2.6\tПорядок контроля и приемки системы\rВ соответствии с учебным планом.\r\r2.2.7\tТребования к документированию\r2.2.7.1 Перечень подлежащих разработке документов\rПояснительная записка, структура которой приведена в пункте 2.2.1.6",
         "1",
         "[['2.2', 'техническое', 'задание', '2.2.1', 'общий', 'сведение', '2.2.1.1', 'полный', 'наименование', 'система', 'учёт', 'фотоуслуг'], ['2.2.1.2', 'шифр', 'тема', 'уф', '2.2.1.3', 'наименование', 'предприятие', 'заказчик', 'ульяновский', 'государственный', 'технический', 'университет', '2.2.1.4', 'основание', 'разработка', 'система', 'задание', 'выполнение', 'дипломный', 'проект'], ['2.2.1.5', 'плановый', 'срок', 'окончание', 'работа', 'начало', 'работа', '1', 'апрель', '2010_г.', 'окончание', 'работа', '31', 'май', '2010_г.', '2.2.1.6', 'порядок', 'оформление', 'предъявление', 'заказчик', 'результат', 'работа', 'результат', 'работа', 'оформляться', 'вид', 'пояснительный', 'записка', 'иллюстративный', 'материал', 'ис'], ['пояснительный', 'записка', 'являться', 'основный', 'документ', 'излагаться', 'исчерпывающий', 'сведение', 'выполнить', 'дипломный', 'проект', '1', 'с.8'], ['структура', 'пояснительный', 'записка', 'включать', 'титульный', 'лист', 'приложение', '4', 'задание', 'выполнение', 'дипломный', 'проект', 'приложение', '2', 'содержание', 'первый', 'страница', 'содержание', 'располагаться', 'основный', 'надпись', 'форма', '2'], ['аннотация', 'приложение', '5', 'перечень', 'сокращение', 'символ', 'специальный', 'термин', 'определениями', 'введение', 'основный', 'часть', 'глава', 'заключение', 'список', 'использовать', 'литература', 'приложение', '1', 'с.9'], ['2.2.2', 'назначение', 'цель', 'создание', 'система', '2.2.2.1', 'вид', 'автоматизировать', 'деятельность', 'учёт', 'фотоуслуг', 'подготовка', 'отчёт'], ['2.2.2.2', 'перечень', 'объект', 'предполагаться', 'использование', 'система', 'автоматизированный', 'рабочий', 'место', 'фотограф'], ['2.2.2.3', 'цель', 'создание', 'ис', 'цель', 'проектирование', 'ис', 'являться', 'сокращение', 'посредствам', 'автоматизация', 'затрата', 'время', 'выполнение', 'следующий', 'функция', 'учёт', 'совершить', 'операция', 'фиксация', 'информация', 'событие', 'подготовка', 'анализ', 'осуществление', 'расчётный', 'процедура', 'представление', 'информация', 'анализ', 'наглядный', 'вид', 'отчёт'], ['2.2.3', 'характеристика', 'объект', 'автоматизация', '2.2.3.1', 'краткий', 'сведение', 'объект', 'автоматизация', 'объект', 'автоматизация', 'являться', 'деятельность', 'фотограф', 'срез', 'вспомогательный', 'деятельность', 'указать', 'пункт', '2.2.2.3'], ['2.2.3.2', 'сведение', 'условие', 'эксплуатация', 'характеристика', 'окружать', 'среда', 'климатический', 'условие', 'эксплуатация', 'удовлетворять', 'требование', 'предъявлять', 'технический', 'средство', 'часть', 'условие', 'эксплуатация'], ['2.2.4', 'требование', 'система', '2.2.4.1', 'требование', 'система', 'целое', '2.2.4.1.1', 'требование', 'персонал', 'количество', 'персонал', 'требуемого', 'работа', 'программа', 'составлять', '1', 'штатный', 'единица', 'конечный', 'пользователь', 'программа', 'фотограф'], ['фотограф', 'уверенный', 'пользователь', 'пк', '2.2.4.1.2'], ['требование', 'надёжность', 'надёжный', 'устойчивый', 'функционирование', 'программа', 'обеспечить', 'выполнение', 'фотограф', 'совокупность', 'организационно', 'технический', 'мероприятие', 'перечень', 'привести', 'организация', 'бесперебойный', 'питание', 'технический', 'средство', 'регулярный', 'выполнение', 'рекомендация', 'министерство', 'труд', 'социальный', 'развитие', 'рф', 'изложить', 'постановление', '23', 'июль', '1998', 'г.', 'утверждение', 'межотраслевой', 'типовой', 'норма', 'время', 'работа', 'сервисный', 'обслуживание', 'пэвм', 'оргтехника', 'сопровождение', 'программный', 'средство', 'регулярный', 'выполнение', 'требование', 'гост', '51188', '98'], ['защита', 'информация'], ['испытание', 'программный', 'средство', 'наличие', 'компьютерный', 'вирус'], ['отказ', 'программа', 'вследствие', 'некорректный', 'действие', 'пользователь', 'взаимодействие', 'программа', 'интерфейс', 'недопустимый'], ['2.2.4.1.3', 'требование', 'интерфейс', 'программа', 'классический', 'интерфейс', 'windows', '2.2.4.2', 'требование', 'функция', 'программа', 'обеспечивать', 'выполнение', 'перечислить', 'функция', '2.2.4.2.1ввод', 'хранение', 'вывод', 'информация', 'соответствовать', 'операция', 'оформить', 'заказ', 'номер', 'заказ', 'дата', 'наименование', 'заказ', 'срок', 'исполнение', 'комментарий', 'стоимость', 'заказ', 'вид', 'фотосъёмка', 'продолжительность', 'фотосъёмка', 'дата', 'съёмка', 'время', 'съёмка', 'результат', 'съёмка', 'количество', 'результирующих', 'продукт', 'оформить', 'заказ', 'называть', 'договор', 'закупка', 'материал', 'номер_дата', 'поставщик', 'наименование', 'материал', 'цена', 'единица', 'количество', 'единица', 'сумма', 'покупка', 'расход', 'материал', 'рамка', 'заказ', 'номер_дата', 'договор', 'наименование', 'расходный', 'материал', 'количество', 'расходный', 'материал', 'списание', 'брак', 'номер_дата', 'наименование', 'расходный', 'материал', 'количество', 'расходный', 'материал', 'печать', 'номер_дата', 'заказ', 'оказывать', 'услуга', 'вид', 'печать', 'цена', 'единица', 'количество', 'единица', 'сумма', 'печать', 'оплата', 'заказ', 'номер_дата', 'заказ', 'вносить', 'сумма', 'заказ', 'выполнить', 'номер_дата', 'договор', 'аренда', 'номер_дата', 'договор', 'предмет', 'договор', 'аренда', 'контрагент', 'дата', 'съёмка', 'время', 'съёмка', 'продолжительность', 'стоимость', 'аренда', 'оплата', 'работа', 'номер_дата', 'работник', 'сумма', 'прочие', 'расход', 'номер_дата', 'вид', 'расход', 'сумма', 'комментарий', 'ввод', 'информация', 'операция', 'следующий', 'структура', 'заказчик', 'код', 'фио', 'дата', 'рождение', 'телефон', 'идентификационный', 'номер', 'социальный', 'сеть', 'контакт', 'электронный', 'адрес', 'комментарий', 'контрагент', 'код_наименование', 'режим', 'работа', 'улица', 'дом', 'офис', 'телефон', 'электронный', 'адрес', 'комментарий', 'работник', 'код', 'фио', 'комментарий', 'являться', 'ип', 'расходный', 'материал', 'код_наименование', 'материал', 'вид', 'фотосъёмка', 'код_наименование', 'описание', 'вид', 'результат', 'код_наименование', 'описание', 'вид', 'печати(код', 'наименование', 'описание', 'оборудование', 'код_наименование', 'контрагент', 'комментарий', 'студия', 'код_наименование', 'контрагент', 'комментарий', 'прочие', 'расход', 'код_наименование'], ['2.2.4.2.2', 'вывод', 'следующий', 'информация', 'заказ', 'состояние', 'заказ', 'экран', 'печать', 'конкретный', 'дата', 'номер', 'заказ', 'дата', 'действительный', 'информация', 'принять', 'заказ', 'заказ', 'выполнить', 'заказ', 'сумма', 'внести', 'заказчик', 'оплатить', 'заказ', 'заказ', 'произвести', 'затрата', 'заказ', 'выполнить', 'какова', 'ожидать', 'прибыль', 'заказ', 'разница', 'сумма', 'приход', 'денежный', 'средство', 'сумма', 'произвести', 'выполнение', 'заказ', 'расход'], ['2.2.4.2.3вывод', 'список', 'активный', 'заказ', 'выполнить', 'оплатить', 'номер', 'договор', 'название', 'оплатить', 'заказ', 'внести', 'денежный', 'средство', 'выполнить', 'заказ', 'предусмотреть', 'возможность', 'быстрый', 'переход', 'просмотр', 'состояние', 'заказ', 'вывести', 'список'], ['2.2.4.2.4', 'вывод', 'остаток', 'материал', 'выбрать', 'дата', 'наименование', 'материал', 'количество'], ['2.2.4.2.5', 'вывод', 'информация', 'выдать', 'зарплата', 'выбрать', 'период', 'месяц', 'период', 'работник', 'сумма'], ['2.2.4.2.6', 'вывод', 'остаток', 'касса', 'выбрать', 'дата'], ['2.2.4.2.7', 'отразить', 'динамика', 'прибыль', 'доход', 'минус', 'расход', 'период', 'выбрать', 'промежуток', 'время', 'задать', 'периодичность', 'год', 'месяц', 'значение', 'прибыть', 'период', 'изменение', 'прибыль', 'предыдущий', 'период'], ['значение', 'вывести', 'числовой', 'наглядный', 'представление', 'график', 'абсолютный', 'единица', 'гистограмма', 'изменение'], ['2.2.4.2.8', 'вывод', 'информация', 'детализировать', 'доход', 'расход', 'месяц', 'выбрать', 'период'], ['каждый', 'месяц', 'вывести', 'сумма', 'приход', 'каждый', 'вид', 'съёмки', 'сумма', 'общий', 'приход', 'денежный', 'средство', 'сумма', 'каждый', 'вид', 'расход', 'знак', 'минус', 'расход', 'целое'], ['представить', 'табличный', 'форма', 'график'], ['возможность', 'скрыть', 'график', 'вид', 'доход', 'расход', 'таблица', 'отображать', 'значение', 'вывести', 'доход', 'расход'], ['2.2.4.2.9', 'вывод', 'выбрать', 'месяц', 'список', 'заказчик', 'день', 'рождение', 'месяц', 'фио', 'день', 'рождение', 'телефон'], ['2.2.4.3', 'требование', 'вид', 'обеспечение', '2.2.4.3.1', 'требование', 'программный', 'обеспечение', 'программный', 'продукт', 'работать', 'платформа', '1с', 'предприятие', '8.1'], ['2.2.4.3.2', 'требование', 'технический', 'обеспечение', 'операционный', 'система', 'ms', 'windows', '98', 'me', 'ms', 'windows', 'nt', '4.0/2000', 'xp', 'server', '2003', 'рекомендоваться', 'ms', 'windows', '2000', 'xp', 'server', '2003', 'процессор', 'intel', 'pentium', 'ii', '400', 'мгц', 'высоко', 'рекомендоваться', 'intel', 'pentium', 'iii', '866', 'мгц', 'оперативный', 'память', '128', 'мбайт', 'высоко', 'рекомендоваться', '256', 'мбайт', 'жёсткий', 'диск', 'установка', 'использоваться', '120', 'мбайт', 'устройство', 'чтение', 'компакт', 'диск', 'usb', 'порт', 'svga', 'дисплей'], ['2.2.5', 'состав', 'содержание', 'работа', 'создание', 'система', '2.2.5.1', 'перечень', 'стадия', 'этап', 'работа', '1', 'систематизация', 'материал', '2', 'описание', 'бизнес', 'процессов', '3', 'формулировка', 'постановка', 'задача', '4', 'подготовка', 'обзор', 'состояние', 'вопрос', '5', 'решение', 'задача', 'экономический', 'раздел', 'дипломный', 'проект', '6', 'проектирование', 'разработка', 'информационный', 'система', '7', 'оформление', 'проект'], ['2.2.5.2', 'сроки', 'исполнение', '15', 'апрель', '2010_г.', 'этап', '1', '4'], ['30', 'апрель', '2010_г.', 'этап', '5', '15', 'май', '2010_г.', 'этап', '6', '31', 'май', '2010_г.', 'этап', '7'], ['2.2.6', 'порядок', 'контроль', 'приёмка', 'система', 'соответствие', 'учебный', 'план'], ['2.2.7', 'требование', 'документирование', '2.2.7.1', 'перечень', 'подлежать', 'разработка', 'документ', 'пояснительный', 'записка', 'структура', 'привести', 'пункт', '2.2.1.6']]"
        ],
        [
         "12",
         "tz_13.doc",
         "2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\r2.2.1. Общие сведения\rВ данной главе представлены общие сведения о системе:\rполное наименование системы и ее условное обозначение:  Документооборот. ИФНС;\rшифр темы или шифр (номер) договора: данный программный продукт разрабатывался в рамках дипломного проектирования, какой-либо договор не заключался; \rнаименование предприятий разработчика и заказчика системы, их реквизиты: ИФНС;\rплановые сроки начала и окончания работ: 1 марта 2010 года — 30 мая 2010 года;\rсведения об источниках и порядке финансирования работ: данные работы проводятся на абсолютно безвозмездной основе;\rпорядок оформления и предъявления заказчику результатов работ по созданию системы, ее частей и отдельных средств: передача программного продукта не производится.\r\r2.2.2. Назначение и цели создания системы\rРазработанная система предназначена для автоматизации документооборота. Данную систему предполагается использовать в  налоговых инспекциях различных уровней.\r При внедрении ИС должны быть достигнуты следующие цели: \rобеспечить сокращение трудозатрат и времени на обработку и подготовку документов, принятие управленческих решений;\rповысить уровень исполнительской дисциплины и упростить механизм её контроля;\rобеспечить оперативность предоставления услуг населению;\rускорить взаимодействие между подразделениями.\r\r2.2.3. Характеристика объектов автоматизации\rОбъектом автоматизации является инспекция федеральной налоговой службы. Это предприятие специализируется на контроле и надзоре за соблюдением законодательства Российской Федерации о налогах и сборах, за правильностью исчисления, полнотой и своевременностью внесения в соответствующий бюджет налогов и сборов, в случаях, предусмотренных законодательством Российской Федерации, за правильностью исчисления, полнотой и своевременностью внесения в соответствующий бюджет иных обязательных платежей, а также за производством и оборотом этилового спирта, спиртосодержащей, алкогольной и табачной продукции и за соблюдением валютного законодательства Российской Федерации в пределах компетенции налоговых органов.\rФНС осуществляет свою деятельность непосредственно и через свои территориальные органы во взаимодействии с другими федеральными органами исполнительной власти, органами исполнительной власти субъектов Российской Федерации, органами местного самоуправления и государственными внебюджетными фондами, общественными объединениями и иными организациями. \rФНС является уполномоченным федеральным органом исполнительной власти, осуществляющим государственную регистрацию юридических лиц, физических лиц в качестве индивидуальных предпринимателей и крестьянских (фермерских) хозяйств.\r\r2.2.4. Требования к структуре и функционированию системы\rРазработанная система должна состоять из следующих подсистем:\rорганизация процесса ввода, хранения и редактирования документов;\rслежение за сроками исполнения поручений.\rПервая подсистема должна предоставить возможность регистрации всех документов, поступающих в инспекцию, ни один документ не должен быть забыт. \rВторая подсистема должна отслеживать процесс обработки документа: рассмотрение, ознакомление и согласование.\r\r2.2.5. Требования к персоналу\rЧисло человек, работающих с системой, неограниченно. Оно определяется количеством сотрудников в организации.  Кроме того, необходим системный администратор.\rСистемный администратор должен обладать знаниями по администрированию и сопровождению систем, а также выполнять соответствующую настройку и поддержку.\rСотрудники инспекции должны быть квалифицированными сотрудниками и быть знакомыми с основными принципами работы офисных программ.\r\r2.2.6. Степень приспособляемости системы\rДанная система должна быть гибкой в отношении изменения баз данных, должна обеспечивать настройку их параметров.\r\r2.2.7. Требования к системе\rСистема должна быть надежной, т.е. отказоустойчивой к ошибкам пользователя (нарушения правильной последовательности действий).\rОна должна быть удобна для работы пользователя. \r\tДолжна быть предусмотрена возможность обслуживания системы, в том числе и сторонними разработчиками.\r\tДолжна присутствовать авторизация и аутентификация пользователя, возможность тонкой настройки доступа к объектам и функциям системы. \rПрограммный продукт должен быть патентно чист и иметь возможность законно использоваться в коммерческих целях. Разрабатываемый программный продукт является патентно-чистым. Для функционирования системы необходима операционная система Windows.\r\r2.2.8. Требования к видам обеспечения\rСистема предъявляет следующие требования к видам обеспечения:\rинформационному: Microsoft Office;\rлингвистическому: используется язык программирования «Delphi 7»;\rпрограммному и техническому: \rкомпьютер конечного пользователя (рекомендуемые параметры): \rоперационная система: MS Windows 2000/ XP / Vista/ 7; \rпроцессор Intel Pentium III 866 МГц, AMD; \rоперативная память 256 Мбайт; \rкомпьютер, используемый для разработки конфигураций: \rоперационная система: MS Windows 2000/ XP / XP / Vista/ 7 ; \rIntel Pentium IV/Celeron 1800  МГц ; \rоперативная память 512 Мбайт; \rсервер баз данных: \rтехнические характеристики компьютера и операционная система должны соответствовать требованиям Microsoft Access;\rорганизационному: для функционирования системы необходим системный администратор;\rметодическому (состав нормативно-технической документации):\rинструкция программисту; \rинструкция пользователю.\r\r2.2.9. Перечень этапов работ и сроки исполнения\rПеречень этапов работ и сроки исполнения представлены в таблице 1\rТаблица 1\rОсновные этапы работ и сроки их исполнения\r№\r\u0007Выполняемая работа\r\u0007Сроки\r\u0007\r\u00071.\r\u0007Постановка задачи\r\u0007Март 2010 г.\r\u0007\r\u00072.\r\u0007Проектирование \r\u0007Апрель 2010 г.\r\u0007\r\u00073.\r\u0007Кодирование\r\u0007Май 2010 г.\r\u0007\r\u00074.\r\u0007Тестирование и отладка\r\u0007Май 2010 г.\r\u0007\r\u00075.\r\u0007Анализ результатов\r\u0007Июнь 2010г.\r\u0007\r\u0007\r2.2.10. Состав исполнителей работ\rРаботы по созданию системы проводились физическим лицом – Фирсовой Кристиной Эдуардовной, студенткой УлГТУ, под руководством преподавателя кафедры «Информационные системы» Ларионовой Ольги Борисовны.\r\r2.2.11. Перечень подлежащих разработке документов\rинструкция пользователю;\rинструкция системному администратору.",
         "1",
         "[['2.2'], ['техническое', 'задание', '2.2.1'], ['общий', 'сведение', 'глава', 'представить', 'общий', 'сведение', 'система', 'полный', 'наименование', 'система', 'условный', 'обозначение', 'документооборот'], ['ифнс', 'шифр', 'тема', 'шифр', 'номер', 'договор', 'программный', 'продукт', 'разрабатываться', 'рамка', 'дипломный', 'проектирование', 'договор', 'заключаться', 'наименование', 'предприятие', 'разработчик', 'заказчик', 'система', 'реквизит', 'ифнс', 'плановый', 'срок', 'окончание', 'работа', '1', 'март', '2010', 'год', '30', 'май', '2010', 'год', 'сведение', 'источник', 'порядок', 'финансирование', 'работа', 'работа', 'проводиться', 'абсолютно', 'безвозмездный', 'основа', 'порядок', 'оформление', 'предъявление', 'заказчик', 'результат', 'работа', 'создание', 'система', 'часть', 'отдельный', 'средство', 'передача', 'программный', 'продукт', 'производиться', '2.2.2'], ['назначение', 'цель', 'создание', 'система', 'разработанная', 'система', 'предназначить', 'автоматизация', 'документооборот'], ['данную', 'система', 'предполагаться', 'использовать', 'налоговый', 'инспекция', 'различный', 'уровень'], ['внедрение', 'ис', 'достигнуть', 'следующий', 'цель', 'обеспечить', 'сокращение', 'трудозатрата', 'время', 'обработка', 'подготовка', 'документ', 'принятие', 'управленческий', 'решение', 'повысить', 'уровень', 'исполнительский', 'дисциплина', 'упростить', 'механизм', 'контроль', 'обеспечить', 'оперативность', 'предоставление', 'услуга', 'население', 'ускорить', 'взаимодействие', 'подразделение', '2.2.3'], ['характеристика', 'объект', 'автоматизация', 'объект', 'автоматизация', 'являться', 'инспекция', 'федеральный', 'налоговый', 'служба'], ['предприятие', 'специализироваться', 'контроль', 'надзор', 'соблюдение', 'законодательство', 'российский', 'федерация', 'налог', 'сбор', 'правильность', 'исчисление', 'полнота', 'своевременность', 'внесение', 'соответствовать', 'бюджет', 'налог', 'сбор', 'случай', 'предусмотреть', 'законодательство', 'российский', 'федерация', 'правильность', 'исчисление', 'полнота', 'своевременность', 'внесение', 'соответствовать', 'бюджет', 'иных', 'обязательный', 'платёж', 'производство', 'оборот', 'этиловый', 'спирт', 'спиртосодержащий', 'алкогольный', 'табачный', 'продукция', 'соблюдение', 'валютный', 'законодательство', 'российский', 'федерация', 'предел', 'компетенция', 'налоговый', 'орган'], ['фнс', 'осуществлять', 'деятельность', 'непосредственно', 'территориальный', 'орган', 'взаимодействие', 'федеральный', 'орган', 'исполнительный', 'власть', 'орган', 'исполнительный', 'власть', 'субъект', 'российский', 'федерация', 'орган', 'местный', 'самоуправление', 'государственный', 'внебюджетный', 'фонд', 'общественный', 'объединение', 'организация'], ['фнс', 'являться', 'уполномоченный', 'федеральный', 'орган', 'исполнительный', 'власть', 'осуществлять', 'государственный', 'регистрация', 'юридический', 'лицо', 'физический', 'лицо', 'качество', 'индивидуальный', 'предприниматель', 'крестьянский', 'фермерский', 'хозяйство', '2.2.4'], ['требование', 'структура', 'функционирование', 'система', 'разработанная', 'система', 'состоять', 'следующий', 'подсистема', 'организация', 'процесс', 'ввод', 'хранение', 'редактирование', 'документ', 'слежение', 'срок', 'исполнение', 'поручение'], ['первый', 'подсистема', 'предоставить', 'возможность', 'регистрация', 'документ', 'поступать', 'инспекция', 'ни', 'документ', 'забыть'], ['второй', 'подсистема', 'отслеживать', 'процесс', 'обработка', 'документ', 'рассмотрение', 'ознакомление', 'согласование', '2.2.5'], ['требование', 'персонал', 'число', 'человек', 'работать', 'система', 'неограниченный'], ['определяться', 'количество', 'сотрудник', 'организация'], ['необходимый', 'системный', 'администратор'], ['системный', 'администратор', 'обладать', 'знание', 'администрирование', 'сопровождение', 'система', 'выполнять', 'соответствующий', 'настройка', 'поддержка'], ['сотрудник', 'инспекция', 'квалифицированный', 'сотрудник', 'знакомый', 'основный', 'принцип', 'работа', 'офисный', 'программа', '2.2.6'], ['степень', 'приспособляемость', 'система', 'система', 'гибкий', 'отношение', 'изменение', 'база', 'обеспечивать', 'настройка', 'параметр'], ['2.2.7'], ['требование', 'система', 'система', 'надёжный', 'т.е.', 'отказоустойчивой', 'ошибка', 'пользователь', 'нарушение', 'правильный', 'последовательность', 'действие'], ['удобный', 'работа', 'пользователь'], ['предусмотреть', 'возможность', 'обслуживание', 'система', 'число', 'сторонний', 'разработчик'], ['присутствовать', 'авторизация', 'аутентификация', 'пользователь', 'возможность', 'тонкий', 'настройка', 'доступ', 'объект', 'функция', 'система'], ['программный', 'продукт', 'патентный', 'чистый', 'возможность', 'законно', 'использоваться', 'коммерческий', 'цель'], ['разрабатываемый', 'программный', 'продукт', 'являться', 'патентный', 'чистый'], ['функционирование', 'система', 'необходимый', 'операционный', 'система', 'windows', '2.2.8'], ['требование', 'вид', 'обеспечение', 'система', 'предъявлять', 'следующий', 'требование', 'вид', 'обеспечение', 'информационный', 'microsoft', 'office', 'лингвистический', 'использоваться', 'язык', 'программирование', 'delphi', '7', 'программный', 'технический', 'компьютер', 'конечный', 'пользователь', 'рекомендовать', 'параметр', 'операционный', 'система', 'ms', 'windows', '2000/', 'xp', 'vista/', '7', 'процессор', 'intel', 'pentium', 'iii', '866', 'мгц', 'amd', 'оперативный', 'память', '256', 'мбайт', 'компьютер', 'использовать', 'разработка', 'конфигурация', 'операционный', 'система', 'ms', 'windows', '2000/', 'xp', 'xp', 'vista/', '7', 'intel', 'pentium', 'iv', 'celeron', '1800', 'мгц', 'оперативный', 'память', '512', 'мбайт', 'сервер', 'база', 'технический', 'характеристика', 'компьютер', 'операционный', 'система', 'соответствовать', 'требование', 'microsoft', 'access', 'организационный', 'функционирование', 'система', 'необходимый', 'системный', 'администратор', 'методический', 'состав', 'нормативный', 'технический', 'документация', 'инструкция', 'программист', 'инструкция', 'пользователь', '2.2.9'], ['перечень', 'этап', 'работа', 'срок', 'исполнение', 'перечень', 'этап', 'работа', 'срок', 'исполнение', 'представить', 'таблица', '1', 'таблица', '1', 'основный', 'этап', 'работа', 'срок', 'исполнение', '№', '\\x07выполняемая', 'работа', '\\x07сроки', '\\x07', '\\x071'], ['\\x07постановка', 'задача', '\\x07март', '2010', 'г.', '\\x07', '\\x072'], ['\\x07проектирование', '\\x07апрель', '2010', 'г.', '\\x07', '\\x073'], ['\\x07кодирование', '\\x07май', '2010', 'г.', '\\x07', '\\x074'], ['\\x07тестирование', 'отладка', '\\x07май', '2010', 'г.', '\\x07', '\\x075'], ['\\x07анализ', 'результат', '\\x07июнь', '2010', 'г.', '\\x07', '\\x07', '2.2.10'], ['состав', 'исполнитель', 'работа', 'работа', 'создание', 'система', 'проводиться', 'физический', 'лицо', 'фирсовой', 'кристина', 'эдуардович', 'студентка', 'улгту', 'руководство', 'преподаватель', 'кафедра', 'информационный', 'система', 'ларионовой', 'ольга', 'борисович'], ['2.2.11'], ['перечень', 'подлежать', 'разработка', 'документ', 'инструкция', 'пользователь', 'инструкция', 'системный', 'администратор']]"
        ],
        [
         "13",
         "tz_14.doc",
         "ТЕХНИЧЕСКОЕ ЗАДАНИЕ\rРассмотрев общие требования и составив представление о предметной области, приступим к разработке технического задания. \rТехническое задание составлено по ГОСТ 34.602-89. \r\r Общие сведения\rВ данной главе представлены общие сведения о системе:\rПолное наименование системы и ее условное обозначение: web-сайт компании строительных материалов «Новый Стандарт».\rШифр темы или шифр (номер) договора: данный программный продукт разрабатывался вне рамок какого-либо договора, а в рамках дипломного проектирования.\rПеречень документов, на основании которых создается информационная система: задание на дипломное проектирование.\rПлановые сроки начала и окончания работ: с 01.02.2010 по 31.05.2010.\rСведения об источниках и порядке финансирования работ: данные работы проводятся на безвозмездной основе;\rПорядок оформления и предъявления заказчику результатов работ по созданию системы, ее частей и отдельных средств: по окончанию работ заказчику должны быть предъявлены и переданы диск с данными проекта,  набор инструкций и документации для полноценного функционирования сайта.\r\r Назначение и цели создания системы\rСайт компании строительных материалов «Новый стандарт» создаётся для достижения следующих целей:\rраспространение информации о компании, ее продукции и услугах; \rформирование благоприятного имиджа фирмы; \rполучение от потребителей оперативной информации;\rдополнительная рекламная компания – расширить сферу влияния и узнаваемости\rПеречень объектов, на которых предполагается использование системы: данную систему предполагается использовать в организации.\r\t    При внедрении ИС должны быть достигнуты следующие показатели: \rтехнологические: упрощение процедуры анализа проведенных мероприятий;\rэкономических: должно быть увеличение количества объемов продаж и предложений на услуги компании.\r\rХарактеристика объектов автоматизации\rОбъектом автоматизации является подача информации, консультация посетителей, техническая поддержка, получение отзывов. \rПользователями сайта выступают клиенты, заинтересованные в услугах компании.\rТребования к условиям эксплуатации и характеристиках окружающей среды отсутствуют.\r\r Требования к системе\rТребования к системе в целом\rРазработанная система сайта должна состоять из следующих подсистем: \rдоступа к БД MySQL\rпользовательского интерфейса\rвизуализации данных\rхранения данных\rклассов уровня приложения\rПодсистема доступа к БД должна позволять легко изменять структуру БД без изменения большей части программы, обеспечить корректную загрузку и выгрузку данных, правильную работу запросов и снижать вероятность ошибок.\rПодсистема пользовательского интерфейса должна обеспечивать динамическую сборку страниц, легкость корректировки отдельных частей и отсутствие конфликтов между ними, правильный вывод страниц.\rПодсистема визуализации данных должна корректно и визуально привлекательно для пользователя предоставлять информацию.\rСтруктура таблиц БД, каталогов и файлов подсистемы хранения данных должна быть разработана таким образом, что бы легко было найти и изменить хранящуюся в них информацию.\rПодсистема классов должна строится таким образом чтобы каждый класс обладал хорошо определённой сферой ответственности. Код должен быть снабжен комментариями и был понятен другому программисту.\rВ проекте должно быть несколько режимов функционирования. Режим администратора и режим пользователя.\rВ перспективе развитие системы должно быть легко осуществимо. Возможно добавление новых сервисов.\rТребования к персоналу\rДля функционирования системы необходим 1 человек: администратор.\rСистемный администратор должен уметь работать с оболочкой phpMyAdmin, обладать знаниями по web-программированию, в частности на языке php, HTML,CSS.\rТребования к системе.\rСистема должна быть надежной: отказоустойчивой к ошибкам пользователя (нарушения правильной последовательности действий), ошибкам в загружаемых данных. Также система должна восстанавливаться после различных сбоев (отключение электричества, сбой в работе операционной системы, оборудования т т.д.). За данный функционал отвечает сервер MySQL\rПрограммный комплекс должен быть кросс-платформенен, легко мигрировать на разные архитектуры серверов и операционные системы. \rПродукт должен обладать  эргономичным и интуитивно-понятным интерфейсом. Расположение  управляющих элементов и меню должно быть выполнено в привычном стиле. Цветовая гамма оформления должна быть подобрана таким образом, чтобы обеспечить удобочитаемость информации;\rДолжна быть предусмотрена возможность обновления и обслуживания системы, в том числе и сторонними разработчиками. Возможность расширения функционала приложений.\rТребования к функциям\rПеречень подлежащих автоматизации задач\rОбщие функции, доступные всем типам пользователей:\rПоиск информации по ключевому слову;\rОрганизация обратной связи;\rВозможность выставления рейтинга статьи.\rФункции, доступные для Администратора:\rАдминистрирование общих настроек сайта: установка размеров изображений, метаданных ресурса, оформления;\rДобавление/редактирование/удаление данных.\rПеречень и критерии отказов\rВ процессе работы с программной системой могут возникать ошибки.\rфатальные ошибки – ошибки, в результате которых нарушается нормальная работоспособность ресурса. К ним относятся взломы, ошибки в кодировании;\rсущественные ошибки – те, в результате которых работоспособность ресурса в целом сохраняется, однако запрос пользователя выполняется некорректно. К ним относится появление на экране сообщений об ошибках в SQL-запросах, перенаправление пользователя на несуществующие страницы;\rошибки средней значимости в виде очевидных ошибок позиционирования элементов дизайна;\rнесущественные ошибки, в результате появления которых затрудняется восприятие информации. К ним относятся орфографические, пунктуационные, стилистические ошибки текстов, применение неудобочитаемого цвета и размера текста.\rТребования к видам обеспечения\rК видам обеспечения предъявлены следующие требования:\rинформативные. Для хранения данных использовать СУБД MySQL, запущенную на удаленном, либо этом же компьютере. Для выполнения скриптов, написанных на языке PHP понадобится интерпретатор PHP. Для управления базами данных phpMyAdmin.\rлингвистические. Использовать язык программирования PHP, язык запросов SQL, язык описания HTML, язык разметки CSS, XML. Пользователи взаимодействуют с системой на русском языке по умолчанию;\rпрограммному и техническому: \rХарактеристики компьютера пользователя: \rоперационная система: Windows/Linux/MacOS/Solaris; \rIntel Pentium III/Celeron 800  МГц ; \rоперативная память 256 Мбайт;  \rСерверная часть:\rоперационная система: Windows/Linux/MacOS/Solaris; \rweb-сервер «Apache» c поддержкой языка программирования PHP версии 4.1 и выше, БД MySQL версии 4.0 и выше;\rIntel Pentium III/Celeron 800  МГц ; \rоперативная память 1Гб; \rжесткий диск с объемом памяти не менее 20Гб;\rналичие на сервере возможности использования СУБД MySQL, объем не менее 1 Гб;\rжелательно наличие phpMyAdmin для администрирования БД;\rНеобходимый набор программ пользователя:\rбраузер Internet Explorer/ Opera и др.; \rНеобходимый набор программ администратора:\rбраузер Internet Explorer/ Opera и др.; \rжелательно наличие phpMyAdmin для администрирования БД;\rтекстовый редактор\rорганизационные. Для функционирования системы необходим 1 человек - администратор.\rСистемный администратор должен уметь работать с оболочкой phpMyAdmin, обладать знаниями по web-программированию, в частности на языке php\r\t\tДля обеспечения требуемой надёжности необходимо один раз в месяц производить выгрузку данных из БД и производить резервное копирование данных.\rметодические.\rИнструкция программисту\rИнструкция администратору \rИнструкция пользователю\r\r Состав и содержание работ по созданию системы\rПеречень этапов работ и сроки их исполнения приведены в таблице 1.\r\rТаблица 1\rПериод учебного процесса\r\u0007Кол-во недель\r\u0007Ориентировочные сроки\r\u0007Выполняемые работы\r\u0007\r\u0007\r\u00076 недель\r\u0007Февраль-Март\r\r\u0007сбор фактического материала по теме диплома; обзор состояния вопроса и анализ предметной области; составление плана работы\r\u0007\r\u0007дипломное \u000bпроектирование\r\u00072 недели\r\u0007Апрель-Май\r\r\u0007систематизация материала; описание бизнес-процессов, формулировка постановки задачи, подготовка обзора состояния вопроса\r\u0007\r\u0007\r\u00072 недели\r\u0007\r\u0007решение задач экономического раздела дипломного проекта \r\u0007\r\u0007\r\u00076 недель\r\u0007\r\u0007проектирование и разработка предметно-ориентированной информационной системы\r\u0007\r\u0007\r\u00072 недели\r\u0007\r\u0007оформление проекта \r\u0007\r\u0007Защита\r\u00072 недели\r\u0007Июнь\r\u0007защита проекта перед Государственной \u000bаттестационной комиссией\r\u0007\r\u0007\r Порядок контроля и приемки системы\rВиды, состав, объем и методы испытаний системы\rИспытанию должны подвергнуться основные функции и модули системы. Необходимо обеспечить отсутствие MySQL, PHP, JavaScript ошибок при выполнении основных функций. Методы испытания не регламентируются.\rОбщие требования к приемке работ по стадиям\rКаждая стадия работ завершается вводом тестовых данных в рамках соответствующей функциональности. После чего проводятся испытания основных функций реализованного модуля. В случае возникновения критических или серьёзных ошибок необходимо провести исследование системы с целью их устранения.\rСтатус приемной комиссии\rВ роли приёмной комиссией выступает руководитель дипломного проекта – Евсеева О.Н. доцент кафедры «Информационные системы».\rИсполнитель работы\rРаботы по созданию проекта проводились - студенткой УлГТУ, Шаныгиной В.В. гр. ИСЭд-52.\r\rТребования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие\rПреобразование входной информации к машиночитаемому виду\r\t\tЗаполнение наиболее важной для функционирования сайта информации будет производиться администраторами. \rИзменения в объекте автоматизации\r\t\tУстановка сайта на сервер выбранного провайдера возложена на исполнителя проекта.\rСроки и порядок комплектования и обучения персонала\r\t\tВ обучение персонала нет необходимости, поскольку необходимы лишь базовые представления администратора о функционировании сайтов.\r\rТребования к документированию\rПеречень подлежащих разработке документов включает:\rИнструкция пользователю\rИнструкция программисту\rИнструкция системному администратору\r\rИсточники разработки\rТехническое задание полностью разрабатывается исполнителем на основе предпочтений заказчика. Заказчиком является компания «Новый Стандарт».",
         "1",
         "[['техническое', 'задание', 'рассмотреть', 'общий', 'требование', 'составить', 'представление', 'предметный', 'область', 'приступить', 'разработка', 'технический', 'задание'], ['технический', 'задание', 'составить', 'гост', '34.602', '89'], ['общий', 'сведение', 'глава', 'представить', 'общий', 'сведение', 'система', 'полный', 'наименование', 'система', 'условный', 'обозначение', 'web', 'сайт', 'компания', 'строительный', 'материал', 'новый', 'стандарт'], ['шифр', 'тема', 'шифр', 'номер', 'договор', 'программный', 'продукт', 'разрабатываться', 'рамка', 'договор', 'рамка', 'дипломный', 'проектирование'], ['перечень', 'документ', 'основание', 'создаваться', 'информационный', 'система', 'задание', 'дипломный', 'проектирование'], ['плановый', 'срок', 'окончание', 'работа', '01.02.2010', '31.05.2010', 'сведение', 'источник', 'порядок', 'финансирование', 'работа', 'работа', 'проводиться', 'безвозмездный', 'основа', 'порядок', 'оформление', 'предъявление', 'заказчик', 'результат', 'работа', 'создание', 'система', 'часть', 'отдельный', 'средство', 'окончание', 'работа', 'заказчик', 'предъявить', 'передать', 'диск', 'данными', 'проект', 'набор', 'инструкция', 'документация', 'полноценный', 'функционирование', 'сайт'], ['назначение', 'цель', 'создание', 'система', 'сайт', 'компания', 'строительный', 'материал', 'новый', 'стандарт', 'создаваться', 'достижение', 'следующий', 'цель', 'распространение', 'информация', 'компания', 'продукция', 'услуга', 'формирование', 'благоприятный', 'имидж', 'фирма', 'получение', 'потребитель', 'оперативный', 'информация', 'дополнительный', 'рекламный', 'компания', 'расширить', 'сфера', 'влияние', 'узнаваемость', 'перечень', 'объект', 'предполагаться', 'использование', 'система', 'данную', 'система', 'предполагаться', 'использовать', 'организация'], ['внедрение', 'ис', 'достигнуть', 'следующий', 'показатель', 'технологический', 'упрощение', 'процедура', 'анализ', 'провести', 'мероприятие', 'экономический', 'увеличение', 'количество', 'объём', 'продажа', 'предложение', 'услуга', 'компания'], ['характеристика', 'объект', 'автоматизация', 'объект', 'автоматизация', 'являться', 'подача', 'информация', 'консультация', 'посетитель', 'технический', 'поддержка', 'получение', 'отзыв'], ['пользователь', 'сайт', 'выступать', 'клиент', 'заинтересованный', 'услуга', 'компания'], ['требование', 'условие', 'эксплуатация', 'характеристика', 'окружать', 'среда', 'отсутствовать'], ['требование', 'система', 'требование', 'система', 'целое', 'разработанная', 'система', 'сайт', 'состоять', 'следующий', 'подсистема', 'доступ', 'бд', 'mysql', 'пользовательский', 'интерфейс', 'визуализация', 'хранение', 'класс', 'уровень', 'приложение', 'подсистема', 'доступ', 'бд', 'позволять', 'легко', 'изменять', 'структура', 'бд', 'изменение', 'больший', 'часть', 'программа', 'обеспечить', 'корректный', 'загрузка', 'выгрузка', 'правильный', 'работа', 'запрос', 'снижать', 'вероятность', 'ошибка'], ['подсистема', 'пользовательский', 'интерфейс', 'обеспечивать', 'динамический', 'сборка', 'страница', 'лёгкость', 'корректировка', 'отдельный', 'часть', 'отсутствие', 'конфликт', 'правильный', 'вывод', 'страница'], ['подсистема', 'визуализация', 'корректно', 'визуально', 'привлекательный', 'пользователь', 'предоставлять', 'информация'], ['структура', 'таблица', 'бд', 'каталог', 'файл', 'подсистема', 'хранение', 'разработать', 'образ', 'лёгкий', 'найти', 'изменить', 'храниться', 'информация'], ['подсистема', 'класс', 'строиться', 'образ', 'класс', 'обладать', 'определённый', 'сфера', 'ответственность'], ['код', 'снабдить', 'комментариями', 'понятный', 'другому', 'программист'], ['проект', 'режим', 'функционирование'], ['режим', 'администратор', 'режим', 'пользователь'], ['перспектива', 'развитие', 'система', 'легко', 'осуществимый'], ['добавление', 'новый', 'сервис'], ['требование', 'персонал', 'функционирование', 'система', 'необходимый', '1', 'человек', 'администратор'], ['системный', 'администратор', 'уметь', 'работать', 'оболочка', 'phpmyadmin', 'обладать', 'знание', 'web', 'программирование', 'частность', 'язык', 'php', 'html', 'css'], ['требование', 'система'], ['система', 'надёжный', 'отказоустойчивый', 'ошибка', 'пользователь', 'нарушение', 'правильный', 'последовательность', 'действие', 'ошибка', 'загружать'], ['система', 'восстанавливаться', 'различный', 'сбой', 'отключение', 'электричество', 'сбой', 'работа', 'операционный', 'система', 'оборудование', 'т', 'т.д.'], ['функционал', 'отвечать', 'сервер', 'mysql', 'программный', 'комплекс', 'кросс', 'платформенен', 'легко', 'мигрировать', 'разный', 'архитектура', 'сервер', 'операционный', 'система'], ['продукт', 'обладать', 'эргономичный', 'интуитивный', 'понятный', 'интерфейс'], ['расположение', 'управлять', 'элемент', 'меню', 'выполнить', 'привычный', 'стиль'], ['цветовой', 'гамма', 'оформление', 'подобрать', 'образ', 'обеспечить', 'удобочитаемость', 'информация', 'предусмотреть', 'возможность', 'обновление', 'обслуживание', 'система', 'число', 'сторонний', 'разработчик'], ['возможность', 'расширение', 'функционал', 'приложение'], ['требование', 'функция', 'перечень', 'подлежать', 'автоматизация', 'задача', 'общий', 'функция', 'доступный', 'тип', 'пользователь', 'поиск', 'информация', 'ключевой', 'слово', 'организация', 'обратный', 'связь', 'возможность', 'выставление', 'рейтинг', 'статья'], ['функция', 'доступный', 'администратор', 'администрирование', 'общий', 'настройка', 'сайт', 'установка', 'размер', 'изображение', 'метаданных', 'ресурс', 'оформление', 'добавление', 'редактирование', 'удаление'], ['перечень', 'критерий', 'отказ', 'процесс', 'работа', 'программный', 'система', 'возникать', 'ошибка'], ['фатальный', 'ошибка', 'ошибка', 'результат', 'нарушаться', 'нормальный', 'работоспособность', 'ресурс'], ['относиться', 'взлом', 'ошибка', 'кодирование', 'существенный', 'ошибка', 'результат', 'работоспособность', 'ресурс', 'целое', 'сохраняться', 'запрос', 'пользователь', 'выполняться', 'некорректно'], ['относиться', 'появление', 'экран', 'сообщение', 'ошибка', 'sql', 'запрос', 'перенаправление', 'пользователь', 'несуществующий', 'страница', 'ошибка', 'средний', 'значимость', 'вид', 'очевидный', 'ошибка', 'позиционирование', 'элемент', 'дизайн', 'несущественный', 'ошибка', 'результат', 'появление', 'затрудняться', 'восприятие', 'информация'], ['относиться', 'орфографический', 'пунктуационный', 'стилистический', 'ошибка', 'текст', 'применение', 'неудобочитаемый', 'цвет', 'размер', 'текст'], ['требование', 'вид', 'обеспечение', 'вид', 'обеспечение', 'предъявить', 'следующий', 'требование', 'информативный'], ['хранение', 'использовать', 'субд', 'mysql', 'запустить', 'удалённый', 'компьютер'], ['выполнение', 'скрипт', 'написать', 'язык', 'php', 'понадобиться', 'интерпретатор', 'php'], ['управление', 'база', 'phpmyadmin', 'лингвистический'], ['использовать', 'язык', 'программирование', 'php', 'язык', 'запрос', 'sql', 'язык', 'описание', 'html', 'язык', 'разметка', 'css', 'xml'], ['пользователь', 'взаимодействовать', 'система', 'русский', 'язык', 'умолчание', 'программный', 'технический', 'характеристики', 'компьютер', 'пользователь', 'операционный', 'система', 'windows', 'linux', 'macos', 'solaris', 'intel', 'pentium', 'iii', 'celeron', '800', 'мгц', 'оперативный', 'память', '256', 'мбайт', 'серверный', 'часть', 'операционный', 'система', 'windows', 'linux', 'macos', 'solaris', 'web', 'сервер', 'apache', 'c', 'поддержка', 'язык', 'программирование', 'php', 'версия', '4.1', 'высоко', 'бд', 'mysql', 'версия', '4.0', 'высоко', 'intel', 'pentium', 'iii', 'celeron', '800', 'мгц', 'оперативный', 'память', '1', 'гб', 'жёсткий', 'диск', 'объём', 'память', '20', 'гб', 'наличие', 'сервер', 'возможность', 'использование', 'субд', 'mysql', 'объём', '1', 'гб', 'желательный', 'наличие', 'phpmyadmin', 'администрирование', 'бд', 'необходимый', 'набор', 'программа', 'пользователь', 'браузер', 'internet', 'explorer/', 'opera', 'и др.', 'необходимый', 'набор', 'программа', 'администратор', 'браузер', 'internet', 'explorer/', 'opera', 'и др.', 'желательный', 'наличие', 'phpmyadmin', 'администрирование', 'бд', 'текстовый', 'редактор', 'организационный'], ['функционирование', 'система', 'необходимый', '1', 'человек', 'администратор'], ['системный', 'администратор', 'уметь', 'работать', 'оболочка', 'phpmyadmin', 'обладать', 'знание', 'web', 'программирование', 'частность', 'язык', 'php', 'обеспечение', 'требуемой', 'надёжность', 'раз', 'месяц', 'производить', 'выгрузка', 'бд', 'производить', 'резервный', 'копирование'], ['методический'], ['инструкция', 'программист', 'инструкция', 'администратор', 'инструкция', 'пользователь', 'состав', 'содержание', 'работа', 'создание', 'система', 'перечень', 'этап', 'работа', 'срок', 'исполнение', 'привести', 'таблица', '1'], ['таблица', '1', 'период', 'учебный', 'процесс', '\\x07кол', 'неделя', '\\x07ориентировочные', 'срок', '\\x07выполняемые', 'работа', '\\x07', '\\x07', '\\x076', 'неделя', '\\x07февраль', 'март', '\\x07сбор', 'фактический', 'материал', 'тема', 'диплом', 'обзор', 'состояние', 'вопрос', 'анализ', 'предметный', 'область', 'составление', 'план', 'работа', '\\x07', '\\x07дипломное', 'проектирование', '\\x072', 'неделя', '\\x07апрель', 'май', '\\x07систематизация', 'материал', 'описание', 'бизнес', 'процессов', 'формулировка', 'постановка', 'задача', 'подготовка', 'обзор', 'состояние', 'вопрос', '\\x07', '\\x07', '\\x072', 'неделя', '\\x07', '\\x07решение', 'задача', 'экономический', 'раздел', 'дипломный', 'проект', '\\x07', '\\x07', '\\x076', 'неделя', '\\x07', '\\x07проектирование', 'разработка', 'предметный', 'ориентированный', 'информационный', 'система', '\\x07', '\\x07', '\\x072', 'неделя', '\\x07', '\\x07оформление', 'проект', '\\x07', '\\x07защита', '\\x072', 'неделя', '\\x07июнь', '\\x07защита', 'проект', 'государственный', 'аттестационный', 'комиссия', '\\x07', '\\x07', 'порядок', 'контроль', 'приёмка', 'система', 'виды', 'состав', 'объём', 'метод', 'испытание', 'система', 'испытание', 'подвергнуться', 'основной', 'функция', 'модуль', 'система'], ['обеспечить', 'отсутствие', 'mysql', 'php', 'javascript', 'ошибка', 'выполнение', 'основный', 'функция'], ['метод', 'испытание', 'регламентироваться'], ['общий', 'требование', 'приёмка', 'работа', 'стадия', 'стадия', 'работа', 'завершаться', 'ввод', 'тестовый', 'рамка', 'соответствующий', 'функциональность'], ['проводиться', 'испытание', 'основный', 'функция', 'реализовать', 'модуль'], ['случай', 'возникновение', 'критический', 'серьёзный', 'ошибка', 'провести', 'исследование', 'система', 'цель', 'устранение'], ['статус', 'приёмный', 'комиссия', 'роль', 'приёмный', 'комиссия', 'выступать', 'руководитель', 'дипломный', 'проект', 'евсеев', 'о.н.', 'доцент', 'кафедра', 'информационный', 'система'], ['исполнитель', 'работа', 'работа', 'создание', 'проект', 'проводиться', 'студентка', 'улгту', 'шаныгиной', 'в.в.', 'гр'], ['исэд-52'], ['требование', 'состав', 'содержание', 'работа', 'подготовка', 'объект', 'автоматизация', 'ввод', 'система', 'действие', 'преобразование', 'входной', 'информация', 'машиночитаемый', 'вид', 'заполнение', 'важный', 'функционирование', 'сайт', 'информация', 'производиться', 'администратор'], ['изменение', 'объект', 'автоматизация', 'установка', 'сайт', 'сервер', 'выбрать', 'провайдер', 'возложить', 'исполнитель', 'проект'], ['срок', 'порядок', 'комплектование', 'обучение', 'персонал', 'обучение', 'персонал', 'необходимый', 'базовый', 'представление', 'администратор', 'функционирование', 'сайт'], ['требование', 'документирование', 'перечень', 'подлежать', 'разработка', 'документ', 'включать', 'инструкция', 'пользователь', 'инструкция', 'программист', 'инструкция', 'системный', 'администратор', 'источник', 'разработка', 'технический', 'задание', 'полностью', 'разрабатываться', 'исполнитель', 'основа', 'предпочтение', 'заказчик'], ['заказчик', 'являться', 'компания', 'новый', 'стандарт']]"
        ],
        [
         "14",
         "tz_15.doc",
         "ТЕХНИЧЕСКОЕ ЗАДАНИЕ\r2.2.1. Общие сведения\rПолное наименование программного продукта: «Автоматизированная система учета товарных запасов в рамках розничного магазина».\rНаименование предприятий:\rразработчик: Почиль Максим Васильевич;\rзаказчик: ООО «АйТи-Сервис»;\rИС разрабатывается на основе задания на дипломное проектирование;\rПлановые сроки начала и окончания работ:\rначало: 1.04.2010 г.;\rокончание: 31.05.2010 г. \r\r2.2.2. Назначение и цели создания системы \rЦелью создания программного продукта является автоматизация работы по учету товарных запасов в рамках розничного магазина компьютерной техники, работающего преимущественно под заказ.\rЗадачи:\rавтоматизировать создание списка товаров для заказа, расчет общей стоимости заказа и формирование счета на оплату;\rпроводить мониторинг состояния баланса взаиморасчетов между контрагентами;\rвести учет товаров на складе в разрезе серийных номеров;\rускорить формирование гарантийного талона (и товарного чека).\r\r2.2.3. Характеристика объектов автоматизации\rВ настоящий момент значительное число реселлеров, особенно компьютерной техники, для продажи используют ПО поставщика (NIXoft от nix.ru или NL-Dialer от компании Сетевая Лаборатория), что привязывает их к этому поставщику, а расчеты платежного баланса проводят с помощью электронных таблиц. Лидеры Ульяновского рынка обладают модифицированными конфигурациями 1С, но их код сохраняют в тайне.\rДанную систему можно внедрить не только у заказчика, но и в любом другом учреждении, продающем товар от разных поставщиков на заказ с гарантией: от магазина бытовой техники до автозапчастей (после небольшой доработки и адаптации).\r\r2.2.4. Требования к системе\rТребования к системе в целом \rПрограмма должна быть разработана на платформе 1С 8.2 и иметь уникальные имена объектов метаданных (планируется объединение со стандартной конфигурацией 1С:Бухгалтерии).\rТребования к персоналу\rменеджер должен обладать минимальными практическими навыками для корректной работы с программой как пользователь, но довольно обширными теоретическими познаниями в компьютерных областях как эксперт-помощник покупателя.\rДля данной системы подходит стандартный уровень безопасности, обеспечиваемый методами парольной аутентификации платформы 1С.\rФункциональные требования \rОсновные функциональные группы:\rподсистема формирования прайс-листа, включающая в себя загрузку прайсов поставщиков, задание товарных наценок и публикацию фирменного прайса;\rподсистема заказа товаров, формирующая заказы и счета для оплаты, а так же следящая за платежным балансом;\rподсистема складского учета в разрезе серийных номеров, позволяющая принимать, перемещать и списывать товары;\rподсистема передачи товара покупателю с оформлением гарантийного талона и товарного чека.\rТребования к видам обеспечения \rПрограмма должна корректно работать на следующем или совместимом с ним оборудовании:\rPentium 4, 1800 MHz и выше;\r512 MB RAM.\rПрограмма должна быть работоспособна в любой версии Windows, где установлены 1С 8.2 и Office Excel.\r\r2.2.5. Состав и содержание работ по созданию системы \rРазработка программы должна выполняться по следующим этапам: \rразработка, согласование и утверждение технического проекта программы с пояснительной запиской – с  1.04.2010 по 10.04.2010;\rразработка программы – с 11.04.2010 по 15.05.2010; \rприем-сдача с исправлением обнаруженных недостатков в программе и программной документации – 15.05.2010 по 31.05.2010.\r\r2.2.6. Требования к документированию\rСостав программной документации должен включать следующие документы: \r1)\tтехнический проект программы по ГОСТ 34.602-89 в машинописном исполнении, содержащий: \rа)\tраздел \"ВХОДНЫЕ ДАННЫЕ\" (Характер, организация и предварительная подготовка     входных данных); \rб)\tраздел \"ВЫХОДНЫЕ ДАННЫЕ\" (Характер и организация выходных данных); \rв)\tраздел \"ОПИСАНИЕ ЛОГИЧЕСКОЙ СТРУКТУРЫ\" при технологии объектно-ориентированного программирования должен включать следующие материалы: \r- описание связей программы с другими программами; \r- описание внутренних массивов и переменных, которые используются в межмодульном обмене данными; \r- схема иерархии классов (Приводится рисунок или рисунки); \r- расшифровка наименований методов и описаний самих методов (Приводится таблица);\rг) раздел \"ИСПОЛЬЗУЕМЫЕ ТЕХНИЧЕСКИЕ СРЕДСТВА\" (Типы ЭВМ, на которых возможно выполнение программы; устройства ЭВМ, которые используются при выполнении программы); \rд) раздел \"ВЫЗОВ И ЗАГРУЗКА\" (Виды носителей программы, их используемый объем; способы вызова программы с соответствующих носителей данных; входные точки в программу (запуск программы); \rе) раздел \"ПЛАН МЕРОПРИЯТИЙ ПО РАЗРАБОТКЕ И ВНЕДРЕНИЮ ПРОГРАММЫ\" \r2) описание программы по ГОСТ 19.402-78 на машинном носителе (дискете с маркировкой DESCRIBE), включающее: назначение программы; дата ее создания; Ф.И.О. разработчика, а также данные, позволяющие связаться с ним; минимальные требования к аппаратным ресурсам; руководство пользователя, содержащее описание всех документированных возможностей программы. \r3) текст программы по ГОСТ 19.401-78 на машинном носителе (дискете с маркировкой SOURCE), представленный в виде текстового файла. \r4) руководство программиста по ГОСТ 19.504-79 на машинном носителе (дискете с маркировкой PROG) в виде файла README.TXT, содержащий данные о технологии проектирования и программирования данной программы, а также о языке программирования, назначение программы и список литературы, содержащей теоретический материал, необходимый для создания программы.\r\r2.2.7. Источники разработки \rРабота ведётся на основании задания на дипломное проектирование.",
         "1",
         "[['техническое', 'задание', '2.2.1'], ['общий', 'сведение', 'полный', 'наименование', 'программный', 'продукт', 'автоматизированный', 'система', 'учёт', 'товарный', 'запас', 'рамка', 'розничный', 'магазин'], ['наименование', 'предприятие', 'разработчик', 'почиль', 'максим', 'василиевич', 'заказчик', 'ооо', 'айти', 'сервис', 'ис', 'разрабатываться', 'основа', 'задание', 'дипломный', 'проектирование', 'плановый', 'срок', 'окончание', 'работа', 'начало', '1.04.2010', 'г.', 'окончание', '31.05.2010', 'г.', '2.2.2'], ['назначение', 'цель', 'создание', 'система', 'цель', 'создание', 'программный', 'продукт', 'являться', 'автоматизация', 'работа', 'учёт', 'товарный', 'запас', 'рамка', 'розничный', 'магазин', 'компьютерный', 'техника', 'работать', 'преимущественно', 'заказ', 'задача', 'автоматизировать', 'создание', 'список', 'товар', 'заказ', 'расчёт', 'общий', 'стоимость', 'заказ', 'формирование', 'счёт', 'оплата', 'проводить', 'мониторинг', 'состояние', 'баланс', 'взаиморасчетов', 'контрагент', 'вести', 'учёт', 'товар', 'склад', 'разрез', 'серийный', 'номер', 'ускорить', 'формирование', 'гарантийный', 'талон', 'товарный', 'чек', '2.2.3'], ['характеристика', 'объект', 'автоматизация', 'момент', 'значительный', 'число', 'реселлеров', 'компьютерный', 'техника', 'продажа', 'использовать', 'поставщик', 'nixoft', 'nix.ru', 'nl', 'dialer', 'компания', 'сетевой', 'лаборатория', 'привязывать', 'поставщик', 'расчёт', 'платёжный', 'баланс', 'проводить', 'помощь', 'электронный', 'таблица'], ['лидер', 'ульяновский', 'рынок', 'обладать', 'модифицированный', 'конфигурациями', '1с', 'код', 'сохранять', 'тайна'], ['данную', 'система', 'внедрить', 'заказчик', 'другом', 'учреждение', 'продавать', 'товар', 'разный', 'поставщик', 'заказ', 'гарантия', 'магазин', 'бытовой', 'техника', 'автозапчастей', 'небольшой', 'доработка', 'адаптация'], ['2.2.4'], ['требование', 'система', 'требование', 'система', 'целое', 'программа', 'разработать', 'платформа', '1с', '8.2', 'уникальный', 'имя', 'объект', 'метаданных', 'планироваться', 'объединение', 'стандартный', 'конфигурация', '1с', 'бухгалтерия'], ['требование', 'персонал', 'менеджер', 'обладать', 'минимальный', 'практический', 'навык', 'корректный', 'работа', 'программа', 'пользователь', 'обширный', 'теоретический', 'познание', 'компьютерный', 'область', 'эксперт', 'помощник', 'покупатель'], ['система', 'подходить', 'стандартный', 'уровень', 'безопасность', 'обеспечивать', 'метод', 'парольный', 'аутентификация', 'платформа', '1с.', 'функциональный', 'требование', 'основной', 'функциональный', 'группа', 'подсистема', 'формирование', 'прайс', 'лист', 'включать', 'загрузка', 'прайс', 'поставщик', 'задание', 'товарный', 'наценка', 'публикация', 'фирменный', 'прайс', 'подсистема', 'заказ', 'товар', 'формировать', 'заказ', 'счёт', 'оплата', 'следить', 'платёжный', 'баланс', 'подсистема', 'складской', 'учёт', 'разрез', 'серийный', 'номер', 'позволять', 'принимать', 'перемещать', 'списывать', 'товар', 'подсистема', 'передача', 'товар', 'покупатель', 'оформление', 'гарантийный', 'талон', 'товарный', 'чек'], ['требование', 'вид', 'обеспечение', 'программа', 'корректно', 'работать', 'следующий', 'совместимом', 'оборудование', 'pentium', '4', '1800', 'mhz', 'высоко', '512', 'mb', 'ram'], ['программа', 'работоспособный', 'версия', 'windows', 'установить', '1с', '8.2', 'office', 'excel', '2.2.5'], ['состав', 'содержание', 'работа', 'создание', 'система', 'разработка', 'программа', 'выполняться', 'следующий', 'этап', 'разработка', 'согласование', 'утверждение', 'технический', 'проект', 'программа', 'пояснительный', 'записка', '1.04.2010', '10.04.2010', 'разработка', 'программа', '11.04.2010', '15.05.2010', 'приём', 'сдача', 'исправление', 'обнаружить', 'недостаток', 'программа', 'программный', 'документация', '15.05.2010', '31.05.2010', '2.2.6'], ['требование', 'документирование', 'состав', 'программный', 'документация', 'включать', 'следующий', 'документ', '1', 'технический', 'проект', 'программа', 'гост', '34.602', '89', 'машинописный', 'исполнение', 'содержать', 'раздел', 'входные', 'характер', 'организация', 'предварительный', 'подготовка', 'входной', 'раздел', 'выходные', 'характер', 'организация', 'выходной', 'раздел', 'описание', 'логической', 'структура', 'технология', 'объектный', 'ориентированный', 'программирование', 'включать', 'следующий', 'материал', 'описание', 'связь', 'программа', 'программа', 'описание', 'внутренний', 'массив', 'переменный', 'использоваться', 'межмодульный', 'обмен', 'данными', 'схема', 'иерархия', 'класс', 'приводиться', 'рисунок', 'рисунок', 'расшифровка', 'наименование', 'метод', 'описание', 'метод', 'приводится', 'таблица', 'раздел', 'используемые', 'технические', 'средства', 'тип', 'эвм', 'выполнение', 'программа', 'устройство', 'эвм', 'использоваться', 'выполнение', 'программа'], [], ['раздел', 'вызов', 'загрузка', 'вид', 'носитель', 'программа', 'использовать', 'объём', 'способ', 'вызов', 'программа', 'соответствующий', 'носитель', 'входной', 'точка', 'программа', 'запуск', 'программа', 'раздел', 'план', 'мероприятий', 'разработке', 'внедрению', 'программы', '2', 'описание', 'программа', 'гост', '19.402', '78', 'машинный', 'носитель', 'дискета', 'маркировка', 'describe', 'включать', 'назначение', 'программа', 'дата', 'создание', 'ф.и.о.', 'разработчик', 'позволять', 'связаться', 'минимальный', 'требование', 'аппаратный', 'ресурс', 'руководство', 'пользователь', 'содержать', 'описание', 'документированный', 'возможность', 'программа'], ['3'], ['текст', 'программа', 'гост', '19.401', '78', 'машинный', 'носитель', 'дискета', 'маркировка', 'source', 'представить', 'вид', 'текстовый', 'файл'], ['4'], ['руководство', 'программист', 'гост', '19.504', '79', 'машинный', 'носитель', 'дискета', 'маркировка', 'prog', 'вид', 'файл', 'readme.txt', 'содержать', 'технология', 'проектирование', 'программирование', 'программа', 'язык', 'программирование', 'назначение', 'программа', 'список', 'литература', 'содержать', 'теоретический', 'материал', 'необходимый', 'создание', 'программа'], ['2.2.7'], ['источник', 'разработка', 'работа', 'вестись', 'основание', 'задание', 'дипломный', 'проектирование']]"
        ],
        [
         "15",
         "tz_16.doc",
         "2.2\tТехническое задание\r2.2.1\tОбщие сведения\rПолное наименование программного продукта: \"Автоматизация рабочего места менеджера-фармацевта\".\rшифр темы – ДП – УлГТУ – 08080165 – 07/704 – 2010 \rНаименование предприятий разработчика; \rразработчик: Сарбахтин Артем Анатольевич;\rзаказчик: УлГТУ;\rперечень документов, на основании которых создается информационная система: 1) Разработка ведется на основании приказа на дипломное проектирование от 28.12.2009 № 2202;\rПлановые сроки начала и окончания работ – 1 полугодие 2010 г.\rпорядок оформления и предъявления заказчику результатов работ по созданию системы, ее частей и отдельных средств: по окончанию работ заказчику должны быть предъявлены и переданы установочный диск со всеми необходимыми дистрибутивами, набор инструкций и документации для полноценного функционирования системы.\r\r2.2.2 Назначение и цели создания систем\rРазработать программный продукт, позволяющий автоматизировать процессы обработки данных для создания эффективной информационной поддержки деятельности менеджера по продажам медикаментов. \rЦель разработки: повышение эффективности работы и сокращения затрат времени на получение и анализ необходимой информации, а также повысить эффективность деятельности предприятия за счет оперативного предоставления менеджеру предприятия актуальной и аналитической информации.\rНазначение разработки:\rОбеспечить прозрачность хозяйственных процессов предприятия и оперативность получения аналитической информации.\rУскорить процесс расчета результатов финансовой деятельности предприятия. \r\r2.2.3 Характеристика объектов автоматизации\rОбъектом автоматизации является  ООО “ФАРМТРАСТ”. \r2.2.4 Требования к системе\r2.2.4.1 Требования к системе в целом \rТребования к персоналу\rПрограммный продукт должен быть ориентирован на пользователя ЭВМ, имеющего начальные навыки работы с ОС Windows и программным продуктом 1С: Предприятие 8.1.\rСтепень приспособляемости системы\rРазрабатываемая конфигурация должна функционировать автономно и допускаются изменения только внутри системы при необходимости. Система должна легко дорабатываться для добавления новых или изменения имеющихся функций. \rТребования к надежности\rНадежность и отказоустойчивость системы к ошибкам пользователей и ошибкам загружаемых данных обеспечивают внутренние средства 1С.\rИнтерфейс системы должен быть эргономичным с точки зрения пользователя. Интерфейсы программных продуктов на базе «1С: Предприятие 8.1» ориентированы на удобную работу и простоту освоения.\rСистема должна обладать патентной чистотой. Это предполагает использование программы на лицензионных копиях программ «1С: Предприятие».\r\r2.2.4.2 Требования к функциям\r Перечень функций:\rввод и накопление данных о хозяйственных операциях с возможностью их редактирования;\rведение базы поставщиков;\rучет медикаментов; \rформирование отчетов.\rПеречень критериев и отказов\rФатальные ошибки. Сбои в системе, которые приводят к потере ее ра\u001fботоспособности или к порче данных.\rСерьезные ошибки. Ошибки, которые не позволяют достичь желаемого результата при использовании некоторого средства или функции программного продукта, включая невозможность исполнения содержащейся в меню или диалоговом окне команды, выполнения процесса или форматирования текста.\rМаленькие ошибки. Ошибки, которые вызывают неудобство работы с системой, например, ошибки в задании порядка перехода от одного элемента управления к другому в форме ввода информации. К данному типу ошибок можно отнести также беспричинные сообщения об ошибках.\rНезначительные ошибки. К данному типу ошибок относятся орфографические ошибки в надписях или не выровненные элементы управления.\r\r2.2.4.3 Требования к видам обеспечения:\rа) математическому (состав и область применения мат. моделей и методов, типовых и разрабатываемых алгоритмов) особых требований нет;\rб) информационному (состав, структура и организация данных, обмен данными между компонентами системы, информационная совместимость со смежными системами, используемые классификаторы, СУБД, контроль данных и ведение информационных массивов)\r- необходимость удобной организации данных в системе, их структуризация в соответствии с их семантикой, иерархическая упорядоченность и взаимосвязь;\r- для функционирования системы необходимо начальное заполнение информационной базы;\r- последующий сбор, обработка данных в системе осуществляется в динамике протекающих бизнес-процессов;\rв) лингвистическому (языки программирования, языки взаимодействия пользователей с системой, системы кодирования, языки ввода- вывода) используется язык программирование «1С v8.1»;\rг) программному и техническому: \rДля работы с «1С: Предприятием 8.1» рекомендуемая конфигурация компьютера, имеет следующие характеристики: \r1) компьютер конечного пользователя: \rоперационная система: MS Windows 2000/ XP / Server 2003; \rпроцессор Intel Pentium III 866 МГц; \rоперативная память 256 Мбайт; \r2) компьютер, используемый для разработки конфигураций: \rоперационная система: MS Windows 2000/ XP / Server 2003; \rIntel Pentium IV 2800 МГц; \rоперативная память 512 Мбайт; \r3) платформа «1С: Предприятие 8.1»; \rе) метрологическому; (нет особых требований)\rд) организационному (структура и функции эксплуатирующих подразделений, защита от ошибочных действий персонала); \r(нет особых требований)\rе) методическому (состав нормативно-технической документации.\rИнструкция для пользователя и программиста;\r\r2.2.5 Состав и содержание работ по созданию системы\r2.2.5.1 Перечень стадий и этапов работ. Сроки исполнения\rПодробные сроки исполнения проекта представлены в таблице 1\rТаблица 1\rПеречень стадий и этапов работ\rСостав работ\r\u0007Этапы работ\r\u0007Сроки проведения работ\r\u0007\r\u00071. Исследование и обоснование создания программы\r\u0007систематизация материала; описание бизнес-процессов, формулировка постановки задачи, подготовка обзора состояния вопроса;\r\u000701.03.2010 – 01.04.2010 гг.\r\u0007\r\u00072. Техническое задание\r\u0007Разработка технического задания\r\u000701.04.2010 – 20.04.2010 гг.\r\u0007\r\u00073. Технический проект\r\u0007Разработка решений по техническому обеспечению; разработка решений по программному обеспечению\r\u000720.04.2010 – 30.04.2010 гг.\r\u0007\r\u0007\r\u0007Разработка алгоритмов системы\r\u000701.04.2010 – 31.05.2010 гг.\r\u0007\r\u0007\r\u0007Заполнение системы данными\r\u000701.06.2010 – 10.06.2010 гг.\r\u0007\r\u00074. Решение задач экономического раздела дипломного проекта\r\u0007Расчет экономической эффективности\r\u000701.05.2010 – 31.05.2010 гг.\r\u0007\r\u00075. Защита проекта перед Государственной аттестационной комиссией \r\u0007Защита проекта\r\u000716.06.2010 – 19.06.2010 гг.\r\u0007\r\u0007\r2.2.5.2 Состав организаций  исполнителей работ\rРаботы, по созданию системы, проводились Сарбахтиным Артемом Анатольевичем студентом УлГТУ.\rПри этом консультантом выступал Шанченко Николай Иванович – УлГТУ, доцент кафедры «Информационные системы», руководитель дипломного проекта.\r\r2.2.5.4 Вид и порядок экспертизы технической документации\rКонтроль технической документации по графику кафедры.\r\r2.2.6  Порядок контроля и приемки системы\r1) Система после завершения разработки передается в опытную эксплуатацию Заказчику с целью тестирования работы системы и ее адекватности поставленным целям.\r2) Разработчик по требованию Заказчика дорабатывает систему или отдельные ее части при обнаружении ошибок и в других необходимых случаях.\r3) Приемочная комиссия представляется ответственным лицом Заказчика, с которым осуществляется взаимодействие по вопросам разработки системы.\r\r2.2.7 Требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие\r2.2.7.1 Приведение поступающей в систему информации к виду, пригодному для обработки с помощью ЭВМ\rДля функционирования системы необходимо определить списковую и условно-постоянную информацию предметной области и ввести ее в информационную базу для многократного использования.\rХозяйственные операции отражаются в информационной системе посредством периодического ввода и проведения документов.\r2.2.7.2 Для ввода системы в эксплуатацию необходимо выполнить следующие действия:\r- приобретение соответствующих технических средств и их установка;\r- установка необходимых программных средств;\r- установка системы и ее настройка;\r- обучение пользователя.\r\rТребования к документированию\rВ состав эксплуатационной документации должны входить следующие документы:\rИнструкция пользователю\rИнструкция программисту\r\r2.2.9  Источники разработки \rРабота ведётся на основании приказа на дипломное проектирование от 28.12.2009 №2202, а также по заказу заказчика – ООО «ФАРМТРАСТ».\rОсновные источники разработки системы:\r- Необходимые документы и отчетность организации-заказчика;\r- Отраслевой стандарт 91500.05.0007-2003 \"Правила отпуска (реализации) лекарственных средств в аптечных организациях.",
         "1",
         "[['2.2', 'технический', 'задание', '2.2.1', 'общий', 'сведение', 'полный', 'наименование', 'программный_продукт', 'автоматизация', 'рабочий', 'место', 'менеджер', 'фармацевт'], ['шифр', 'тема', 'дп', 'улгту', '08080165', '07/704', '2010', 'наименование', 'предприятие', 'разработчик', 'разработчик', 'сарбахтин', 'артём', 'анатолиевич', 'заказчик', 'улгту', 'перечень', 'документ', 'основание', 'создаваться', 'информационный', 'система', '1', 'разработка', 'вестись', 'основание', 'приказ', 'дипломный', 'проектирование', '28.12.2009', '№', '2202', 'плановый', 'срок', 'окончание', 'работа', '1', 'полугодие', '2010', 'г.', 'порядок', 'оформление', 'предъявление', 'заказчик', 'результат', 'работа', 'создание', 'система', 'часть', 'отдельный', 'средство', 'окончание', 'работа', 'заказчик', 'предъявить', 'передать', 'установочный', 'диск', 'необходимый', 'дистрибутив', 'набор', 'инструкция', 'документация', 'полноценный', 'функционирование', 'система'], ['2.2.2', 'назначение', 'цель', 'создание', 'система', 'разработать', 'программный_продукт', 'позволять', 'автоматизировать', 'процесс', 'обработка', 'создание', 'эффективный', 'информационный', 'поддержка', 'деятельность', 'менеджер', 'продажа', 'медикамент'], ['цель', 'разработка', 'повышение', 'эффективность', 'работа', 'сокращение', 'затрата', 'время', 'получение', 'анализ', 'необходимый', 'информация', 'повысить', 'эффективность', 'деятельность', 'предприятие', 'счёт', 'оперативный', 'предоставление', 'менеджер', 'предприятие', 'актуальный', 'аналитический', 'информация'], ['назначение', 'разработка', 'обеспечить', 'прозрачность', 'хозяйственный', 'процесс', 'предприятие', 'оперативность', 'получение', 'аналитический', 'информация'], ['ускорить', 'процесс', 'расчёт', 'результат', 'финансовый', 'деятельность', 'предприятие'], ['2.2.3', 'характеристика', 'объект', 'автоматизация', 'объект', 'автоматизация', 'являться', 'ооо', 'фармтраст'], ['2.2.4', 'требование', 'система', '2.2.4.1', 'требование', 'система', 'целое', 'требование', 'персонал', 'программный_продукт', 'ориентировать', 'пользователь', 'эвм', 'иметь', 'начальный', 'навык', 'работа', 'ос', 'windows', 'программный_продукт', '1с', 'предприятие', '8.1'], ['степень', 'приспособляемость', 'система', 'разрабатываемая', 'конфигурация', 'функционировать', 'автономно', 'допускаться', 'изменение', 'внутри', 'система'], ['система', 'легко', 'дорабатываться', 'добавление', 'новый', 'изменение', 'иметься', 'функция'], ['требование', 'надёжность', 'надёжность', 'отказоустойчивость', 'система', 'ошибка', 'пользователь', 'ошибка', 'загружать', 'обеспечивать', 'внутренний', 'средство', '1с.', 'интерфейс', 'система', 'эргономичный', 'точка', 'зрение', 'пользователь'], ['интерфейсы', 'программный_продукт', 'база', '1с', 'предприятие', '8.1', 'ориентировать', 'удобный', 'работа', 'простота', 'освоение'], ['система', 'обладать', 'патентный', 'чистота'], ['предполагать', 'использование', 'программа', 'лицензионный', 'копия', 'программа', '1с', 'предприятие'], ['2.2.4.2', 'требование', 'функция', 'перечень', 'функция', 'ввод', 'накопление', 'хозяйственный', 'операция', 'возможность', 'редактирование', 'ведение', 'база', 'поставщик', 'учёт', 'медикамент', 'формирование', 'отчёт'], ['перечень', 'критерий', 'отказ', 'фатальный', 'ошибка'], ['сбой', 'система', 'приводить', 'потеря', 'ра', 'ботоспособности', 'порча'], ['серьёзный', 'ошибка'], ['ошибка', 'позволять', 'достигнуть', 'желаемого', 'результат', 'использование', 'некоторый', 'средство', 'функция', 'программный_продукт', 'невозможность', 'исполнение', 'содержаться', 'меню', 'диалоговый', 'окно', 'команда', 'выполнение', 'процесс', 'форматирование', 'текст'], ['маленький', 'ошибка'], ['ошибка', 'вызывать', 'неудобство', 'работа', 'система', 'ошибка', 'задание', 'порядок', 'переход', 'элемент', 'управление', 'другому', 'форма', 'ввод', 'информация'], ['тип', 'ошибка', 'отнести', 'беспричинный', 'сообщение', 'ошибка'], ['незначительный', 'ошибка'], ['тип', 'ошибка', 'относиться', 'орфографический', 'ошибка', 'надпись', 'выровнять', 'элемент', 'управление'], ['2.2.4.3', 'требование', 'вид', 'обеспечение', 'математический', 'состав', 'область', 'применение', 'мат'], ['модель', 'метод', 'типовой', 'разрабатывать', 'алгоритм', 'особый', 'требование', 'информационный', 'состав', 'структура', 'организация', 'обмен', 'данными', 'компонент', 'система', 'информационный', 'совместимость', 'смежный', 'система', 'использовать', 'классификатор', 'субд', 'контроль', 'ведение', 'информационный', 'массив', 'необходимость', 'удобный', 'организация', 'система', 'структуризация', 'соответствие', 'семантика', 'иерархический', 'упорядоченность', 'взаимосвязь', 'функционирование', 'система', 'начальный', 'заполнение', 'информационный', 'база', 'последующий', 'сбор', 'обработка', 'система', 'осуществляться', 'динамика', 'протекать', 'бизнес', 'процессов', 'лингвистический', 'язык', 'программирование', 'язык', 'взаимодействие', 'пользователь', 'система', 'система', 'кодирование', 'язык', 'ввода-', 'вывод', 'использоваться', 'язык', 'программирование', '1с', 'v8.1', 'программный', 'технический', 'работа', '1с', 'предприятие', '8.1', 'рекомендовать', 'конфигурация', 'компьютер', 'следующий', 'характеристика', '1', 'компьютер', 'конечный', 'пользователь', 'операционный', 'система', 'ms', 'windows', '2000/', 'xp', 'server', '2003', 'процессор', 'intel', 'pentium', 'iii', '866', 'мгц', 'оперативный', 'память', '256', 'мбайт', '2', 'компьютер', 'использовать', 'разработка', 'конфигурация', 'операционный', 'система', 'ms', 'windows', '2000/', 'xp', 'server', '2003', 'intel', 'pentium', 'iv', '2800', 'мгц', 'оперативный', 'память', '512', 'мбайт', '3', 'платформа', '1с', 'предприятие', '8.1', 'метрологический', 'особый', 'требование', 'организационный', 'структура', 'функция', 'эксплуатировать', 'подразделение', 'защита', 'ошибочный', 'действие', 'персонал', 'особый', 'требование'], ['методический', 'состав', 'нормативный', 'технический', 'документация'], ['инструкция', 'пользователь', 'программист', '2.2.5', 'состав', 'содержание', 'работа', 'создание', 'система', '2.2.5.1', 'перечень', 'стадия', 'этап', 'работа'], ['срок', 'исполнение', 'подробный', 'срок', 'исполнение', 'проект', 'представить', 'таблица', '1', 'таблица', '1', 'перечень', 'стадия', 'этап', 'работа', 'состав', 'работа', '\\x07этапы', 'работа', '\\x07сроки', 'проведение', 'работа', '\\x07', '\\x071'], ['исследование', 'обоснование', 'создание', 'программа', '\\x07систематизация', 'материал', 'описание', 'бизнес', 'процессов', 'формулировка', 'постановка', 'задача', 'подготовка', 'обзор', 'состояние', 'вопрос', '\\x0701.03.2010', '01.04.2010', 'гг._\\x07', '\\x072'], ['технический', 'задание', '\\x07разработка', 'технический', 'задание', '\\x0701.04.2010', '20.04.2010', 'гг._\\x07', '\\x073'], ['технический', 'проект', '\\x07разработка', 'решение', 'технический', 'обеспечение', 'разработка', 'решение', 'программный', 'обеспечение', '\\x0720.04.2010', '30.04.2010', 'гг._\\x07', '\\x07', '\\x07разработка', 'алгоритм', 'система', '\\x0701.04.2010', '31.05.2010', 'гг._\\x07', '\\x07', '\\x07заполнение', 'система', 'данными', '\\x0701.06.2010', '10.06.2010', 'гг._\\x07', '\\x074'], ['решение', 'задача', 'экономический', 'раздел', 'дипломный', 'проект', '\\x07расчет', 'экономический', 'эффективность', '\\x0701.05.2010', '31.05.2010', 'гг._\\x07', '\\x075'], ['защита', 'проект', 'государственный', 'аттестационный', 'комиссия', '\\x07защита', 'проект', '\\x0716.06.2010', '19.06.2010', 'гг._\\x07', '\\x07', '2.2.5.2', 'состав', 'организация', 'исполнитель', 'работа', 'работа', 'создание', 'система', 'проводиться', 'сарбахтиным', 'артём', 'анатолиевич', 'студент', 'улгту'], ['консультант', 'выступать', 'шанченко', 'николай', 'иванович', 'улгту', 'доцент', 'кафедра', 'информационный', 'система', 'руководитель', 'дипломный', 'проект'], ['2.2.5.4', 'вид', 'порядок', 'экспертиза', 'технический', 'документация', 'контроль', 'технический', 'документация', 'график', 'кафедра'], ['2.2.6', 'порядок', 'контроль', 'приёмка', 'система', '1', 'система', 'завершение', 'разработка', 'передаваться', 'опытный', 'эксплуатация', 'заказчику', 'цель', 'тестирование', 'работа', 'система', 'адекватность', 'поставить', 'цель', '2', 'разработчик', 'требование', 'заказчик', 'дорабатывать', 'система', 'отдельный', 'часть', 'обнаружение', 'ошибка', 'необходимый', 'случай'], ['3'], ['приёмочный', 'комиссия', 'представляться', 'ответственный', 'лицо', 'заказчик', 'осуществляться', 'взаимодействие', 'вопрос', 'разработка', 'система'], ['2.2.7', 'требование', 'состав', 'содержание', 'работа', 'подготовка', 'объект', 'автоматизация', 'ввод', 'система', 'действие', '2.2.7.1', 'приведение', 'поступать', 'система', 'информация', 'вид', 'пригодный', 'обработка', 'помощь', 'эвм', 'функционирование', 'система', 'определить', 'списковый', 'условно', 'постоянный', 'информация', 'предметный', 'область', 'ввести', 'информационный', 'база', 'многократный', 'использование'], ['хозяйственный', 'операция', 'отражаться', 'информационный', 'система', 'периодический', 'ввод', 'проведение', 'документ'], ['2.2.7.2', 'ввод', 'система', 'эксплуатация', 'выполнить', 'следующий', 'действие', 'приобретение', 'соответствующий', 'технический', 'средство', 'установка', 'установка', 'необходимый', 'программный', 'средство', 'установка', 'система', 'настройка', 'обучение', 'пользователь'], ['требование', 'документирование', 'состав', 'эксплуатационный', 'документация', 'входить', 'следующий', 'документ', 'инструкция', 'пользователь', 'инструкция', 'программист', '2.2.9', 'источник', 'разработка', 'работа', 'вестись', 'основание', 'приказ', 'дипломный', 'проектирование', '28.12.2009', '№', '2202', 'заказ', 'заказчик', 'ооо', 'фармтраст'], ['основной', 'источник', 'разработка', 'система', 'документ', 'отчётность', 'организация', 'заказчика', 'отраслевой', 'стандарт', '91500.05.0007', '2003', 'правило', 'отпуск', 'реализация', 'лекарственный', 'средство', 'аптечный', 'организация']]"
        ],
        [
         "16",
         "tz_17.doc",
         "2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ.\r2.2.1 Общие сведения.\r1) полное наименование системы и ее условное обозначение: «Автоматизация бизнес - проектов на базе 1С ГК «Софт Плюс» средствами 1С: Предприятие 8.1/8.2»; АРМ сотрудника отдела решений (внедрения) на базе 1С  ГК  «Софт Плюс»;\r2) шифр темы или шифр (номер договора): данный программный продукт разрабатывался вне рамок какого-либо договора;\r3) наименование предприятий разработчика и заказчика системы, их реквизиты:\r ГК «Софт Плюс», 432071, Ульяновская обл, г. Ульяновск, улица Карла Маркса, дом № 13а, корпус 2,  кв.710.;\r4) перечень документов, на основании которых создается информационная система:\r1.Устав Общества с ограниченной ответственностью \"СКС\";\r5) плановые сроки начала и окончания работ: 29 марта 2010 года – 7 мая 2010 года;\r6) сведения об источниках и порядке финансирования работ: данные работы проводятся на некоммерческой основе;\r7) порядок оформления и предъявления заказчику результатов работ по созданию системы, ее частей и отдельных средств: по окончанию работ заказчику должны быть предъявлены и переданы установочный диск со всеми необходимыми дистрибутивами, набор инструкций и документации для полноценного функционирования системы.\r\r2.2.2 Назначение и цели создания системы\rРазработанная система призвана автоматизировать процессы отдела решений (внедрения) на базе 1С.  Цель разработки – повышение оперативности и качества процессов, существующих в ОР.\rПри внедрении данной системы должны быть следующие показатели:\rтехнические: показателей нет;\rтехнологические: уменьшение числа этапов выполнения операций, связанных с выводом нужной, оперативной информации;\rпроизводственно-экономические: должно быть сокращено время на процессы, связанные с учетом заявок и анализом загруженности специалистов, значительно облегчен труд диспетчера отдела.\r\r2.2.3 Характеристика объектов автоматизации\r\tОбъектом автоматизации является отдел решений (внедрения) ГК «Софт Плюс». Основные функции отдела автоматизированы.\r\r2.2.4 Требования к системе в целом\r2.2.4.1 Требования к структуре и функционированию системы\r\tСистема должна обеспечивать выполнение перечисленных ниже функций:\rдобавление новой учетной  документации;\rхранение данных за различные отчетные периоды;\rредактирование и удаление существующей учетной документации;\rформирование отчетной документации.\r\r2.2.4.2 Требования к персоналу\r\tДля функционирования системы необходим сотрудник отдела решений (внедрения) на базе 1С. Он должен обладать навыками работы с программой на базе платформы 1С: Предприятие 8.1, которые позволят ему фиксировать все операции и быстро получать необходимую информацию, а также должен знать регламенты принятия заявок по телефонным звонкам внутри отдела, месячного и позадачного планирования загрузки специалистов ОР (регламенты приведены в приложении).\r2.2.4.3 Степень приспособляемости системы\r\tСистема должна легко дорабатываться для добавления новых или изменения имеющихся функций.\r\r2.2.4.4 Требования к надежности\r\tНадежность и отказоустойчивость системы к ошибкам пользователей и ошибкам загружаемых данных обеспечивают внутренние средства 1С.\r\tИнтерфейс системы должен быть эргономичным с точки зрения пользователя. Интерфейсы программных продуктов на базе «1С:Предприятие 8.1» ориентированы на удобную работу и простоту освоения.\r\tСистема должна обладать патентной чистотой. Это предполагает использование программы на лицензионных копиях программ «1С:Предприятие».\r\tДолжен быть предусмотрен режим раздельной работы с конфигурацией нескольких пользователей. Для этого необходимо, чтобы при входе в конфигурацию присутствовала авторизация и аутентификация пользователей, а значит, каждый пользователь должен иметь свой прописанный в конфигурации набор прав.\r\r2.2.5 Требования к функциям\r2.2.5.1 Перечень подлежащих автоматизации задач\r\tДля системы должны быть реализованы следующие возможности:\rУчет по ЛУСВ;\rКонтроль загруженности исполнителей;\rУчет и контроль обновлений ПО;\rКонтроль исполнения заявок ;\rПроверка эффективности - СМК;\rФормирование План - Факта отработки по клиентам;\rФормирование отчетности по ЛУСВ сотрудников подразделения.\r\r2.2.5.2 Перечень критериев и отказов\r\tФатальные ошибки. Сбои в системе, которые приводят к потере ее работоспособности или порче данных. При работе с системой фатальные ошибки не обнаружены.  \r\tСерьезные ошибки. Ошибки, которые не позволяют достичь желаемого результата при использовании некоторого средства или функции программного продукта, включая невозможность исполнения содержащейся в меню или диалоговом окне команды, выполнения процесса или формирования текста. Серьезных ошибок не обнаружено.\r\tМаленькие ошибки. Ошибки, которые вызывают неудобство работы с системой, например, ошибки в задании порядка перехода от одного элемента управления к другому в форме ввода информации. К данному типу ошибок можно отнести также беспричинные сообщения об ошибках.\rВ документе «Проект» не формировалась печатная форма;\rНе проводился документ «Отмена ЛУСВ»;\rПри открытии созданного документа «Проект» выдавалось предупреждение «Разрешен только просмотр документа!» .\rВ результате внесенных изменений в конфигурацию – данные ошибки исправлены.\r\tНезначительные ошибки. К данному типу ошибок относятся орфографические ошибки в надписях или не выровненные элементы управления.  При работе с ИС были выявлены орфографические ошибки, которые в дальнейшем были исправлены.\r\r2.2.6 Требования к видам обеспечения\r\tСистема предъявляет следующие требования к видам обеспечения:\r\tа) математическому:  к пользователю конфигурации не предъявляется особых требований в области математического анализа;\r\tб) информационному: конфигурация доступна для использования только при установленной платформе «1С: Предприятие 8.1», которая в свою очередь рекомендуется к использованию совместно с операционной системой Windows 98/2000/XP/Vista/7.\r\tв) лингвистическому: для написания модулей конфигурации использовался встроенный язык системы 1С: Предприятие 8.1. Изменением конфигурации рекомендуется заниматься только специалистам, владеющим этим языком.\r\tг) программному и техническому: для работы с «1С:Предприятием 8.1» рекомендуемая конфигурация компьютера  имеет следующие характеристики:\r\t1) компьютер конечного пользователя:\r\t\ta) операционная система: MS Windows 2000 / XP / Server 2003;\r\t\tb) процессор Intel Pentium III 866 МГц;\r\t\tc) оперативная память 256 Мбайт.\r\t2) компьютер, используемый для разработки конфигураций:\r\t\ta) операционная система: MS Windows 2000 / XP / Server 2003;\r\t\tb) процессор Intel Pentium IV/Celeron 1800 МГц;\r\t\tc) оперативная память 512 Мбайт.\r\t3) сервер «1С:Предприятие 8.0»:\r\t\ta) операционная система: MS Windows 2000 / XP / Server 2003;\r\t\tb) процессор Intel Pentium IV/Xeon 2,4 ГГц;\r\t\tc) оперативная память 1024 Мбайт.\r\tИз программных средств необходимы: платформа «1С:Предприятие 8.1».\r\tд) метрологическому: нет требований к данному виду обеспечения.\r\tе) организационному: для функционирования системы необходим один человек.  При работе с конфигурацией сразу нескольких пользователей существует требование каждому пользователю входить в информационную базу только со своими правами.\r\tж) методическому (состав нормативно-технической документации):\r\t\ta) инструкция программисту;\r\t\tb) инструкция пользователю;\t\r\r2.2.7 Перечень этапов работ и сроки исполнения.\r\tПеречень этапов работ и сроки исполнения представлены в таблице 1.\rТаблица 1\rПеречень этапов работ и сроки исполнения\r№\r\u0007Выполняемая работа\r\u0007Сроки\r\u0007\r\u00071.\r\u0007Постановка задачи\r\u0007февраль 2010 г. - март 2010 г.\r\u0007\r\u00072.\r\u0007Проектирование\r\u0007март 2010 г.\r\u0007\r\u00073.\r\u0007Кодирование\r\u0007апрель 2010 г. – май 2010 г.\r\u0007\r\u00074.\r\u0007Тестирование и отладка\r\u0007май 2010 г.\r\u0007\r\u00075.\r\u0007Анализ результатов\r\u0007Июнь 2010 г.\r\u0007\r\u0007\r2.2.8 Состав исполнителей работ\rРаботы по созданию системы проводились физическим лицом, Саржановым Робертом  студентом УлГТУ. При этом консультантами выступали:\r\tа) Меркулова Тамара Алексеевна – УлГТУ, доцент кафедры «Информационные системы», руководитель дипломного проекта.\r\tб) Миронов Владимир Валерьевич – руководитель отдела решений (внедрения) ГК  «Софт Плюс».\r\r2.2.9 Порядок контроля системы\rДля контроля необходимо провести следующие виды тестирования:\r\tФункциональное тестирование. Оно включает проверку каждой команды меню, панели инструментов и каждой операции, которую выполняет система.\r\tТестирование приложения. При выполнении тестирования приложения испытатель моделирует действия пользователя. Воспроизводя различные комбинации действий, можно найти ошибки, относящиеся к интеграции компонентов, а также недоработки, которые не были обнаружены при функциональном тестировании.\r\tТестирование на скорость выполнения. Измеряется время отклика системы на некоторое действие, документа. Обычно при этом определяются параметры эффективности. Одновременно с измерением времени на выполнение запроса записать также размер базы данных.\rТест на скорость выполнения задач пройден успешно (проведение документов при объеме 10 строк, формирование отчетов – составило менее 3-х секунд).\r\tВсе этапы тестирования программы проводились непосредственным разработчиком Саржановым Робертом Рамисовичем.\r\r2.2.10 Требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие\rДля ввода системы в эксплуатацию необходимо провести обучение персонала с программой с использованием всех ее возможностей: руководителя отдела решений (внедрений) и диспетчера – 2 академических часа.\r\tНеобходимо дополнить во внедряемой системе справочники.\r\r2.2.11 Перечень подлежащих разработке документов\r\t- регламент по  принятию заявок  от клиента в отделе решений (внедрения)  на базе 1С;\r- регламент месячного и позадачного планирования загрузки специалистов ОР;\r\t- инструкция администратору;\r- инструкция пользователю;\r\t- презентация программного продукта.",
         "1",
         "[['2.2', 'техническое', 'задание'], ['2.2.1', 'общий', 'сведение'], ['1'], ['полный', 'наименование', 'система', 'условный', 'обозначение', 'автоматизация', 'бизнес', 'проектов', 'база', '1с', 'гк', 'софт', 'плюс', 'средство', '1с_предприятие', '8.1/8.2', 'арм', 'сотрудник', 'отдел_решение', 'внедрение', 'база', '1с', 'гк', 'софт', 'плюс', '2', 'шифр', 'тема', 'шифр', 'номер', 'договор', 'программный', 'продукт', 'разрабатываться', 'рамка', 'договор', '3', 'наименование', 'предприятие', 'разработчик', 'заказчик', 'система', 'реквизит', 'гк', 'софт', 'плюс', '432071', 'ульяновский', 'обл', 'г.', 'ульяновск', 'улица', 'карл', 'маркс', 'дом', '№', '13а', 'корпус', '2', 'кв.710', '4', 'перечень', 'документ', 'основание', 'создаваться', 'информационный', 'система', '1.устав', 'общество', 'ограничить', 'ответственность', 'скс', '5', 'плановый', 'срок', 'окончание', 'работа', '29', 'март', '2010', 'год', '7', 'май', '2010', 'год', '6', 'сведение', 'источник', 'порядок', 'финансирование', 'работа', 'работа', 'проводиться', 'некоммерческий', 'основа', '7', 'порядок', 'оформление', 'предъявление', 'заказчик', 'результат', 'работа', 'создание', 'система', 'часть', 'отдельный', 'средство', 'окончание', 'работа', 'заказчик', 'предъявить', 'передать', 'установочный', 'диск', 'необходимый', 'дистрибутив', 'набор', 'инструкция', 'документация', 'полноценный', 'функционирование', 'система'], ['2.2.2', 'назначение', 'цель', 'создание', 'система', 'разработанная', 'система', 'призвана', 'автоматизировать', 'процесс', 'отдел_решение', 'внедрение', 'база', '1с.', 'цель', 'разработка', 'повышение', 'оперативность', 'качество', 'процесс', 'существовать', 'ор'], ['внедрение', 'система', 'следующий', 'показатель', 'технический', 'показатель', 'технологический', 'уменьшение', 'число', 'этап', 'выполнение', 'операция', 'связать', 'вывод', 'нужный', 'оперативный', 'информация', 'производственный', 'экономический', 'сократить', 'время', 'процесс', 'связать', 'учёт', 'заявка', 'анализ', 'загруженность', 'специалист', 'значительно', 'облегчить', 'труд', 'диспетчер', 'отдел'], ['2.2.3', 'характеристика', 'объект', 'автоматизация', 'объект', 'автоматизация', 'являться', 'отдел_решение', 'внедрение', 'гк', 'софт', 'плюс'], ['основной', 'функция', 'отдел', 'автоматизировать'], ['2.2.4', 'требование', 'система', 'целое', '2.2.4.1', 'требование', 'структура', 'функционирование', 'система', 'система', 'обеспечивать', 'выполнение', 'перечислить', 'функция', 'добавление', 'новый', 'учётный', 'документация', 'хранение', 'различный', 'отчётный', 'период', 'редактирование', 'удаление', 'существовать', 'учётный', 'документация', 'формирование', 'отчётный', 'документация'], ['2.2.4.2', 'требование', 'персонал', 'функционирование', 'система', 'необходимый', 'сотрудник', 'отдел_решение', 'внедрение', 'база', '1с.', 'обладать', 'навык', 'работа', 'программа', 'база', 'платформа', '1с_предприятие', '8.1', 'позволить', 'фиксировать', 'операция', 'быстро', 'получать', 'необходимый', 'информация', 'знать', 'регламент', 'принятие', 'заявка', 'телефонный', 'звонкам', 'внутри', 'отдел', 'месячный', 'позадачного', 'планирование', 'загрузка', 'специалист', 'ор', 'регламент', 'привести', 'приложение'], ['2.2.4.3', 'степень', 'приспособляемость', 'система', 'система', 'легко', 'дорабатываться', 'добавление', 'новый', 'изменение', 'иметься', 'функция'], ['2.2.4.4', 'требование', 'надёжность', 'надёжность', 'отказоустойчивость', 'система', 'ошибка', 'пользователь', 'ошибка', 'загружать', 'обеспечивать', 'внутренний', 'средство', '1с.', 'интерфейс', 'система', 'эргономичный', 'точка', 'зрение', 'пользователь'], ['интерфейсы', 'программный', 'продукт', 'база', '1с_предприятие', '8.1', 'ориентировать', 'удобный', 'работа', 'простота', 'освоение'], ['система', 'обладать', 'патентный', 'чистота'], ['предполагать', 'использование', 'программа', 'лицензионный', 'копия', 'программа', '1с_предприятие'], ['предусмотреть', 'режим', 'раздельный', 'работа', 'конфигурация', 'несколько', 'пользователь'], ['вход', 'конфигурация', 'присутствовать', 'авторизация', 'аутентификация', 'пользователь', 'пользователь', 'прописать', 'конфигурация', 'набор', 'право'], ['2.2.5', 'требование', 'функция', '2.2.5.1', 'перечень', 'подлежать', 'автоматизация', 'задача', 'система', 'реализовать', 'следующий', 'возможность', 'учёт', 'лусв', 'контроль', 'загруженность', 'исполнитель', 'учёт', 'контроль', 'обновление'], ['контроль', 'исполнение', 'заявка', 'проверка', 'эффективность', 'смк', 'формирование', 'план', 'факт', 'отработка', 'клиент', 'формирование', 'отчётность', 'лусв', 'сотрудник', 'подразделение'], ['2.2.5.2', 'перечень', 'критерий', 'отказ', 'фатальный', 'ошибка'], ['сбой', 'система', 'приводить', 'потеря', 'работоспособность', 'порча'], ['работа', 'система', 'фатальный', 'ошибка', 'обнаружить'], ['серьёзный', 'ошибка'], ['ошибка', 'позволять', 'достигнуть', 'желаемого', 'результат', 'использование', 'некоторый', 'средство', 'функция', 'программный', 'продукт', 'невозможность', 'исполнение', 'содержаться', 'меню', 'диалоговый', 'окно', 'команда', 'выполнение', 'процесс', 'формирование', 'текст'], ['серьёзный', 'ошибка', 'обнаружить'], ['маленький', 'ошибка'], ['ошибка', 'вызывать', 'неудобство', 'работа', 'система', 'ошибка', 'задание', 'порядок', 'переход', 'элемент', 'управление', 'другому', 'форма', 'ввод', 'информация'], ['тип', 'ошибка', 'отнести', 'беспричинный', 'сообщение', 'ошибка'], ['документ', 'проект', 'формироваться', 'печатный', 'форма', 'проводиться', 'документ', 'отмена', 'лусв', 'открытие', 'создать', 'документ', 'проект', 'выдаваться', 'предупреждение', 'разрешить', 'просмотр', 'документ'], ['результат', 'внести', 'изменение', 'конфигурация', 'ошибка', 'исправить'], ['незначительный', 'ошибка'], ['тип', 'ошибка', 'относиться', 'орфографический', 'ошибка', 'надпись', 'выровнять', 'элемент', 'управление'], ['работа', 'ис', 'выявить', 'орфографический', 'ошибка', 'дальнейший', 'исправить'], ['2.2.6', 'требование', 'вид', 'обеспечение', 'система', 'предъявлять', 'следующий', 'требование', 'вид', 'обеспечение', 'математический', 'пользователь', 'конфигурация', 'предъявляться', 'особый', 'требование', 'область', 'математический', 'анализ', 'информационный', 'конфигурация', 'доступный', 'использование', 'установить', 'платформа', '1с_предприятие', '8.1', 'очередь', 'рекомендоваться', 'использование', 'совместно', 'операционный', 'система', 'windows', '98/2000', 'xp', 'vista/7'], ['лингвистический', 'написание', 'модуль', 'конфигурация', 'использоваться', 'встроенный', 'язык', 'система', '1с_предприятие', '8.1'], ['изменение', 'конфигурация', 'рекомендоваться', 'заниматься', 'специалист', 'владеть', 'язык', 'программный', 'технический', 'работа', '1с_предприятие', '8.1', 'рекомендовать', 'конфигурация', 'компьютер', 'следующий', 'характеристика', '1', 'компьютер', 'конечный', 'пользователь', 'a', 'операционный', 'система', 'ms', 'windows', '2000', 'xp', 'server', '2003', 'b', 'процессор', 'intel', 'pentium', 'iii', '866', 'мгц', 'c', 'оперативный', 'память', '256', 'мбайт', '2', 'компьютер', 'использовать', 'разработка', 'конфигурация', 'a', 'операционный', 'система', 'ms', 'windows', '2000', 'xp', 'server', '2003', 'b', 'процессор', 'intel', 'pentium', 'iv', 'celeron', '1800', 'мгц', 'c', 'оперативный', 'память', '512', 'мбайт', '3', 'сервер', '1с_предприятие', '8.0', 'a', 'операционный', 'система', 'ms', 'windows', '2000', 'xp', 'server', '2003', 'b', 'процессор', 'intel', 'pentium', 'iv', 'xeon', '2,4', 'ггц', 'c', 'оперативный', 'память', '1024', 'мбайт'], ['программный', 'средство', 'необходимый', 'платформа', '1с_предприятие', '8.1', 'метрологический', 'требование', 'вид', 'обеспечение', 'организационный', 'функционирование', 'система', 'необходимый', 'человек'], ['работа', 'конфигурация', 'несколько', 'пользователь', 'существовать', 'требование', 'каждый', 'пользователь', 'входить', 'информационный', 'база', 'право', 'методический', 'состав', 'нормативный', 'технический', 'документация', 'a', 'инструкция', 'программист', 'b', 'инструкция', 'пользователь', '2.2.7', 'перечень', 'этап', 'работа', 'срок', 'исполнение'], ['перечень', 'этап', 'работа', 'срок', 'исполнение', 'представить', 'таблица', '1'], ['таблица', '1', 'перечень', 'этап', 'работа', 'срок', 'исполнение', '№', '\\x07выполняемая', 'работа', '\\x07сроки', '\\x07', '\\x071', '\\x07постановка', 'задача', '\\x07февраль', '2010_г.', 'март', '2010_г.', '\\x07', '\\x072'], ['\\x07проектирование', '\\x07март', '2010_г.', '\\x07', '\\x073'], ['\\x07кодирование', '\\x07апрель', '2010_г.', 'май', '2010_г.', '\\x07', '\\x074'], ['\\x07тестирование', 'отладка', '\\x07май', '2010_г.', '\\x07', '\\x075'], ['\\x07анализ', 'результат', '\\x07июнь', '2010_г.', '\\x07', '\\x07', '2.2.8', 'состав', 'исполнитель', 'работа', 'работа', 'создание', 'система', 'проводиться', 'физический', 'лицо', 'саржановым', 'роберт', 'студент', 'улгту'], ['консультант', 'выступать', 'меркулов', 'тамара', 'алексеевич', 'улгту', 'доцент', 'кафедра', 'информационный', 'система', 'руководитель', 'дипломный', 'проект', 'миронов', 'владимир', 'валериевич', 'руководитель', 'отдел_решение', 'внедрение', 'гк', 'софт', 'плюс'], ['2.2.9', 'порядок', 'контроль', 'система', 'контроль', 'провести', 'следующий', 'вид', 'тестирование', 'функциональный', 'тестирование'], ['включать', 'проверка', 'каждый', 'команда', 'меню', 'панель', 'инструмент', 'каждый', 'операция', 'выполнять', 'система'], ['тестирование', 'приложение'], ['выполнение', 'тестирование', 'приложение', 'испытатель', 'моделировать', 'действие', 'пользователь'], ['воспроизводить', 'различный', 'комбинация', 'действие', 'найти', 'ошибка', 'относиться', 'интеграция', 'компонент', 'недоработка', 'обнаружить', 'функциональный', 'тестирование'], ['тестирование', 'скорость', 'выполнение'], ['измеряться', 'время', 'отклик', 'система', 'некоторый', 'действие', 'документ'], ['определяться', 'параметр', 'эффективность'], ['одновременно', 'измерение', 'время', 'выполнение', 'запрос', 'записать', 'размер', 'база'], ['тест', 'скорость', 'выполнение', 'задача', 'пройти', 'успешно', 'проведение', 'документ', 'объём', '10', 'строка', 'формирование', 'отчёт', 'составить', '3-х', 'секунда'], ['этап', 'тестирование', 'программа', 'проводиться', 'непосредственный', 'разработчик', 'саржановым', 'роберт', 'рамисович'], ['2.2.10', 'требование', 'состав', 'содержание', 'работа', 'подготовка', 'объект', 'автоматизация', 'ввод', 'система', 'действие', 'ввод', 'система', 'эксплуатация', 'провести', 'обучение', 'персонал', 'программа', 'использование', 'возможность', 'руководитель', 'отдел_решение', 'внедрение', 'диспетчер', '2', 'академический', 'час'], ['дополнить', 'внедрять', 'система', 'справочник'], ['2.2.11', 'перечень', 'подлежать', 'разработка', 'документ', 'регламент', 'принятие', 'заявка', 'клиент', 'отдел_решение', 'внедрение', 'база', '1с', 'регламент', 'месячный', 'позадачного', 'планирование', 'загрузка', 'специалист', 'ор', 'инструкция', 'администратор', 'инструкция', 'пользователь', 'презентация', 'программный', 'продукт']]"
        ],
        [
         "17",
         "tz_18.doc",
         "2.2. Техническое задание\rОбщие сведения:\rПолное наименование системы: Система хранения и визуализации информационных потоков сотовой компании «МегаФон».\rШифр темы: ДП-УлГТУ-08080165-05/1039-2010\rНаименование предприятия заказчика системы: УРО ПФ ООО «МегаФон».\rПеречень документов, на основании которых создается информационная система: инструкция инженера по ремонту и обслуживанию БТС и ТС УРО ПФ ООО «МегаФон».\rПлановые сроки начала работ: 1 февраля 2010 г. Плановые сроки окончания работ: 15 июня 2010 г.\r\rНазначение и цели создания системы\rНазначение системы. Система предназначена для хранения и визуального представления данных о соединениях между РРС сотовой сети УРО ПФ ООО «МегаФон».\rЦели создания системы. Основными целями создания системы являются:\rЗамещение существующей системы, которая не представляет возможности комплексного обеспечения процессов, описанных выше. Действующая информационная система является устаревшей, так как хранение данных ведется частично на бумажных носителях, частично в среде графической обработки, не предназначенной непосредственно для специалистов по обслуживанию базовых станций.\rПовышение скорости получения необходимой информации. Все данные должны храниться в единой системе, доступ к ним должен увеличиться, поскольку поиск и структурирование информации возлагается на вычислительную машину.\rСтандартизация хранения информации о соединениях РРС на уровне регионального отделения. База данных будет оставаться неизменной, независимо от того, какой инженер с ней работает.\r\rХарактеристика объекта автоматизации.\rОбъектом автоматизации является деятельность инженеров по обслуживанию базовых станций и транспортных сетей. В настоящий момент в УРО ПФ ООО «МегаФон» используются следующие информационные системы:\rMicrosoft Excel. Отчеты и перечни оборудования хранятся в электронных книгах Excel.\r\rТребования к системе.\rТребования к системе в целом.\rТребования к структуре и функционированию системы\rПеречень подсистем, их назначение и основные характеристики. В состав программного продукта должны входить следующие подсистемы:\rподсистема хранения данных – предназначена для хранения данных о соединениях РРС;\rподсистема формирования отчета – предназначена для создания отчетов.\r\rТребование к численности и квалификации персонала системы.\rДля эксплуатации системы необходим только пользователь, являющийся инженером по обслуживанию базовых станций сотовой связи. Пользователь должен обладать следующими навыками:\rопыт работы с персональным компьютером на базе операционных систем Microsoft Windows;\rзнания принципа работы сетей сотовой связи;\rопыт работы с электронными книгами Microsoft Excel.\r\rТребования к надежности.\rСистема должна сохранять работоспособность и обеспечивать восстановление своих функций при возникновении следующих внештатных ситуаций:\rпри сбоях в системе электроснабжения аппаратной части, приводящих к перезагрузке ОС, восстановление программы должно происходить после перезапуска ОС и запуска исполняемого файла системы;\rпри ошибках в работе аппаратных средств (кроме носителей данных и программ) восстановление функции системы возлагается на ОС;\rпри ошибках, связанных с программным обеспечением (ОС и драйверы устройств), восстановление работоспособности возлагается на ОС.\rДля защиты аппаратуры от бросков напряжения и коммутационных помех должны применяться сетевые фильтры.\r\rТребования к безопасности.\rВсе внешние элементы технических средств системы, находящиеся под напряжением, должны иметь защиту от случайного прикосновения, а сами технические средства иметь зануление или защитное заземление в соответствии с ГОСТ 12.1.030-81 и ПУЭ.\u000bСистема электропитания должна обеспечивать защитное отключение при перегрузках и коротких замыканиях в цепях нагрузки, а также аварийное ручное отключение.\u000bОбщие требования пожарной безопасности должны соответствовать нормам на бытовое электрооборудование. В случае возгорания не должно выделяться ядовитых газов и дымов. После снятия электропитания должно быть допустимо применение любых средств пожаротушения. \u000bФакторы, оказывающие вредные воздействия на здоровье со стороны всех элементов системы (в том числе инфракрасное, ультрафиолетовое, рентгеновское и электромагнитное излучения, вибрация, шум, электростатические поля, ультразвук строчной частоты и т.д.), не должны превышать действующих норм (СанПиН 2.2.2./2.4.1340-03 от 03.06.2003 г.).\r\rТребования к эргономике и технической эстетике.\rВзаимодействие пользователей с прикладным программным обеспечением, входящим в состав системы должно осуществляться посредством визуального графического интерфейса (GUI). Интерфейс системы должен быть понятным и удобным, не должен быть перегружен графическими элементами и должен обеспечивать быстрое отображение экранных форм. Навигационные элементы должны быть выполнены в удобной для пользователя форме. Средства редактирования информации должны удовлетворять принятым соглашениям в части использования функциональных клавиш, режимов работы, поиска, использования оконной системы. Ввод-вывод данных системы, прием управляющих команд и отображение результатов их исполнения должны выполняться в интерактивном режиме. Интерфейс должен соответствовать современным эргономическим требованиям и обеспечивать удобный доступ к основным функциям и операциям системы.\u000bИнтерфейс должен быть рассчитан на преимущественное использование манипулятора типа «мышь», то есть управление системой должно осуществляться с помощью набора экранных меню, кнопок, значков и т. п. элементов. Клавиатурный режим ввода должен использоваться главным образом при заполнении и/или редактировании текстовых и числовых полей экранных форм.\u000bВсе надписи экранных форм, а также сообщения, выдаваемые пользователю (кроме системных сообщений) должны быть на русском языке. Система должна обеспечивать корректную обработку аварийных ситуаций, вызванных неверными действиями пользователей, неверным форматом или недопустимыми значениями входных данных. В указанных случаях система должна выдавать пользователю соответствующие сообщения, после чего возвращаться в рабочее состояние, предшествовавшее неверной (недопустимой) команде или некорректному вводу данных. Экранные формы должны проектироваться с учетом требований унификации:\rвсе экранные формы пользовательского интерфейса должны быть выполнены в едином графическом дизайне, с одинаковым расположением основных элементов управления и навигации;\rдля обозначения сходных операций должны использоваться сходные графические значки, кнопки и другие управляющие (навигационные) элементы. Термины, используемые для обозначения типовых операций (добавление информационной сущности, редактирование поля данных), а также последовательности действий пользователя при их выполнении, должны быть унифицированы;\rвнешнее поведение сходных элементов интерфейса (реакция на наведение указателя «мыши», переключение фокуса, нажатие кнопки) должны реализовываться одинаково для однотипных элементов.\u000bСистема должна соответствовать требованиям эргономики и профессиональной медицины при условии комплектования высококачественным оборудованием (ПЭВМ, монитор и прочее оборудование), имеющим необходимые сертификаты соответствия и безопасности Росстандарта.\r\rТребования к функциям, выполняемым системой\rхранение структурированной информации обо всех соединениях РРС, принадлежность РРС к базовым станциям сотовой сети;\rграфическое и текстовое представление данных о соединениях каналов РРС, находящихся на одной БС;\rрасположение базовых станций на карте;\rотображение на карте соединений между РРС, находящимися на различных БС;\rотображение принадлежности РРС к конкретной БС;\rпредоставление информации обо всех станциях, передающих информационный поток;\r\rТребования к видам обеспечения:\rТребования к информационному обеспечению системы. В состав системы должны входить возможности аварийного сохранения данных при возникновении исключительных ситуаций в работе программы.\r\rТребования к лингвистическому обеспечению системы.\rИнтерфейс программного обеспечения должен иметь русский язык, исключением являются наименования оборудования, которое приводится на английском языке.\r\rТребования к программному обеспечению системы.\rБазовой программной платформой должна являться операционная система Microsoft Windows. Необходимо осуществлять выгрузку отчетов в электронные книги Microsoft Excel. Система должна использовать платформу Microsoft .NET Framework версии 2.0 и выше.\r\rТребования к техническому обеспечению системы\rIBM PC-совместимый компьютер;\rпроцессор – Pentium 200 МГц и выше;\rобъем оперативной памяти – 128 Мб и выше;\rсвободного места на жестком диске – 200 Мб.\r\rТребования к организационному обеспечению системы.\rК работе с системой должны допускаться сотрудники компании, обладающие навыками работы с персональным компьютером, ознакомленные с правилами эксплуатации, специалисты в области обслуживания базовых станций и прошедшие обучение работе с системой.\r\rСостав и содержание работ по созданию системы.\rПеречень стадий и этапов работ со сроками исполнения:\r1 февраля 2010 г. – 28 марта 2010 г. Сбор фактического материала, обзор состояния вопроса и анализ предметной области;\r29 марта 2010 г. – 11 апреля 2010 г. Систематизация материала. Описание бизнес-процессов, формулировка постановки задачи, подготовка обзора состояния вопроса;\r12 апреля 2010 г. – 25 апреля 2010 г. Проектирование предметно-ориентированной информационной системы;\r26 апреля 2010 г. – 30 мая 2010 г. Разработка предметно-ориентированной информационной системы;\r31 мая 2010 г. – 13 июня 2010 г. Оформление проекта;\r\rТребования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие.\rПри подготовке к вводу в эксплуатацию системы заказчик должен обеспечить выполнение следующих работ:\rопределить подразделение и должностных лиц, ответственных за внедрение и проведение опытной эксплуатации системы;\rобеспечить присутствие пользователей на обучении работе с системой, проводимом исполнителем;\rобеспечить соответствие помещений и рабочих мест пользователей системы в соответствии с требованиями, изложенными в настоящем ТЗ;\rобеспечить выполнение требований, предъявляемых к программно-техническим средствам, на которых должно быть развернуто программное обеспечение системы;\rсовместно с исполнителем подготовить план развертывания системы на технических средствах заказчика;\rпровести опытную эксплуатацию системы.\r\rТребования к документированию\rИнформационная система должна сопровождаться следующей документацией:\rинструкция пользователя;\rинструкция программиста.\r\rИсточники разработки\rинструкция инженера по ремонту и обслуживанию БТС и ТС УРО ПФ ООО «МегаФон».",
         "1",
         "[['2.2'], ['технический', 'задание', 'общий', 'сведение', 'полный', 'наименование', 'система', 'система', 'хранение', 'визуализация', 'информационный', 'поток', 'сотовый', 'компания', 'мегафон'], ['шифр', 'тема', 'дп', 'улгту-08080165', '05/1039', '2010', 'наименование', 'предприятие', 'заказчик', 'система', 'уро', 'пф', 'ооо', 'мегафон'], ['перечень', 'документ', 'основание', 'создаваться', 'информационный', 'система', 'инструкция', 'инженер', 'ремонт', 'обслуживание', 'бтс', 'тс', 'уро', 'пф', 'ооо', 'мегафон'], ['плановый', 'срок', 'работа', '1', 'февраль', '2010_г.', 'плановый', 'срок', 'окончание', 'работа', '15', 'июнь', '2010_г.', 'назначение', 'цель', 'создание', 'система', 'назначение', 'система'], ['система', 'предназначить', 'хранение', 'визуальный', 'представление', 'соединение', 'ррс', 'сотовый', 'сеть', 'уро', 'пф', 'ооо', 'мегафон'], ['цель', 'создание', 'система'], ['основный', 'цель', 'создание', 'система', 'являться', 'замещение', 'существовать', 'система', 'представлять', 'возможность', 'комплексный', 'обеспечение', 'процесс', 'описать', 'выше'], ['действовать', 'информационный', 'система', 'являться', 'устаревшей', 'хранение', 'вестись', 'частично', 'бумажный', 'носитель', 'частично', 'среда', 'графический', 'обработка', 'предназначить', 'непосредственно', 'специалист', 'обслуживание', 'базовый_станция'], ['повышение', 'скорость', 'получение', 'необходимый', 'информация'], ['храниться', 'единый', 'система', 'доступ', 'увеличиться', 'поиск', 'структурирование', 'информация', 'возлагаться', 'вычислительный', 'машина'], ['стандартизация', 'хранение', 'информация', 'соединение', 'ррс', 'уровень', 'региональный', 'отделение'], ['база', 'оставаться', 'неизменный', 'независимо', 'инженер', 'работать'], ['характеристика', 'объект', 'автоматизация'], ['объект', 'автоматизация', 'являться', 'деятельность', 'инженер', 'обслуживание', 'базовый_станция', 'транспортный', 'сеть'], ['момент', 'уро', 'пф', 'ооо', 'мегафон', 'использоваться', 'следующий', 'информационный', 'система', 'microsoft', 'excel'], ['отчёт', 'перечень', 'оборудование', 'храниться', 'электронный', 'книга', 'excel'], ['требование', 'система'], ['требование', 'система', 'целое'], ['требование', 'структура', 'функционирование', 'система', 'перечень', 'подсистема', 'назначение', 'основной', 'характеристика'], ['состав', 'программный', 'продукт', 'входить', 'следующий', 'подсистема', 'подсистема', 'хранение', 'предназначить', 'хранение', 'соединение', 'ррс', 'подсистема', 'формирование', 'отчёт', 'предназначить', 'создание', 'отчёт'], ['требование', 'численность', 'квалификация', 'персонал', 'система'], ['эксплуатация', 'система', 'необходимый', 'пользователь', 'являться', 'инженер', 'обслуживание', 'базовый_станция', 'сотовый', 'связь'], ['пользователь', 'обладать', 'следующий', 'навык', 'опыт', 'работа', 'персональный', 'компьютер', 'база', 'операционный', 'система', 'microsoft', 'windows', 'знание', 'принцип', 'работа', 'сеть', 'сотовый', 'связь', 'опыт', 'работа', 'электронный', 'книга', 'microsoft', 'excel'], ['требование', 'надёжность'], ['система', 'сохранять', 'работоспособность', 'обеспечивать', 'восстановление', 'функция', 'возникновение', 'следующий', 'внештатный', 'ситуация', 'сбой', 'система', 'электроснабжение', 'аппаратный', 'часть', 'приводить', 'перезагрузка', 'ос', 'восстановление', 'программа', 'происходить', 'перезапуск', 'ос', 'запуск', 'исполняемого', 'файл', 'система', 'ошибка', 'работа', 'аппаратный', 'средство', 'носитель', 'программа', 'восстановление', 'функция', 'система', 'возлагаться', 'ос', 'ошибка', 'связать', 'программный', 'обеспечение', 'ос', 'драйвер', 'устройство', 'восстановление', 'работоспособность', 'возлагаться', 'ос'], ['защита', 'аппаратура', 'бросок', 'напряжение', 'коммутационный', 'помеха', 'применяться', 'сетевой', 'фильтр'], ['требование', 'безопасность'], ['внешний', 'элемент', 'технический', 'средство', 'система', 'находиться', 'напряжение', 'защита', 'случайный', 'прикосновение', 'технический', 'средство', 'зануление', 'защитный', 'заземление', 'соответствие', 'гост', '12.1.030', '81', 'пуэ'], ['система', 'электропитание', 'обеспечивать', 'защитный', 'отключение', 'перегрузка', 'короткий', 'замыкание', 'цепь', 'нагрузка', 'аварийный', 'ручной', 'отключение'], ['общий', 'требование', 'пожарный', 'безопасность', 'соответствовать', 'норма', 'бытовой', 'электрооборудование'], ['случай', 'возгорание', 'выделяться', 'ядовитый', 'газ', 'дым'], ['снятие', 'электропитание', 'допустимый', 'применение', 'средство', 'пожаротушение'], ['фактор', 'оказывать', 'вредный', 'воздействие', 'здоровье', 'сторона', 'элемент', 'система', 'число', 'инфракрасный', 'ультрафиолетовый', 'рентгеновский', 'электромагнитный', 'излучение', 'вибрация', 'шум', 'электростатический', 'поле', 'ультразвук', 'строчный', 'частота', 'т.д.', 'превышать', 'действовать', 'норма', 'санпин', '2.2.2./2.4.1340', '03', '03.06.2003', 'г.'], ['требование', 'эргономика', 'технический', 'эстетика'], ['взаимодействие', 'пользователь', 'прикладной', 'программный', 'обеспечение', 'входить', 'состав', 'система', 'осуществляться', 'визуальный', 'графический', 'интерфейс', 'gui'], ['интерфейс', 'система', 'понятный', 'удобный', 'перегрузить', 'графический', 'элемент', 'обеспечивать', 'быстрый', 'отображение', 'экранный', 'форма'], ['навигационный', 'элемент', 'выполнить', 'удобный', 'пользователь', 'форма'], ['средство', 'редактирование', 'информация', 'удовлетворять', 'принять', 'соглашение', 'часть', 'использование', 'функциональный', 'клавиш', 'режим', 'работа', 'поиск', 'использование', 'оконный', 'система'], ['ввод', 'вывод', 'система', 'приём', 'управлять', 'команда', 'отображение', 'результат', 'исполнение', 'выполняться', 'интерактивный', 'режим'], ['интерфейс', 'соответствовать', 'современный', 'эргономический', 'требование', 'обеспечивать', 'удобный', 'доступ', 'основный', 'функция', 'операция', 'система'], ['интерфейс', 'рассчитать', 'преимущественный', 'использование', 'манипулятор', 'тип', 'мышь', 'управление', 'система', 'осуществляться', 'помощь', 'набор', 'экранный', 'меню', 'кнопка', 'значок', 'т'], ['п.', 'элемент'], ['клавиатурный', 'режим', 'ввод', 'использоваться', 'главный', 'образ', 'заполнение', 'редактирование', 'текстовый', 'числовой', 'поле', 'экранный', 'форма'], ['надпись', 'экранный', 'форма', 'сообщение', 'выдавать', 'пользователь', 'системный', 'сообщение', 'русский', 'язык'], ['система', 'обеспечивать', 'корректный', 'обработка', 'аварийный', 'ситуация', 'вызвать', 'неверный', 'действие', 'пользователь', 'неверный', 'формат', 'недопустимый', 'значение', 'входной'], ['указать', 'случай', 'система', 'выдавать', 'пользователь', 'соответствующий', 'сообщение', 'возвращаться', 'рабочий', 'состояние', 'предшествовать', 'неверный', 'недопустимый', 'команда', 'некорректный', 'ввод'], ['экранный', 'форма', 'проектироваться', 'учёт', 'требование', 'унификация', 'экранный', 'форма', 'пользовательский', 'интерфейс', 'выполнить', 'единый', 'графический', 'дизайн', 'одинаковый', 'расположение', 'основный', 'элемент', 'управление', 'навигация', 'обозначение', 'сходный', 'операция', 'использоваться', 'сходный', 'графический', 'значок', 'кнопка', 'управлять', 'навигационный', 'элемент'], ['термины', 'использовать', 'обозначение', 'типовой', 'операция', 'добавление', 'информационный', 'сущность', 'редактирование', 'поле', 'последовательность', 'действие', 'пользователь', 'выполнение', 'унифицировать', 'внешний', 'поведение', 'сходный', 'элемент', 'интерфейс', 'реакция', 'наведение', 'указатель', 'мышь', 'переключение', 'фокус', 'нажатие', 'кнопка', 'реализовываться', 'одинаково', 'однотипный', 'элемент'], ['система', 'соответствовать', 'требование', 'эргономика', 'профессиональный', 'медицина', 'условие', 'комплектование', 'высококачественный', 'оборудование', 'пэвм', 'монитор', 'оборудование', 'иметь', 'сертификат', 'соответствие', 'безопасность', 'росстандарта'], ['требование', 'функция', 'выполнять', 'система', 'хранение', 'структурировать', 'информация', 'обо', 'соединение', 'ррс', 'принадлежность', 'ррс', 'базовый_станция', 'сотовый', 'сеть', 'графический', 'текстовый', 'представление', 'соединение', 'канал', 'ррс', 'находиться', 'бс', 'расположение', 'базовый_станция', 'карта', 'отображение', 'карта', 'соединение', 'ррс', 'находиться', 'различный', 'бс', 'отображение', 'принадлежность', 'ррс', 'конкретный', 'бс', 'предоставление', 'информация', 'обо', 'станция', 'передавать', 'информационный', 'поток', 'требование', 'вид', 'обеспечение', 'требование', 'информационный', 'обеспечение', 'система'], ['состав', 'система', 'входить', 'возможность', 'аварийный', 'сохранение', 'возникновение', 'исключительный', 'ситуация', 'работа', 'программа'], ['требование', 'лингвистический', 'обеспечение', 'система'], ['интерфейс', 'программный', 'обеспечение', 'русский', 'язык', 'исключение', 'являться', 'наименование', 'оборудование', 'приводиться', 'английский', 'язык'], ['требование', 'программный', 'обеспечение', 'система'], ['базовый', 'программный', 'платформа', 'являться', 'операционный', 'система', 'microsoft', 'windows'], ['осуществлять', 'выгрузка', 'отчёт', 'электронный', 'книга', 'microsoft', 'excel'], ['система', 'использовать', 'платформа', 'microsoft', '.net', 'framework', 'версия', '2.0', 'высоко'], ['требование', 'технический', 'обеспечение', 'система', 'ibm', 'pc', 'совместимый', 'компьютер', 'процессор', 'pentium', '200', 'мгц', 'высоко', 'объём', 'оперативный', 'память', '128', 'мб', 'высоко', 'свободный', 'место', 'жёсткий', 'диск', '200', 'мб'], ['требование', 'организационный', 'обеспечение', 'система'], ['работа', 'система', 'допускаться', 'сотрудник', 'компания', 'обладать', 'навык', 'работа', 'персональный', 'компьютер', 'ознакомить', 'правило', 'эксплуатация', 'специалист', 'область', 'обслуживание', 'базовый_станция', 'пройти', 'обучение', 'работа', 'система'], ['состав', 'содержание', 'работа', 'создание', 'система'], ['перечень', 'стадия', 'этап', 'работа', 'срок', 'исполнение', '1', 'февраль', '2010_г.', '28', 'март', '2010_г.', 'сбор', 'фактический', 'материал', 'обзор', 'состояние', 'вопрос', 'анализ', 'предметный', 'область', '29', 'март', '2010_г.', '11', 'апрель', '2010_г.', 'систематизация', 'материал'], ['описание', 'бизнес', 'процессов', 'формулировка', 'постановка', 'задача', 'подготовка', 'обзор', 'состояние', 'вопрос', '12', 'апрель', '2010_г.', '25', 'апрель', '2010_г.', 'проектирование', 'предметный', 'ориентированный', 'информационный', 'система', '26', 'апрель', '2010_г.', '30', 'май', '2010_г.', 'разработка', 'предметный', 'ориентированный', 'информационный', 'система', '31', 'май', '2010_г.', '13', 'июнь', '2010_г.', 'оформление', 'проект', 'требование', 'состав', 'содержание', 'работа', 'подготовка', 'объект', 'автоматизация', 'ввод', 'система', 'действие'], ['подготовка', 'ввод', 'эксплуатация', 'система', 'заказчик', 'обеспечить', 'выполнение', 'следующий', 'работа', 'определить', 'подразделение', 'должностной', 'лицо', 'ответственный', 'внедрение', 'проведение', 'опытный', 'эксплуатация', 'система', 'обеспечить', 'присутствие', 'пользователь', 'обучение', 'работа', 'система', 'проводить', 'исполнитель', 'обеспечить', 'соответствие', 'помещение', 'рабочий', 'место', 'пользователь', 'система', 'соответствие', 'требование', 'изложить', 'настоящий', 'тз', 'обеспечить', 'выполнение', 'требование', 'предъявлять', 'программный', 'технический', 'средство', 'развернуть', 'программный', 'обеспечение', 'система', 'совместно', 'исполнитель', 'подготовить', 'план', 'развёртывание', 'система', 'технический', 'средство', 'заказчик', 'провести', 'опытный', 'эксплуатация', 'система'], ['требование', 'документирование', 'информационный', 'система', 'сопровождаться', 'следующий', 'документация', 'инструкция', 'пользователь', 'инструкция', 'программист'], ['источник', 'разработка', 'инструкция', 'инженер', 'ремонт', 'обслуживание', 'бтс', 'тс', 'уро', 'пф', 'ооо', 'мегафон']]"
        ],
        [
         "18",
         "tz_19.doc",
         "2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\r2.2.1. Наименование программы\rАвтоматизированная система (АС) «Обеспечение безопасного доступа к конфеденциальной информации».\r\r2.2.2. Основания для разработки\rК основным документам, на основании которых ведется разработка ИС относятся:\rЗаявка Операционного отдела Банка на разработку программного продукта, средствами которого клиентам предоставляется информация о текущем состоянии их банковских счетов.\r Внутреннее положение Банка «О порядке разработки средств для доступа сторонних лиц к информации, относящейся к коммерческой тайне».\rПриказ на дипломное проектирование №\r\r2.2.3. Плановые сроки начала и окончания работ\rНачало работы – 1 апреля 2010 года.\rОкончание работы – 14 июня 2010 года.\r\r2.2.4. Назначение и область применения\rАC  «Обеспечение безопасного доступа к конфеденциальной информации» предназначена для безопасного доступа клиента к БД, с целью получения сведений о состоянии своего банковского счёта.\rОбласть применения АС – Банк в целом, для предоставления удобной услуги клиенту. \r\r2.2.5. Цели\rУвеличение скорости и количества способов получения информации.\rСнижение трудозатрат.\rПривлечение клиентов.\r\r2.2.6. Требования к системе в целом\rТребования к структуре и функционированию системы.\rПрограммный продукт «Обеспечение безопасного доступа к конфеденциальной информации» должен быть разработан в среде Visual Studio 2005. \rФункционирование подсистемы должно осуществляться на английском языке.\rУдобный и интуитивно понятный интерфейс - взаимодействие с пользователем осуществляется с помощью окон  и стандартных средств  ввода-вывода информации – клавиатуры и мыши. \rВозможность различных настроек системы.\rПредусмотрено наличие двух ролей: а) системный администратор; б) клиент.\rВозможность предоставления отчетов.\r\rТребования к персоналу.\r           Конечный пользователь программы должен обладать практическими навыками работы с  пользовательским интерфейсом операционной системы Windows, а также навыками работы с разработанным программным продуктом.\r\rТребования к надежности.\rИспользование лицензионного программного обеспечения.\rНадежность работы программного продукта обеспечивается бесперебойным питанием технических средств.\r\rТребования к защите и сохранности информации.\rПредусмотрена аутентификация пользователя. При запуске программы пользователю предлагается ввести имя и пароль, что позволяет исключить несанкционированный доступ к системе.\rПредусмотрено администрирование. Работа администратора заключается в:\rразграничении прав доступа к АС;\rрезервное копирование информационной базы.\r\r2.2.7. Требования к функциям\rРабота с базой данных:\rввод информации о клиенте в БД;\rхранение данных за различные отчетные периоды;\rвозможность редактирования данных.  \rРабота с серверной частью программы:\rдоступ к функциям программы;\rвозможность настройки прав доступа.\rРабота с клиентской частью:\rвозможность вводить требуемую информацию;\rобеспечение безопасного просмотра информации.\r\r2.2.8. Требования к видам обеспечения\rТребования к информационному обеспечению.\rСостав исходных данных. В качестве исходных данных используются числовые, буквенные и символьные данные, необходимые для заполнения форм клиентской части, также использутся выгружаемые БД с информацией в виде таблиц, в которых хранятся конфеденциальные данные о клиентах.\rСостав выходных данных. Выходные данные содержат числовую информацию в виде значений, сумм, отчетов, содержащих текст и числа.\rТребования к программному обеспечению.\rСистемные программные средства, используемые программой, должны быть представлены лицензионными  версиями:\rоперационной системы MS Windows;\rVisual Studio 2005 или более новая версия.\rТребования к техническому обеспечению.\rМинимальные системные требования к оборудованию: \rпроцессор Pentium  3 и выше;\rоперативная память объемом не менее 256 Мегабайт;\rсвободное пространство на жестком диске не менее 10Мегабайт.\r\r2.2.9. Требования к документированию\rДолжны быть разработаны:\rПояснительная записка.\rРуководство программиста.\rИнструкция пользователя.",
         "1",
         "[['2.2'], ['техническое', 'задание', '2.2.1'], ['наименование', 'программа', 'автоматизированный', 'система', 'ас', 'обеспечение', 'безопасный', 'доступ', 'конфеденциальной', 'информация'], ['2.2.2'], ['основание', 'разработка', 'основный', 'документ', 'основание', 'вестись', 'разработка', 'ис', 'относиться', 'заявка', 'операционный', 'отдел', 'банк', 'разработка', 'программный', 'продукт', 'средство', 'клиент', 'предоставляться', 'информация', 'текущий', 'состояние', 'банковский', 'счёт'], ['внутренний', 'положение', 'банк', 'порядок', 'разработка', 'средство', 'доступ', 'сторонний', 'лицо', 'информация', 'относиться', 'коммерческий', 'тайна'], ['приказ', 'дипломный', 'проектирование', '№', '2.2.3'], ['плановый', 'срок', 'окончание', 'работа', 'начало', 'работа', '1', 'апрель', '2010', 'год'], ['окончание', 'работа', '14', 'июнь', '2010', 'год'], ['2.2.4'], ['назначение', 'область', 'применение', 'аc', 'обеспечение', 'безопасный', 'доступ', 'конфеденциальной', 'информация', 'предназначить', 'безопасный', 'доступ', 'клиент', 'бд', 'цель', 'получение', 'сведение', 'состояние', 'банковский', 'счёт'], ['область', 'применение', 'ас', 'банк', 'целое', 'предоставление', 'удобный', 'услуга', 'клиент'], ['2.2.5'], ['цель', 'увеличение', 'скорость', 'количество', 'способ', 'получение', 'информация'], ['снижение', 'трудозатрата'], ['привлечение', 'клиент'], ['2.2.6'], ['требование', 'система', 'целое', 'требование', 'структура', 'функционирование', 'система'], ['программный', 'продукт', 'обеспечение', 'безопасный', 'доступ', 'конфеденциальной', 'информация', 'разработать', 'среда', 'visual', 'studio', '2005'], ['функционирование', 'подсистема', 'осуществляться', 'английский', 'язык'], ['удобный', 'интуитивно', 'понятный', 'интерфейс', 'взаимодействие', 'пользователь', 'осуществляться', 'помощь', 'окно', 'стандартный', 'средство', 'ввод', 'вывод', 'информация', 'клавиатура', 'мышь'], ['возможность', 'различный', 'настройка', 'система'], ['предусмотреть', 'наличие', 'два', 'роль', 'системный', 'администратор', 'клиент'], ['возможность', 'предоставление', 'отчёт'], ['требование', 'персонал'], ['конечный', 'пользователь', 'программа', 'обладать', 'практический', 'навык', 'работа', 'пользовательский', 'интерфейс', 'операционный', 'система', 'windows', 'навык', 'работа', 'разработать', 'программный', 'продукт'], ['требование', 'надёжность'], ['использование', 'лицензионный', 'программный', 'обеспечение'], ['надёжность', 'работа', 'программный', 'продукт', 'обеспечиваться', 'бесперебойный', 'питание', 'технический', 'средство'], ['требование', 'защита', 'сохранность', 'информация'], ['предусмотреть', 'аутентификация', 'пользователь'], ['запуск', 'программа', 'пользователь', 'предлагаться', 'ввести', 'имя', 'пароль', 'позволять', 'исключить', 'несанкционированный', 'доступ', 'система'], ['предусмотреть', 'администрирование'], ['работа', 'администратор', 'заключаться', 'разграничение', 'право', 'доступ', 'ас', 'резервный', 'копирование', 'информационный', 'база', '2.2.7'], ['требование', 'функция', 'работа', 'база', 'ввод', 'информация', 'клиент', 'бд', 'хранение', 'различный', 'отчётный', 'период', 'возможность', 'редактирование'], ['работа', 'серверный', 'часть', 'программа', 'доступ', 'функция', 'программа', 'возможность', 'настройка', 'право', 'доступ'], ['работа', 'клиентский', 'часть', 'возможность', 'вводить', 'требуемую', 'информация', 'обеспечение', 'безопасный', 'просмотр', 'информация', '2.2.8'], ['требование', 'вид', 'обеспечение', 'требование', 'информационный', 'обеспечение'], ['состав', 'исходный'], ['качество', 'исходный', 'использоваться', 'числовой', 'буквенный', 'символьный', 'заполнение', 'форма', 'клиентский', 'часть', 'использутся', 'выгружать', 'бд', 'информация', 'вид', 'таблица', 'храниться', 'конфеденциальные', 'клиент'], ['состав', 'выходной'], ['выходные', 'содержать', 'числовой', 'информация', 'вид', 'значение', 'сумма', 'отчёт', 'содержать', 'текст', 'число'], ['требование', 'программный', 'обеспечение'], ['системный', 'программный', 'средство', 'использовать', 'программа', 'представить', 'лицензионный', 'версия', 'операционный', 'система', 'ms', 'windows', 'visual', 'studio', '2005', 'новый', 'версия'], ['требование', 'технический', 'обеспечение'], ['минимальный', 'системный', 'требование', 'оборудование', 'процессор', 'pentium', '3', 'высоко', 'оперативный', 'память', 'объём', '256', 'мегабайт', 'свободный', 'пространство', 'жёсткий', 'диск', '10мегабайт', '2.2.9'], ['требование', 'документирование', 'разработать', 'пояснительный', 'записка'], ['руководство', 'программист'], ['инструкция', 'пользователь']]"
        ],
        [
         "19",
         "tz_20.doc",
         "2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\r2.2.1. Общие сведения\rПолное наименование программного продукта: Анализатор запросов.\rНаименование разработчика и заказчика:\rразработчик: Субхангулов Руслан Айратович;\rзаказчик: Наместников Алексей Михайлович;\rИС разрабатывается на основе задания на дипломное проектирование;\rПлановые сроки начала и окончания работ:\rначало: 1.04.2010 г.;\rокончание: 31.05.2010 г. \r\r2.2.2. Назначение и цели создания системы \rЦелью создания программного продукта является предоставление удобного интерфейса пользователю для формирования запросов (в том числе нечетких запросов) на языке XQuery к XML Server Tamino.\rЗадачи:\rклиент-серверное приложение;\rвозможность быстро создать запрос  и получить имеющиеся данные;\rпредставление информации в удобной пользователю форме;\rзащита от некорректных действий пользователей системы.\r\r2.2.3. Характеристика объектов автоматизации\rДанную систему можно внедрять в крупные коммерческих организациях, задавших целью получать не только оперативную информацию о своей деятельности, но и информацию прошлых периодов с последующим анализом, для принятие управленческих решений.\r\r2.2.4. Требования к системе\rТребования к системе в целом \rИнформационная система должна являться клиент-серверным приложением, поэтому она будет распределенной, база данных располагается на XML сервере, доступ к которой осуществляется с помощью клиентской части.\rТакая структура позволяет быстро осуществить доступ к необходимым данным благодаря особенностям работы XML сервера.\rТребования к персоналу: пользователь данной системы должен обладать минимальными знаниями в компьютерной области для корректной работы с программой.\rФункциональные требования \rОсновные функции:\rввод, редактирование, чтение и удаление лингвистических перемен;\rобращения к базе данных по средствам запросов;\rпредставление данных;\rмеханизм транзакций.\rТребования к видам обеспечения \rПрограмма должна корректно работать на следующем или совместимом с ним оборудовании:\rPentium 450 и выше;\r128 MB RAM.\rПрограмма должна быть разработана на языке С# в среде разработки Visual Studio 2005.\r\r2.2.5. Состав и содержание работ по созданию системы \rРазработка программы должна выполняться по следующим этапам: \rразработка, согласование и утверждение технического проекта программы с пояснительной запиской – с  1.04.2010 по 10.04.2010;\rразработка программы – с 11.04.2010 по 15.05.2010; \rприем-сдача с исправлением обнаруженных недостатков в программе и программной документации – 15.05.2010 по 31.05.2010.\r\r2.2.6. Требования к документированию\rСостав программной документации должен включать следующие документы: \r1)\tтехнический проект программы по ГОСТ 34.602-89 в машинописном исполнении, содержащий: \rа)\tраздел \"ВХОДНЫЕ ДАННЫЕ\" (Характер, организация и предварительная подготовка     входных данных); \rб)\tраздел \"ВЫХОДНЫЕ ДАННЫЕ\" (Характер и организация выходных данных); \rв)\tраздел \"ОПИСАНИЕ ЛОГИЧЕСКОЙ СТРУКТУРЫ\" при технологии объектно-ориентированного программирования должен включать следующие материалы: \r- описание связей программы с другими программами; \r- описание внутренних массивов и переменных, которые используются в межмодульном обмене данными; \r- схема иерархии классов (Приводится рисунок или рисунки); \r- расшифровка наименований методов и описаний самих методов (Приводится таблица);\rг) раздел \"ИСПОЛЬЗУЕМЫЕ ТЕХНИЧЕСКИЕ СРЕДСТВА\" (Типы ЭВМ, на которых возможно выполнение программы; устройства ЭВМ, которые используются при выполнении программы); \rд) раздел \"ВЫЗОВ И ЗАГРУЗКА\" (Виды носителей программы, их используемый объем; способы вызова программы с соответствующих носителей данных; входные точки в программу (запуск программы); \rе) раздел \"ПЛАН МЕРОПРИЯТИЙ ПО РАЗРАБОТКЕ И ВНЕДРЕНИЮ ПРОГРАММЫ\" \r2) описание программы по ГОСТ 19.402-78 на машинном носителе (дискете с маркировкой DESCRIBE), включающее: назначение программы; дата ее создания; Ф.И.О. разработчика, а также данные, позволяющие связаться с ним; минимальные требования к аппаратным ресурсам; руководство пользователя, содержащее описание всех документированных возможностей программы. \r3) текст программы по ГОСТ 19.401-78 на машинном носителе (дискете с маркировкой SOURCE), представленный в виде текстового файла. \r4) руководство программиста по ГОСТ 19.504-79 на машинном носителе (дискете с маркировкой PROG) в виде файла README.TXT, содержащий данные о технологии проектирования и программирования данной программы, а также о языке программирования, назначение программы и список литературы, содержащей теоретический материал, необходимый для создания программы.\r\r2.2.7. Источники разработки \rРабота ведётся на основании задания на дипломное проектирование.",
         "1",
         "[['2.2'], ['техническое', 'задание', '2.2.1'], ['общий', 'сведение', 'полный', 'наименование', 'программный', 'продукт', 'анализатор', 'запрос'], ['наименование', 'разработчик', 'заказчик', 'разработчик', 'субхангулов', 'руслан', 'айратович', 'заказчик', 'наместников', 'алексей', 'михаилович', 'ис', 'разрабатываться', 'основа', 'задание', 'дипломный', 'проектирование', 'плановый', 'срок', 'окончание', 'работа', 'начало', '1.04.2010', 'г.', 'окончание', '31.05.2010', 'г.', '2.2.2'], ['назначение', 'цель', 'создание', 'система', 'цель', 'создание', 'программный', 'продукт', 'являться', 'предоставление', 'удобный', 'интерфейс', 'пользователь', 'формирование', 'запрос', 'число', 'нечёткий', 'запрос', 'язык', 'xquery', 'xml', 'server', 'tamino'], ['задача', 'клиент', 'серверный', 'приложение', 'возможность', 'быстро', 'создать', 'запрос', 'получить', 'иметься', 'представление', 'информация', 'удобный', 'пользователь', 'форма', 'защита', 'некорректный', 'действие', 'пользователь', 'система', '2.2.3'], ['характеристика', 'объект', 'автоматизация', 'данную', 'система', 'внедрять', 'крупный', 'коммерческий', 'организация', 'задать', 'цель', 'получать', 'оперативный', 'информация', 'деятельность', 'информация', 'прошлый', 'период', 'последующий', 'анализ', 'принятие', 'управленческий', 'решение'], ['2.2.4'], ['требование', 'система', 'требование', 'система', 'целое', 'информационный', 'система', 'являться', 'клиент', 'серверный', 'приложение', 'распределить', 'база', 'располагаться', 'xml', 'сервер', 'доступ', 'осуществляться', 'помощь', 'клиентский', 'часть'], ['структура', 'позволять', 'быстро', 'осуществить', 'доступ', 'данным', 'особенность', 'работа', 'xml', 'сервер'], ['требование', 'персонал', 'пользователь', 'система', 'обладать', 'минимальный', 'знание', 'компьютерный', 'область', 'корректный', 'работа', 'программа'], ['функциональный', 'требование', 'основной', 'функция', 'ввод', 'редактирование', 'чтение', 'удаление', 'лингвистический', 'перемена', 'обращение', 'база', 'средство', 'запрос', 'представление', 'механизм', 'транзакция'], ['требование', 'вид', 'обеспечение', 'программа', 'корректно', 'работать', 'следующий', 'совместимом', 'оборудование', 'pentium', '450', 'высоко', '128', 'mb', 'ram'], ['программа', 'разработать', 'язык', 'среда', 'разработка', 'visual', 'studio', '2005', '2.2.5'], ['состав', 'содержание', 'работа', 'создание', 'система', 'разработка', 'программа', 'выполняться', 'следующий', 'этап', 'разработка', 'согласование', 'утверждение', 'технический', 'проект', 'программа', 'пояснительный', 'записка', '1.04.2010', '10.04.2010', 'разработка', 'программа', '11.04.2010', '15.05.2010', 'приём', 'сдача', 'исправление', 'обнаружить', 'недостаток', 'программа', 'программный', 'документация', '15.05.2010', '31.05.2010', '2.2.6'], ['требование', 'документирование', 'состав', 'программный', 'документация', 'включать', 'следующий', 'документ', '1', 'технический', 'проект', 'программа', 'гост', '34.602', '89', 'машинописный', 'исполнение', 'содержать', 'раздел', 'входные', 'характер', 'организация', 'предварительный', 'подготовка', 'входной', 'раздел', 'выходные', 'характер', 'организация', 'выходной', 'раздел', 'описание', 'логической', 'структура', 'технология', 'объектный', 'ориентированный', 'программирование', 'включать', 'следующий', 'материал', 'описание', 'связь', 'программа', 'программа', 'описание', 'внутренний', 'массив', 'переменный', 'использоваться', 'межмодульный', 'обмен', 'данными', 'схема', 'иерархия', 'класс', 'приводиться', 'рисунок', 'рисунок', 'расшифровка', 'наименование', 'метод', 'описание', 'метод', 'приводится', 'таблица', 'раздел', 'используемые', 'технические', 'средства', 'тип', 'эвм', 'выполнение', 'программа', 'устройство', 'эвм', 'использоваться', 'выполнение', 'программа'], [], ['раздел', 'вызов', 'загрузка', 'вид', 'носитель', 'программа', 'использовать', 'объём', 'способ', 'вызов', 'программа', 'соответствующий', 'носитель', 'входной', 'точка', 'программа', 'запуск', 'программа', 'раздел', 'план', 'мероприятий', 'разработке', 'внедрению', 'программы', '2', 'описание', 'программа', 'гост', '19.402', '78', 'машинный', 'носитель', 'дискета', 'маркировка', 'describe', 'включать', 'назначение', 'программа', 'дата', 'создание', 'ф.и.о.', 'разработчик', 'позволять', 'связаться', 'минимальный', 'требование', 'аппаратный', 'ресурс', 'руководство', 'пользователь', 'содержать', 'описание', 'документированный', 'возможность', 'программа'], ['3'], ['текст', 'программа', 'гост', '19.401', '78', 'машинный', 'носитель', 'дискета', 'маркировка', 'source', 'представить', 'вид', 'текстовый', 'файл'], ['4'], ['руководство', 'программист', 'гост', '19.504', '79', 'машинный', 'носитель', 'дискета', 'маркировка', 'prog', 'вид', 'файл', 'readme.txt', 'содержать', 'технология', 'проектирование', 'программирование', 'программа', 'язык', 'программирование', 'назначение', 'программа', 'список', 'литература', 'содержать', 'теоретический', 'материал', 'необходимый', 'создание', 'программа'], ['2.2.7'], ['источник', 'разработка', 'работа', 'вестись', 'основание', 'задание', 'дипломный', 'проектирование']]"
        ],
        [
         "20",
         "Архитектура, управляемая модель.doc",
         "Архитектура, управляемая модель\rАббревиатура MDA расшифровывается как Model Driven Architecture архитектура, управляемая моделью. MDA это архитектура, описывающая новый способ разработки программного обеспечения. Название говорит само за себя очевидно, что в рамках этой архитектуры создание приложений базируется на разработке модели приложения. \rВ основе новой архитектуры лежит идея о полном разделении этапов общего проектирования (моделирования) и последующей реализации приложения на конкретной программной платформе. Идея эта не нова: сначала при помощи специальных средств проектирования создается общая и независимая от способов реализации модель приложения, а затем осуществляется реализация программы в какой-либо среде разработки. При этом процесс разработки полностью основан на модели, которая должна содержать всю необходимую для программирования информацию. Очевидны преимущества, которые дает такой подход:\rНезависимость модели от средств разработки обеспечивает возможность реализации на любой программной платформе. \rПриложение, реализованное в архитектуре MDA, может быть легко перенесено из одной операционной системы в другую. \rСущественна экономия ресурсов при реализации приложения для нескольких программных платформ одновременно. \rАрхитектура позволяет до известной степени автоматизировать процесс программирования. Наличие подробной модели обеспечивает автоматическое создание типовых частей приложения, разработка которых поддается автоматизации. Например, создание пользовательского интерфейса, программирование типовых операций, создание базы данных и организация доступа к данным.\rАрхитектура MDA возникла не на пустом месте. Само ее появление и возможность реализации обусловило наличие ряда стандартов и технологий, на практике доказавших свою полезность. Концептуальной основой появления MDA стали спецификации OMA, ORB, CORBA. Перевести замысел в практическую плоскость позволили технологии объектно-ориентированного программирования (ООП), стандарт CWM, языки UML, XML, MOF. Работами по созданию новой архитектуры программирования занялся консорциум OMG (Object Management Group)*. \rПо мнению создателей, архитектура MDA является новым витком эволюции технологий программирования, так как описывает процесс разработки в целом. Подготовленные читатели с высшим техническим образованием могут возразить, что процесс разработки программного обеспечения описан и стандартизован вдоль и поперек: в нашей стране существует ряд ГОСТов, другие страны также имеют соответствующие стандарты. Но новизна MDA заключается в том, что описание процесса разработки в ней выполнено с использованием современных средств представления и позволяет автоматизировать создание приложений. И весьма вероятно, что через некоторое время архитектура MDA станет общим промышленным стандартом в разработке программного обеспечения. \r\rОсновные понятия\rПрежде чем перейти к описанию собственно архитектуры, необходимо привести некоторые общие термины и определения. \rМодель описание или спецификация системы и ее окружения, созданная для определенных целей. Часто является комбинацией текстовой и графической информации. Текст может быть описан специализированным или естественным языком. \rУправление на основе модели процесс разработки системы, использующий модель для понимания, конструирования, распространения и других операций. \rПлатформа набор подсистем и технологий, которые представляют собой единый набор функциональности, используемой любым приложением без уточнения деталей реализации. \rВычислительная независимость качество модели, обозначающее отсутствие любых деталей структуры и процессов. \rПлатформенная независимость качество модели, обозначающее ее независимость от свойств любой платформы. \rВычислительно-независимая модель модель, скрывающая любые детали реализации и процессов системы; описывает только требования к системе и ее окружению. \rПлатформенно-независимая модель модель, скрывающая детали реализации системы, зависимые от платформы, и содержащая элементы, не изменяющиеся при взаимодействии системы с любой платформой. \rПлатформенно-зависимая модель модель системы с учетом деталей реализации и процессов, зависимых от конкретной платформы. \rМодель платформы набор технических характеристик и описаний технологий и интерфейсов, составляющих платформу. \rПреобразование модели процесс преобразования одной модели системы в другую модель той же системы. \r\rАрхитектура разработки приложений на основе моделей\rЧто такое архитектура, управляемая моделью (MDA)? Архитектура MDA описывает и структурирует поэтапный процесс разработки любых программных систем на основе создания и использования моделей. При этом используется несколько типов моделей, создаваемых и преобразуемых на различных этапах разработки. Процесс разработки по MDA это последовательное (поэтапное) продвижение от одной модели системы к другой. При этом каждая последующая модель преобразуется из предыдущей и дополняется новыми деталями. Модели, общая схема разработки и процесс преобразования моделей ключевые составные части архитектуры. \r\rТипы моделей\rРассмотрим типы моделей, используемых в архитектуре MDA. \rВычислительно-независимая модель (Computation Independent Model, CIM) описывает общие требования к системе, словарь используемых понятий и условия функционирования (окружение). Модель не должна содержать никаких сведений технического характера, описаний структуры и функционала системы. CIM максимально общая и независимая от реализации системы модель. Спецификация MDA подчеркивает, что CIM должна быть построена так, чтобы ее можно было преобразовать в платформенно-независимую модель. Поэтому CIM рекомендуется выполнять с использованием унифицированного языка моделирования UML. \rПлатформенно-независимая модель (Platform Independent Model, PIM) описывает состав, структуру, функционал системы. Модель может содержать сколь угодно подробные сведения, но они не должны касаться вопросов реализации системы на конкретных платформах. Модель PIM создается на основе CIM. Для создания модели используется унифицированный язык моделирования UML. \rПлатформенно-зависимая модель (Platform Specific Model, PSM) описывает состав, структуру, функционал системы применительно к вопросам ее реализации на конкретной платформе. В зависимости от назначения модель может быть более или менее детализированной. Модель создается на основе двух моделей. Модель PIM служит основой модели PSM. Модель платформы используется для доработки PSM в соответствии с требованиями платформы. \rМодель платформы описывает технические характеристики, интерфейсы, функции платформы. Зачастую модель платформы представлена в виде технических описаний и руководств. Модель платформы используется при преобразовании модели PIM в модель PSM. Для целей MDA описание модели платформы должно быть представлено на унифицированном языке моделирования UML. \r\rУровни модели\rВ зависимости от уровня детализации платформы, модели (кроме модели платформы) могут содержать сведения о различных функциональных частях системы. В этом случае говорят об уровнях модели. Обычно различают следующие основные уровни модели. \rУровень бизнес-логики содержит описание основного функционала приложения, обеспечивающего исполнение его назначения. Как правило, уровень бизнес-логики хуже всего поддается автоматизации. Он составляет львиную долю кода приложения, который приходится писать вручную. \rУровень данных описывает структуру данных приложения, используемые источники, форматы данных, технологии и механизмы доступа к данным. Для приложений .NET чаще всего используются возможности ADO.NET. \rУровень пользовательского интерфейса описывает возможности приложения по взаимодействию с пользователями, а также состав форм приложения, функционал элементов управления (например, контроль ввода данных). Легкость автоматизации этого уровня зависит от того, насколько унифицированы пользовательские операции. Если удается создать типовые шаблоны элементов управления для основных операций, появляется возможность автоматической генерации форм и их содержимого при создании приложения из модели. \r\rЭтапы разработки\rПроцесс разработки разбивается на три этапа. На первом этапе разрабатывается вычислительно-независимая модель (CIM). Часто модель, создаваемую на этом этапе, также называют доменной или бизнес-моделью. Цель данного этапа разработка общих требований к системе, создание общего словаря понятий, описание окружения, в котором система будет функционировать. Сущности, описываемые в модели CIM этого этапа, должны тщательно анализироваться и отрабатываться. Право на включение в модель должны иметь только те элементы, которые будут использованы и развиты на последующих этапах разработки. Для создания модели CIM на данном этапе можно использовать любые средства. Однако для совместимости с последующими этапами весьма желательно иметь описание модели на языке UML. Следует учитывать, что модель CIM первого этапа представляет собой скорее общую концепцию системы и не является насущно необходимой для процесса разработки приложения. При создании небольших программных систем этот этап можно опустить, однако при работе со сложными проектами он становится почти обязательным. К примеру, разработка текстового технического задания, казалось бы, никак не помогает собственно процессу программирования, зато, существенно способствует пониманию задачи в целом и позволяет избежать грубых ошибок проектирования в дальнейшем. На втором этапе разрабатывается платформенно-независимая модель (PIM). Она может разрабатываться с нуля в случае отсутствия модели первого этапа или основываться на CIM. Преобразование CIM в PIM осуществляется на основе описания на зыке UML, созданного на первом этапе. Здесь в него добавляются элементы, описывающие бизнес-логику, общую структуру системы, состав и взаимодействие подсистем, распределение функционала по элементам, общее описание и требования к пользовательскому интерфейсу. Модель PIM этого этапа обязательно включается во все автоматизированные среды разработки приложений на основе MDA. \rНа третьем этапе создаются платформенно-зависимые модели (PSM). Их число соответствует числу программных платформ, на которых будет функционировать приложение. Кроме этого, возможны случаи, когда приложение (или его составные части) должны работать на нескольких платформах одновременно. Модель PSM создается путем преобразования модели PIM с учетом требований модели платформы. Процесс преобразования описывается ниже. На этапе создания модели PSM разработка приложения согласно архитектуре MDA заканчивается. Считается, что правильно построенная PSM содержит техническую информацию, достаточную для генерации исходного кода (там, где это возможно) и необходимых ресурсов приложения. Здесь эстафетную палочку должна подхватить среда разработки, реализующая MDA. В нашем случае Delphi 9 обеспечивает генерацию кода и компиляцию приложений ECO. С формальной точки зрения это уже не относится к компетенции MDA, но для разработчика преобразование PSM в исполняемый код приложения непосредственное продолжение процесса разработки. Однако, архитектура MDA описывает еще один вариант прохождения третьего этапа, который называется прямым преобразованием в код. Спецификация MDA для этого случая сообщает, что могут существовать инструментарии, напрямую преобразующие модель PIM в исполняемый код приложения. Модель PSM при этом может создаваться как контрольное описание, позволяющее проверить результат прямого преобразования. \r\rПреобразование моделей PIM PSM\rНаиболее сложным и ответственным этапом при разработке приложений в рамках архитектуры MDA является преобразование модели PIM в модель PSM. Именно на этом этапе общее описание системы на языке UML приобретает вид, пригодный для воплощения приложения на конкретной платформе. Как уже говорилось, в процессе принимает участие модель платформы. Преобразование моделей проходит три последовательные стадии:\rРазработка схемы преобразования (mapping) \rМаркирование (marking) \rСобственно преобразование (transformation)\rРассмотрим их подробнее. Первоначально необходимо разработать схему преобразования элементов модели PIM в элементы модели PSM. Для каждой платформы создается собственная схема преобразования, которая напрямую зависит от возможностей платформы. Схема преобразования затрагивает как содержание модели (совокупность элементов и их свойства), так и саму модель (метамодель, используемые типы). В схеме преобразования нужным типам модели, свойствам метамодели, элементам модели PIM ставятся в соответствие типы модели, свойства метамодели, элементы модели PSM. При преобразовании моделей может использоваться несколько схем преобразования. Для связывания используются марки (mark) самостоятельные структуры данных, принадлежащие не моделям, а схемам преобразования и содержащие информацию о созданных связях. Наборы марок могут быть объединены в тематические шаблоны, которые возможно использовать в различных схемах преобразования. Процесс задания марок называется маркированием. В простейшем случае один элемент модели PIM соединяется маркой с одним элементом модели PSM. В более сложных случаях один элемент модели PIM может иметь несколько марок из разных схем преобразования. Что касается преобразования метамодели, то в большинстве случаев марки могут расставляться автоматически. А вот для элементов модели часто требуется вмешательство разработчика. В процессе маркирования необходимо использовать сведения о платформе. Эти сведения содержатся в модели платформы. \rПроцесс преобразования моделей заключается в переносе маркированных элементов модели и метамодели PIM в модель и метамодель PSM. Процесс преобразования должен документироваться в виде карты переноса элементов модели и метамодели. Способ преобразования моделей может быть:\rРучной \rС использованием профилей \rС настроенной схемой преобразования \rАвтоматический\r\rМногоплатформенные модели\rАрхитектура MDA учитывает возможность разработки приложений, одновременно функционирующих на нескольких платформах. Для этого марки схемы преобразования моделей PIM PSM устанавливаются в соответствии с распределением функционала приложения по платформам. Затем генерируется несколько платформенно-зависимых частей приложения. Проблема взаимодействия частей такого гетерогенного приложения решается на уровне бизнес-логики приложения на этапе разработки. Для обмена данными могут использоваться специально разработанные подсистемы, использующие для организации обмена заранее согласованные механизмы, форматы данных, интерфейсы. Более того, разработка механизмов межплатформенного взаимодействия хорошо поддается автоматизации. Инструментарии MDA могут содержать функционал для создания таких механизмов. \r*Консорциум OMG создан сообществом IT-компаний, специализирующихся на разработке программного и аппаратного обеспечения. Основной задачей консорциума является стандартизация и спецификация в сфере информационных технологий. При этом деятельность консорциума в значительной степени ориентирована на разработку перспективных стандартов. Программистам известны такие разработки OMG, как OMA, CORBA, UML.",
         "0",
         "[['архитектура', 'управляемая', 'модель', 'аббревиатура', 'mda', 'расшифровываться', 'model', 'driven', 'architecture', 'архитектура', 'управляемая', 'модель'], ['mda', 'архитектура', 'описывать', 'новый', 'способ', 'разработка', 'программный', 'обеспечение'], ['название', 'говорить', 'рамка', 'архитектура', 'создание', 'приложение', 'базироваться', 'разработка', 'модель', 'приложение'], ['основа', 'новый', 'архитектура', 'лежать', 'идея', 'полный', 'разделение', 'этап', 'общий', 'проектирование', 'моделирование', 'последующий', 'реализация', 'приложение', 'конкретный', 'программный', 'платформа'], ['идея', 'новый', 'помощь', 'специальный', 'средство', 'проектирование', 'создаваться', 'общий', 'независимый', 'способ', 'реализация', 'модель', 'приложение', 'осуществляться', 'реализация', 'программа', 'среда', 'разработка'], ['процесс', 'разработка', 'полностью', 'основать', 'модель', 'содержать', 'необходимый', 'программирование', 'информация'], ['очевидны', 'преимущество', 'давать', 'подход', 'независимость', 'модель', 'средство', 'разработка', 'обеспечивать', 'возможность', 'реализация', 'программный', 'платформа'], ['приложение', 'реализовать', 'архитектура_mda', 'легко', 'перенести', 'операционный', 'система', 'другую'], ['существенна', 'экономия', 'ресурс', 'реализация', 'приложение', 'несколько', 'программный', 'платформа', 'одновременно'], ['архитектура', 'позволять', 'известный', 'степень', 'автоматизировать', 'процесс', 'программирование'], ['наличие', 'подробный', 'модель', 'обеспечивать', 'автоматический', 'создание', 'типовой', 'часть', 'приложение', 'разработка', 'поддаваться', 'автоматизация'], ['создание', 'пользовательский', 'интерфейс', 'программирование', 'типовой', 'операция', 'создание', 'база', 'организация', 'доступ', 'данным'], ['архитектура_mda', 'возникнуть', 'пустой', 'место'], ['появление', 'возможность', 'реализация', 'обусловить', 'наличие', 'ряд', 'стандарт', 'технология', 'практика', 'доказать', 'полезность'], ['концептуальный', 'основа', 'появление', 'mda', 'спецификация', 'oma', 'orb', 'corba'], ['перевести', 'замысел', 'практический', 'плоскость', 'позволить', 'технология', 'объектный', 'ориентированный', 'программирование', 'ооп', 'стандарт', 'cwm', 'язык', 'uml', 'xml', 'mof'], ['работами', 'создание', 'новый', 'архитектура', 'программирование', 'заняться', 'консорциум', 'omg', 'object', 'management', 'group'], ['мнение', 'создатель', 'архитектура_mda', 'являться', 'новый', 'виток', 'эволюция', 'технология', 'программирование', 'описывать', 'процесс', 'разработка', 'целое'], ['подготовленные', 'читатель', 'высокий', 'технический', 'образование', 'возразить', 'процесс', 'разработка', 'программный', 'обеспечение', 'описать', 'стандартизовать', 'вдоль', 'поперёк', 'страна', 'существовать', 'ряд', 'гост', 'страна', 'иметь', 'соответствующий', 'стандарт'], ['новизна', 'mda', 'заключаться', 'описание', 'процесс', 'разработка', 'выполнить', 'использование', 'современный', 'средство', 'представление', 'позволять', 'автоматизировать', 'создание', 'приложение'], ['весьма', 'вероятный', 'некоторый', 'время', 'архитектура_mda', 'стать', 'общий', 'промышленный', 'стандарт', 'разработка', 'программный', 'обеспечение'], ['основной', 'понятие', 'перейти', 'описание', 'архитектура', 'привести', 'общий', 'термин', 'определение'], ['модель', 'описание', 'спецификация', 'система', 'окружение', 'создать', 'определённый', 'цель'], ['являться', 'комбинация', 'текстовый', 'графический', 'информация'], ['текст', 'описать', 'специализированный', 'естественный', 'язык'], ['управление', 'основа', 'модель', 'процесс', 'разработка', 'система', 'использовать', 'модель', 'понимание', 'конструирование', 'распространение', 'операция'], ['платформа', 'набор', 'подсистема', 'технология', 'представлять', 'единый', 'набор', 'функциональность', 'использовать', 'любой', 'приложение', 'уточнение', 'деталь', 'реализация'], ['вычислительный', 'независимость', 'качество', 'модель', 'обозначать', 'отсутствие', 'деталь', 'структура', 'процесс'], ['платформенный', 'независимость', 'качество', 'модель', 'обозначать', 'независимость', 'свойство', 'платформа'], ['вычислительный', 'независимый', 'модель', 'модель', 'скрывать', 'любой', 'деталь', 'реализация', 'процесс', 'система', 'описывать', 'требование', 'система', 'окружение'], ['платформенный', 'независимый', 'модель', 'модель', 'скрывать', 'деталь', 'реализация', 'система', 'зависимый', 'платформа', 'содержать', 'элемент', 'изменяться', 'взаимодействие', 'система', 'платформа'], ['платформенный', 'зависимый', 'модель', 'модель', 'система', 'учёт', 'деталь', 'реализация', 'процесс', 'зависимых', 'конкретный', 'платформа'], ['модель', 'платформа', 'набор', 'технический', 'характеристика', 'описание', 'технология', 'интерфейс', 'составлять', 'платформа'], ['преобразование', 'модель', 'процесс', 'преобразование', 'модель', 'система', 'другую', 'модель', 'система'], ['архитектура', 'разработка', 'приложение', 'основа', 'модель', 'архитектура', 'управляемая', 'модель', 'mda'], ['архитектура_mda', 'описывать', 'структурировать', 'поэтапный', 'процесс', 'разработка', 'программный', 'система', 'основа', 'создание', 'использование', 'модель'], ['использоваться', 'тип', 'модель', 'создавать', 'преобразуемых', 'различный', 'этап', 'разработка'], ['процесс', 'разработка', 'mda', 'последовательный', 'поэтапный', 'продвижение', 'модель', 'система'], ['последующий', 'модель', 'преобразуется', 'предыдущий', 'дополняться', 'новый', 'деталь'], ['модель', 'общий', 'схема', 'разработка', 'процесс', 'преобразование', 'модель', 'ключевой', 'составной', 'часть', 'архитектура'], ['тип', 'модель', 'рассмотреть', 'тип', 'модель', 'использовать', 'архитектура_mda'], ['вычислительный', 'независимый', 'модель', 'computation', 'independent', 'model', 'cim', 'описывать', 'общий', 'требование', 'система', 'словарь', 'использовать', 'понятие', 'условие', 'функционирование', 'окружение'], ['модель', 'содержать', 'никакой', 'сведение', 'технический', 'характер', 'описание', 'структура', 'функционал', 'система'], ['cim', 'максимально', 'общий', 'независимый', 'реализация', 'система', 'модель'], ['спецификация', 'mda', 'подчёркивать', 'cim', 'построить', 'преобразовать', 'платформенный', 'независимый', 'модель'], ['cim', 'рекомендоваться', 'выполнять', 'использование', 'унифицированный', 'язык', 'моделирование', 'uml'], ['платформенный', 'независимый', 'модель', 'platform', 'independent', 'model', 'pim', 'описывать', 'состав', 'структура', 'функционал', 'система'], ['модель', 'содержать', 'сколь', 'угодно', 'подробный', 'сведение', 'касаться', 'вопрос', 'реализация', 'система', 'конкретный', 'платформа'], ['модель', 'pim', 'создаваться', 'основа', 'cim'], ['создание', 'модель', 'использоваться', 'унифицированный', 'язык', 'моделирование', 'uml'], ['платформенный', 'зависимый', 'модель', 'platform', 'specific', 'model', 'psm', 'описывать', 'состав', 'структура', 'функционал', 'система', 'применительно', 'вопрос', 'реализация', 'конкретный', 'платформа'], ['зависимость', 'назначение', 'модель', 'детализированной'], ['модель', 'создаваться', 'основа', 'два', 'модель'], ['модель', 'pim', 'служить', 'основа', 'модель', 'psm'], ['модель', 'платформа', 'использоваться', 'доработка', 'psm', 'соответствие', 'требование', 'платформа'], ['модель', 'платформа', 'описывать', 'технический', 'характеристика', 'интерфейс', 'функция', 'платформа'], ['зачастую', 'модель', 'платформа', 'представить', 'вид', 'технический', 'описание', 'руководство'], ['модель', 'платформа', 'использоваться', 'преобразование', 'модель', 'pim', 'модель', 'psm'], ['цель', 'mda', 'описание', 'модель', 'платформа', 'представить', 'унифицированный', 'язык', 'моделирование', 'uml'], ['уровень', 'модель', 'зависимость', 'уровень', 'детализация', 'платформа', 'модель', 'модель', 'платформа', 'содержать', 'сведение', 'различный', 'функциональный', 'часть', 'система'], ['случай', 'говорить', 'уровень', 'модель'], ['различать', 'следующий', 'основный', 'уровень', 'модель'], ['уровень', 'бизнес', 'логики', 'содержать', 'описание', 'основный', 'функционал', 'приложение', 'обеспечивать', 'исполнение', 'назначение'], ['правило', 'уровень', 'бизнес', 'логика', 'поддаваться', 'автоматизация'], ['составлять', 'львиный', 'доля', 'код', 'приложение', 'приходиться', 'писать', 'вручную'], ['уровень', 'описывать', 'структура', 'приложение', 'использовать', 'источник', 'формат', 'технология', 'механизм', 'доступ', 'данным'], ['приложение', '.net', 'использоваться', 'возможность', 'ado.net'], ['уровень', 'пользовательский', 'интерфейс', 'описывать', 'возможность', 'приложение', 'взаимодействие', 'пользователь', 'состав', 'форма', 'приложение', 'функционал', 'элемент', 'управление', 'контроль', 'ввод'], ['лёгкость', 'автоматизация', 'уровень', 'зависеть', 'насколько', 'унифицировать', 'пользовательский', 'операция'], ['удаваться', 'создать', 'типовой', 'шаблон', 'элемент', 'управление', 'основный', 'операция', 'появляться', 'возможность', 'автоматический', 'генерация', 'форма', 'содержимое', 'создание', 'приложение', 'модель'], ['этап', 'разработка', 'процесс', 'разработка', 'разбиваться', 'три', 'этап'], ['первый', 'этап', 'разрабатываться', 'вычислительный', 'независимый', 'модель', 'cim'], ['модель', 'создавать', 'этап', 'называть', 'доменный', 'бизнес', 'моделью'], ['цель', 'этап', 'разработка', 'общий', 'требование', 'система', 'создание', 'общий', 'словарь', 'понятие', 'описание', 'окружение', 'система', 'функционировать'], ['сущность', 'описывать', 'модель', 'cim', 'этап', 'тщательно', 'анализироваться', 'отрабатываться'], ['право', 'включение', 'модель', 'элемент', 'использовать', 'развить', 'последующий', 'этап', 'разработка'], ['создание', 'модель', 'cim', 'этап', 'использовать', 'любой', 'средство'], ['совместимость', 'последующий', 'этап', 'весьма', 'желательный', 'описание', 'модель', 'язык', 'uml'], ['учитывать', 'модель', 'cim', 'первый', 'этап', 'представлять', 'концепция', 'система', 'являться', 'насущный', 'необходимый', 'процесс', 'разработка', 'приложение'], ['создание', 'небольшой', 'программный', 'система', 'этап', 'опустить', 'работа', 'сложный', 'проект', 'становиться', 'обязательный'], ['пример', 'разработка', 'текстовый', 'технический', 'задание', 'помогать', 'процесс', 'программирование', 'существенно', 'способствовать', 'понимание', 'задача', 'целое', 'позволять', 'избежать', 'грубый', 'ошибка', 'проектирование', 'дальнейший'], ['второй', 'этап', 'разрабатываться', 'платформенный', 'независимый', 'модель', 'pim'], ['разрабатываться', 'нуль', 'случай', 'отсутствие', 'модель', 'первый', 'этап', 'основываться', 'cim'], ['преобразование', 'cim', 'pim', 'осуществляться', 'основа', 'описание', 'зык', 'uml', 'создать', 'первый', 'этап'], ['добавляться', 'элемент', 'описывать', 'бизнес', 'логику', 'структура', 'система', 'состав', 'взаимодействие', 'подсистема', 'распределение', 'функционал', 'элемент', 'общий', 'описание', 'требование', 'пользовательский', 'интерфейс'], ['модель', 'pim', 'этап', 'обязательно', 'включаться', 'автоматизированный', 'среда', 'разработка', 'приложение', 'основа', 'mda'], ['третий', 'этап', 'создаваться', 'платформенный', 'зависимый', 'модель', 'psm'], ['число', 'соответствовать', 'число', 'программный', 'платформа', 'функционировать', 'приложение'], ['возможный', 'случай', 'приложение', 'составной', 'часть', 'работать', 'несколько', 'платформа', 'одновременно'], ['модель', 'psm', 'создаваться', 'путем', 'преобразование', 'модель', 'pim', 'учёт', 'требование', 'модель', 'платформа'], ['процесс', 'преобразование', 'описываться'], ['этап', 'создание', 'модель', 'psm', 'разработка', 'приложение', 'согласно', 'архитектура_mda', 'заканчиваться'], ['считаться', 'правильно', 'построить', 'psm', 'содержать', 'технический', 'информация', 'достаточный', 'генерация', 'исходный', 'код', 'необходимый', 'ресурс', 'приложение'], ['эстафетный', 'палочка', 'подхватить', 'среда', 'разработка', 'реализовать', 'mda'], ['случай', 'delphi', '9', 'обеспечивать', 'генерация', 'код', 'компиляция', 'приложение', 'eco'], ['формальный', 'точка', 'зрение', 'относиться', 'компетенция', 'mda', 'разработчик', 'преобразование', 'psm', 'исполнять', 'код', 'приложение', 'непосредственный', 'продолжение', 'процесс', 'разработка'], ['архитектура_mda', 'описывать', 'вариант', 'прохождение', 'третий', 'этап', 'называться', 'прямой', 'преобразование', 'код'], ['спецификация', 'mda', 'случай', 'сообщать', 'существовать', 'инструментарий', 'преобразующие', 'модель', 'pim', 'исполнять', 'код', 'приложение'], ['модель', 'psm', 'создаваться', 'контрольный', 'описание', 'позволять', 'проверить', 'результат', 'прямой', 'преобразование'], ['преобразование', 'модель', 'pim', 'psm', 'сложный', 'ответственный', 'этап', 'разработка', 'приложение', 'рамка', 'архитектура_mda', 'являться', 'преобразование', 'модель', 'pim', 'модель', 'psm'], ['этап', 'общий', 'описание', 'система', 'язык', 'uml', 'приобретать', 'вид', 'пригодный', 'воплощение', 'приложение', 'конкретный', 'платформа'], ['говориться', 'процесс', 'принимать', 'участие', 'модель', 'платформа'], ['преобразование', 'модель', 'проходить', 'три', 'последовательный', 'стадия', 'разработка', 'схема_преобразование', 'mapping', 'маркирование', 'marking', 'преобразование', 'transformation', 'рассмотреть', 'подробный'], ['первоначально', 'разработать', 'схема_преобразование', 'элемент', 'модель', 'pim', 'элемент', 'модель', 'psm'], ['каждый', 'платформа', 'создаваться', 'собственный', 'схема_преобразование', 'зависеть', 'возможность', 'платформа'], ['схема_преобразование', 'затрагивать', 'содержание', 'модель', 'совокупность', 'элемент', 'свойство', 'модель', 'метамодель', 'использовать', 'тип'], ['схема_преобразование', 'нужный', 'тип', 'модель', 'свойство', 'метамодели', 'элемент', 'модель', 'pim', 'ставиться', 'соответствие', 'тип', 'модель', 'свойство', 'метамодели', 'элемент', 'модель', 'psm'], ['преобразование', 'модель', 'использоваться', 'схема_преобразование'], ['связывание', 'использоваться', 'марка', 'mark', 'самостоятельный', 'структура', 'принадлежать', 'модель', 'схема_преобразование', 'содержать', 'информация', 'создать', 'связь'], ['набор', 'марка', 'объединить', 'тематический', 'шаблон', 'использовать', 'различный', 'схема_преобразование'], ['процесс', 'задание', 'марка', 'называться', 'маркирование'], ['простой', 'случай', 'элемент', 'модель', 'pim', 'соединяться', 'марка', 'элемент', 'модель', 'psm'], ['сложный', 'случай', 'элемент', 'модель', 'pim', 'марка', 'разный', 'схема_преобразование'], ['касаться', 'преобразование', 'метамодели', 'большинство', 'случай', 'марка', 'расставляться', 'автоматически'], ['элемент', 'модель', 'требоваться', 'вмешательство', 'разработчик'], ['процесс', 'маркирование', 'использовать', 'сведение', 'платформа'], ['сведение', 'содержаться', 'модель', 'платформа'], ['процесс', 'преобразование', 'модель', 'заключаться', 'перенос', 'маркированных', 'элемент', 'модель', 'метамодели', 'pim', 'модель', 'метамодель', 'psm'], ['процесс', 'преобразование', 'документироваться', 'вид', 'карта', 'перенос', 'элемент', 'модель', 'метамодели'], ['способ', 'преобразование', 'модель', 'ручной', 'использование', 'профиль', 'настроить', 'схема_преобразование', 'автоматический', 'многоплатформенный', 'модель', 'архитектура_mda', 'учитывать', 'возможность', 'разработка', 'приложение', 'одновременно', 'функционировать', 'несколько', 'платформа'], ['марка', 'схема_преобразование', 'модель', 'pim', 'psm', 'устанавливаться', 'соответствие', 'распределение', 'функционал', 'приложение', 'платформа'], ['генерироваться', 'платформенный', 'зависимый', 'часть', 'приложение'], ['проблема', 'взаимодействие', 'часть', 'гетерогенный', 'приложение', 'решаться', 'уровень', 'бизнес', 'логики', 'приложение', 'этап', 'разработка'], ['обмен', 'данными', 'использоваться', 'специально', 'разработать', 'подсистема', 'использовать', 'организация', 'обмен', 'заранее', 'согласовать', 'механизм', 'формат', 'интерфейс'], ['разработка', 'механизм', 'межплатформенный', 'взаимодействие', 'поддаваться', 'автоматизация'], ['инструментарии', 'mda', 'содержать', 'функционал', 'создание', 'механизм'], ['консорциум', 'omg', 'создать', 'сообщество', 'it', 'компания', 'специализироваться', 'разработка', 'программный', 'аппаратный', 'обеспечение'], ['основный', 'задача', 'консорциум', 'являться', 'стандартизация', 'спецификация', 'сфера', 'информационный', 'технология'], ['деятельность', 'консорциум', 'значительный', 'степень', 'ориентировать', 'разработка', 'перспективный', 'стандарт'], ['программист', 'известный', 'разработка', 'omg', 'oma', 'corba', 'uml']]"
        ],
        [
         "21",
         "Введение в проектирование ИС.doc",
         "1. ВВЕДЕНИЕ В ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ\r1.1. Методы проектирования информационных систем\rИндустрия разработки автоматизированных информационных систем управления родилась в 50-х - 60-х годах и к концу века приобрела вполне законченные формы. Материалы данного руководства являются обобщением цикла лекций по Автоматизированным Банковским Системам (АБС) и Автоматизированным системам управления конструкторско-технологическим проектированием (АСУ КТП), читаемым в МГТУ им.Н.Э.Баумана. Не смотря на имеющиеся различия в реализации функциональных модулей данных систем, общие подходы к их разработки во многом схожи, что позволило нам объединить вопросы их проектирования в рамках одного издания. \rНа рынке автоматизированных систем для крупных корпораций и финансово-промышленных групп на сегодня можно выделить два основных субъекта: это ранок автоматизированных банковских систем (АБС) и рынок корпоративных информационных систем промышленных предприятий. Не смотря на сильную взаимосвязь этих двух рынков систем автоматизации, предлагаемые на них решения пока еще не достаточно интегрированы между собой, чего следует ожидать в недалеком будущем. \rВ дальнейшем под Автоматизированной Банковской Системой (АБС) будем понимать комплекс аппаратно-программных средств реализующих мультивалютную информационную систему, обеспечивающую современные финансовые и управленческие технологии в режиме реального времени при транзакционной обработке данных. \rПод Автоматизированной Информационной Системой промышленного предприятия (АСУ КТП) будем понимать комплекс аппаратно-программных средств реализующих мультикомпонентную информационную систему, обеспечивающую современное управление процессами принятия решений, проектирования, производства и сбыта в режиме реального времени при транзакционной обработке данных. \rКак вы видите, оба определения достаточно схожи. На сегодня существования нескольких методов построения автоматизированных информационных систем (АИС), среди которых можно выделить следующие: \r\r1.1.1 Метод \"снизу-вверх\".\rМенталитет российских программистов сформировался именно в крупных вычислительных центрах (ВЦ), основной целью которых было не создание тиражируемых продуктов, а обслуживание сотрудников конкретного учреждения. Этот подход во многом сохранялся и при автоматизации и сегодня. В условиях постоянно изменяющихся законодательства, правил ведения производственной, финансово-хозяйственной деятельности и бухгалтерского учета руководителю удобно иметь рядом посредника между спущенной сверху новой инструкцией и компьютером. С другой стороны, программистов, зараженных \"вирусом самодеятельности\", оказалось предостаточно, тем более что за такую работу предлагалось вполне приличное вознаграждение. \rСоздавая свои отделы и управления автоматизации, предприятия и банки пытались обустроиться своими силами. Однако периодическое \"перетряхивание\" инструкций, сложности, связанные с разными представлениями пользователей об одних и тех же данных, непрерывная работа программистов по удовлетворению все новых и новых пожеланий отдельных работников и как следствие - недовольство руководителей своими программистами несколько остудило пыл как тех, так и других. Итак, первый подход сводился к проектированию \"снизу-вверх\". В этом случае, при наличии квалифицированного штата программистов, вполне сносно были автоматизированы отдельные, важные с точки зрения руководства рабочие места. Общая же картина \"автоматизированного предприятия\" просматривалась недостаточно хорошо, особенно в перспективе. \r\r1.1.2. Метод \"сверху-вниз\".\rБыстрый рост числа акционерных и частных предприятий и банков позволил некоторым компаниям увидеть здесь будущий рынок и инвестировать средства в создание программного аппарата для этого растущего рынка. Из всего спектра проблем разработчики выделили наиболее заметные: автоматизацию ведения бухгалтерского аналитического учета и технологических процессов (для банков это в основном - расчетно-кассовое обслуживание, для промышленных предприятий - автоматизация процессов проектирования и производства, имеется в виду не конкретных станков и т.п., а информационных потоков). Учитывая тот факт, что ядром АИС безусловно является аппарат, обеспечивающий автоматизированное ведение аналитического учета, большинство фирм начали с детальной проработки данной проблемы. Системы были спроектированы \"сверху\", т.е. в предположении что одна программа должна удовлетворять потребности всех пользователей. \rСама идея использования \"одной программы для всех\" резко ограничила возможности разработчиков в структуре информационных множеств базы данных, использовании вариантов экранных форм, алгоритмов расчета и, следовательно, лишила возможности принципиально расширить круг решаемых задач - автоматизировать повседневную деятельность каждого работника. Заложенные \"сверху\" жесткие рамки (\"общие для всех\") ограничивали возможности таких систем по ведению глубокого, часто специфического аналитического и производственно - технологического учета. Работники проводили эту работу вручную, а результаты вводили в компьютер. При этом интерфейс каждого рабочего места не мог быть определен функциями, возложенными на пользователя, и принятой технологией работы. Стало очевидно, что для успешной реализации задачи полной автоматизации банка следует изменить идеологию построения АИС. \r\r1.1.3. Принципы \"дуализма\" и многокомпонентности.\rРазвитие банковских структур и промышленных предприятий, увеличение числа филиалов, рост количества клиентов, необходимость повышения качества обслуживания предъявляли к автоматизированным системам новые требования. Новый подход к проектированию АИС заключается в сбалансированном сочетании двух предыдущих. В первую очередь это относилось к идеологии построения ядра системы: \"Автоматизированная бухгалтерия - аналитический учет\". \rДля банковских структур это дало: с одной стороны, в ядре системы сохранялась возможность работы \"от лицевого счета\", с автоматическим формированием соответствующих бухгалтерских проводок, с другой стороны, отменялись жесткие требования работы только с лицевыми счетами. Появилась возможность ведения бухгалтерского учета по балансовым счетам любого порядка без углубления до уровня лицевых счетов клиентов. При этом ведение аналитического учета по лицевым счетам клиентов опускалось на уровень специализированного программного обеспечения (СПО), установленного на рабочих местах банковских работников (контролеров, кредитных бухгалтеров, инспекторов и т. д.). Таким образом, принципиальное отличие нового подхода к созданию АБС заключается в идее распределения плана счетов по уровням экспертизы. При этом и сам справочник плана счетов с соответствующими описаниями, и информационное множество клиентов проектировались по принципу распределенной базы данных. Результатом этого явилось: \rформирование всех необходимых бухгалтерских проводок, уже агрегированных по балансовым счетам, и автоматическая их передача в базу данных \"Автоматизированной бухгалтерии\"; \rреализация специфических требований каждого банковского работника, в том числе по формированию произвольных отчетов и справок, мемориальных ордеров, операционных дневников; выполнение любых вспомогательных и технологических расчетов и пр. \rС использованием гибкой системы настроек СПО (компонентов АБС) появилась реальная возможность адаптации программного аппарата к практически любым условиям и различным требованиям инструктивных материалов и правилам работы, принятым либо в вышестоящей организации, либо в данном банковском учреждении. Кроме того, при многокомпонентной схеме организации АБС при проведении модернизации одного из компонентов центральная часть (ядро) АБС и другие ее компоненты не затрагивались, что значительно повышало надежность, продолжительность жизни автоматизированной системы и обеспечивало наиболее полное выполнение требуемых функций. \rДвойственный подход к формированию ежедневного баланса лег в основу т.н. \"принципа дуализма\" - одного из важных принципов построения современных банковских систем. Реализация принципа дуализма неизбежно требовала построения АБС нового поколения в виде программных модулей, органически связанных между собой, но в то же время способных работать и автономно. \rЗадача проектирования АИС промышленных предприятий более сложна, т.к. характер обрабатываемой информации еще более разнороден и сложно формализуем. Однако и здесь можно выделить основную модель работы - это работа \"от кода проекта\". В общем случае код проекта представляет собой аналог (функциональный) лицевого счета, он имеет определенную разрядность, порядок (т.е. конкретная группа цифро-буквенного обозначения характеризует деталь, сборочную единицу, изделие и их уровень взаимосвязи). Причем конкретная часть кода характеризует технологические, конструкторские, финансовые и др. документы. Все это регламентируется соответствующими ГОСТами (аналог инструкций ЦБ для банков), поэтому может быть формализовано. При этом модульный подход к реализации АИС в этом случае еще более важен. \rДвойственный подход к формированию ежедневного производственного плана лег в основу т.н. \"принципа дуализма\" для АИС промышленных предприятий. Реализация принципа дуализма неизбежно также требовала построения АИС предприятий нового поколения в виде программных модулей, органически связанных между собой, но в то же время способных работать и автономно. \rТакая многокомпонентная система обеспечивала соблюдение основополагающего принципа построения автоматизированных информационных систем - отсутствия дублирования ввода исходных данных. Информация по операциям, проведенным с применением одного из компонентов системы, могла быть использована любым другим ее компонентом. Модульность построения АИС нового поколения и принцип одноразового ввода дают возможность гибко варьировать конфигурацией этих систем. Так, в банках, имеющих разветвленную филиальную сеть и не передающих данные в режиме реального времени, установка всего СПО во всех филиалах не всегда экономически оправдано. В этих случаях возможна эксплуатация в филиалах ПО общего назначения, предназначенного для первичного ввода информации и последующей автоматизированной обработки данных в СПО, установленном в головном офисе банка. Такая структура дает возможность органически включить в АБС нового поколения компонент для создания хранилища данных, разделяя системы оперативного действия и системы поддержки принятия решения. \rКроме того, одно из достоинств принципа многокомпонентности, являющегося базовым при создании АИС нового поколения, состоит в возможности их поэтапного внедрения. На первом этапе внедрения устанавливаются (или заменяются уже устаревшие) компоненты системы на те рабочие места, которые нуждаются в обновлении ПО. На втором этапе происходит развитие системы с подсоединением новых компонентов и отработкой межкомпонентных связей. Возможность применения такой методики внедрения обеспечивает ее достаточно простое тиражирование и адаптацию к местным условиям. Таким образом, автоматизированная информационная система нового поколения - это многокомпонентная система с распределенной базой данных по уровням экспертизы. \rЧто же заставляет банки разрабатывать предприятия и банки свои АИС собственными силами [1,2]: \rВо-первых, это конечно относительно низкая стоимость таких разработок (по сравнению с покупными). Как правило, к существующим подразделениям департамента информатизации, таким как: управление эксплуатации, управление эксплуатации вычислительной сети и средств связи, экспертно-аналитическое управление (постановка задач), добавляется лишь новая структура: управление развития и разработки АИС, что, как правило, не влечет за собой больших финансовых затрат. \rВо-вторых, собственная разработка - это максимальная ориентация на реализацию бизнес - процессов предприятия или банка, его уникальных финансовых и управленческих технологий, складывающихся годами. \rВ третьих, это позволяет обеспечивать значительно более высокий уровень безопасности и независимости от внешних факторов. \rВ четвертых, оперативная реакция на изменения правил игры на рынке.\rВместе с тем при собственной разработке необходимо решить целый комплекс организационно-технических задач, которые позволили бы избежать ошибочных решений [1,2]: \rВо-первых, правильный выбор архитектуры построения вычислительно-коммуникационной сети и ориентация на профессиональные СУБД. По экспертным оценкам собственные разработки АИС в 53% базируются на СУБД Oracle, около 15% на Informix, 22% - другие СУБД. \rВо-вторых, использование при разработке современного инструментария (CASE средства, эффективные средства разработки: Delphi, Designer2000, Developer2000, SQL-Stations и т.п.). \rВ третьих, мультизадачная инфраструктура разработки проекта, когда конкретный модуль АИС ведет группа разработчиков с взаимосвязанным перечнем задач, построенная на принципах полной взаимозаменяемости, т.е. функционирование данного модуля АИС и его развитие не связано с одним конкретным разработчиком. \rВ четвертых, применение эффективных организационно-технических средств по управлению проектом и контролю версий АИС. \rТолько при соблюдении этих основных положений можно рассчитывать, что собственная разработка окажется конкурентной и эффективной. В противном же случае можно столкнуться с эффектом \"неоправданных ожиданий\" - это в лучшем случае, а в крайнем случае вообще задуматься о смене АИС. При этом, смена АИС может вызвать как непосредственно смену клиентских модулей и табличной структуры БД, так и потребовать замены серверного и клиентского аппаратного и общесистемного программного обеспечения, включая СУБД, а это дело не дешевое. Поэтому очень важно при выборе варианта реализации АИС сразу решить вопрос о возможностях экспорта/импорта данных в создаваемой системе. При правильном решении данного вопроса смена АИС, если в ней все-таки возникнет необходимость, произойдем практически безболезненно для функциональных подразделений. \rВ отличие от банковских структур крупные отечественные промышленные предприятия сейчас только подходят к осознанию явной необходимости внедрения и развития корпоративных информационных систем как одной из основных компонент стратегического развития бизнеса. В связи с этим в недалеком будущем можно ожидать расширение рынка корпоративных информационных систем и в последующем его значительно роста. Учитывая тесную интеграцию финансовых и промышленных структур можно полагать, что основой построения корпоративных систем финансово-промышленных групп будут являться, используемые в их финансовых учреждениях, АБС. \r\r1.2. Ориентация на профессиональные СУБД - \"За\" и \"Против\"\rПо материалам периодической печати [1,2] можно судить, что 1998 год стал годом перехода к внедрению АБС четвертого поколения, основой которых, в свою очередь, является ориентация на профессиональные СУБД. Что же это дает и зачем все это нужно: \rОптимизированный многопользовательский режим работы с развитой системой транзакционной обработки, что обеспечивает многочисленным пользователям возможность работы с базой данных, не мешая друг другу. \rНадежные средства защиты информации (учитывая стандартную трехзвенную архитектуру защиты на уровне сети - на уровне сервера БД - на уровне клиентской ОС). \rЭффективные инструменты для разграничения доступа к БД. \rПоддержка широкого диапазона аппаратно - программных платформ. \rРеализация распределенной обработки данных. \rВозможность построения гетерогенных и распределенных сетей. \rРазвитые средства управления, контроля, мониторинга и администрирования сервера БД. \rПоддержка таких эффективных инструментариев, как: словари данных, триггеры, функции, процедуры, пакеты и т.п. \rВсе выше перечисленное обусловило широкое распространение решений на базе профессиональных СУБД в крупных коммерческих банках и промышленных корпорациях. По экспертным оценкам по числу установок лидируют СУБД Oracle, Informix, Sybase. Несмотря на это в большинстве средних и малых банках и предприятиях по-прежнему, ориентируются на решения на базе АИС третьего и даже второго поколения. Какие же основные \"мнимые\" стереотипы пока не позволяют этим структурам ориентироваться на использования профессиональных СУБД при построении своих АИС [1,2]: \r\"ПРОТИВ\" - Относительно высокая дороговизна профессиональных СУБД \r\"ЗА\" - Как правило, поставщиками практически всех профессиональных СУБД сейчас предлагаются масштабируемые решения, т.е. например, Enterprise Database - для крупных систем и WorkGroup Database - для средних и малых систем, причем цена последних сравнима с ценами на локальные СУБД. \r\"ПРОТИВ\" - Профессиональные СУБД предъявляют высокие требования к аппаратной платформе. \r\"ЗА\" - С резким ростом производительности Intel-ориентированных аппаратных платформ большинство производителей профессиональных СУБД выпустила свои версии и под Intel-сервера, в том числе и под ОС LINUX, а учитывая что LINUX при всей своей мощности UNIX системы практичсеки беспланая ОС, то и решение на ее основе как правило не повлечет больших финансовых затрат. Это позволяет при построении системы ориентироваться не только на высокопроизводительные многокластерные RISC сервера, но и использовать серверные Intel-платформы. \r\"ПРОТИВ\" - Профессиональные АИС сложны и дороги в администрировании. \r\"ЗА\" - Как правило, сложность администрирования зависит от конкретной АИС. Кроме этого, при эксплуатации АИС в многопрофильном банке или предприятии на UNIX платформе снимает многие проблемы, возникающие на местах, за счет широких возможностей удаленного администрирования из центра. \r\"ПРОТИВ\" - Разработки АИС на промышленной платформе слишком дороги. \r\"ЗА\" - Проектирование современных интегрированных систем - процесс трудоемкий, требующей высокой квалификации разработчиков. Все это находит отражение в цене и объективно делает АИС нового поколения более дорогими, но все же сравнимыми по стоимости с их предшественниками. \r\"ПРОТИВ\" - Внедрение систем на профессиональной платформе процесс затяжной и дорогостоящий. \r\"ЗА\" - Затяжка внедрения, как правило, обусловлена либо недостатком опыта фирмы поставщика по установке таких систем, либо недостаточной готовностью самого внедряемого продукта. Ориентировочный срок установки типовой АИС четвертого поколения под СУБД Oracle при отлаженном технологическом процессе составляет несколько недель. \r\"ПРОТИВ\" - Сопровождение систем на базе профессиональной платформы неоправданно дорого, а качественные характеристики такой АИС оставляют желать лучшего. \r\"ЗА\" - Во многом это предубеждение сложилось на основании опыта эксплуатации АИС зарубежного производства. Можно указать целый ряд случаев, когда зарубежные фирмы поставщики либо отказывались своевременно вносить изменения, обусловленные новыми инструкциями ЦБ, либо требовали за эти изменения неоправданно крупные суммы. Однако это совсем не относится к отечественным системам нового поколения, изначально рассчитанным на изменчивое российское законодательство.\rВыводы: Анализ рынка показывает, что на сегодня современная АИС должна представлять собой интегрированный комплекс аппаратно-программных средств реализующих мультипредметную информационную систему, обеспечивающую современные финансовые, управленческие, проектирующие, производственные и сбытовые технологии в режиме реального времени при транзакционной обработке данных. Если задуматься, то это достаточно закономерно. Персональные СУБД (Clipper, Clarion, FoxPro) совершенно не приспособлены для создания интегрированных систем, работающих с общей базой. В принципе эти СУБД вообще не поддерживают понятие \"база данных\", работая на уровне индивидуальных таблиц-файлов. \rШироко распространенные сегодня системы на базе Btrieve все же трудно назвать масштабируемыми, а саму Btrieve - профессиональной СУБД, пригодной для построения корпоративной информационной системы. Btrieve-системы унаследовали свою архитектуру и большую часть кода от своих предшественников, разработанных на Clipper и Clarion, что во многом объясняет столь большую популярность Btrieve среди фирм, разрабатывавших ранее под эти платформы. Действительно, механически перенести Clarion систему под использование менеджера записей Btrieve относительно несложно, а вот для использования в качестве СУБД Oracle придется существенно изменить архитектуру системы. \rВ чем основные отличительные особенности корпоративных СУБД. Во-первых, они были изначально направлены на создание интегрированных, многопользовательских систем, имея в своем распоряжении развитые словари данных, что значительно повышает роль системного анализа и моделирования при проектировании системы. Во-вторых, средства разработки для данных СУБД оптимизированы для коллективной разработки сложных систем в рамках единой продуманной стратегической линии. Все это обуславливает неуклонно растущее количество успешных внедрений систем на базе профессиональных СУБД. \r\r1.3. Этапы разработки автоматизированных информационных систем.\rИтак, мы выбрали метод, которым будем руководствоваться при проектировании автоматизированной информационной системы. Теперь нам необходимо спланировать комплекс работ по созданию нашей системы в соответствии с типовыми этапами разработки АИС, краткая характеристика которых приведена в табл.1., а последовательность трансформации бизнес модели в объекты базы данных на рис.1. \r\r1.3.1. Разработка и анализ бизнес-модели\rПри построении эффективной автоматизированной системы первым этапом является исследование и формализация бизнес-процессов деятельности банка или предприятия. Т.е. описание системы ведения делопроизводства с целью эффективного использования информации для достижения поставленных задач и решения проблем, стоящих перед организацией. Организация работы с документами (будь то платежные или конструкторско-технологические документы) является важной составной частью процессов управления и принятия управленческих решений, существенно влияющей на оперативность и качество управления. Процесс принятия управленческого решения состоит из: \rПолучения информации; \rПереработка информации; \rАнализа, подготовки и принятия решения. \rВсе эти этапы самым тесным образом связаны с документационным обеспечением процессов управления, проектирования и производства. Если на предприятии отсутствует четкая организация работы с документами, то, как следствие этого, закономерно появление документов низкого качества, как в оформлении, так и в полноте и ценности содержащейся в них информации, увеличение сроков их обработки. Это приводит к ухудшению качества управления и увеличению сроков принятия решений и числу неверных решений. С ростом масштабов предприятия и численности его сотрудников вопрос об эффективности документационного обеспечения управления становится все более актуальным. Основные проблемы, возникающие при этом, выглядят примерно так: \rруководство теряет целостную картину происходящего; \rструктурные подразделения, не имея информации о деятельности друг друга, перестают слаженно осуществлять свою деятельность. Неизбежно падает качество обслуживания клиентов и способность организации поддерживать внешние контакты; \rэто приводит к падению производительности и вызывает ощущение недостатка в ресурсах: людских, технических, коммуникационных и т.д.; \rприходится расширять штат, вкладывать деньги в оборудование новых рабочих мест, помещения, коммуникации, обучение новых сотрудников; \rдля производственных предприятий увеличение штата может повлечь изменение технологии производства, что потребует дополнительных инвестиций; \rоказывается, что штат увеличен, производительность упала, производство требует инвестиций, соответственно возникает потребность в увеличении оборотного капитала, что может потребовать новых кредитов и уменьшить плановую прибыль. \rВ итоге предприятие перестает расти интенсивно и дальнейшее расширение происходит чисто экстенсивным путем за счет ранее созданной прибыли. \rПочему же сегодня, когда для организации документооборота (в дальнейшем под этим термином мы будем понимать документооборот любых документов: конструкторских, технологических, финансовых, организационных и т.п.) предлагается множество самых различных средств автоматизации, документооборот часто организован плохо, даже на относительно небольших предприятиях? Ответ, независимо от степени автоматизации предприятия и его типа, может быть один - отсутствие или игнорирование модели организации документооборота неизбежно приведет к тому, что старые проблемы останутся нерешенными. При этом, если по состоянию делопроизводства в организации был \"ручной\" хаос, то результатом автоматизации будет \"компьютерный\" хаос. \rКогда на Западе, а теперь и в России схлынула первая волна увлечения системами автоматизации документооборота, оказалось, что без должной оценки возможностей пользователя, исследования бизнес - процессов его предприятия трудно ожидать эффекта от внедрения как систем документооборота класса docflow так и, тем более, workflow. При этом совсем неважно, как планируется или уже реализован документооборот: вручную или путем автоматизации с помощью мощных западных либо отечественных пакетов - всегда на первом месте должна быть четкая стратегия, направленная на упорядочение бизнес - процессов. Иначе говоря, прежде чем что-то делать, неплохо было бы ответить на вопрос, кому и почему выгодно выполнять те или иные процессы, имеющие место на предприятии. Проводя в жизнь программу модернизации делопроизводства, важно представлять, какого уровня уже достигло предприятие и какое место ему отводится в модельном пространстве системы документооборота. \r\r1.3.1.1. Основные понятия электронного документооборота\rДокумент. \rПример: Вы написали заявление на отпуск и передали его в отдел кадров. Так появился документ. Что же превратило чистый лист бумаги в документ? Во-первых, информация, представленная в виде текста. Во-вторых, текст в форме заявления. И в-третьих, бумагу готовили с расчетом на последующую деятельность сотрудников отдела кадров. \rТеперь предположим, что вы обратились в отдел кадров с устным заявлением об отпуске. Можно ли назвать документом эту процедуру? Устная беседа не была зафиксирована физически, она не поддается точному воспроизведению и, следовательно, документом не является. \rИтак, документ - это совокупность трех составляющих [3]: \rФизическая регистрация информации. \rФорма представления информации \rАктивизация определенной деятельности. \rИменно некоторая деятельность и превращает информацию в документ. Но документ перестает существовать, если в дальнейшем не подразумевает процедуры обработки. При этом форма документа тесно связана с характером дальнейшей деятельности, она порождает необходимость документов. Так родилась бюрократия- неизбежный спутник цивилизации. \rДокумент [4] - слабоструктурированная совокупность блоков или объектов информации, понятная человеку. В общем случае обойтись без документов пока нельзя. Сам по себе документ, независимо от того, обычная ли это бумага или электронный бланк, проблем корпорации не решает - первичны бизнес-процессы и четкий контроль за выполнением проекта. \rБюрократическая технология - это технология взаимодействия людей, служб и подразделений внутри и вне организации. Не будет технологии - возникнет анархия. Если работник не знает что ему надо делать, он делает то, что считает нужным, а не то, что требует тот или иной бизнес-процесс предприятия. Сама бюрократия неизбежна, опасность представляет отрыв реальных целей предприятия от работы текущей системы документооборота. \rСобственно документооборот может быть двух типов: \rуниверсальный - автоматизирующий существующие информационные потоки слабоструктурированной информации. Справедливо было бы его называть аморфным или беспорядочным документооборотом; \rоперационный - ориентированный на работу с документами, содержащими операционную атрибутику, вместе с которой ведется слабоструктурированная информация. \rКроме собственно документов важен еще регламент работы с ними. Любой опытный менеджер может подтвердить, что работа не по регламенту порой отнимает намного больше времени, чем собственно производственная деятельность. Дублирование документов, их потеря, навязчивый способ их распространения, а также запутанный порядок их прохождения могут существенно усложнить работу, повысив вероятность допущения ошибки вследствие, например, потери нужной информации. \rИтак, документ занимает определенное место в процессе некоторой деятельности на границе разделяемых функций исполнения. Поэтому правильно рассматривать документ как инструмент распределения функций между работниками [3]. \r\r1.3.1.2. Преимущества электронного документооборота\rК основным преимуществам электронного документооборота можно отнести следующие: \rПолный контроль за перемещением и эволюцией документа, регламентация доступа и способ работы пользователей с различными документами и их отдельными частями. \rУменьшение расходов на управление за счет высвобождения (на 90% и более) людских ресурсов, занятых различными видами обработки бумажных документов, снижение бюрократической волокиты за счет маршрутизированного перемещения документов и жесткого контроля за порядком и сроками прохождения документов. \rБыстрое создание новых документов из уже существующих. \rПоддержка одновременной работы многих пользователей с одним и тем же документом, предотвращение его потери или порчи. \rСокращение времени поиска нужных документов. \rИспользование АИС может рассматриваться в качестве базы для общего совершенствования управления предприятием. При этом управление предприятием реализует следующие основные функции: \rобслуживание клиентов; \rразработка продукции; \rучет и контроль за деятельностью предприятия; \rфинансовое обеспечение деятельности предприятия и т.д. \r\r1.3.1.3. Модели информационного пространства предприятия.\rКомплексная автоматизация этих функции требует создания единого информационного пространства предприятия, в котором сотрудники и руководство могут осуществлять свою деятельность, руководствуясь едиными правилами представления и обработки информации в документном и бездокументном виде. \rДля этого в рамках предприятия требуется создать единую информационную систему по управлению информацией или единую систему управления документами, включающую возможности: \rудаленной работы, когда члены одного коллектива могут работать в разных комнатах здания или в разных зданиях; \rдоступа к информации, когда разные пользователи должны иметь доступ к одним и тем же данным без потерь в производительности и независимо от своего местоположения в сети; \rсредств коммуникации, например: электронная почта, факс, печать документов; \rсохранения целостности данных в общей базе данных; \rполнотекстового и реквизитного поиска информации; \rоткрытость системы, когда пользователи должны иметь доступ к привычным средствам создания документов и к уже существующим документам, созданным в других системах; \rзащищенность информации; \rудобства настройки на конкретные задачи пользователей; \rмасштабируемости системы для поддержки роста организаций и защиты вложенных инвестиций и т.д. \rНачальным этапом создания такой системы является построение модели предметной области или другими словами модели документооборота для конкретного бизнеса и позиционировать в ней свое предприятие. \rОпределенные ранее направления автоматизации документооборота: поддержка фактографической информации, возможность работы с полнотекстовыми документами, поддержка регламента прохождения документов, определяют трехмерное пространство свойств, где по некоторой траектории движется любой программный продукт данного класса, проходя различные стадии в своем развитии (рис.2.). \rПервая ось (F) характеризует уровень организации хранения фактографической информации, которая привязана к специфике конкретного рода деятельности компании или организации. Например: при закупке материальных ценностей происходит оформление товарно-сопроводительных документов (накладных, приемо-передаточных актов, приходных складских ордеров и т.д.), регистрируемых в качестве операционных документов, атрибутика которых очень важна для принятия управленческих решений. Информация из операционных документов используется при сложной аналитической и синтетической обработке, и, в частном случае, может быть получена пользователем через систему отчетов. \rВторая ось (D) - полнотекстовые документы, отражает необходимость организации взаимодействия: формирование и передача товаров, услуг или информации как внутри корпорации, так и вне ее. В этих документах наряду с фактографической информацией содержится слабо структурированная информация, не подлежащая автоматизированной аналитической обработке, такая, например, как форс-мажерные факторы и порядок предъявления претензий при нарушении условий договора. Все взаимоотношения между субъектами бизнеса сопровождаются документами, которые становятся осязаемым отражением результата взаимодействия. \rТретья ось (R) вносит в пространство документооборота третье измерение - регламент процессов прохождения документов, а именно: описание того какие процедуры, когда и как должны выполняться. Основа для позиционирования относительно данной оси - набор формальных признаков (атрибутов) и перечень выполнения операций. \rТочка в пространстве (F, D, R) определяет состояние системы документооборота и имеет координаты (f,d,r), где f,d и r принадлежат множествам F,D и R, соответственно. Положение этой точки зависит от уровня развития и стадии внедрения системы документооборота на предприятии, а также от его специфики и самих масштабов бизнеса. \rПредставив модель документооборота именно таким образом, можно, например, зная текущее положение дел с организацией делопроизводства на каждом конкретном предприятии, четко представить, в каких направлениях нужно двигаться дальше, чего недостает в текущий момент и каким образом органично использовать уже существующие системы автоматизации. Например, в одном из московских банков был накоплен большой массив фактографических данных, для обработки которых использовалась современная СУБД, развернутая на мощных, отказоустойчивых серверах - все, казалось бы, должно быть отлично. Однако при работе с внутренними документами наблюдалось дублирование информации: возникали ситуации, когда \"никто вроде бы и не виноват\", а банк время от времени лишается выгодных клиентов. Причина в том, что точка, отражающая положение системы документооборота для этой организации, имела достаточно большие координаты по оси \"F\" и, возможно, по оси \"D\", однако значение координаты по оси \"R\" было близко к нулю. Конкретным решением в этом случае может быть рассмотрение вопроса о внедрении системы управления регламентом. При этом не надо пока заботится о СУБД (ось \"F\") или электронных архивах (ось \"D\") - речь идет только об изменении значения координат по оси \"R\". \rВ общем случае, как уже отмечалось, процесс автоматизации делопроизводства на предприятии можно представить в виде кривой в трехмерном пространстве координат F,D,R. Причем, чем круче эта кривая, тем быстрее идет процесс модернизации, а чем больше значения всех трех координат - тем выше уровень автоматизации на корпорации и, как следствие, тем меньше у нее проблем с организацией своей собственной деятельности. \rРаботоспособна ли данная модель для задания пространства развития неавтоматизированной системы управления документооборотом? Да. Единственно, что в этом случае решается задача не облегчения рутинного труда по перемещению документов, их поиску и регистрации, а упорядочения всей системы документооборота. Новое качество, с которым сегодня ассоциируется возросший интерес к системам электронного документооборота, связано с использованием инструментальных систем, предназначенных для хранения, регистрации, поиска документов, а также для управления регламентом. Чаще ошибочно под новым качеством сегодня понимается простое внедрение отличной от ранее используемой технологии работы с документами, например локальной сети вместо дискет, переносимых с одного компьютера на другой. Вряд ли в этом случае уместно говорить о новом качестве управления предприятием. Кстати, уже упомянутый пример ручной работы режимных служб \"почтовых ящиков\", прекрасно вписывается в предложенную модель документооборота, а точка, отражающая его состояние, будет иметь координаты (1,1,1) - все равномерно, единственное, что отсутствует - компьютеризация. \rЭволюция модели. \rРассмотренная модель документооборота не является застывшим образованием, данным нам в ощущениях - прежде чем сформировалось современное представление о контурах этой модели, она претерпела три основные фазы своей эволюции, две из которых представлены на рис.3., а третья на рис.2. \rФаза первая - фактографическая. Начало любой деятельности знаменуется обычно периодом накопления первичной информации, имеющей жесткую структуру и атрибутику. Условно эту фазу можно представить в виде одной единственной оси. \rТочка на этой оси - это текущее состояние системы документооборота организации. Движение по оси вверх характеризует накопление фактографической информации и начиная с определенного момента которого можно отметить второй этап первой фазы - возникновение понятия \"операция\". Документ теперь представляется как некоторый привязанный к бизнес - процессам предприятия агрегат из имеющихся характеристик (атрибутов). На этом этапе начинается процесс возникновения неравенства между ранее равноправными документами, в частности, документ-основание, а дальнейшее движение по оси приобретает все более операционный оттенок. После возникновения привязки к конкретным бизнес - процессам дальнейшая эволюция документооборота в одномерном пространстве уже невозможна - необходим новый качественный скачок к новой фазе. \rФаза вторая - полнотекстовая. Расширение организации и увеличение круга решаемых задач требуют использования полнотекстовых документов, включающих уже не только тексты, но и любые другие способы представления: графики, таблицы, видео и т.п виды конструкторско-технологической документации. Возникает новая ось - полнотекстовые или, лучше, мультимедийные документы, а точка в новом, уже двумерном, пространстве характеризует систему документооборота предприятия, где кроме фактографической базы документов имеются уже хранилища и архивы информации. \rХранилища позволяют накапливать документы в различных форматах, предполагают наличие их структуризации и возможностей поиска. Если на предприятии уже используется автоматизация, то хранилище - это не что иное, как электронный архив. Движение по оси \"полнотекстовые документы\" предполагает наращивание атрибутивных возможностей: разграничение доступа, расширение средств поиска, иерархию хранения, классификация. Здесь же возникают такие понятия как электронная подпись, шифрование и т.п. \rНа данной оси также имеются свои этапы - с определенного момента развития хранилища можно уже говорить не об индивидуальном, а о корпоративном архиве, обслуживающем деятельность рабочих групп. Точка на плоскости эволюции, достигнутой во второй фазе, характеризует систему документооборота, позволяющую отображать фактографическую информацию в виде полнотекстовых документов, имеющих необходимое количество атрибутов. Доступ к этим документам может быть осуществлен по маршруту любого уровня сложности с соблюдением различных уровней конфиденциальности. Если, например, говорить о точке \"А\", то соответствующее ей состояние системы документооборота позволяет осуществлять синхронизацию работы различных рабочих групп сотрудников корпорации, расположенных на различных площадках. Система для этой точки предполагает также структурирование информации по уровням управления и наличие средств репликации данных. Однако, как только речь пошла о корпорации, двумерного пространства для соответствующей ей системы документооборота опять становится недостаточно - необходим новый скачок к очередной фазе. \rФаза третья - регламентирующая. Нормальный документооборот в масштабах корпорации невозможен без решения вопросов согласования или соблюдения регламента работы. Если ранее, на второй фазе (плоскость) негласно присутствовал лишь один, простейший регламент (нулевая точка) - каждый сотрудник имел доступ к архиву или его части, либо в папку каждому работнику помещалось индивидуальное задание (иначе говоря, было известно только, что документ существует), то сейчас этого недостаточно. Требуется уже интегральная оценка. Необходим, например, контроль за тем, как работник выполнил задание, или как продвигается документ в условиях нелинейного процесса своего согласования (например согласования пакета конструкторско-технологической документации на сборочную единицу). \rТретья ось в пространстве документооборота предприятия, как и две другие имеет свое деление на этапы. Первоначальный этап движения по оси характеризуется наличием упрощенного регламента, отображаемого появлением атрибутов, отвечающих за регламент, например: \"оплатить до\", \"действителен для\". Количественное накопление атрибутов и расширение возможностей по управлению регламента сопровождается постепенным переходом ко второму этапу, отличительная черта которого - появление системы, специально предназначенной для отслеживания процесса соблюдения регламента. При дальнейшем движении вдоль этой оси можно говорить о появлении единой системы управления проектом. Теперь документ в системе \"документооборота\" становится вторичным - первична цель бизнеса, сам процесс реализации бизнес - процедур, оставляющий после себя документы. \rОси \"F\" и \"D\" определяют специфику деятельности организации, регламентируемую положением третьей координаты (R) пространства модели документооборота. При этом модель не зависит от технологии обработки документов, принятой на предприятии - все решает только цель деятельности, будь то государственная организация, торговая компания и промышленная фирма. В общем случае можно выделить три типа организаций: \rБанк и торговая компания: приобретение, наценка, продажа, получение прибыли - главный объект деятельности; \rбюджетная организация: основная деятельность - формирование документов; \rпромышленное предприятие: закупка сырья, переработка, создание нового продукта, реализация, получение прибыли. Цель деятельности - операция. \rЕсли задачей организации является формирование документов, например мэрия, суд или министерство, то ее позиция в модели будет занимать достаточно высокое положение относительно осей \"F\" и \"D\". Кстати, сегодня наибольшей популярностью пользуются именно приложения, ориентированные на автоматизацию деятельности государственных и правительственных административных структур - основная цель которых и состоит в подготовке документов. Однако если рассматривать деятельность коммерческого банка или фирмы задача которой - производство операций, материальных ценностей , то здесь уже все три координаты должны иметь сбалансированные значения. \rРассмотрим в качестве примера основные шаги при разработки функциональной модели типовой АБС. Среди архитектур реализации АБС на сегодня выделят АБС пяти поколений: первые были предназначены для решения задач автоматизации бухгалтерских операций, АБС второго и третьего поколений также реализовывали элементы автоматизированного документооброта, АБС четвертого поколения строились по классической схеме трехзвенной клиент-серверной архитектуры и имели модульную структуру, реализующую концепции docflow. АБС пятого поколения являются информационными системы реилизующими полнофункциональную модель workflow - автоматизации бизнесс-процессов (рис.4,5). \rСхема функциональных бизнес-потоков типовой АБС четвертого поколения представлена на рис.6., а функциональная схема технологических потоков операций на рис.7. \rНазначения большинства модулей АБС (рис.6) достаточны понятны, едиснтвенное следует уточнить, что под интернет-банкингом понимает автоматизированная система реализующая технологии busines-to-customers (клиентское обслуживание, включая электронные платежы физических лиц) и bisnes-to-bisnes (обеспечение работы дистрибьюторско-дилерской сети корпораций в режиме on-line коммерции). \rРазработав функциональную схему бизнес-потоков, структурировав ее в соотвествии с модульным принципом построения любой системы управления и выделив базовые технологические потоки операций на каждом из уровне модульности (итог: перечень документов и операций обрабатываемых на конкретном рабочем месте, маршруты их движения, контроля и управления), можно приступать к следующему этапу проектирования информационной системы. \r\r1.3.1.4. Выводы.\rКоординаты точки, характеризующей сбалансированную систему документооборота (бизнес - модель функционирования предприятия), должны иметь ненулевые значения, а в идеале быть примерно одинаковы - соответствовать друг другу. Главное не автоматизация как таковая, а оптимизация потоков документов и интегральность - даже самая прекрасная программа автоматизации документооборота окажется напрасным вложением средств, если модель одномерная или плоская. \rНет большого смысла говорить о жизненном цикле документов без связи с основными бизнес-процессами предприятия. Система автоматизации документооборота, функционирующая в отрыве от всех слоев, будет мертва, мало того, она может нанести вред: запутать и без того неуправляемые бизнес - процессы, отвлечь персонал от выполнения основной работы ради поддержания системы автоматизации документооборота, по сути дела, ничего не автоматизирующего. И, как следствие, раздувание штатного расписания и дискредитация самой идеи автоматизации делопроизводства. Знакомая ситуация - все работники заняты, работа кипит, однако если рассмотреть две разные фирмы имеющие равный доход, занимающиеся одним бизнесом, то штат сотрудников у одной из них будет вдвое больше, чем у другой. При создании или внедрении АИС необходимо всегда помнить, что компьютер или комплект программных средств типа workflow - это только голый инструмент, неумелое использование которого чаще всего влечет за собой только вред, а не долгожданное облегчение и освобождение от внутрикорпоративных проблем по управлению.",
         "0",
         "[['1'], ['введение', 'проектирование', 'информационных', 'систем', '1.1'], ['метод', 'проектирование', 'информационный_система', 'индустрия', 'разработка', 'автоматизированный', 'информационный_система', 'управление', 'родиться', '50-й', '60-й', 'год', 'конец', 'век', 'приобрести', 'законченные', 'форма'], ['материал', 'руководство', 'являться', 'обобщение', 'цикл', 'лекция', 'автоматизированный', 'банковский', 'система', 'абс', 'автоматизированный', 'система', 'управление', 'конструкторско', 'технологический', 'проектирование', 'асу', 'ктп', 'читать', 'мгту', 'им.', 'н.э.баумана'], ['смотреть', 'иметься', 'различие', 'реализация', 'функциональный', 'модуль', 'система', 'общий', 'подход', 'разработки', 'схожий', 'позволить', 'объединить', 'вопрос', 'проектирование', 'рамка', 'издание'], ['рынок', 'автоматизированный', 'система', 'крупный', 'корпорация', 'финансово', 'промышленный', 'группа', 'сегодня', 'выделить', 'два', 'основный', 'субъект', 'ранка', 'автоматизировать', 'банковский', 'система', 'абс', 'рынок', 'корпоративный', 'информационный_система', 'промышленный_предприятие'], ['смотреть', 'сильный', 'взаимосвязь', 'два', 'рынок', 'система', 'автоматизация', 'предлагать', 'решение', 'достаточно', 'интегрировать', 'ожидать', 'недалёкий', 'будущее'], ['дальнейший', 'автоматизированный', 'банковский', 'система', 'абс', 'понимать', 'комплекс', 'аппаратно', 'программный', 'средство', 'реализовать', 'мультивалютный', 'информационный_система', 'обеспечивать', 'современный', 'финансовый', 'управленческий', 'технология', 'режим', 'реальный', 'время', 'транзакционный', 'обработка'], ['автоматизированной', 'информационный_система', 'промышленный_предприятие', 'асу', 'ктп', 'понимать', 'комплекс', 'аппаратно', 'программный', 'средство', 'реализовать', 'мультикомпонентную', 'информационный_система', 'обеспечивать', 'современный', 'управление', 'процесс', 'принятие', 'решение', 'проектирование', 'производство', 'сбыт', 'режим', 'реальный', 'время', 'транзакционный', 'обработка'], ['видеть', 'определение', 'достаточно', 'схожий'], ['сегодня', 'существование', 'несколько', 'метод', 'построение', 'автоматизированный', 'информационный_система', 'аис', 'выделить', 'следующий', '1.1.1', 'метод', 'снизу', 'вверх'], ['менталитет', 'российский', 'программист', 'сформироваться', 'крупный', 'вычислительный', 'центр', 'вц', 'основный', 'цель', 'создание', 'тиражируемых', 'продукт', 'обслуживание', 'сотрудник', 'конкретный', 'учреждение'], ['подход', 'сохраняться', 'автоматизация', 'сегодня'], ['условие', 'постоянно', 'изменяться', 'законодательство', 'правило', 'ведение', 'производственный', 'финансово', 'хозяйственный', 'деятельность', 'бухгалтерский', 'учёт', 'руководитель', 'удобный', 'посредник', 'спустить', 'сверху', 'новый', 'инструкция', 'компьютер'], ['сторона', 'программист', 'заразить', 'вирус', 'самодеятельность', 'оказаться', 'предостаточно', 'работа', 'предлагаться', 'приличный', 'вознаграждение'], ['создавать', 'отдел', 'управление', 'автоматизация', 'предприятие', 'банк', 'пытаться', 'обустроиться', 'сила'], ['периодический', 'перетряхивание', 'инструкция', 'сложность', 'связать', 'разный', 'представление', 'пользователь', 'непрерывный', 'работа', 'программист', 'удовлетворение', 'новый', 'новый', 'пожелание', 'отдельный', 'работник', 'следствие', 'недовольство', 'руководитель', 'программист', 'остудить', 'пыл'], ['первый', 'подход', 'сводиться', 'проектирование', 'снизу', 'вверх'], ['случай', 'наличие', 'квалифицированный', 'штат', 'программист', 'сносно', 'автоматизировать', 'отдельный', 'важный', 'точка', 'зрение', 'руководство', 'рабочий_место'], ['общий', 'картина', 'автоматизировать', 'предприятие', 'просматриваться', 'недостаточно', 'перспектива'], ['1.1.2'], ['метод', 'сверху'], ['быстрый', 'рост', 'число', 'акционерный', 'частный', 'предприятие', 'банк', 'позволить', 'некоторый', 'компания', 'увидеть', 'будущий', 'рынок', 'инвестировать', 'средство', 'создание', 'программный', 'аппарат', 'расти', 'рынок'], ['спектр', 'проблема', 'разработчик', 'выделить', 'заметный', 'автоматизация', 'ведение', 'бухгалтерский', 'аналитический', 'учёт', 'технологический', 'процесс', 'банк', 'основный', 'расчётный', 'кассовый', 'обслуживание', 'промышленный_предприятие', 'автоматизация', 'процесс', 'проектирование', 'производство', 'иметься', 'вид', 'конкретный', 'станок', 'т.п.', 'информационный', 'поток'], ['учитывать', 'факт', 'ядро', 'аис', 'являться', 'аппарат', 'обеспечивать', 'автоматизированный', 'ведение', 'аналитический', 'учёт', 'большинство', 'фирма', 'начать', 'детальный', 'проработка', 'проблема'], ['система', 'спроектировать', 'сверху', 'т.е.', 'предположение', 'программа', 'удовлетворять', 'потребность', 'пользователь'], ['идея', 'использование', 'программа', 'резко', 'ограничить', 'возможность', 'разработчик', 'структура', 'информационный', 'множество', 'база', 'использование', 'вариант', 'экранный', 'форма', 'алгоритм', 'расчёт', 'следовательно', 'лишить', 'возможность', 'принципиально', 'расширить', 'круг', 'решать', 'задача', 'автоматизировать', 'повседневный', 'деятельность', 'каждый', 'работник'], ['заложить', 'сверху', 'жёсткий', 'рамка', 'общий', 'ограничивать', 'возможность', 'система', 'ведение', 'глубокий', 'специфический', 'аналитический', 'производственный', 'технологический', 'учёт'], ['работник', 'проводить', 'работа', 'вручную', 'результат', 'вводить', 'компьютер'], ['интерфейс', 'каждый', 'рабочий_место', 'определить', 'функция', 'возложить', 'пользователь', 'принять', 'технология', 'работа'], ['успешный', 'реализация', 'задача', 'полный', 'автоматизация', 'банк', 'изменить', 'идеология', 'построение', 'аис'], ['1.1.3'], ['принцип', 'дуализм', 'многокомпонентности'], ['развитие', 'банковский', 'структура', 'промышленный_предприятие', 'увеличение', 'число', 'филиал', 'рост', 'количество', 'клиент', 'необходимость', 'повышение', 'качество', 'обслуживание', 'предъявлять', 'автоматизированный', 'система', 'новый', 'требование'], ['новый', 'подход', 'проектирование', 'аис', 'заключаться', 'сбалансированный', 'сочетание', 'два', 'предыдущий'], ['первый', 'очередь', 'относиться', 'идеология', 'построение', 'ядро', 'система', 'автоматизированный', 'бухгалтерия', 'аналитический', 'учёт'], ['банковский', 'структура', 'дать', 'сторона', 'ядро', 'система', 'сохраняться', 'возможность', 'работа', 'лицевой', 'счёт', 'автоматический', 'формирование', 'соответствующий', 'бухгалтерский', 'проводка', 'сторона', 'отменяться', 'жёсткий', 'требование', 'работа', 'лицевыми', 'счёт'], ['появиться', 'возможность', 'ведение', 'бухгалтерский', 'учёт', 'балансовый', 'счёт', 'порядок', 'углубление', 'уровень', 'лицевой', 'счёт', 'клиент'], ['ведение', 'аналитический', 'учёт', 'лицевой', 'счёт', 'клиент', 'опускаться', 'уровень', 'специализированный', 'программный', 'обеспечение', 'спо', 'установить', 'рабочий_место', 'банковский', 'работник', 'контролёр', 'кредитный', 'бухгалтер', 'инспектор', 'т', 'д.'], ['образ', 'принципиальный', 'отличие', 'новый', 'подход', 'создание', 'абс', 'заключаться', 'идея', 'распределение', 'план', 'счёт', 'уровень', 'экспертиза'], ['справочник', 'план', 'счёт', 'соответствующий', 'описание', 'информационный', 'множество', 'клиент', 'проектироваться', 'принцип', 'распределить', 'база'], ['результат', 'явиться', 'формирование', 'необходимый', 'бухгалтерский', 'проводка', 'агрегировать', 'балансовый', 'счёт', 'автоматический', 'передача', 'база', 'автоматизированный', 'бухгалтерия', 'реализация', 'специфический', 'требование', 'каждый', 'банковский', 'работник', 'число', 'формирование', 'произвольный', 'отчёт', 'справка', 'мемориальный', 'ордер', 'операционный', 'дневник', 'выполнение', 'вспомогательный', 'технологический', 'расчёт', 'и пр.'], ['использование', 'гибкий', 'система', 'настройка', 'спо', 'компонент', 'абс', 'появиться', 'реальный', 'возможность', 'адаптация', 'программный', 'аппарат', 'практически', 'любой', 'условие', 'различный', 'требование', 'инструктивный', 'материал', 'правило', 'работа', 'принять', 'вышестоящий', 'организация', 'банковский', 'учреждение'], ['многокомпонентный', 'схема', 'организация', 'абс', 'проведение', 'модернизация', 'компонент', 'центральный', 'часть', 'ядро', 'абс', 'компонент', 'затрагиваться', 'значительно', 'повышать', 'надёжность', 'продолжительность', 'жизнь', 'автоматизированный', 'система', 'обеспечивать', 'полный', 'выполнение', 'требуемых', 'функция'], ['двойственный', 'подход', 'формирование', 'ежедневный', 'баланс', 'лечь', 'основа', 'т.н.', 'принцип', 'дуализм', 'важный', 'принцип', 'построение', 'современный', 'банковский', 'система'], ['реализация', 'принцип', 'дуализм', 'неизбежно', 'требовать', 'построение', 'абс', 'новый_поколение', 'вид', 'программный', 'модуль', 'органически', 'связать', 'время', 'способный', 'работать', 'автономно'], ['задача', 'проектирование', 'аис', 'промышленный_предприятие', 'сложный', 'т.к.', 'характер', 'обрабатывать', 'информация', 'разнороден', 'сложный', 'формализовать'], ['выделить', 'основный', 'модель', 'работа', 'работа', 'код', 'проект'], ['общий', 'случай', 'код', 'проект', 'представлять', 'аналог', 'функциональный', 'лицевой', 'счёт', 'определённый', 'разрядность', 'порядок', 'т.е.', 'конкретный', 'группа', 'цифро', 'буквенный', 'обозначение', 'характеризовать', 'деталь', 'сборочный', 'единица', 'изделие', 'уровень', 'взаимосвязь'], ['конкретный', 'часть', 'код', 'характеризовать', 'технологический', 'конструкторский', 'финансовый', 'и др.'], ['документ'], ['регламентироваться', 'соответствующий', 'гостами', 'аналог', 'инструкция', 'цб', 'банк', 'формализовать'], ['модульный', 'подход', 'реализация', 'аис', 'случай', 'важный'], ['двойственный', 'подход', 'формирование', 'ежедневный', 'производственный', 'план', 'лечь', 'основа', 'т.н.', 'принцип', 'дуализм', 'аис', 'промышленный_предприятие'], ['реализация', 'принцип', 'дуализм', 'неизбежно', 'требовать', 'построение', 'аис', 'предприятие', 'новый_поколение', 'вид', 'программный', 'модуль', 'органически', 'связать', 'время', 'способный', 'работать', 'автономно'], ['многокомпонентный', 'система', 'обеспечивать', 'соблюдение', 'основополагающего', 'принцип', 'построение', 'автоматизированный', 'информационный_система', 'отсутствие', 'дублирование', 'ввод', 'исходный'], ['информация', 'операция', 'провести', 'применение', 'компонент', 'система', 'использовать', 'любой', 'компонент'], ['модульность', 'построение', 'аис', 'новый_поколение', 'принцип', 'одноразовый', 'ввод', 'давать', 'возможность', 'гибко', 'варьировать', 'конфигурация', 'система'], ['банк', 'иметь', 'разветвленную', 'филиальный', 'сеть', 'передавать', 'режим', 'реальный', 'время', 'установка', 'спо', 'филиал', 'экономически', 'оправдать'], ['случай', 'возможный', 'эксплуатация', 'филиал', 'общий', 'назначение', 'предназначить', 'первичный', 'ввод', 'информация', 'последующий', 'автоматизированный', 'обработка', 'спо', 'установить', 'головной', 'офис', 'банк'], ['структура', 'давать', 'возможность', 'органически', 'включить', 'абс', 'новый_поколение', 'компонент', 'создание', 'хранилище', 'разделять', 'система', 'оперативный', 'действие', 'система', 'поддержка', 'принятие', 'решение'], ['достоинство', 'принцип', 'многокомпонентности', 'являться', 'базовый', 'создание', 'аис', 'новый_поколение', 'состоять', 'возможность', 'поэтапный', 'внедрение'], ['первый', 'этап', 'внедрение', 'устанавливаться', 'заменяться', 'устареть', 'компонент', 'система', 'рабочий_место', 'нуждаться', 'обновление'], ['второй', 'этап', 'происходить', 'развитие', 'система', 'подсоединение', 'новый', 'компонент', 'отработка', 'межкомпонентный', 'связь'], ['возможность', 'применение', 'методика', 'внедрение', 'обеспечивать', 'достаточно', 'простой', 'тиражирование', 'адаптация', 'местный', 'условие'], ['образ', 'автоматизированный', 'информационный_система', 'новый_поколение', 'многокомпонентный', 'система', 'распределить', 'база', 'уровень', 'экспертиза'], ['заставлять', 'банк', 'разрабатывать', 'предприятие', 'банк', 'аис', 'собственный', 'сила', '1,2', 'первых', 'относительно', 'низкий', 'стоимость', 'разработка', 'сравнение', 'покупной'], ['правило', 'существовать', 'подразделение', 'департамент', 'информатизация', 'управление', 'эксплуатация', 'управление', 'эксплуатация', 'вычислительный', 'сеть', 'средство', 'связь', 'экспертный', 'аналитический', 'управление', 'постановка', 'задача', 'добавляться', 'новый', 'структура', 'управление', 'развитие', 'разработка', 'аис', 'правило', 'влечь', 'больший', 'финансовый', 'затрата'], ['вторых', 'собственный', 'разработка', 'максимальный', 'ориентация', 'реализация', 'бизнес', 'процессов', 'предприятие', 'банк', 'уникальный', 'финансовый', 'управленческий', 'технология', 'складываться', 'год'], ['третий', 'позволять', 'обеспечивать', 'значительно', 'высокий', 'уровень', 'безопасность', 'независимость', 'внешний', 'фактор'], ['четвёртый', 'оперативный', 'реакция', 'изменение', 'правило', 'игра', 'рынок'], ['вместе', 'собственный', 'разработка', 'решить', 'целый', 'комплекс', 'организационный', 'технический', 'задача', 'позволить', 'избежать', 'ошибочный', 'решение', '1,2', 'первых', 'правильный', 'выбор', 'архитектура', 'построение', 'вычислительный', 'коммуникационный', 'сеть', 'ориентация', 'профессиональный_субд'], ['экспертный', 'оценка', 'собственный', 'разработка', 'аис', '53', 'базироваться', 'субд', 'oracle', '15', 'informix', '22', 'субд'], ['вторых', 'использование', 'разработка', 'современный', 'инструментарий', 'case', 'средство', 'эффективный', 'средство', 'разработка', 'delphi', 'designer2000', 'developer2000', 'sql', 'stations', 'т.п.'], ['третий', 'мультизадачная', 'инфраструктура', 'разработка', 'проект', 'конкретный', 'модуль', 'аис', 'вести', 'группа', 'разработчик', 'взаимосвязанным', 'перечень', 'задача', 'построить', 'принцип', 'полный', 'взаимозаменяемость', 'т.е.', 'функционирование', 'модуль', 'аис', 'развитие', 'связать', 'конкретный', 'разработчик'], ['четвёртый', 'применение', 'эффективный', 'организационно', 'технический', 'средство', 'управление', 'проект', 'контроль', 'версия', 'аис'], ['соблюдение', 'основный', 'положение', 'рассчитывать', 'собственный', 'разработка', 'оказаться', 'конкурентный', 'эффективный'], ['противный', 'случай', 'столкнуться', 'эффект', 'неоправданный', 'ожидание', 'хороший', 'случай', 'крайний', 'случай', 'задуматься', 'смена', 'аис'], ['смена', 'аис', 'вызвать', 'непосредственно', 'смена', 'клиентский', 'модуль', 'табличный', 'структура', 'бд', 'потребовать', 'замена', 'серверный', 'клиентский', 'аппаратный', 'общесистемный', 'программный', 'обеспечение', 'субд', 'дело', 'дешёвый'], ['важный', 'выбор', 'вариант', 'реализация', 'аис', 'решить', 'вопрос', 'возможность', 'экспорт', 'импорт', 'создавать', 'система'], ['правильный', 'решение', 'вопрос', 'смена', 'аис', 'возникнуть', 'необходимость', 'произойти', 'практически', 'безболезненный', 'функциональный', 'подразделение'], ['отличие', 'банковский', 'структура', 'крупный', 'отечественный', 'промышленный_предприятие', 'подходить', 'осознание', 'явный', 'внедрение', 'развитие', 'корпоративный', 'информационный_система', 'основный', 'компонент', 'стратегический', 'развитие', 'бизнес'], ['связь', 'недалёкий', 'будущее', 'ожидать', 'расширение', 'рынок', 'корпоративный', 'информационный_система', 'последующий', 'значительно', 'рост'], ['учитывать', 'тесный', 'интеграция', 'финансовый', 'промышленный', 'структура', 'полагать', 'основа', 'построение', 'корпоративный', 'система', 'финансово', 'промышленный', 'группа', 'являться', 'использовать', 'финансовый', 'учреждение', 'абс'], ['1.2'], ['ориентация', 'профессиональный_субд', 'против', 'материал', 'периодический', 'печать', '1,2', 'судить', '1998', 'год', 'год', 'переход', 'внедрение', 'абс', 'четвёртый', 'поколение', 'основа', 'очередь', 'являться', 'ориентация', 'профессиональный_субд'], ['давать', 'оптимизированный', 'многопользовательский', 'режим', 'работа', 'развить', 'система', 'транзакционный', 'обработка', 'обеспечивать', 'многочисленный', 'пользователь', 'возможность', 'работа', 'база', 'мешать', 'друг', 'другу'], ['надёжный', 'средство', 'защита', 'информация', 'учитывать', 'стандартный', 'трехзвенную', 'архитектура', 'защита', 'уровень', 'сеть', 'уровень', 'сервер', 'бд', 'уровень', 'клиентский', 'ос'], ['эффективный', 'инструмент', 'разграничение', 'доступ', 'бд'], ['поддержка', 'широкий', 'диапазон', 'аппаратно', 'программный', 'платформа'], ['реализация', 'распределить', 'обработка'], ['возможность', 'построение', 'гетерогенный', 'распределить', 'сеть'], ['развитой', 'средство', 'управление', 'контроль', 'мониторинг', 'администрирование', 'сервер', 'бд'], ['поддержка', 'эффективный', 'инструментарий', 'словарь', 'триггеры', 'функция', 'процедура', 'пакет', 'т.п.', 'высоко', 'перечисленный', 'обусловить', 'широкий', 'распространение', 'решение', 'база', 'профессиональный_субд', 'крупный', 'коммерческий', 'банк', 'промышленный', 'корпорация'], ['экспертный', 'оценка', 'число', 'установка', 'лидировать', 'субд', 'oracle', 'informix', 'sybase'], ['несмотря', 'большинство', 'средний', 'малый', 'банк', 'предприятие', 'прежний', 'ориентироваться', 'решение', 'база', 'аис', 'третий', 'второй', 'поколение'], ['основной', 'мнимый', 'стереотип', 'позволять', 'структура', 'ориентироваться', 'использование', 'профессиональный_субд', 'построение', 'аис', '1,2', 'против', 'относительно', 'высокий', 'дороговизна', 'профессиональный_субд', 'правило', 'поставщик', 'практически', 'профессиональный_субд', 'предлагаться', 'масштабировать', 'решение', 'т.е.', 'enterprise', 'database', 'крупный', 'система', 'workgroup', 'database', 'средний', 'малый', 'система', 'цена', 'последний', 'сравнимый', 'цена', 'локальный', 'субд'], ['против', 'профессиональный_субд', 'предъявлять', 'высокий', 'требование', 'аппаратный', 'платформа'], ['резкий', 'рост', 'производительность', 'intel', 'ориентированный', 'аппаратный', 'платформа', 'большинство', 'производитель', 'профессиональный_субд', 'выпустить', 'версия', 'intel', 'сервер', 'число', 'ос', 'linux', 'учитывать', 'linux', 'мощность', 'unix', 'система', 'практичсеки', 'беспланая', 'ос', 'решение', 'основа', 'правило', 'повлечь', 'больший', 'финансовый', 'затрата'], ['позволять', 'построение', 'система', 'ориентироваться', 'высокопроизводительный', 'многокластерные', 'risc', 'сервер', 'использовать', 'серверный', 'intel', 'платформа'], ['против', 'профессиональный', 'аис', 'сложный', 'дорога', 'администрирование'], ['правило', 'сложность', 'администрирование', 'зависеть', 'конкретный', 'аис'], ['эксплуатация', 'аис', 'многопрофильный', 'банк', 'предприятие', 'unix', 'платформа', 'снимать', 'проблема', 'возникать', 'место', 'счёт', 'широкий', 'возможность', 'удалить', 'администрирование', 'центр'], ['против', 'разработка', 'аис', 'промышленный', 'платформа', 'дорога'], ['проектирование', 'современный', 'интегрированных', 'система', 'процесс', 'трудоёмкий', 'требовать', 'высокий', 'квалификация', 'разработчик'], ['находить', 'отражение', 'цена', 'объективно', 'делать', 'аис', 'новый_поколение', 'дорогой', 'сравнимый', 'стоимость', 'предшественник'], ['против', 'внедрение', 'система', 'профессиональный', 'платформа', 'процесс', 'затяжной', 'дорогостоящий'], ['затяжка', 'внедрение', 'правило', 'обусловить', 'недостаток', 'опыт', 'фирма', 'поставщик', 'установка', 'система', 'недостаточный', 'готовность', 'внедряемого', 'продукт'], ['ориентировочный', 'срок', 'установка', 'типовой', 'аис', 'четвёртый', 'поколение', 'субд', 'oracle', 'отлаженном', 'технологический', 'процесс', 'составлять', 'неделя'], ['против', 'сопровождение', 'система', 'база', 'профессиональный', 'платформа', 'неоправданно', 'дорогой', 'качественный', 'характеристика', 'аис', 'оставлять', 'желать', 'хороший'], ['предубеждение', 'сложиться', 'основание', 'опыт', 'эксплуатация', 'аис', 'зарубежный', 'производство'], ['указать', 'целый', 'ряд', 'случай', 'зарубежный', 'фирма', 'поставщик', 'отказываться', 'своевременно', 'вносить', 'изменение', 'обусловить', 'новый', 'инструкция', 'цб', 'требовать', 'изменение', 'неоправданно', 'крупный', 'сумма'], ['относиться', 'отечественный', 'система', 'новый_поколение', 'изначально', 'рассчитать', 'изменчивый', 'российский', 'законодательство'], ['вывод', 'анализ', 'рынок', 'показывать', 'сегодня', 'современный', 'аис', 'представлять', 'интегрировать', 'комплекс', 'аппаратно', 'программный', 'средство', 'реализовать', 'мультипредметную', 'информационный_система', 'обеспечивать', 'современный', 'финансовый', 'управленческий', 'проектировать', 'производственный', 'сбытовый', 'технология', 'режим', 'реальный', 'время', 'транзакционный', 'обработка'], ['задуматься', 'достаточно', 'закономерный'], ['персональный', 'субд', 'clipper', 'clarion', 'foxpro', 'совершенно', 'приспособить', 'создание', 'интегрировать', 'система', 'работать', 'общий', 'база'], ['принцип', 'субд', 'поддерживать', 'понятие', 'база', 'работать', 'уровень', 'индивидуальный', 'таблица', 'файл'], ['широко', 'распространенные', 'сегодня', 'система', 'база', 'btrieve', 'трудный', 'назвать', 'масштабируемыми', 'btrieve', 'профессиональный_субд', 'пригодный', 'построение', 'корпоративный', 'информационный_система'], ['btrieve', 'система', 'унаследовать', 'архитектура', 'больший', 'часть', 'код', 'предшественник', 'разработать', 'clipper', 'clarion', 'объяснять', 'столь', 'больший', 'популярность', 'btrieve', 'фирма', 'разрабатывать', 'платформа'], ['механически', 'перенести', 'clarion', 'система', 'использование', 'менеджер', 'запись', 'btrieve', 'относительно', 'несложный', 'использование', 'качество', 'субд', 'oracle', 'прийтись', 'существенно', 'изменить', 'архитектура', 'система'], ['основной', 'отличительный', 'особенность', 'корпоративный', 'субд'], ['первых', 'изначально', 'направить', 'создание', 'интегрированных', 'многопользовательский', 'система', 'иметь', 'распоряжение', 'развить', 'словарь', 'значительно', 'повышать', 'роль', 'системный', 'анализ', 'моделирование', 'проектирование', 'система'], ['вторых', 'средство', 'разработка', 'субд', 'оптимизировать', 'коллективный', 'разработка', 'сложный', 'система', 'рамка', 'единый', 'продумать', 'стратегический', 'линия'], ['обуславливать', 'неуклонно', 'расти', 'количество', 'успешный', 'внедрение', 'система', 'база', 'профессиональный_субд'], ['1.3'], ['этап', 'разработка', 'автоматизированный', 'информационный_система'], ['выбрать', 'метод', 'руководствоваться', 'проектирование', 'автоматизировать', 'информационный_система'], ['спланировать', 'комплекс', 'работа', 'создание', 'система', 'соответствие', 'типовой', 'этап', 'разработка', 'аис', 'краткий', 'характеристика', 'привести', 'табл.1'], ['последовательность', 'трансформация', 'бизнес', 'модель', 'объект', 'база', 'рис.1', '1.3.1'], ['разработка', 'анализ', 'бизнес', 'модели', 'построение', 'эффективный', 'автоматизировать', 'система', 'первый', 'этап', 'являться', 'исследование', 'формализация', 'бизнес', 'процессов', 'деятельность', 'банк', 'предприятие'], ['т.е'], ['описание', 'система', 'ведение', 'делопроизводство', 'цель', 'эффективный', 'использование', 'информация', 'достижение', 'поставить', 'задача', 'решение', 'проблема', 'стоить', 'организация'], ['организация', 'работа', 'документ', 'платёжный', 'конструкторско', 'технологический', 'документ', 'являться', 'важный', 'составной', 'часть', 'процесс', 'управление', 'принятие', 'управленческий', 'решение', 'существенно', 'влиять', 'оперативность', 'качество', 'управление'], ['процесс', 'принятие', 'управленческий', 'решение', 'состоять', 'получение', 'информация', 'переработка', 'информация', 'анализа', 'подготовка', 'принятие', 'решение'], ['этап', 'самым', 'тесный', 'образ', 'связать', 'документационный', 'обеспечение', 'процесс', 'управление', 'проектирование', 'производство'], ['предприятие', 'отсутствовать', 'чёткий', 'организация', 'работа', 'документ', 'следствие', 'закономерный', 'появление', 'документ', 'низкий', 'качество', 'оформление', 'полнота', 'ценность', 'содержаться', 'информация', 'увеличение', 'срок', 'обработка'], ['приводить', 'ухудшение', 'качество', 'управление', 'увеличение', 'срок', 'принятие', 'решение', 'число', 'неверный', 'решение'], ['рост', 'масштаб', 'предприятие', 'численность', 'сотрудник', 'вопрос', 'эффективность', 'документационный', 'обеспечение', 'управление', 'становиться', 'актуальный'], ['основной', 'проблема', 'возникать', 'выглядеть', 'примерно', 'руководство', 'терять', 'целостный', 'картина', 'происходить', 'структурный', 'подразделение', 'иметь', 'информация', 'деятельность', 'друг', 'друга', 'переставать', 'слаженно', 'осуществлять', 'деятельность'], ['неизбежно', 'падать', 'качество', 'обслуживание', 'клиент', 'способность', 'организация', 'поддерживать', 'внешний', 'контакт', 'приводить', 'падение', 'производительность', 'вызывать', 'ощущение', 'недостаток', 'ресурс', 'людской', 'технический', 'коммуникационный', 'т.д.', 'приходиться', 'расширять', 'штат', 'вкладывать', 'деньга', 'оборудование', 'новый', 'рабочий_место', 'помещение', 'коммуникация', 'обучение', 'новый', 'сотрудник', 'производственный', 'предприятие', 'увеличение', 'штат', 'повлечь', 'изменение', 'технология', 'производство', 'потребовать', 'дополнительный', 'инвестиция', 'оказываться', 'штат', 'увеличить', 'производительность', 'упасть', 'производство', 'требовать', 'инвестиция', 'соответственно', 'возникать', 'потребность', 'увеличение', 'оборотный', 'капитал', 'потребовать', 'новый', 'кредит', 'уменьшить', 'плановый', 'прибыль'], ['итог', 'предприятие', 'переставать', 'расти', 'интенсивно', 'дальнейший', 'расширение', 'происходить', 'чисто', 'экстенсивный', 'путь', 'счёт', 'создать', 'прибыль'], ['сегодня', 'организация', 'документооборот', 'дальнейший', 'термин', 'понимать', 'документооборот', 'документ', 'конструкторский', 'технологический', 'финансовый', 'организационный', 'т.п.', 'предлагаться', 'множество', 'различный', 'средство', 'автоматизация', 'документооборот', 'организовать', 'плохо', 'относительно', 'небольшой', 'предприятие'], ['ответ', 'независимо', 'степень', 'автоматизация', 'предприятие', 'тип', 'отсутствие', 'игнорирование', 'модель', 'организация', 'документооборот', 'неизбежно', 'привести', 'старый', 'проблема', 'остаться', 'нерешённый'], ['состояние', 'делопроизводство', 'организация', 'ручной', 'хаос', 'результат', 'автоматизация', 'компьютерный', 'хаос'], ['запад', 'россия', 'схлынуть', 'первый', 'волна', 'увлечение', 'система', 'автоматизация', 'документооборот', 'оказаться', 'должный', 'оценка', 'возможность', 'пользователь', 'исследование', 'бизнес', 'процессов', 'предприятие', 'трудный', 'ожидать', 'эффект', 'внедрение', 'система_документооборот', 'класс', 'docflow', 'workflow'], ['планироваться', 'реализовать', 'документооборот', 'вручную', 'путем', 'автоматизация', 'помощь', 'мощный', 'западный', 'отечественный', 'пакет', 'первый', 'место', 'чёткий', 'стратегия', 'направить', 'упорядочение', 'бизнес', 'процессов'], ['говорить', 'делать', 'неплохой', 'ответить', 'вопрос', 'выгодный', 'выполнять', 'иные', 'процесс', 'иметь', 'место', 'предприятие'], ['проводить', 'жизнь', 'программа', 'модернизация', 'делопроизводство', 'важный', 'представлять', 'уровень', 'достигнуть', 'предприятие', 'какой', 'место', 'отводиться', 'модельный', 'пространство', 'система_документооборот'], ['1.3.1.1'], ['основной', 'понятие', 'электронный', 'документооборот', 'документ'], ['пример', 'написать', 'заявление', 'отпуск', 'передать', 'отдел', 'кадр'], ['появиться', 'документ'], ['превратить', 'чистый', 'лист', 'бумага', 'документ'], ['первых', 'информация', 'представить', 'вид', 'текст'], ['вторых', 'текст', 'форма', 'заявление'], ['третьих', 'бумага', 'готовить', 'расчёт', 'последующий', 'деятельность', 'сотрудник', 'отдел', 'кадр'], ['предположить', 'обратиться', 'отдел', 'кадр', 'устный', 'заявление', 'отпуск'], ['назвать', 'документ', 'процедура'], ['устный', 'беседа', 'зафиксировать', 'физически', 'поддаваться', 'точный', 'воспроизведение', 'следовательно', 'документ', 'являться'], ['документ', 'совокупность', 'три', 'составлять', '3', 'физический', 'регистрация', 'информация'], ['форма', 'представление', 'информация', 'активизация', 'определить', 'деятельность'], ['деятельность', 'превращать', 'информация', 'документ'], ['документ', 'переставать', 'существовать', 'дальнейший', 'подразумевать', 'процедура', 'обработка'], ['форма', 'документ', 'тесно', 'связать', 'характер', 'дальнейший', 'деятельность', 'порождать', 'необходимость', 'документ'], ['родиться', 'бюрократия-', 'неизбежный', 'спутник', 'цивилизация'], ['документ', '4', 'слабоструктурированная', 'совокупность', 'блок', 'объект', 'информация', 'понятный', 'человек'], ['общий', 'случай', 'обойтись', 'документ'], ['документ', 'независимо', 'обычный', 'бумага', 'электронный', 'бланк', 'проблема', 'корпорация', 'решать', 'первичный', 'бизнес', 'процессы', 'чёткий', 'контроль', 'выполнение', 'проект'], ['бюрократический', 'технология', 'технология', 'взаимодействие', 'человек', 'служба', 'подразделение', 'внутри', 'организация'], ['технология', 'возникнуть', 'анархия'], ['работник', 'знать', 'делать', 'делать', 'считать', 'нужный', 'требовать', 'иной', 'бизнес', 'процесс', 'предприятие'], ['бюрократия', 'неизбежный', 'опасность', 'представлять', 'отрыв', 'реальный', 'цель', 'предприятие', 'работа', 'текущий', 'система_документооборот'], ['документооборот', 'два', 'тип', 'универсальный', 'автоматизирующий', 'существовать', 'информационный', 'поток', 'слабоструктурированной', 'информация'], ['справедливый', 'называть', 'аморфный', 'беспорядочный', 'документооборот', 'операционный', 'ориентированный', 'работа', 'документ', 'содержать', 'операционный', 'атрибутика', 'вместе', 'вестись', 'слабоструктурированная', 'информация'], ['документ', 'важный', 'регламент', 'работа'], ['опытный', 'менеджер', 'подтвердить', 'работа', 'регламент', 'порой', 'отнимать', 'намного', 'время', 'производственный', 'деятельность'], ['дублирование', 'документ', 'потеря', 'навязчивый', 'способ', 'распространение', 'запутанный', 'порядок', 'прохождение', 'существенно', 'усложнить', 'работа', 'повысить', 'вероятность', 'допущение', 'ошибка', 'вследствие', 'потеря', 'нужный', 'информация'], ['документ', 'занимать', 'определённый', 'место', 'процесс', 'некоторый', 'деятельность', 'граница', 'разделять', 'функция', 'исполнение'], ['правильно', 'рассматривать', 'документ', 'инструмент', 'распределение', 'функция', 'работник', '3'], ['1.3.1.2'], ['преимущество', 'электронный', 'документооборот', 'основный', 'преимущество', 'электронный', 'документооборот', 'отнести', 'следующий', 'полный', 'контроль', 'перемещение', 'эволюция', 'документ', 'регламентация', 'доступ', 'способ', 'работа', 'пользователь', 'различный', 'документ', 'отдельный', 'часть'], ['уменьшение', 'расход', 'управление', 'счёт', 'высвобождение', '90', 'людской', 'ресурс', 'занять', 'различный', 'вид', 'обработка', 'бумажный', 'документ', 'снижение', 'бюрократический', 'волокита', 'счёт', 'маршрутизированного', 'перемещение', 'документ', 'жёсткий', 'контроль', 'порядок', 'срок', 'прохождение', 'документ'], ['быстрый', 'создание', 'новый', 'документ', 'существовать'], ['поддержка', 'одновременный', 'работа', 'многих', 'пользователь', 'документ', 'предотвращение', 'потеря', 'порча'], ['сокращение', 'время', 'поиск', 'документ'], ['использование', 'аис', 'рассматриваться', 'качество', 'база', 'общий', 'совершенствование', 'управление', 'предприятие'], ['управление', 'предприятие', 'реализовать', 'следующий', 'основный', 'функция', 'обслуживание', 'клиент', 'разработка', 'продукция', 'учёт', 'контроль', 'деятельность', 'предприятие', 'финансовый', 'обеспечение', 'деятельность', 'предприятие', 'т.д.', '1.3.1.3'], ['модель', 'информационный', 'пространство', 'предприятие'], ['комплексный', 'автоматизация', 'функция', 'требовать', 'создание', 'единый', 'информационный', 'пространство', 'предприятие', 'сотрудник', 'руководство', 'осуществлять', 'деятельность', 'руководствоваться', 'единый', 'правило', 'представление', 'обработка', 'информация', 'документный', 'бездокументном', 'вид'], ['рамка', 'предприятие', 'требоваться', 'создать', 'единый', 'информационный_система', 'управление', 'информация', 'единый', 'система', 'управление', 'документ', 'включать', 'возможность', 'удалённый', 'работа', 'член', 'коллектив', 'работать', 'разный', 'комната', 'здание', 'разный', 'здание', 'доступ', 'информация', 'разный', 'пользователь', 'доступ', 'данным', 'потеря', 'производительность', 'независимо', 'местоположение', 'сеть', 'средство', 'коммуникация', 'электронный', 'почта', 'факс', 'печать', 'документ', 'сохранение', 'целостность', 'общий', 'база', 'полнотекстовый', 'реквизитный', 'поиск', 'информация', 'открытость', 'система', 'пользователь', 'доступ', 'привычный', 'средство', 'создание', 'документ', 'существовать', 'документ', 'создать', 'система', 'защищённость', 'информация', 'удобство', 'настройка', 'конкретный', 'задача', 'пользователь', 'масштабируемость', 'система', 'поддержка', 'рост', 'организация', 'защита', 'вложить', 'инвестиция', 'т.д.', 'начальный', 'этап', 'создание', 'система', 'являться', 'построение', 'модель', 'предметный', 'область', 'слово', 'модель', 'документооборот', 'конкретный', 'бизнес', 'позиционировать', 'предприятие'], ['определить', 'направление', 'автоматизация', 'документооборот', 'поддержка', 'фактографический', 'информация', 'возможность', 'работа', 'полнотекстовый', 'документ', 'поддержка', 'регламент', 'прохождение', 'документ', 'определять', 'трёхмерный', 'пространство', 'свойство', 'некоторый', 'траектория', 'двигаться', 'программный', 'продукт', 'класс', 'проходить', 'различный', 'стадия', 'развитие', 'рис.2'], ['первый', 'ось', 'f', 'характеризовать', 'уровень', 'организация', 'хранение', 'фактографический', 'информация', 'привязать', 'специфика', 'конкретный', 'род', 'деятельность', 'компания', 'организация'], ['закупка', 'материальный', 'ценность', 'происходить', 'оформление', 'товарный', 'сопроводительный', 'документ', 'накладный', 'приемо', 'передаточный', 'акт', 'приходный', 'складской', 'ордер', 'т.д.', 'регистрировать', 'качество', 'операционный', 'документ', 'атрибутика', 'важный', 'принятие', 'управленческий', 'решение'], ['информация', 'операционный', 'документ', 'использоваться', 'сложный', 'аналитический', 'синтетический', 'обработка', 'частный', 'случай', 'получить', 'пользователь', 'система', 'отчёт'], ['второй', 'ось', 'd', 'полнотекстовый', 'документ', 'отражать', 'необходимость', 'организация', 'взаимодействие', 'формирование', 'передача', 'товар', 'услуга', 'информация', 'внутри', 'корпорация'], ['документ', 'наряду', 'фактографический', 'информация', 'содержаться', 'слабо', 'структурировать', 'информация', 'подлежать', 'автоматизировать', 'аналитический', 'обработка', 'форс', 'мажерные', 'фактор', 'порядок', 'предъявление', 'претензия', 'нарушение', 'условие', 'договор'], ['взаимоотношение', 'субъект', 'бизнес', 'сопровождаться', 'документ', 'становиться', 'осязаемый', 'отражение', 'результат', 'взаимодействие'], ['третий', 'ось', 'r', 'вносить', 'пространство', 'документооборот', 'третий', 'измерение', 'регламент', 'процесс', 'прохождение', 'документ', 'описание', 'процедура', 'выполняться'], ['основа', 'позиционирование', 'относительно', 'ось', 'набор', 'формальный', 'признак', 'атрибут', 'перечень', 'выполнение', 'операция'], ['точка', 'пространство', 'f_d', 'r', 'определять', 'состояние', 'система_документооборот', 'координата', 'f_d', 'r', 'f_d', 'r', 'принадлежать', 'множество', 'f_d', 'r', 'соответственно'], ['положение', 'точка', 'зависеть', 'уровень', 'развитие', 'стадия', 'внедрение', 'система_документооборот', 'предприятие', 'специфика', 'масштаб', 'бизнес'], ['представить', 'модель', 'документооборот', 'образ', 'знать', 'текущий', 'положение', 'дело', 'организация', 'делопроизводство', 'каждый', 'конкретный', 'предприятие', 'четко', 'представить', 'какой', 'направление', 'двигаться', 'недоставать', 'текущий', 'момент', 'образ', 'органично', 'использовать', 'существовать', 'система', 'автоматизация'], ['московский', 'банк', 'накопить', 'большой', 'массив', 'фактографический', 'обработка', 'использоваться', 'современный', 'субд', 'развернуть', 'мощный', 'отказоустойчивый', 'сервер', 'отлично'], ['работа', 'внутренний', 'документ', 'наблюдаться', 'дублирование', 'информация', 'возникать', 'ситуация', 'виноватый', 'банк', 'время', 'время', 'лишаться', 'выгодный', 'клиент'], ['причина', 'точка', 'отражать', 'положение', 'система_документооборот', 'организация', 'достаточно', 'больший', 'координата', 'ось', 'f', 'ось', 'd', 'значение', 'координата', 'ось', 'r', 'нуль'], ['конкретный', 'решение', 'случай', 'рассмотрение', 'вопрос', 'внедрение', 'система', 'управление', 'регламент'], ['заботиться', 'субд', 'ось', 'f', 'электронный', 'архив', 'ось', 'd', 'речь', 'идти', 'изменение', 'значение', 'координата', 'ось', 'r'], ['общий', 'случай', 'отмечаться', 'процесс', 'автоматизация', 'делопроизводство', 'предприятие', 'представить', 'вид', 'кривой', 'трёхмерный', 'пространство', 'координата', 'f_d', 'r.', 'крутой', 'кривой', 'быстрый', 'идти', 'процесс', 'модернизация', 'значение', 'три', 'координата', 'высоко', 'уровень', 'автоматизация', 'корпорация', 'следствие', 'проблема', 'организация', 'собственный', 'деятельность'], ['работоспособный', 'модель', 'задание', 'пространство', 'развитие', 'неавтоматизированный', 'система', 'управление', 'документооборот'], [], ['единственный', 'случай', 'решаться', 'задача', 'облегчение', 'рутинный', 'труд', 'перемещение', 'документ', 'поиск', 'регистрация', 'упорядочение', 'система_документооборот'], ['новый', 'качество', 'сегодня', 'ассоциироваться', 'возрасти', 'интерес', 'система', 'электронный', 'документооборот', 'связать', 'использование', 'инструментальный', 'система', 'предназначить', 'хранение', 'регистрация', 'поиск', 'документ', 'управление', 'регламент'], ['ошибочно', 'новый', 'качество', 'сегодня', 'пониматься', 'простой', 'внедрение', 'отличный', 'использовать', 'технология', 'работа', 'документ', 'локальный', 'сеть', 'дискета', 'переносить', 'компьютер'], ['случай', 'уместный', 'говорить', 'новый', 'качество', 'управление', 'предприятие'], ['упомянуть', 'пример', 'ручной', 'работа', 'режимный', 'служба', 'почтовый', 'ящик', 'прекрасно', 'вписываться', 'предложить', 'модель', 'документооборот', 'точка', 'отражать', 'состояние', 'координата', '1,1,1', 'равномерный', 'единственный', 'отсутствовать', 'компьютеризация'], ['эволюция', 'модель'], ['рассмотренная', 'модель', 'документооборот', 'являться', 'застывшим', 'образование', 'данным', 'ощущение', 'сформироваться', 'современный', 'представление', 'контур', 'модель', 'претерпеть', 'три', 'основный', 'фаза', 'эволюция', 'два', 'представить', 'рис.3'], ['третий', 'рис.2'], ['фаза', 'первый', 'фактографический'], ['начало', 'деятельность', 'знаменоваться', 'период', 'накопление', 'первичный', 'информация', 'иметь', 'жёсткий', 'структура', 'атрибутика'], ['условно', 'фаза', 'представить', 'вид', 'единственный', 'ось'], ['точка', 'ось', 'текущий', 'состояние', 'система_документооборот', 'организация'], ['движение', 'ось', 'вверх', 'характеризовать', 'накопление', 'фактографический', 'информация', 'начинать', 'определённый', 'момент', 'отметить', 'второй', 'этап', 'первый', 'фаза', 'возникновение', 'понятие', 'операция'], ['документ', 'представляться', 'привязать', 'бизнес', 'процессам', 'предприятие', 'агрегат', 'иметься', 'характеристика', 'атрибут'], ['этап', 'начинаться', 'процесс', 'возникновение', 'неравенство', 'равноправный', 'документ', 'частность', 'документ', 'основание', 'дальнейший', 'движение', 'ось', 'приобретать', 'операционный', 'оттенок'], ['возникновение', 'привязка', 'конкретный', 'бизнес', 'процессам', 'дальнейший', 'эволюция', 'документооборот', 'одномерный', 'пространство', 'невозможный', 'необходимый', 'новый', 'качественный', 'скачок', 'новый', 'фаза'], ['фаза', 'второй', 'полнотекстовая'], ['расширение', 'организация', 'увеличение', 'круг', 'решать', 'задача', 'требовать', 'использование', 'полнотекстовый', 'документ', 'включать', 'текст', 'любой', 'способ', 'представление', 'график', 'таблица', 'видео', 'т.п', 'вид', 'конструкторско', 'технологический', 'документация'], ['возникать', 'новый', 'ось', 'полнотекстовый', 'лучше', 'мультимедийный', 'документ', 'точка', 'новый', 'двумерный', 'пространство', 'характеризовать', 'система_документооборот', 'предприятие', 'фактографический', 'база', 'документ', 'иметься', 'хранилище', 'архив', 'информация'], ['хранилище', 'позволять', 'накапливать', 'документ', 'различный', 'формат', 'предполагать', 'наличие', 'структуризация', 'возможность', 'поиск'], ['предприятие', 'использоваться', 'автоматизация', 'хранилище', 'иное', 'электронный', 'архив'], ['движение', 'ось', 'полнотекстовый', 'документ', 'предполагать', 'наращивание', 'атрибутивный', 'возможность', 'разграничение', 'доступ', 'расширение', 'средство', 'поиск', 'иерархия', 'хранение', 'классификация'], ['возникать', 'понятие', 'электронный', 'подпись', 'шифрование', 'т.п.', 'ось', 'иметься', 'этап', 'определённый', 'момент', 'развитие', 'хранилище', 'говорить', 'индивидуальный', 'корпоративный', 'архив', 'обслуживать', 'деятельность', 'рабочий', 'группа'], ['точка', 'плоскость', 'эволюция', 'достигнуть', 'второй', 'фаза', 'характеризовать', 'система_документооборот', 'позволять', 'отображать', 'фактографический', 'информация', 'вид', 'полнотекстовый', 'документ', 'иметь', 'необходимый', 'количество', 'атрибут'], ['доступ', 'документ', 'осуществить', 'маршрут', 'уровень', 'сложность', 'соблюдение', 'различный', 'уровень', 'конфиденциальность'], ['говорить', 'точка', 'соответствующий', 'состояние', 'система_документооборот', 'позволять', 'осуществлять', 'синхронизация', 'работа', 'различный', 'рабочий', 'группа', 'сотрудник', 'корпорация', 'расположенных', 'различный', 'площадка'], ['система', 'точка', 'предполагать', 'структурирование', 'информация', 'уровень', 'управление', 'наличие', 'средство', 'репликация'], ['речь', 'пойти', 'корпорация', 'двумерный', 'пространство', 'соответствующий', 'система_документооборот', 'становиться', 'недостаточно', 'необходимый', 'новый', 'скачок', 'очередной', 'фаза'], ['фаза', 'третий', 'регламентирующая'], ['нормальный', 'документооборот', 'масштаб', 'корпорация', 'невозможный', 'решение', 'вопрос', 'согласование', 'соблюдение', 'регламент', 'работа'], ['второй', 'фаза', 'плоскость', 'негласно', 'присутствовать', 'простой', 'регламент', 'нулевой', 'точка', 'сотрудник', 'доступ', 'архив', 'часть', 'папка', 'каждый', 'работник', 'помещаться', 'индивидуальный', 'задание', 'говорить', 'известный', 'документ', 'существовать', 'недостаточный'], ['требоваться', 'интегральный', 'оценка'], ['необходим', 'контроль', 'работник', 'выполнить', 'задание', 'продвигаться', 'документ', 'условие', 'нелинейный', 'процесс', 'согласование', 'согласование', 'пакет', 'конструкторско', 'технологический', 'документация', 'сборочный', 'единица'], ['третий', 'ось', 'пространство', 'документооборот', 'предприятие', 'два', 'деление', 'этап'], ['первоначальный', 'этап', 'движение', 'ось', 'характеризоваться', 'наличие', 'упрощённый', 'регламент', 'отображаемого', 'появление', 'атрибут', 'отвечать', 'регламент', 'оплатить', 'действительный'], ['количественный', 'накопление', 'атрибут', 'расширение', 'возможность', 'управление', 'регламент', 'сопровождаться', 'постепенный', 'переход', 'второй', 'этап', 'отличительный', 'черта', 'появление', 'система', 'специально', 'предназначить', 'отслеживание', 'процесс', 'соблюдение', 'регламент'], ['дальнейший', 'движение', 'вдоль', 'ось', 'говорить', 'появление', 'единый', 'система', 'управление', 'проект'], ['документ', 'система_документооборот', 'становиться', 'вторичный', 'первичный', 'цель', 'бизнес', 'процесс', 'реализация', 'бизнес', 'процедур', 'оставлять', 'документ'], ['оси', 'f_d', 'определять', 'специфика', 'деятельность', 'организация', 'регламентировать', 'положение', 'третий', 'координата', 'r', 'пространство', 'модель', 'документооборот'], ['модель', 'зависеть', 'технология', 'обработка', 'документ', 'принять', 'предприятие', 'решать', 'цель', 'деятельность', 'государственный', 'организация', 'торговый', 'компания', 'промышленный', 'фирма'], ['общий', 'случай', 'выделить', 'три', 'тип', 'организация', 'банк', 'торговый', 'компания', 'приобретение', 'наценка', 'продажа', 'получение', 'прибыль', 'главный', 'объект', 'деятельность', 'бюджетный', 'организация', 'основный', 'деятельность', 'формирование', 'документ', 'промышленный_предприятие', 'закупка', 'сырьё', 'переработка', 'создание', 'новый', 'продукт', 'реализация', 'получение', 'прибыль'], ['цель', 'деятельность', 'операция'], ['задача', 'организация', 'являться', 'формирование', 'документ', 'мэрия', 'суд', 'министерство', 'позиция', 'модель', 'занимать', 'достаточно', 'высокий', 'положение', 'относительно', 'ось', 'f_d'], ['сегодня', 'больший', 'популярность', 'пользоваться', 'приложение', 'ориентировать', 'автоматизация', 'деятельность', 'государственный', 'правительственный', 'административный', 'структура', 'основный', 'цель', 'состоять', 'подготовка', 'документ'], ['рассматривать', 'деятельность', 'коммерческий', 'банк', 'фирма', 'задача', 'производство', 'операция', 'материальный', 'ценность', 'три', 'координата', 'сбалансированный', 'значение'], ['рассмотреть', 'качество', 'пример', 'основный', 'шаг', 'разработки', 'функциональный', 'модель', 'типовой', 'абс'], ['архитектура', 'реализация', 'абс', 'сегодня', 'выделить', 'абс', 'пять', 'поколение', 'первый', 'предназначить', 'решение', 'задача', 'автоматизация', 'бухгалтерский', 'операция', 'абс', 'второй', 'третий', 'поколение', 'реализовывать', 'элемент', 'автоматизировать', 'документооброта', 'абс', 'четвёртый', 'поколение', 'строиться', 'классический', 'схема', 'трехзвенной', 'клиент', 'серверный', 'архитектура', 'иметь', 'модульный', 'структура', 'реализовать', 'концепция', 'docflow'], ['абс', 'пятый', 'поколение', 'являться', 'информационный_система', 'реилизующими', 'полнофункциональную', 'модель', 'workflow', 'автоматизация', 'бизнесс', 'процесс', 'рис.4,5'], ['схема', 'функциональный', 'бизнес', 'потоков', 'типовой', 'абс', 'четвёртый', 'поколение', 'представить', 'рис.6', 'функциональный', 'схема', 'технологический', 'поток', 'операция', 'рис.7'], ['назначения', 'большинство', 'модуль', 'абс', 'рис.6', 'достаточный', 'понятный', 'едиснтвенное', 'уточнить', 'интернет', 'банкингом', 'понимать', 'автоматизированный', 'система', 'реализовать', 'технология', 'busines', 'to', 'customers', 'клиентский', 'обслуживание', 'электронный', 'платежы', 'физический', 'лицо', 'bisnes', 'to', 'bisnes', 'обеспечение', 'работа', 'дистрибьюторско', 'дилерский', 'сеть', 'корпорация', 'режим', 'on', 'line', 'коммерция'], ['разработать', 'функциональный', 'схема', 'бизнес', 'потоков', 'структурировать', 'соотвествии', 'модульный', 'принцип', 'построение', 'система', 'управление', 'выделить', 'базовый', 'технологический', 'поток', 'операция', 'каждый', 'уровень', 'модульность', 'итог', 'перечень', 'документ', 'операция', 'обрабатывать', 'конкретный', 'рабочий_место', 'маршрут', 'движение', 'контроль', 'управление', 'приступать', 'следующий', 'этап', 'проектирование', 'информационный_система'], ['1.3.1.4'], ['вывод'], ['координата', 'точка', 'характеризовать', 'сбалансировать', 'система_документооборот', 'бизнес', 'модель', 'функционирование', 'предприятие'], [], ['ненулевой', 'значение', 'идеал', 'примерно', 'одинаковый', 'соответствовать', 'друг', 'другу'], ['главный', 'автоматизация', 'таковая', 'оптимизация', 'поток', 'документ', 'интегральность', 'прекрасный', 'программа', 'автоматизация', 'документооборот', 'оказаться', 'напрасный', 'вложение', 'средство', 'модель', 'одномерный', 'плоский'], ['большой', 'смысл', 'говорить', 'жизненный', 'цикл', 'документ', 'связь', 'основный', 'бизнес', 'процессами', 'предприятие'], ['система', 'автоматизация', 'документооборот', 'функционировать', 'отрыв', 'слой', 'мёртвый', 'нанести', 'вред', 'запутать', 'неуправляемые', 'бизнес', 'процессы', 'отвлечь', 'персонал', 'выполнение', 'основный', 'работа', 'поддержание', 'система', 'автоматизация', 'документооборот', 'суть', 'дело', 'автоматизировать'], ['следствие', 'раздувание', 'штатный', 'расписание', 'дискредитация', 'идея', 'автоматизация', 'делопроизводство'], ['знакомый', 'ситуация', 'работник', 'занять', 'работа', 'кипеть', 'рассмотреть', 'два', 'разный', 'фирма', 'иметь', 'равный', 'доход', 'заниматься', 'бизнес', 'штат', 'сотрудник', 'вдвое'], ['создание', 'внедрение', 'аис', 'помнить', 'компьютер', 'комплект', 'программный', 'средство', 'тип', 'workflow', 'голый', 'инструмент', 'неумелый', 'использование', 'влечь', 'вред', 'долгожданный', 'облегчение', 'освобождение', 'внутрикорпоративный', 'проблема', 'управление']]"
        ],
        [
         "22",
         "Встроенные операторы SQL.doc",
         "Встроенные операторы SQL. \rКак было отмечено ранее SQL (Structured Query Language) - структурированный язык запросов, позволяет оперировать данными в реляционных базах данных. Стандарт SQL определен Американским национальным институтом стандартов и ISO в качестве международного стандарта. Целью данного издания не является полное и всеобъемлющее освещение синтаксиса SQL, для этого есть специализированные справочники и документация [1-10], мы же постараемся на нескольких простых конкретных примерах показать Вам всю элегантность и мощь SQL. Все примеры, приведенные ниже даны, применительно к ER-диаграмме ДОКТОР-ПАЦИЕНТ, приведенной на рис.10. \rЧто же из себя представляет SQL - программа? Чаще всего это оформленная в виде отдельного файла программная конструкция, написанная в любом текстовом редакторе с учетом требований синтаксиса языка SQL. Такая форма представления SQL программы - называется скриптом и предназначена для выполнения на сервере, например с помощью специальной терминальной программы SQL+ (строка запуска скрипта в SQL+: @<путь>/<имя скрипта>.sql). Считается хорошим тоном наличие в скрипте комментариев. Для выделения строчных комментариев используется следующий набор символов: --. \rПеред тем как перейти непосредственно к рассмотрению использования основных SQL операторов еще несколько слов об организации проектирования БД. Процесс создания БД - это сложный многоэтапный процесс, причем как правило в нем принимают участие большое число разработчиков, поэтому очень важным является правильная организация внесения изменений в БД. Для этих целей очень часто используется технология \"РАЗДЕЛЕНИЯ ЗАДАЧ\", которая заключается в следующем: каждый разработчик, выполняя конкретную часть создания или модификации БД, оформляет все производимые им изменения в виде скриптов (т.е. отдельных файлов), архивные версии которых перед запуском на сервере размещаются на отдельном, специально выделенном, носителе (диске сервера), причем каждое такое изменение БД оформляется в виде отдельной задачи, имеющей свой уникальный номер. Например, в задаче 000001/VER001/ (физически это просто каталог на диске) находятся все скрипты (файлы) по первоначальному созданию БД. Такой подход позволяет максимально удобно решать задачи \"Контроля версий\", производить миграцию созданной БД на другой сервер (достаточно на новом сервере выполнить все задачи в последовательности следования номеров задач), обеспечивает достаточно высокий уровень безопасности, возможности отката на любую предыдущую позицию (этап разработки БД) и многое другое. В дальнейшем при выполнении практических примеров приведенных в данном издании советуем вам придерживаться именно этой технологии. Если вы на каком-то из этапов допустили ошибку (которую выявили на этапе выполнения скрипта в БД) не надо исправлять текст непосредственно этого скрипта, оформьте новую версию выполняемой задачи, в которой разместите исправленный скрипт. Это позволит Вам всегда отслеживать все Ваши ошибки. Последняя рекомендация, которую хотелось бы дать, заключается в том, что если в задачу входит несколько скриптов, то целесообразно оформить один дополнительный запускающий скрипт, например start.sql, в который поместить запуск всех остальных скриптов. Поверьте на слово - это значительно съэкономит ваше время в дальнейшем. Например, если в задачу 000001/VER001/ входят файлы: db1.sql., db2.sql, db3.sql, то файл start.sql может быть представлен следующим способом: \r************************* start.sql *******************************\rSpool 000001.log\r@db1.sql\r@db2.sql\r@db3.sql\rspool off\r***************************************************************\rПри этом необходимо помнить, что все файлы должны быть в кодировке той среды, из которой вы собираетесь запускать SQL+ (KOI8, Win1251, DOS). \r\rОПЕРАТОРЫ СОЗДАНИЯ ОБЪЕКТОВ БД. \rПеред тем как работать с данными с БД ее надо создать, для этих целей используется специальная группа операторов, предназначенных для создания объектов базы данных, все операторы данной группы начинаются с ключевого слова CREATE. \rCREATE DATABASE \rСоздает базу данных. Задает и определяет максимальное число экземпляров файлов данных и журнальных файлов, устанавливает режим архивирования. \rFilespec (журнальные файлы)::= \r-- Скрипт создания БД CLINICS\rspool clinic.log\rconnect internal\rstartup nomount pfile=/oracle/dbs/initclinic.ora\r-- создаем базу данных с именем clinics\rcreate database \"clinics\"\r    maxinstances 1\r    maxlogfiles  10\r    character set \"RU8PC866\"\r    national character set \"RU8PC866\"\r    datafile\r'/oracle/db/system01.dbf' size   100M\r    logfile\r'/oracle/db/lo  g01.dbf' size 1M,\r'/oracle/db/log02.dbf' size 1M;\rdisconnect\rspool off\rCREATE TABLESPASE \rСоздает в базе данных область для хранения таблиц, сегментов и индексов, определяет файлы базы данных, параметры хранения по умолчанию и режим табличного пространства (автономный или оперативный). \rCREATE USER \rСоздает пользователя базы данных. (синтаксис команды приведен упрощенно, за дополнительной информацией обратитесь к документации). \rCREATE SCHEMA \rСоздает несколько таблиц и представлений и предоставляет некоторые привилегии в одной транзакции. \r \rCREATE TABLE \rСоздает новую таблицу БД, определяя ее столбцы, правила целостности и параметры хранения. \rПример: \rcreate table\r\u0007DOCTORS(\r\u0007\r\u0007DC_NNN\r\u0007NUMBER(12,0)\r\u0007\r\u0007, DC_DC_NNN\r\u0007NUMBER(12,0)\r\u0007\r\u0007, DC_NAME\r\u0007VARCHAR2(255)\r\u0007\r\u0007, DC_CS_NNN\r\u0007NUMBER(12,0)\r\u0007\r\u0007, DC_DIPLOMA_NUMBER\r\u0007NUMBER(12,0)\r\u0007\r\u0007, DC_SPECIALTY_NNN\r\u0007NUMBER(12,0)\r\u0007\r\u0007, DC_SHAT_NNN\r\u0007NUMBER(12,0)\r\u0007\r\u0007, DC_CALENDAR\r\u0007NUMBER(12,0)\r\u0007\r\u0007 )   tablespace users;\rCREATE SYNONYM \rСоздает синоним для таблицы, представления, последовательности, хранимой процедуры или функции, пакетной процедуры, моментальной копии или другого синонима. \rПример: Сначала удаляем публичный синоним для таблицы DOCTORS, а потом его заново создаем. \rdrop public synonym DOCTORS;\rcreate public synonym DOCTORS for DOCTORS;\rCREATE INDEX \rСоздает индекс для заданных столбцов таблицы или кластера. \rПример: \rcreate  UNIQUE  index I_DOCTORS  on DOCTORS (\r   DC_NNN\r ) tablespace users;\rCREATE TRIGGER \rСоздает триггер базы данных. \rCREATE SEQUENCE \rСоздает новую последовательность для генерации первичных ключей. \rПример: \rcreate sequence S_DOCTORS;\rПример: Приведем полный текст скрипта для создания триггера для таблицы DOCTORS, который будет следить за автоматическим увеличением значения поля DC_NNN на единицу при добавлении каждой новой записи в таблицу DOCTORS, что потребует от нас использование и такой конструкции - как сиквенс (генератор последовательностей). \r-- Сначала удаляем предыдущие изменения в базе (если конечно они были сделаны)\rdrop sequence S_DOCTORS;\rdrop trigger tr_DC_NNN;\rdrop public synonym DOCTORS;\r-- создаем таблицу\r-- назначаем права доступа\r-- создаем публичный синоним\rCREATE PUBLIC SYNONYM DOCTORS FOR DOCTORS;\r-- создаем сиквенс и устанавливаем его начальное значение в единицу\rcreate sequence S_DOCTORS\rstart with 1;\r-- создаем индексы\rcreate unique index i_dc_nnn on doctors(dc_nnn);\rcreate index i_dc_name on doctors(dc_name);\r-- создаем триггер\rcreate trigger tr_dc_nnn\rbefore insert\ron doctors\rfor each row\rbegin\r  select dc_nnn.nextval into :new.dc_nnn from dual;\rend;",
         "0",
         "[['встроить', 'оператор', 'sql'], ['отметить', 'sql', 'structured', 'query', 'language', 'структурировать', 'язык', 'запрос', 'позволять', 'оперировать', 'данными', 'реляционный', 'база'], ['стандарт', 'sql', 'определить', 'американский', 'национальный', 'институт', 'стандарт', 'iso', 'качество', 'международный', 'стандарт'], ['цель', 'издание', 'являться', 'полный', 'всеобъемлющий', 'освещение', 'синтаксис', 'sql', 'специализированный', 'справочник', 'документация', '1', '10', 'постараться', 'несколько', 'простой', 'конкретный', 'пример', 'показать', 'элегантность', 'мощь', 'sql'], ['пример', 'привести', 'дать', 'применительно', 'er', 'диаграмма', 'доктор', 'пациент', 'привести', 'рис.10'], ['представлять', 'sql', 'программа'], ['оформить', 'вид', 'отдельный', 'файл', 'программный', 'конструкция', 'написать', 'текстовый', 'редактор', 'учёт', 'требование', 'синтаксис', 'язык', 'sql'], ['форма', 'представление', 'sql', 'программа', 'называться', 'скрипт', 'предназначить', 'выполнение', 'сервер', 'помощь', 'специальный', 'терминальный', 'программа', 'sql+', 'строка', 'запуск', 'скрипт', 'sql+', '@<путь>/<имя', 'скрипта>.sql'], ['считаться', 'хороший', 'тон', 'наличие', 'скрипте', 'комментарий'], ['выделение', 'строчный', 'комментарий', 'использоваться', 'следующий', 'набор', 'символ'], ['перейти', 'непосредственно', 'рассмотрение', 'использование', 'основный', 'sql', 'оператор', 'слово', 'организация', 'проектирование', 'бд'], ['процесс', 'создание', 'бд', 'сложный', 'многоэтапный', 'процесс', 'правило', 'принимать', 'участие', 'большой', 'число', 'разработчик', 'важный', 'являться', 'правильный', 'организация', 'внесение', 'изменение', 'бд'], ['цель', 'использоваться', 'технология', 'разделения', 'задач', 'заключаться', 'следующий', 'разработчик', 'выполнять', 'конкретный', 'часть', 'создание', 'модификация', 'бд', 'оформлять', 'производить', 'изменение', 'вид', 'скрипт', 'т.е.', 'отдельный', 'файл', 'архивный', 'версия', 'запуск', 'сервер', 'размещаться', 'отдельный', 'специально', 'выделить', 'носитель', 'диск', 'сервер', 'изменение', 'бд', 'оформляться', 'вид', 'отдельный', 'задача', 'иметь', 'уникальный', 'номер'], ['задача', '000001', 'ver001/', 'физически', 'каталог', 'диск', 'находиться', 'скрипт', 'файл', 'первоначальный', 'создание', 'бд'], ['подход', 'позволять', 'максимально', 'удобный', 'решать', 'задача', 'контроль', 'версия', 'производить', 'миграция', 'создать', 'бд', 'сервер', 'достаточно', 'новый', 'сервер', 'выполнить', 'задача', 'последовательность', 'следование', 'номер', 'задача', 'обеспечивать', 'достаточно', 'высокий', 'уровень', 'безопасность', 'возможность', 'откат', 'предыдущий', 'позиция', 'этап', 'разработка', 'бд'], ['дальнейший', 'выполнение', 'практический', 'пример', 'привести', 'издание', 'советовать', 'придерживаться', 'технология'], ['какой', 'этап', 'допустить', 'ошибка', 'выявить', 'этап', 'выполнение', 'скрипт', 'бд', 'исправлять', 'текст', 'непосредственно', 'скрипт', 'оформьте', 'новый', 'версия', 'выполнять', 'задача', 'разместить', 'исправить', 'скрипт'], ['позволить', 'отслеживать', 'ошибка'], ['последний', 'рекомендация', 'дать', 'заключаться', 'задача', 'входить', 'скрипт', 'целесообразный', 'оформить', 'дополнительный', 'запускать', 'скрипт', 'start.sql', 'поместить', 'запуск', 'остальных', 'скрипт'], ['поверить', 'слово', 'значительно', 'съэкономит', 'время', 'дальнейший'], ['задача', '000001', 'ver001/', 'входить', 'файл', 'db1.sql', 'db2.sql', 'db3.sql', 'файл', 'start.sql', 'представить', 'следующий', 'способ', 'start.sql', 'spool', '000001.log', '@db1.sql', '@db2.sql', '@db3.sql', 'spool', 'off', 'помнить', 'файл', 'кодировка', 'среда', 'собираться', 'запускать', 'sql+', 'koi8', 'win1251', 'dos'], ['операторы', 'создания', 'объектов', 'бд'], ['работать', 'данными', 'бд', 'создать', 'цель', 'использоваться', 'специальный', 'группа', 'оператор', 'предназначить', 'создание', 'объект', 'база', 'оператор', 'группа', 'начинаться', 'ключевой', 'слово', 'create'], ['create', 'database', 'создавать', 'база'], ['задавать', 'определять', 'максимальный', 'число', 'экземпляр', 'файл', 'журнальный', 'файл', 'устанавливать', 'режим', 'архивирование'], ['filespec', 'журнальный', 'файлы)::=', 'скрипт', 'создание', 'бд', 'clinics', 'spool', 'clinic.log', 'connect', 'internal', 'startup', 'nomount', 'pfile=/oracle', 'dbs', 'initclinic.ora', 'создавать', 'база', 'имя', 'clinics', 'create', 'database', 'clinics', 'maxinstances', '1', 'maxlogfiles', '10', 'character', 'set', 'ru8pc866', 'national', 'character', 'set', 'ru8pc866', 'datafile', '/oracle', 'db', 'system01.dbf', 'size', '100', 'm', 'logfile', '/oracle', 'db', 'lo', 'g01.dbf', 'size', '1', 'm', '/oracle', 'db', 'log02.dbf', 'size', '1', 'm', 'disconnect', 'spool', 'off', 'create', 'tablespase', 'создавать', 'база', 'область', 'хранение', 'таблица', 'сегмент', 'индекс', 'определять', 'файл', 'база', 'параметр', 'хранение', 'умолчание', 'режим', 'табличный', 'пространство', 'автономный', 'оперативный'], ['create', 'user', 'создавать', 'пользователь', 'база'], ['синтаксис', 'команда', 'привести', 'упрощенно', 'дополнительный', 'информация', 'обратитесь', 'документация'], ['create', 'schema', 'создавать', 'таблица', 'представление', 'предоставлять', 'привилегия', 'транзакция'], ['create', 'table', 'создавать', 'новый', 'таблица', 'бд', 'определять', 'столбец', 'правило', 'целостность', 'параметр', 'хранение'], ['пример', 'create', 'table', '\\x07doctors', '\\x07', '\\x07dc_nnn', '\\x07number(12,0_\\x07', '\\x07', 'dc_dc_nnn', '\\x07number(12,0_\\x07', '\\x07', 'dc_name', '\\x07varchar2(255', '\\x07', '\\x07', 'dc_cs_nnn', '\\x07number(12,0_\\x07', '\\x07', 'dc_diploma_number', '\\x07number(12,0_\\x07', '\\x07', 'dc_specialty_nnn', '\\x07number(12,0_\\x07', '\\x07', 'dc_shat_nnn', '\\x07number(12,0_\\x07', '\\x07', 'dc_calendar', '\\x07number(12,0_\\x07', '\\x07', 'tablespace', 'users', 'create', 'synonym', 'создавать', 'синоним', 'таблица', 'представление', 'последовательность', 'хранить', 'процедура', 'функция', 'пакетный', 'процедура', 'моментальный', 'копия', 'другого', 'синоним'], ['пример', 'удалять', 'публичный', 'синоним', 'таблица', 'doctors', 'заново', 'создавать'], ['drop', 'public', 'synonym', 'doctors', 'create', 'public', 'synonym', 'doctors', 'for', 'doctors', 'create', 'index', 'создавать', 'индекс', 'задать', 'столбец', 'таблица', 'кластер'], ['пример', 'create', 'unique', 'index', 'i_doctors', 'on', 'doctors', 'dc_nnn', 'tablespace', 'users', 'create', 'trigger', 'создавать', 'триггер', 'база'], ['create', 'sequence', 'создавать', 'новый', 'последовательность', 'генерация', 'первичный', 'ключ'], ['пример', 'create', 'sequence', 's_doctors', 'пример', 'привести', 'полный', 'текст', 'скрипт', 'создание', 'триггер', 'таблица', 'doctors', 'следить', 'автоматический', 'увеличение', 'значение', 'поле', 'dc_nnn', 'единица', 'добавление', 'каждый', 'новый', 'запись', 'таблица', 'doctors', 'потребовать', 'использование', 'конструкция', 'сиквенс', 'генератор', 'последовательность'], ['удалять', 'предыдущий', 'изменение', 'база', 'сделать', 'drop', 'sequence', 's_doctors', 'drop', 'trigger', 'tr_dc_nnn', 'drop', 'public', 'synonym', 'doctors', 'создавать', 'таблица', 'назначать', 'право', 'доступ', 'создавать', 'публичный', 'синоним', 'create', 'public', 'synonym', 'doctors', 'for', 'doctors', 'создавать', 'сиквенс', 'устанавливать', 'начальный', 'значение', 'единица', 'create', 'sequence', 's_doctors', 'start', 'with', '1', 'создавать', 'индекс', 'create', 'unique', 'index', 'i_dc_nnn', 'on', 'doctors(dc_nnn', 'create', 'index', 'i_dc_name', 'on', 'doctors(dc_name', 'создавать', 'триггер', 'create', 'trigger', 'tr_dc_nnn', 'before', 'insert', 'on', 'doctors', 'for', 'each', 'row', 'begin', 'select', 'dc_nnn.nextval', 'into', 'new.dc_nnn', 'from', 'dual', 'end']]"
        ],
        [
         "23",
         "Методологии разработки программного обеспечения 2.doc",
         "Методологии разработки программного обеспечения\rВ данный момент нет необходимости разрабатывать методологию разработки программного обеспечения (ПО) \"с нуля\". Существует широкий выбор готовых методологий на все случаи жизни. И, хотя, практически каждый достаточно опытный руководитель разработки программного обеспечения со временем находит свои, более удобные для решаемых задач, методы, все же за основу берется одна из стандартных, общепризнанных методологий.\u000bКак же выбрать нужную методологию разработки ПО из такого множества вариантов? По каким параметрам можно оценить различные методологии и оценить их эффективность для решаемых задач? Основными метриками, обычно, называют уровень формализма и модель жизненного цикла проекта.\u000bРазличные модели жизненного цикла могут изменяться от итеративной до каскадной разработки и подробно описаны на странице этапы выполнения работ.\u000bПо степени формализма методологии могу отличаться по количеству создаваемых документов, степени их актуальности, аккуратности, полноты заполнения и формальности процедур рецензирования.\r Неконтролируемая разработка -  имеет 2 основных проявления. Когда правил разработка ПО нет вообще, либо когда они не выполняются. Чаще всего используется новичками в разработке либо коллективами, в которых разработка программ не является профильной деятельностью. Обычно основывается на личном опыте главного разработчика либо руководителя разработки. Степень формализма низкая. Документирование разработки может отсутствовать как класс, либо заканчиваться на комментировании кода и рисовании пары картинок с общей структурой проекта. Модель жизненного цикла может быть любой, либо даже смешением нескольких моделей.\u000bГибкие методологии (Agile) - в последние годы получили активное развитие и приобрели большую популярность. Основываются на 12 основных принципах:\u000b1. Главным приоритетом является удовлетворение потребностей заказчика за счет ранней и непрерывной поставки работоспособного программного обеспечения.\u000b2. Приветствуются меняющиеся требования, даже на поздних стадиях разработки. Гибкие процессы используют изменения как средство получить конкурентные преимущества для заказчика.\u000b3. Поставлять работоспособное программное обеспечение часто: от раза в несколько недель, до раза в несколько месяцев, отдавая предпочтение коротким интервалам.\u000b4. Представители заказчика (бизнеса) и разработчики должны работать вместе в течение всего проекта.\u000b5. Проекты строятся вокруг мотивированных личностей. Предоставьте им среду и поддержку, в которой они нуждаются, и доверьте им самим сделать работу.\u000b6. Наиболее эффективный способ передачи информации в команду проекта (а также передавать её внутри команды) - это непосредственное живое общение.\u000b7. Основной мерой прогресса проекта является работоспособное программное обеспечение.\u000b8. Гибкие процессы поощряют разработку с постоянной скоростью. Спонсоры проекта, разработчики и пользователи должны быть способны поддерживать постоянную скорость на неограниченной дистанции.\u000b9. Постоянное внимание техническому совершенству и хорошему дизайну увеличивает степень гибкости.\u000b10. Простота - искусство максимизации работы, которую не надо делать, - является существенным фактором.\u000b11. Наилучшие архитектурные решения, требования и дизайн создаются самоорганизующимися командами.\u000b12. Через регулярные промежутки времени команда должна проводить анализ того, как стать более эффективной и улучшать свой процесс работы.\u000b Таким образом, методология является ориентированной на итеративную разработку и минимальную формализацию процесса.\u000bЧисло методологий, относящихся к этой группе, велико. Самые известные из них eXtreme Programming (XP)  - экстремальное программирование, Crystal Clear и Feature Driven Development (FDD) - функционально-ориентированная разработка.\u000bЭкстремальное программирование - пожалуй, наиболее известная из гибких методологий. Состоит из 12 основных принципов: игра в планирование, переработки кода (refactoring),  короткие релизы, метафоры, простой дизайн, разработка «тестами вперед», коллективное владение кодом, парное программирование, 40-часовая рабочая неделя, постоянное присутствие заказчика и стандарты кода. При использовании XP тщательное планирование разработки ПО заменяется на постоянной присутствие заказчика, готового ответить на любые вопросы разработчиков и постоянную переработку (рефакторинг) кода. Низкая формализация разработки обычно не идет дальше хорошего комментирования кода, что позволяет сократить большое количество времени разработки, а следовательно, снизить общую стоимость разработки. При этом существенное внимание уделяется тестированию. Зачастую для каждого модуля системы сначала пишется тест, который продолжает выполняться на протяжении всей разработки после любого изменения кода. Впрочем, не все принципы являются строго обязательными. Например 40-часовая рабочая неделя и парное программирование носят второстепенный характер.\u000bCrystal Clear - методология, позволяющая менять  степень формализации процесса разработки в зависимости от критичности задач и количества участников разработки. Основные особенности: итеративная инкрементная разработка, автоматическое регрессионное тестирование, пользователи привлекаются к активному участию в проекте, состав документации определяется участниками проекта, как правило, используются средства контроля версий кода. Ориентирована на поддержание естественных привычек разработчиков. Считается, что если в организации не используется какая-то определенная методология, то достаточно квалифицированный коллектив рано или поздно сам естественным образом придёт к этой Crystal Clear.\u000bFeature Driven Development (FDD) - функционально-ориентированная разработка. Разработка состоит из 5 основных этапов: разработка общей модели, составление списка необходимых функций системы, планирование работы над каждой функцией, проектирование функций, конструирование функций. Работа над проектом происходит итеративно, частый выпуск версий, каждая из которых реализует определенный набор функций.\u000bSCRUM - методология, предназначенная для небольших команд (до 10 человек). Весь проект делится на итерации (спринты) продолжительностью 30 дней каждый. Выбирается список функций системы, которые планируется реализовать в течении следующего спринта. Самые важные условия - неизменность выбранных функций во время выполнения одной итерации и строгое соблюдение сроков выпуска очередного релиза, даже если к его выпуску не удастся реализовать весь запланированный функционал. Руководитель разработки проводит ежедневные 20 минутные совещания, которые так и называют - scrum, результатом которых является определение какие функции системы были реализованы за предыдущий день, с какими сложностями столкнулись и что планируется сделать за следующий день. Такие совещания позволяют постоянно отслеживать ход проекта, быстро выявлять возникшие проблемы и оперативно на них реагировать.\u000bРазработка по ГОСТ не является методологией разработки ПО. ГОСТы не описывают сам процесс разработки, а только формулируют предъявляемые к нему требования. В настоящее время используются немного устаревшие, но все еще актуальные ГОСТы 19 и 34 серии, а так же более новый ГОСТ 12207. Следуя ГОСТам разработку следует разделить на несколько строго определенных этапов, по завершении каждого из которых составляется достаточно большая по объему и строго форматизированная документация. Таким образом, разработка программного обеспечения по ГОСТам приводит к каскадному подходу и высокому уровню формализации формализованной разработки. В последнее время такой подход имеет все меньшую популярность и используется в основном для государственных заказчиков.\u000bRational Unified Process (RUP) — методология разработки программного обеспечения, созданная компанией Rational Software. В основе методологии лежат 6 основных принципов:\u000bКомпонентная архитектура, реализуемая и тестируемая на ранних стадиях проекта.\u000bРабота над проектом в сплочённой команде, ключевая роль в которой принадлежит архитекторам.\u000bРанняя идентификация и непрерывное устранение возможных рисков.\u000bКонцентрация на выполнении требований заказчиков к исполняемой программе.\u000bОжидание изменений в требованиях, проектных решениях и реализации в процессе разработки.\u000bПостоянное обеспечение качества на всех этапах разработки проекта.\u000bИспользование методологии RUP направлено на итеративную модель разработки. Полных жизненный цикл программы состоит из 4 фаз:\rInception (начало)\rElaboration (проектирование)\rConstruction (построение)\rTransition (внедрение)\u000bОсобенность методологии состоит в том, что степень формализации может меняться в зависимости от потребностей проекта. Можно по окончании каждого этапа и каждой итерации создавать все требуемые документы и достигнуть максимального уровня формализации, а можно создавать только необходимые для работы документы, вплоть до полного их отсутствия. За счет такого подхода к формализации процессов методология является достаточно гибкой и широко популярной. Применима как в небольших и быстрых проектах, где за счет отсутствия формализации требуется сократить время выполнения проекта и расходы, так и в больших и сложных проектах, где требуется высокий уровень формализма, например, с целью дальнейшей сертификации продукта. Это преимущество дает возможность использовать одну и ту же команду разработчиков для реализации различных по объему и требованиям проектов без необходимости освоения новой методологии.\r\rТехнологии разработки программного обеспечения\rСуществует множество платформ для разработки Web-приложений (.Net Framework, Java, PHP, Python и многие другие). Большая часть выполненных нами проектов работают со следующей связкой:\u000bWeb-сервер IIS 7.0, установленный на  Windows Server 2008 RC2 – новейшая разработка компании Microsoft, сочетающая в себе простоту настройки, легкость управления, высокую производительность и безопасность.\u000bСреда разработки MS Visual Studio 2008, Framework 3.5 – мощное и простое в использовании средство для быстрой и эффективной разработки приложений с использованием всех передовых технологий. Платформа позволяет, при необходимости, легко перенести часть функционала или превратить всю систему в обычное приложение Windows.\u000bЯзык программирования C# + JavaScript для клиентских скриптов. C# - популярный и мощный язык программирования, позволяющий разработать сложные приложения. JavaScript – скриптовый язык, выполняемый браузером пользователя. Существенно повышает удобство использования системы, позволяет производить оперативные подсчеты и использовать красивые эффекты.\u000bСервер баз данных MSSQL Server 2005 (2008) – одна из самых популярных систем управления базами данных. Имеет высокую производительность, позволяет работать с большими объемами данных, есть бесплатный вариант для небольших приложений, множество дополнительных функций, удобная среда разработки.\u000bБольшинство разрабатынных приложений это веб-приложения, т.е. приложения, к которым можно получить доступ из любой точки мира посредством сети Интернет.  Приложения представляют собой сайт, войдя в защищенную область которого пользователь получает весь необходимый ему функционал.\u000bПочему же именно эта технологическая платформа была выбрана нами приоритетной в разработке программного обеспечения? Давай оценим ее достоинства и недостатки.\rДостоинства:\u000b•    Получить доступ к системе может любой человек из любой точки мира с практически любого устройства, подключенного к интернет. Это может быть компьютер, ноутбук или даже мобильный телефон. Единственное требование – подключение к Интернет и возможность запустить браузер для просмотра сайтов.\u000b•    Доступность системы 24 часа в сутки 7 дней в неделю 365 дней в году.\u000b•    Любые данные или изменения, внесенные пользователем в систему, тут же становятся доступны всем остальным пользователям системы.\u000b•    Существенно снижаются требования, предъявляемые к аппаратному обеспечению пользователей. Это может быть старенький, маломощный компьютер покажет высокую производительность, ведь все вычисления происходят на сервере, а клиенту передаются только обработанные данные.\u000b•    Повышенная надежность и сохранность данных. Все данные хранятся на сервере, следовательно, легко создавать резервные копии. Данные никуда не пропадут и не потеряются. \u000b•    Безопасность доступа к данным не ниже, чем при работе с обычными, десктопными, приложениями. При необходимости, безопасность может быть легко повышена за счет создания защищенного соединения и дополнительной идентификации пользователе с помощью аппаратных или программных ключей.\u000b•    Защита данных. Все данные находятся на удаленном сервере, защищенном от взломов, вирусов, троянов и прочего вредоносного ПО.\u000b•    Дешевизна обслуживания системы обусловлена тем, что не требуется никакой дополнительной защиты, не нужно создавать дополнительные серверные или аппаратные комнаты и мощными и дорогими серверами. Достаточно лишь найти подходящего провайдера, который позаботиться об этом сам, либо разместить сайт на одной из наших площадок. Подробнее он услуге читайте на станице размещение и поддержка сайтов.\u000b•    Легкая масштабируемость. Если вам нужно предоставить доступ к системе новому пользователю или группе то, все что вам нужно – просто предоставить им учетные данные для входа в систему.\u000b•    Если нагрузка на сервер слишком возросла  - Вам нужно просто поставить более мощный сервер или, если сервер находится у хостинг-провайдера, договориться о другом тарифном плане.\u000b•    Нет необходимости покупать дорогое программное обеспечения для серверов и рабочих станций. Его можно взять в аренду у хостера вместе с сервером.\r\u000bНедостатки:\u000b•    Требуется доступ в Интернет. Некоторые приложения могут требовать хороший канал связи.\u000b•    Иногда невозможно реализовать некоторые функции, доступные десктопному приложению.\rОписанная платформа является основной, но не единственной. Каждая зада уникальна и для каждого случая может быть подобрано индивидуальное решение. При необходимости проект может быть разработан, например, с использование только Open Source решений, для мобильной платформы или для других операционных систем (Linux, MacOS).\r\rЭтапы разработки программного обеспечения\rОбычно, говоря о разработке программного обеспечения (ПО), выделяют 6 основных этапов:\u000b1.    Планирование\u000b2.    Составление требований\u000b3.    Проектирование\u000b4.    Разработка\u000b5.    Тестирование\u000b6.    Сопровождение\u000bПоследовательность и длительность этапов зависит от выбранной методологии разработки ПО и может существенно отличаться.\rПланирование программного проекта - в зависимости от потребностей и выбранной методологии разработки может либо вообще отсутствовать, либо занимать достаточно большую часть разработки. На этом этапе определяются основные задачи, которые должны быть решены в рамках разработки ПО, производится оценка необходимого функционала, техническое обследование объекта автоматизации, оценка финансовых, временных, человеческих, технических и других ресурсов, необходимых для осуществления разработки. Так же определятся, какие будут использованы методы разработки и тестирования. Могут быть построены временные графики, составлен бюджет, план работ и прочие документы.\u000bСоставление требований заказчика - на этом этапе происходит сбор, анализ и формализация требований к разрабатываемому ПО со стороны заказчика. Этап служит для выработки максимального взаимопонимания между заказчиком и исполнителем. Обсуждаются форма предоставления информации, необходимый функционал, проблемы и ограничения, которые могут возникнуть при разработке. Составленные требования могут быть протестированы.\u000bПроектирование программного продукта - на этом этапе происходит разработка и детализация модели разрабатываемого программного продукта. На основании построенной модели определяется структура и архитектура ПО, организация и взаимодействие модулей и интерфейсов, структура базы данных, строится диаграмма классов и т.д.. Процесс проектирования проводится с учетом методологии, выбранной на этапе планирования. Может быть составлен прототип разматываемого ПО.\u000bРазработка программного обеспечения - единственный этап, которые не может быть пропущен, вне зависимости от выбранной методологии. На этом этапе происходит преобразования результатов проектирования системы в программный код на используемом языке программирования в соответствии с используемыми стандартами кодирования. На этом же этапе разработчики предоставляют информацию инженерам по тестированию для разработки комплекса тестов, разрабатывают техническую документацию и производят планирование интеграции ПО.\u000bТестирование программного обеспечения - этап, не имеющий четко определенного начала. Может начаться еще на этапе составления требований. Чем раньше начнется тестирование тем выше вероятность, что программное обеспечение будет в точности соответствовать требованиям и потребностям заказчика, тем раньше будут выявлены критические ошибки проектирования и разработки и тем дешевле обойдется их исправление. Тестирование может проводиться в ручном или автоматическом режиме. По результатам тестов составляется отчет. Методы и виды тестирования подробно описаны на странице тестирование программного обеспечения.\u000bСопровождение программного обеспечения - на этом этапе основное внимание уделяется внесению изменений в программное обеспечение. Изменения могут быть связаны с доработками по желанию заказчика, устранением ошибок, изменением функционала или среды окружения. Так же осуществляется консультация, обучение и поддержка пользователей.\u000bПеречисленные этапы, в зависимости от выбранной методологии и модели жизненного цикла, могут следовать друг за другом (в каскадной модели), проходить параллельно либо периодически (в итерационной модели). Под моделью жизненного цикла разработки программного обеспечения подразумевается последовательность процессов, задач и действий, выполняемые при разработке программного обеспечения. Выбор модели зависит от требований, предъявляемых к разработке, выбранной методологии, сложности проекта и прочих условий.\u000b \u000bНаибольшей популярность пользуются:\u000b1.    Каскадная модель (водопад)\u000b2.    V-образная модель\u000b3.    Прототипирование\u000b4.    Быстрая разработка (RAD-модель)\u000b5.    Многопроходная модель\u000b6.    Спиральная модель\rКаскадная модель (водопад) - все этапы разработки следуют друг за другом в строгой последовательности. Переход к следующему этапу происходит только после окончания предыдущего. Возвращение к пройденным этапам и внесение изменений не предусмотрено. По завершении каждого этапа создается полный комплект документации. Качество разработанного программного обеспечения оценивается по точности соответствования требованиям технического задания. Каскадный подход обычно применяют, если в начале разработки удается достаточно точно сформулировать все требования. В током случае разработка идет выполняется в логичной последовательности, что позволяет достаточно точно оценить сроки выполнения работ и их стоимость. К недостаткам модели относится отсутствие гибкости, сложность и дороговизна внесения изменений в разрабатываемый проект.\u000bV-образная модель - является одной из разновидностей каскадной модели. Особое внимание уделяется тестированию продукта. Выполнение всех этапов разработки происходит, как и в каскадной модели, последовательно. Отличие состоит в том, что каждому из этапов проектирования и разработки соответствует определенный этап тестирования. Так, после кодирования выполняется Модульное и Интеграционное тестирование, проверяющее качество проектирования и реализации системы, затем выполняется Системное тестирование, проверяющее соответствие и правильность требований к программному продукту. Затем начинает этап эксплуатации и сопровождения, на котором проверяется работоспособность проекта в целом и его соответствие поставленным задачам. По сравнению с Каскадной моделью имеет преимущество в высоком качестве тестирования и контроля разработки. Модель, чаще всего, использует если предъявляются особо высокие требования к надежности программного обеспечения.\u000bМодель прототипирования - отличается от предыдущих моделей тем, что на ранних этапах проектирования и разработки программного продукта создается его прототип. Потенциальные пользователи начинают использовать созданный прототип, выявляют его сильные и слабые стороны. За счет этого обеспечивается обратная связь между пользователями и разработчиками, позволяющая вносить изменения в проект на ранних этапах его разработки и проектирования, что существенно снижает стоимость вносимых изменений и максимально приближает готовый продукт к потребностям заказчика. Данная модель, обычно, применяется в случаях, когда требования к разрабатываемому программному обеспечению заранее не известны, неполны или требуют уточнения. Так же эта модель хорошо использовать, если производится новая разработка, не имеющая аналогов.\u000bМодель быстрой разработки (RAD-модель) - как понятно из названия, модель направленна на быструю разработку приложений. Особенность модели состоит в постоянном привлечении к работе заказчика, что существенно снижает риски внесения изменений в проект на поздних стадиях, укоряет выработку требований и апробацию прототипов разрабатываемого программного обеспечения. Разработка ориентирована на автоматизацию программирование, повторное использование кода и использование уже готовых сторонних модулей.\u000bМногопроходная модель (Итерационная) -  отличается тем, что этапы проектирования, кодирования и тестирования программного продукта за все время разработки проводятся насколько раз (проходят насколько итераций).\rСпиральная модель - очень похожа на многопроходную модель. Особенность модели состоит в том, что ПО создается не сразу целиком, а по частям. Создается прототип, который можно начинать использовать. При этом производится постепенное наращивание функционала, улучшение и переработка интерфейса, доработки и исправление ошибок. При выборе спиральной модели не требуется раннее формулирование всех требований к программному обеспечению, поскольку они уточняются в процессе разработки. Модель заключает все достоинства каскадной и интеграционной модели, позволяет заказчику увидеть программный продукт на более ранних этапах и вовремя внести корректировки в разработку. Особенность модели состоит в том, что она может не иметь четко ограниченных по времени этапов и продолжать до бесконечности, поскольку любая реакция заказчика может вызвать новый цикл разработки. Является одной из самых гибких моделей. Подходит для больших и очень сложных проектов, а так же для проектов, требования к которым заранее не известны.\r\rТестирование (системы качества)\rВопрос качества разрабатываемого программного обеспечения становиться все более актуальным, особенно если речь идет о продуктах, обеспечивающих выполнение основного бизнес-процесса компании, о фронт-офисных продуктах, которые используют клиенты, или о продуктах к надежности которых предъявляются повышенные требования.\u000bОсновная задача тестирования – проверка,с оответствует ли работа программы предъявляемым требованиям. По другому, выполняет ли программа то, что от нее ожидает заказчик. \u000bТестирование может начать еще на этапе согласования с заказчиком требований к програмному продукту. Чем раньше начнется тестировани и чем раньши будут выявлены ошибки тем дешевле обойдется их исправлени.\u000bВ зависимых от предъявляемых тербований к програмному обеспечению тестироватся могут сами требования, на полноту и непротиворечивость, крограмный код, на наличие ошибок, функционал системы, на соответствие требованиям и документация на полноту, соответствие требованиям и работе системы.\u000bМожно выделить  пять уровней тестирования: модульное, интеграционное, системное, выходное и приемочное.\u000bМодульное тестирование – этот этап тестирования является частью разработки. Проводится непосредственно разработчиками  и представляет собой проверку отдальных частей системы (модулей), отдлельных процедур или функций системы. На этом этапе производится проверка правильности работы функционала, организации данных каждого модуля, производится синтаксическая проверка программного кода, соответствие стандартам кодирования и производится технических обзор кода.\u000bИнтеграционное тестирование – в ходе этапа производится проверка совместной работы отдельных модулей, связь между модулями, корректность обмена данными, проверка функциональности, проверка промежуточных результатов работы модулей и проверка интерграции. Осущаствляется тестировщками. По результатам тестирования составлется отчет.\u000bСистемное тестирование – производится проверка программного продукта вцелом, проверка фунциональности, соответствования трбованиям, тестирование работы системы в граничных условиях, проверка документации. Если удается – производится целевое тестирвоание – проверка работы системы на целевой платформе. Выполняется тестироващиком после завершения интерграционного тестирования. По результатам тестов составляется отчет.\u000bВыходное тестирование – производится на завершающем этапе разработки. Проверяется готовность системы к запуску в эксплуатацию. Производится конечное тестирование системы, проверка  подсистмы инсталяции (если такая система предусмотрена функцоналом), проверки документации пользователем. Может осуществляться проверка совместимости с предыдущими версиями, сторонним ПО и прочее. По редультатам тестирования составляется отчет, поторый предоставляется заказчику всесте с готовым программным продуктом.\u000bПо желанию заказчика может производиться приемочное тестирование. Обычно проводится, если програмное обеспечения будет поддерживать и обслуживать не огранизация-разработчик, а сторонняя обслуживающая организация.\u000bОсновными задачами тестирования обычно считают выявление программных ошибок и проверка соответствия работы системы техническим требованиям. Програмные ошибки деляться на функциональные недостатки, недостатки интерфейса, недостатки производительности, некорректная обработка ошибок, некорректная обработка входных данных, в частности, пограничных данных, ошибки вычисланий, ошибки управления потоком, ошибки «гонок», перегрузки, некорректная работа а аппаратным обеспечением.\u000bФункциональные недостатки – ситуации, когда программа на выполняет одну или часть своих функций либо выполняет их не верно и не полностью. Функционал программы должен быть подробно описан в спецификации. Именно  на основании расхождения спецификации и фуктической работы системы принимается решение о функциональных недостатках программы.\u000bНедостатки интерфейса могут быть выявлены в процессе работы с программным продуктом. Это можно сделать либо в результате эксплуатации готового программного обеспечения либо по средством создания прототипа, на котором производится проверка, уточнение и согласование требований. Создание прототипа является более предпочительнам, т.к. позволяет внести изменения в интерфейс и функционал программы до полного его завершения и ввода в эксплуатацию. Это может существенно удешевляет разработку и позволяет сделать программу более удобной для пользователей и более точно соответствующею выполняемым задачам.\u000bНедостаточная производительность – может являться существенным недостатком, особенно если в спецификации на разработку указаны строгие требования к производительности.  Даже если четки требований нет, слишком медленная работа программы будет создавать у пользователей негативное впечатление и требует оптимизации.\u000bНекорректная обработка ошибок – программа не должна аварийно завершать работу или продолжать работать не правильно при ошибочных действиях пользователя или не корректных входных данных. Все возникающие ошибки должны быть обратотаны, а пользователь должен получить корректное и понятно сообщение.\u000bНекоррекная обработка граничных условий – часто бывает так, что программа хорошо работает на большом диапазоне входных данных. Однако, можеть оказать, что программа не верно обрабатывает какой-то специфичный набор входных данных. Такие ситуации должны быть рассмотрены и описаны аналитиком на этапе проектирования системы и проверены тестеровщиком при ее тестировании.\u000bОшибки вычисления – обычно носят математический характер. Могут быть связаны с неправильным выбором алгоритма расчета, не правильной формулой, недостаточной точностью вычислений, ощибкой округления и другими факторами.\u000bОшибки управления потоком и ошибки гонок - чаще всего связаны с не правильным проектирование системы. Типичны для многопользовательский распределенных систем. Возникают,если порядок выполнений определенных действий в системе не соответствует проэктируемому и ожидаемому результату. Являются очень сложными для тестирования и воспроизведения. \u000bПерегрузки – могут быть связаны как с нехваткой системы резурсов для работы программы, например памяти, мощности процессора, мест на диске, так и со слишком большой нагрузкой на программу – большое число одновременно работающих пользователей, слишком большой объем обрабатываемых данных и т.д. Работы программы в таких ситуация должна быть продуманна заранее и описани в требованиях к программному обеспечению.\u000bНекорректная работа с  аппаратным обеспечением – могут возникать, если программа пытается использовать некорректно работающее устройство, либо устройство, на работу с которым программа не расчитана. Такие ситуации должны корректно обрабатываться и не приводить к сбоям или зависания программы. Ошибка, наиболее характерна для компьютерных игр.\u000bПомимо тестирования самого програмного продукта производится тестирование документации. Документация тестируется на соответствие тербования, полноту, понятность для пользователя и точность соответствия разрабатываемому програмному обеспечению. Часто бывает так, что в процессе разработки было принято решение изменить, добавить или удалить часть функционала или, например, был изменен интерфейс. По завершении проекта необходимо убедиться что окончательная версия документации точно соответствует окончательной версии програмного обеспечения. В противном случае, внести соответствующие изменения.\r\rДокументирование разработки ПО\r Согласно государственным и международным стандартам, при разработке программного обеспечения могут быть составлены следующие документы:\r\u000b•    Техническое задание\u000b•    Эскизный проект\u000b•    Технический проект\u000b•    Рабочий проект\u000b•    Программная документация\u000b   -    Спецификация\u000b   -    Ведомость держателей подлинников\u000b   -    Текст программы\u000b   -    Описание программы\u000b   -    Программа и методика испытаний\u000b   -    Пояснительная записка\r•    Эксплуатационные документы\u000b   -    Ведомость эксплуатационных документов\u000b   -    Формуляр\u000b   -    Описание применения\u000b   -    Руководство системного программиста\u000b   -    Руководство программиста\u000b   -    Руководство оператора (пользователя)\u000b   -    Описание языка\u000b   -    Руководство по обслуживанию (руководство администратора)\rСодержание этих документов строго регламентировано  ГОСТ 19 (Единая система программной документации (ЕСПД)), с которыми Вы можете ознакомиться на странице нормативные документы. \u000bНе в каждом проекте требуется создавать весь перечень документов. Мы не тратим Ваши деньги на создание тонн макулатуры, которая в результате Вам не понадобиться.  Для большинства проектов бывает достаточно 2-3х документов. Обычно это техническое задание и документация пользователя и администратора системы. Однако, по требованию заказчика, для любого из проектов может быть предоставлен полный перечень документов, соответствующий государственным или международным стандартам или стандартам, разработанным заказчиком.\u000bДокументация может быть разработана как для всего программного комплекса, так и для отдельных его компонентов.",
         "0",
         "[['методология', 'разработка', 'программный_обеспечение', 'момент', 'разрабатывать', 'методология', 'разработка', 'программный_обеспечение', 'нуль'], ['существовать', 'широкий', 'выбор', 'готовый', 'методология', 'случай', 'жизнь'], ['практически', 'достаточно', 'опытный', 'руководитель', 'разработка', 'программный_обеспечение', 'время', 'находить', 'удобный', 'решать', 'задача', 'метод', 'основа', 'браться', 'стандартный', 'общепризнанный', 'методология'], ['выбрать', 'нужный', 'методология', 'разработка', 'множество', 'вариант'], ['параметр', 'оценить', 'различный', 'методология', 'оценить', 'эффективность', 'решать', 'задача'], ['основный', 'метриками', 'называть', 'уровень', 'формализм', 'модель', 'жизненный_цикл', 'проект'], ['различный', 'модель', 'жизненный_цикл', 'изменяться', 'итеративный', 'каскадный', 'разработка', 'подробно', 'описать', 'страница', 'этапы', 'выполнение', 'работа'], ['степень', 'формализм', 'методология', 'отличаться', 'количество', 'создавать', 'документ', 'степень', 'актуальность', 'аккуратность', 'полнота', 'заполнение', 'формальность', 'процедура', 'рецензирование'], ['неконтролируемый', 'разработка', '2', 'основный', 'проявление'], ['правило', 'разработка', 'выполняться'], ['использоваться', 'новичок', 'разработка', 'коллектив', 'разработка', 'программа', 'являться', 'профильный', 'деятельность'], ['основываться', 'личный', 'опыт', 'главный', 'разработчик', 'руководитель', 'разработка'], ['степень', 'формализм', 'низкий'], ['документирование', 'разработка', 'отсутствовать', 'класс', 'заканчиваться', 'комментирование', 'код', 'рисование', 'пара', 'картинка', 'общий', 'структура', 'проект'], ['модель', 'жизненный_цикл', 'смешение', 'несколько', 'модель'], ['гибкий', 'методология', 'agile', 'последний', 'год', 'получить', 'активный', 'развитие', 'приобрести', 'больший', 'популярность'], ['основываются', '12', 'основный', 'принцип', '1'], ['главный', 'приоритет', 'являться', 'удовлетворение', 'потребность', 'заказчик', 'счёт', 'ранний', 'непрерывный', 'поставка', 'работоспособный', 'программный_обеспечение', '2'], ['приветствоваться', 'меняться', 'требование', 'поздний', 'стадия', 'разработка'], ['гибкий', 'процесс', 'использовать', 'изменение', 'средство', 'получить', 'конкурентный', 'преимущество', 'заказчик'], ['3'], ['поставлять', 'работоспособный', 'программный_обеспечение', 'раз', 'неделя', 'раз', 'месяц', 'отдавать', 'предпочтение', 'короткий', 'интервал'], ['4'], ['представитель', 'заказчик', 'бизнес', 'разработчик', 'работать', 'вместе', 'течение', 'проект', '5'], ['проект', 'строиться', 'мотивированных', 'личность'], ['предоставить', 'среда', 'поддержка', 'нуждаться', 'доверьте', 'сделать', 'работа'], ['6'], ['эффективный', 'способ', 'передача', 'информация', 'команда', 'проект', 'передавать', 'внутри', 'команда', 'непосредственный', 'живой', 'общение'], ['7'], ['основный', 'мера', 'прогресс', 'проект', 'являться', 'работоспособный', 'программный_обеспечение', '8'], ['гибкий', 'процесс', 'поощрять', 'разработка', 'постоянный', 'скорость'], ['спонсор', 'проект', 'разработчик', 'пользователь', 'способный', 'поддерживать', 'постоянный', 'скорость', 'неограниченный', 'дистанция'], ['9'], ['постоянный', 'внимание', 'технический', 'совершенство', 'хороший', 'дизайн', 'увеличивать', 'степень', 'гибкость'], ['10'], ['простота', 'искусство', 'максимизация', 'работа', 'делать', 'являться', 'существенный', 'фактор'], ['11'], ['наилучшие', 'архитектурный', 'решение', 'требование', 'дизайн', 'создаваться', 'самоорганизоваться', 'команда', '12'], ['регулярный', 'промежуток', 'время', 'команда', 'проводить', 'анализ', 'эффективный', 'улучшать', 'процесс', 'работа'], ['образ', 'методология', 'являться', 'ориентировать', 'итеративный', 'разработка', 'минимальный', 'формализация', 'процесс'], ['число', 'методология', 'относиться', 'группа', 'большой'], ['самые', 'известный', 'extreme', 'programming', 'xp', 'экстремальный', 'программирование', 'crystal', 'clear', 'feature', 'driven', 'development', 'fdd', 'функциональный', 'ориентированный', 'разработка'], ['экстремальный', 'программирование', 'известный', 'гибкий', 'методология'], ['состоять', '12', 'основный', 'принцип', 'игра', 'планирование', 'переработка', 'код', 'refactoring', 'короткий', 'релиз', 'метафоры', 'простой', 'дизайн', 'разработка', 'тест', 'вперёд', 'коллективный', 'владение', 'код', 'парный', 'программирование', '40-часовая', 'рабочий', 'неделя', 'постоянный', 'присутствие', 'заказчик', 'стандарт', 'код'], ['использование', 'xp', 'тщательный', 'планирование', 'разработка', 'заменяться', 'постоянный', 'присутствие', 'заказчик', 'готовый', 'ответить', 'любой', 'вопрос', 'разработчик', 'постоянный', 'переработка', 'рефакторинг', 'код'], ['низкий', 'формализация', 'разработка', 'идти', 'хороший', 'комментирование', 'код', 'позволять', 'сократить', 'большой', 'количество', 'время', 'разработка', 'следовательно', 'снизить', 'стоимость', 'разработка'], ['существенный', 'внимание', 'уделяться', 'тестирование'], ['зачастую', 'каждый', 'модуль', 'система', 'писаться', 'тест', 'продолжать', 'выполняться', 'протяжение', 'разработка', 'изменение', 'код'], ['принцип', 'являться', 'строго', 'обязательный'], ['40-часовая', 'рабочий', 'неделя', 'парный', 'программирование', 'носить', 'второстепенный', 'характер'], ['crystal', 'clear', 'методология', 'позволять', 'менять', 'степень', 'формализация', 'процесс', 'разработка', 'зависимость', 'критичность', 'задача', 'количество', 'участник', 'разработка'], ['основной', 'особенность', 'итеративный', 'инкрементный', 'разработка', 'автоматический', 'регрессионный', 'тестирование', 'пользователь', 'привлекаться', 'активный', 'участие', 'проект', 'состав', 'документация', 'определяться', 'участник', 'проект', 'правило', 'использоваться', 'средство', 'контроль', 'версия', 'код'], ['ориентировать', 'поддержание', 'естественный', 'привычка', 'разработчик'], ['считаться', 'организация', 'использоваться', 'определённый', 'методология', 'достаточно', 'квалифицированный', 'коллектив', 'поздно', 'естественный', 'образ', 'прийти', 'crystal', 'clear'], ['feature', 'driven', 'development', 'fdd', 'функциональный', 'ориентированный', 'разработка'], ['разработка', 'состоять', '5', 'основный', 'этап', 'разработка', 'общий', 'модель', 'составление', 'список', 'необходимый', 'функция', 'система', 'планирование', 'работа', 'каждый', 'функция', 'проектирование', 'функция', 'конструирование', 'функция'], ['работа', 'проект', 'происходить', 'итеративный', 'частый', 'выпуск', 'версия', 'реализовать', 'определённый', 'набор', 'функция'], ['scrum', 'методология', 'предназначить', 'небольшой', 'команда', '10', 'человек'], ['проект', 'делиться', 'итерация', 'спринт', 'продолжительность', '30', 'день'], ['выбираться', 'список', 'функция', 'система', 'планироваться', 'реализовать', 'течение', 'следующий', 'спринт'], ['самые', 'важный', 'условие', 'неизменность', 'выбрать', 'функция', 'время', 'выполнение', 'итерация', 'строгий', 'соблюдение', 'срок', 'выпуск', 'очередной', 'релиз', 'выпуск', 'удаться', 'реализовать', 'запланировать', 'функционал'], ['руководитель', 'разработка', 'проводить', 'ежедневный', '20', 'минутный', 'совещание', 'называть', 'scrum', 'результат', 'являться', 'определение', 'функция', 'система', 'реализовать', 'предыдущий', 'день', 'сложность', 'столкнуться', 'планироваться', 'сделать', 'следующий', 'день'], ['совещание', 'позволять', 'постоянно', 'отслеживать', 'ход', 'проект', 'быстро', 'выявлять', 'возникнуть', 'проблема', 'оперативно', 'реагировать'], ['разработка', 'гост', 'являться', 'методология', 'разработка'], ['госты', 'описывать', 'процесс', 'разработка', 'формулировать', 'предъявлять', 'требование'], ['время', 'использоваться', 'устареть', 'актуальный', 'гост', '19', '34', 'серия', 'новый', 'гост', '12207'], ['следовать', 'гостам', 'разработка', 'разделить', 'строго', 'определённый', 'этап', 'завершение', 'каждый', 'составляться', 'достаточно', 'больший', 'объём', 'строго', 'форматизированная', 'документация'], ['образ', 'разработка', 'программный_обеспечение', 'гостам', 'приводить', 'каскадный', 'подход', 'высокий', 'уровень', 'формализация', 'формализованный', 'разработка'], ['последний', 'время', 'подход', 'малый', 'популярность', 'использоваться', 'основный', 'государственный', 'заказчик'], ['rational', 'unified', 'process', 'rup', 'методология', 'разработка', 'программный_обеспечение', 'создать', 'компания', 'rational', 'software'], ['основа', 'методология', 'лежать', '6', 'основный', 'принцип', 'компонентный', 'архитектура', 'реализовать', 'тестировать', 'ранний', 'стадия', 'проект'], ['работа', 'проект', 'сплочённый', 'команда', 'ключевой', 'роль', 'принадлежать', 'архитектор'], ['ранний', 'идентификация', 'непрерывный', 'устранение', 'возможный', 'риск'], ['концентрация', 'выполнение', 'требование', 'заказчик', 'исполнять', 'программа'], ['ожидание', 'изменение', 'требование', 'проектный', 'решение', 'реализация', 'процесс', 'разработка'], ['постоянный', 'обеспечение', 'качество', 'этап', 'разработка', 'проект'], ['использование', 'методология', 'rup', 'направить', 'итеративный', 'модель', 'разработка'], ['полный', 'жизненный_цикл', 'программа', 'состоять', '4', 'фаза', 'inception', 'начало', 'elaboration', 'проектирование', 'construction', 'построение', 'transition', 'внедрение', 'особенность', 'методология', 'состоять', 'степень', 'формализация', 'меняться', 'зависимость', 'потребность', 'проект'], ['окончание', 'каждый', 'этап', 'каждый', 'итерация', 'создавать', 'требуемые', 'документ', 'достигнуть', 'максимальный', 'уровень', 'формализация', 'создавать', 'работа', 'документ', 'полный', 'отсутствие'], ['счёт', 'подход', 'формализация', 'процесс', 'методология', 'являться', 'достаточно', 'гибкий', 'широко', 'популярный'], ['применимый', 'небольшой', 'быстрый', 'проект', 'счёт', 'отсутствие', 'формализация', 'требоваться', 'сократить', 'время', 'выполнение', 'проект', 'расход', 'больший', 'сложный', 'проект', 'требоваться', 'высокий', 'уровень', 'формализм', 'цель', 'дальнейший', 'сертификация', 'продукт'], ['преимущество', 'давать', 'возможность', 'использовать', 'команда', 'разработчик', 'реализация', 'различный', 'объём', 'требование', 'проект', 'освоение', 'новый', 'методология'], ['технология', 'разработка', 'программный_обеспечение', 'существовать', 'множество', 'платформа', 'разработка', 'web', 'приложение', '.net', 'framework', 'java', 'php', 'python'], ['больший', 'часть', 'выполнить', 'проект', 'работать', 'следующий', 'связка', 'web', 'сервер', 'iis', '7.0', 'установить', 'windows', 'server', '2008', 'rc2', 'новый', 'разработка', 'компания', 'microsoft', 'сочетать', 'простота', 'настройка', 'лёгкость', 'управление', 'высокий', 'производительность', 'безопасность'], ['среда', 'разработка', 'ms', 'visual', 'studio', '2008', 'framework', '3.5', 'мощный', 'простой', 'использование', 'средство', 'быстрый', 'эффективный', 'разработка', 'приложение', 'использование', 'передовой', 'технология'], ['платформа', 'позволять', 'легко', 'перенести', 'часть', 'функционал', 'превратить', 'система', 'обычный', 'приложение', 'windows'], ['язык', 'программирование', 'c', '+', 'javascript', 'клиентский', 'скрипт'], ['c', 'популярный', 'мощный', 'язык', 'программирование', 'позволять', 'разработать', 'сложный', 'приложение'], ['javascript', 'скриптовый', 'язык', 'выполнять', 'браузер', 'пользователь'], ['существенно', 'повышать', 'удобство', 'использование', 'система', 'позволять', 'производить', 'оперативный', 'подсчёт', 'использовать', 'красивый', 'эффект'], ['сервер', 'база', 'mssql', 'server', '2005', '2008', 'популярный', 'система', 'управление', 'база'], ['высокий', 'производительность', 'позволять', 'работать', 'больший', 'объём', 'бесплатный', 'вариант', 'небольшой', 'приложение', 'множество', 'дополнительный', 'функция', 'удобный', 'среда', 'разработка'], ['большинство', 'разрабатынных', 'приложение', 'веб', 'приложения', 'т.е.', 'приложение', 'получить', 'доступ', 'точка', 'мир', 'сеть', 'интернет'], ['приложение', 'представлять', 'сайт', 'войти', 'защитить', 'область', 'пользователь', 'получать', 'необходимый', 'функционал'], ['технологический', 'платформа', 'выбрать', 'приоритетный', 'разработка', 'программный_обеспечение'], ['давать', 'оценить', 'достоинство', 'недостаток'], ['достоинства', 'получить', 'доступ', 'система', 'человек', 'точка', 'мир', 'практически', 'устройство', 'подключить', 'интернет'], ['компьютер', 'ноутбук', 'мобильный', 'телефон'], ['единственный', 'требование', 'подключение', 'интернет', 'возможность', 'запустить', 'браузер', 'просмотр', 'сайт'], ['доступность', 'система', '24', 'час', 'сутки', '7', 'день', 'неделя', '365', 'день', 'год'], ['любой', 'изменение', 'внести', 'пользователь', 'система', 'становиться', 'доступный', 'остальным', 'пользователь', 'система'], ['существенно', 'снижаться', 'требование', 'предъявлять', 'аппаратный', 'обеспечение', 'пользователь'], ['старенький', 'маломощный', 'компьютер', 'показать', 'высокий', 'производительность', 'вычисление', 'происходить', 'сервер', 'клиент', 'передаваться', 'обработать'], ['повысить', 'надёжность', 'сохранность'], ['храниться', 'сервер', 'следовательно', 'легко', 'создавать', 'резервный', 'копия'], ['пропасть', 'потеряться'], ['безопасность', 'доступ', 'данным', 'работа', 'обычный', 'десктопными', 'приложение'], ['безопасность', 'легко', 'повысить', 'счёт', 'создание', 'защитить', 'соединение', 'дополнительный', 'идентификация', 'пользователь', 'помощь', 'аппаратный', 'программный', 'ключ'], ['защита'], ['находиться', 'удалённый', 'сервер', 'защитить', 'взлом', 'вирус', 'троян', 'вредоносный'], ['дешевизна', 'обслуживание', 'система', 'обусловить', 'требоваться', 'дополнительный', 'защита', 'создавать', 'дополнительный', 'серверный', 'аппаратный', 'комната', 'мощный', 'дорогой', 'сервер'], ['достаточный', 'найти', 'подходить', 'провайдер', 'позаботиться', 'разместить', 'сайт', 'площадка'], ['подробный', 'услуга', 'читать', 'станица', 'размещение', 'поддержка', 'сайт'], ['лёгкий', 'масштабируемость'], ['предоставить', 'доступ', 'система', 'новый', 'пользователь', 'группа', 'предоставить', 'учётный', 'вход', 'система'], ['нагрузка', 'сервер', 'возрасти', 'поставить', 'мощный', 'сервер', 'сервер', 'находиться', 'хостинг', 'провайдера', 'договориться', 'другом', 'тарифный', 'план'], ['покупать', 'дорогой', 'программный', 'обеспечения', 'сервер', 'рабочий', 'станция'], ['взять', 'аренда', 'хостер', 'вместе', 'сервер'], ['недостаток', 'требоваться', 'доступ', 'интернет'], ['приложение', 'требовать', 'хороший', 'канал', 'связь'], ['невозможный', 'реализовать', 'функция', 'доступный', 'десктопному', 'приложение'], ['описанная', 'платформа', 'являться', 'основный', 'единственный'], ['зад', 'уникальный', 'каждый', 'случай', 'подобрать', 'индивидуальный', 'решение'], ['проект', 'разработать', 'использование', 'open', 'source', 'решение', 'мобильный', 'платформа', 'операционный', 'система', 'linux', 'macos'], ['этап', 'разработка', 'программный_обеспечение', 'говорить', 'разработка', 'программный_обеспечение', 'выделять', '6', 'основный', 'этап', '1'], ['планирование', '2'], ['составление', 'требование', '3'], ['проектирование', '4'], ['разработка', '5'], ['тестирование', '6'], ['сопровождение', 'последовательность', 'длительность', 'этап', 'зависеть', 'выбрать', 'методология', 'разработка', 'существенно', 'отличаться'], ['планирование', 'программный', 'проект', 'зависимость', 'потребность', 'выбрать', 'методология', 'разработка', 'отсутствовать', 'занимать', 'достаточно', 'больший', 'часть', 'разработка'], ['этап', 'определяться', 'основной', 'задача', 'решить', 'рамка', 'разработка', 'производиться', 'оценка', 'необходимый', 'функционал', 'технический', 'обследование', 'объект', 'автоматизация', 'оценка', 'финансовый', 'временной', 'человеческий', 'технический', 'ресурс', 'необходимый', 'осуществление', 'разработка'], ['определятся', 'использовать', 'метод', 'разработка', 'тестирование'], ['построить', 'временной', 'график', 'составить', 'бюджет', 'план', 'работа', 'прочие', 'документ'], ['составление', 'требование', 'заказчик', 'этап', 'происходить', 'сбор', 'анализ', 'формализация', 'требование', 'разрабатываемому', 'сторона', 'заказчик'], ['этап', 'служить', 'выработка', 'максимальный', 'взаимопонимание', 'заказчик', 'исполнитель'], ['обсуждаются', 'форма', 'предоставление', 'информация', 'необходимый', 'функционал', 'проблема', 'ограничение', 'возникнуть', 'разработка'], ['составленные', 'требование', 'протестировать'], ['проектирование', 'программный_продукт', 'этап', 'происходить', 'разработка', 'детализация', 'модель', 'разрабатывать', 'программный_продукт'], ['основание', 'построить', 'модель', 'определяться', 'структура', 'архитектура', 'организация', 'взаимодействие', 'модуль', 'интерфейс', 'структура', 'база', 'строиться', 'диаграмма', 'класс', 'т.д'], ['процесс', 'проектирование', 'проводиться', 'учёт', 'методология', 'выбрать', 'этап', 'планирование'], ['составить', 'прототип', 'разматываемого'], ['разработка', 'программный_обеспечение', 'единственный', 'этап', 'пропустить', 'зависимость', 'выбрать', 'методология'], ['этап', 'происходить', 'преобразование', 'результат', 'проектирование', 'система', 'программный', 'код', 'использовать', 'язык', 'программирование', 'соответствие', 'используемыми', 'стандарт', 'кодирование'], ['этап', 'разработчик', 'предоставлять', 'информация', 'инженер', 'тестирование', 'разработка', 'комплекс', 'тест', 'разрабатывать', 'технический', 'документация', 'производить', 'планирование', 'интеграция'], ['тестирование', 'программный_обеспечение', 'этап', 'иметь', 'четко', 'определённый'], ['начаться', 'этап', 'составление', 'требование'], ['начаться', 'тестирование', 'высоко', 'вероятность', 'программный_обеспечение', 'точность', 'соответствовать', 'требование', 'потребность', 'заказчик', 'выявить', 'критический', 'ошибка', 'проектирование', 'разработка', 'дешёвый', 'обойтись', 'исправление'], ['тестирование', 'проводиться', 'ручной', 'автоматический', 'режим'], ['результат', 'тест', 'составляться', 'отчёт'], ['метод', 'вид', 'тестирование', 'подробно', 'описать', 'страница', 'тестирование', 'программный_обеспечение'], ['сопровождение', 'программный_обеспечение', 'этап', 'основный', 'внимание', 'уделяться', 'внесение', 'изменение', 'программный_обеспечение'], ['изменение', 'связать', 'доработками', 'желание', 'заказчик', 'устранение', 'ошибка', 'изменение', 'функционал', 'среда', 'окружение'], ['осуществляться', 'консультация', 'обучение', 'поддержка', 'пользователь'], ['перечисленный', 'этап', 'зависимость', 'выбрать', 'методология', 'модель', 'жизненный_цикл', 'следовать', 'друг', 'другом', 'каскадный', 'модель', 'проходить', 'параллельно', 'периодически', 'итерационный', 'модель'], ['модель', 'жизненный_цикл', 'разработка', 'программный_обеспечение', 'подразумеваться', 'последовательность', 'процесс', 'задача', 'действие', 'выполнять', 'разработка', 'программный_обеспечение'], ['выбор', 'модель', 'зависеть', 'требование', 'предъявлять', 'разработка', 'выбрать', 'методология', 'сложность', 'проект', 'прочих', 'условие'], ['наибольшей', 'популярность', 'пользоваться', '1', 'каскадный', 'модель', 'водопад', '2'], ['v', 'образный', 'модель', '3'], ['прототипирование', '4'], ['быстрый', 'разработка', 'rad', 'модель', '5'], ['многопроходный', 'модель', '6'], ['спиральный', 'модель', 'каскадный', 'модель', 'водопад', 'этап', 'разработка', 'следовать', 'друг', 'другом', 'строгий', 'последовательность'], ['переход', 'следующий', 'этап', 'происходить', 'окончание', 'предыдущий'], ['возвращение', 'пройти', 'этап', 'внесение', 'изменение', 'предусмотреть'], ['завершение', 'каждый', 'этап', 'создаваться', 'полный', 'комплект', 'документация'], ['качество', 'разработать', 'программный_обеспечение', 'оцениваться', 'точность', 'соответствования', 'требование', 'технический', 'задание'], ['каскадный', 'подход', 'применять', 'разработка', 'удаваться', 'достаточно', 'сформулировать', 'требование'], ['током', 'случай', 'разработка', 'идти', 'выполняться', 'логичный', 'последовательность', 'позволять', 'достаточно', 'оценить', 'срок', 'выполнение', 'работа', 'стоимость'], ['недостаток', 'модель', 'относиться', 'отсутствие', 'гибкость', 'сложность', 'дороговизна', 'внесение', 'изменение', 'разрабатывать', 'проект'], ['v', 'образный', 'модель', 'являться', 'разновидность', 'каскадный', 'модель'], ['особый', 'внимание', 'уделяться', 'тестирование', 'продукт'], ['выполнение', 'этап', 'разработка', 'происходить', 'каскадный', 'модель', 'последовательно'], ['отличие', 'состоять', 'каждый', 'этап', 'проектирование', 'разработка', 'соответствовать', 'определённый', 'этап', 'тестирование'], ['кодирование', 'выполняться', 'модульный', 'интеграционный', 'тестирование', 'проверять', 'качество', 'проектирование', 'реализация', 'система', 'выполняться', 'системный', 'тестирование', 'проверять', 'соответствие', 'правильность', 'требование', 'программный_продукт'], ['начинать', 'этап', 'эксплуатация', 'сопровождение', 'проверяться', 'работоспособность', 'проект', 'целое', 'соответствие', 'поставить', 'задача'], ['сравнение', 'каскадный', 'модель', 'преимущество', 'высокий', 'качество', 'тестирование', 'контроль', 'разработка'], ['модель', 'использовать', 'предъявляться', 'высокий', 'требование', 'надёжность', 'программный_обеспечение'], ['модель', 'прототипирования', 'отличаться', 'предыдущий', 'модель', 'ранний', 'этап', 'проектирование', 'разработка', 'программный_продукт', 'создаваться', 'прототип'], ['потенциальный', 'пользователь', 'начинать', 'использовать', 'создать', 'прототип', 'выявлять', 'сильный', 'слабый', 'сторона'], ['счёт', 'обеспечиваться', 'обратный', 'связь', 'пользователь', 'разработчик', 'позволять', 'вносить', 'изменение', 'проект', 'ранний', 'этап', 'разработка', 'проектирование', 'существенно', 'снижать', 'стоимость', 'вносить', 'изменение', 'максимально', 'приближать', 'готовый', 'продукт', 'потребность', 'заказчик'], ['модель', 'применяться', 'случай', 'требование', 'разрабатываемому', 'программный_обеспечение', 'заранее', 'известный', 'неполный', 'требовать', 'уточнение'], ['модель', 'использовать', 'производиться', 'новый', 'разработка', 'иметь', 'аналог'], ['модель', 'быстрый', 'разработка', 'rad', 'модель', 'понятный', 'название', 'модель', 'направленна', 'быстрый', 'разработка', 'приложение'], ['особенность', 'модель', 'состоять', 'постоянный', 'привлечение', 'работа', 'заказчик', 'существенно', 'снижать', 'риск', 'внесение', 'изменение', 'проект', 'поздний', 'стадия', 'укорять', 'выработка', 'требование', 'апробация', 'прототип', 'разрабатывать', 'программный_обеспечение'], ['разработка', 'ориентировать', 'автоматизация', 'программирование', 'повторный', 'использование', 'код', 'использование', 'готовый', 'сторонний', 'модуль'], ['многопроходный', 'модель', 'итерационный', 'отличаться', 'этап', 'проектирование', 'кодирование', 'тестирование', 'программный_продукт', 'время', 'разработка', 'проводиться', 'насколько', 'раз', 'проходить', 'насколько', 'итерация'], ['спиральная', 'модель', 'похожий', 'многопроходный', 'модель'], ['особенность', 'модель', 'состоять', 'создаваться', 'целиком', 'часть'], ['создаваться', 'прототип', 'начинать', 'использовать'], ['производиться', 'постепенный', 'наращивание', 'функционал', 'улучшение', 'переработка', 'интерфейс', 'доработка', 'исправление', 'ошибка'], ['выбор', 'спиральный', 'модель', 'требоваться', 'ранний', 'формулирование', 'требование', 'программный_обеспечение', 'уточняться', 'процесс', 'разработка'], ['модель', 'заключать', 'достоинство', 'каскадный', 'интеграционный', 'модель', 'позволять', 'заказчик', 'увидеть', 'программный_продукт', 'ранний', 'этап', 'вовремя', 'внести', 'корректировка', 'разработка'], ['особенность', 'модель', 'состоять', 'четко', 'ограничить', 'время', 'этап', 'продолжать', 'бесконечность', 'реакция', 'заказчик', 'вызвать', 'новый', 'цикл', 'разработка'], ['являться', 'гибкий', 'модель'], ['подходить', 'больший', 'сложный', 'проект', 'проект', 'требование', 'заранее', 'известный'], ['тестирование', 'система', 'качество', 'вопрос', 'качество', 'разрабатывать', 'программный_обеспечение', 'становиться', 'актуальный', 'речь', 'идти', 'продукт', 'обеспечивать', 'выполнение', 'основный', 'бизнес', 'процесса', 'компания', 'фронт', 'офисный', 'продукт', 'использовать', 'клиент', 'продукт', 'надёжность', 'предъявляться', 'повышенный', 'требование'], ['основный', 'задача', 'тестирование', 'проверка', 'оответствует', 'работа', 'программа', 'предъявлять', 'требование'], ['другому', 'выполнять', 'программа', 'ожидать', 'заказчик'], ['тестирование', 'начать', 'этап', 'согласование', 'заказчик', 'требование', 'програмному', 'продукт'], ['начаться', 'тестировани', 'раньши', 'выявить', 'ошибка', 'дешёвый', 'обойтись', 'исправлени'], ['зависимый', 'предъявлять', 'тербований', 'програмному', 'обеспечение', 'тестироватся', 'требование', 'полнота', 'непротиворечивость', 'крограмный', 'код', 'наличие', 'ошибка', 'функционал', 'система', 'соответствие', 'требование', 'документация', 'полнота', 'соответствие', 'требование', 'работа', 'система', 'выделить', 'пять', 'уровень', 'тестирование', 'модульный', 'интеграционный', 'системный', 'выходной', 'приёмочный'], ['модульный', 'тестирование', 'этап', 'тестирование', 'являться', 'часть', 'разработка'], ['проводиться', 'непосредственно', 'разработчик', 'представлять', 'проверка', 'отдальных', 'часть', 'система', 'модуль', 'отдлельных', 'процедура', 'функция', 'система'], ['этап', 'производиться', 'проверка', 'правильность', 'работа', 'функционал', 'организация', 'каждый', 'модуль', 'производиться', 'синтаксический', 'проверка', 'программный', 'код', 'соответствие', 'стандарт', 'кодирование', 'производиться', 'технический', 'обзор', 'код'], ['интеграционный', 'тестирование', 'ход', 'этап', 'производиться', 'проверка', 'совместный', 'работа', 'отдельный', 'модуль', 'связь', 'модуль', 'корректность', 'обмен', 'данными', 'проверка', 'функциональность', 'проверка', 'промежуточный', 'результат', 'работа', 'модуль', 'проверка', 'интерграции'], ['осущаствляется', 'тестировщками'], ['результат', 'тестирование', 'составлется', 'отчёт'], ['системный', 'тестирование', 'производиться', 'проверка', 'программный_продукт', 'вцелом', 'проверка', 'фунциональности', 'соответствования', 'трбованиям', 'тестирование', 'работа', 'система', 'граничный', 'условие', 'проверка', 'документация'], ['удаваться', 'производиться', 'целевой', 'тестирвоание', 'проверка', 'работа', 'система', 'целевой', 'платформа'], ['выполняться', 'тестироващиком', 'завершение', 'интерграционного', 'тестирование'], ['результат', 'тест', 'составляться', 'отчёт'], ['выходной', 'тестирование', 'производиться', 'завершать', 'этап', 'разработка'], ['проверяться', 'готовность', 'система', 'запуск', 'эксплуатация'], ['производиться', 'конечный', 'тестирование', 'система', 'проверка', 'подсистмы', 'инсталяции', 'система', 'предусмотреть', 'функцоналом', 'проверка', 'документация', 'пользователь'], ['осуществляться', 'проверка', 'совместимость', 'предыдущий', 'версия', 'сторонний'], ['редультатам', 'тестирование', 'составляться', 'отчёт', 'поторый', 'предоставляться', 'заказчик', 'всесте', 'готовый', 'программный_продукт'], ['желание', 'заказчик', 'производиться', 'приёмочный', 'тестирование'], ['проводиться', 'програмное', 'обеспечение', 'поддерживать', 'обслуживать', 'огранизация', 'разработчик', 'сторонний', 'обслуживать', 'организация'], ['основный', 'задача', 'тестирование', 'считать', 'выявление', 'программный', 'ошибка', 'проверка', 'соответствие', 'работа', 'система', 'технический', 'требование'], ['програмные', 'ошибка', 'деляться', 'функциональный', 'недостаток', 'недостаток', 'интерфейс', 'недостаток', 'производительность', 'некорректный', 'обработка', 'ошибка', 'некорректный', 'обработка', 'входной', 'частность', 'пограничный', 'ошибка', 'вычисланий', 'ошибка', 'управление', 'поток', 'ошибка', 'гонка', 'перегрузка', 'некорректный', 'работа', 'аппаратный', 'обеспечение'], ['функциональный', 'недостаток', 'ситуация', 'программа', 'выполнять', 'часть', 'функция', 'выполнять', 'верно', 'полностью'], ['функционал', 'программа', 'подробно', 'описать', 'спецификация'], ['основание', 'расхождение', 'спецификация', 'фуктической', 'работа', 'система', 'приниматься', 'решение', 'функциональный', 'недостаток', 'программа'], ['недостаток', 'интерфейс', 'выявить', 'процесс', 'работа', 'программный_продукт'], ['сделать', 'результат', 'эксплуатация', 'готовый', 'программный_обеспечение', 'средство', 'создание', 'прототип', 'производиться', 'проверка', 'уточнение', 'согласование', 'требование'], ['создание', 'прототип', 'являться', 'предпочительнам', 'т.к.', 'позволять', 'внести', 'изменение', 'интерфейс', 'функционал', 'программа', 'полный', 'завершение', 'ввод', 'эксплуатация'], ['существенно', 'удешевлять', 'разработка', 'позволять', 'сделать', 'программа', 'удобный', 'пользователь', 'соответствующею', 'выполнять', 'задача'], ['недостаточный', 'производительность', 'являться', 'существенный', 'недостаток', 'спецификация', 'разработка', 'указать', 'строгий', 'требование', 'производительность'], ['четки', 'требование', 'медленный', 'работа', 'программа', 'создавать', 'пользователь', 'негативный', 'впечатление', 'требовать', 'оптимизация'], ['некорректный', 'обработка', 'ошибка', 'программа', 'аварийный', 'завершать', 'работа', 'продолжать', 'работать', 'правильно', 'ошибочный', 'действие', 'пользователь', 'корректный', 'входной'], ['возникать', 'ошибка', 'обратотаны', 'пользователь', 'получить', 'корректный', 'понятный', 'сообщение'], ['некоррекная', 'обработка', 'граничный', 'условие', 'программа', 'работать', 'большой', 'диапазон', 'входной'], ['можеть', 'оказать', 'программа', 'верно', 'обрабатывать', 'специфичный', 'набор', 'входной'], ['ситуация', 'рассмотреть', 'описать', 'аналитик', 'этап', 'проектирование', 'система', 'проверить', 'тестеровщиком', 'тестирование'], ['ошибка', 'вычисление', 'носить', 'математический', 'характер'], ['связать', 'неправильный', 'выбор', 'алгоритм', 'расчёт', 'правильный', 'формула', 'недостаточный', 'точность', 'вычисление', 'ощибкой', 'округление', 'фактор'], ['ошибка', 'управление', 'поток', 'ошибка', 'гонка', 'связать', 'правильный', 'проектирование', 'система'], ['типичны', 'многопользовательский', 'распределить', 'система'], ['возникать', 'порядок', 'выполнение', 'определённый', 'действие', 'система', 'соответствовать', 'проэктируемому', 'ожидаемому', 'результат'], ['являются', 'сложный', 'тестирование', 'воспроизведение'], ['перегрузка', 'связать', 'нехватка', 'система', 'резурсов', 'работа', 'программа', 'память', 'мощность', 'процессор', 'место', 'диск', 'большой', 'нагрузка', 'программа', 'большой', 'число', 'одновременно', 'работать', 'пользователь', 'большой', 'объём', 'обрабатывать', 'т.д.'], ['работа', 'программа', 'ситуация', 'продуманна', 'заранее', 'описани', 'требование', 'программный_обеспечение'], ['некорректный', 'работа', 'аппаратный', 'обеспечение', 'возникать', 'программа', 'пытаться', 'использовать', 'некорректно', 'работать', 'устройство', 'устройство', 'работа', 'программа', 'расчитана'], ['ситуация', 'корректно', 'обрабатываться', 'приводить', 'сбой', 'зависание', 'программа'], ['ошибка', 'характерный', 'компьютерный', 'игра'], ['тестирование', 'програмного', 'продукт', 'производиться', 'тестирование', 'документация'], ['документация', 'тестироваться', 'соответствие', 'тербования', 'полнота', 'понятность', 'пользователь', 'точность', 'соответствие', 'разрабатываемому', 'програмному', 'обеспечение'], ['процесс', 'разработка', 'принять', 'решение', 'изменить', 'добавить', 'удалить', 'часть', 'функционал', 'изменить', 'интерфейс'], ['завершение', 'проект', 'убедиться', 'окончательный', 'версия', 'документация', 'соответствовать', 'окончательный', 'версия', 'програмного', 'обеспечение'], ['противный', 'случай', 'внести', 'соответствующий', 'изменение'], ['документирование', 'разработка', 'согласно', 'государственный', 'международный', 'стандарт', 'разработка', 'программный_обеспечение', 'составить', 'следующий', 'документ', 'технический', 'задание', 'эскизный', 'проект', 'технический', 'проект', 'рабочий', 'проект', 'программный', 'документация', 'спецификация', 'ведомость', 'держатель', 'подлинник', 'текст', 'программа', 'описание', 'программа', 'программа', 'методика', 'испытание', 'пояснительный', 'записка', 'эксплуатационный', 'документ', 'ведомость', 'эксплуатационный', 'документ', 'формуляр', 'описание', 'применение', 'руководство', 'системный', 'программист', 'руководство', 'программист', 'руководство', 'оператор', 'пользователь', 'описание', 'язык', 'руководство', 'обслуживание', 'руководство', 'администратор', 'содержание', 'документ', 'строго', 'регламентировать', 'гост', '19', 'единый', 'система', 'программный', 'документация', 'еспд', 'ознакомиться', 'страница', 'нормативный', 'документ'], ['каждый', 'проект', 'требоваться', 'создавать', 'перечень', 'документ'], ['тратить', 'деньга', 'создание', 'тонна', 'макулатура', 'результат', 'понадобиться'], ['большинство', 'проект', 'достаточно', '2', '3х', 'документ'], ['технический', 'задание', 'документация', 'пользователь', 'администратор', 'система'], ['требование', 'заказчик', 'проект', 'предоставить', 'полный', 'перечень', 'документ', 'соответствовать', 'государственный', 'международный', 'стандарт', 'стандарт', 'разработать', 'заказчик'], ['документация', 'разработать', 'программный', 'комплекс', 'отдельный', 'компонент']]"
        ],
        [
         "24",
         "Методологии разработки программного обеспечения.doc",
         "Методологии разработки программного обеспечения\rВведение\rВначале сформулируем цели, без которых невозможен ни один проект. Основная задача любого успешного проекта заключается в том, чтобы на момент запуска системы и в течение всего срока ее эксплуатации можно было обеспечить:\r• требуемую функциональность системы и степень адаптации к изменяющимся условиям ее функционирования;\r• требуемую пропускную способность системы;\r• требуемое время реакции системы на запрос;\r• безотказную работу системы в требуемом режиме, то есть: готовность и доступность системы для обработки запросов пользователей;\r• простоту эксплуатации и поддержки системы;\r• требуемую безопасность.\rПроизводительность является главным фактором, который определяет эффективность системы. Хорошее проектное решение — основа высокопроизводительной системы.\rПроектирование информационных систем охватывает три основные области:\r• проектирование объектов данных, которые будут реализованы в базе данных;\r• проектирование программ, экранных форм, отчетов, которые будут обеспечивать выполнение запросов к данным;\r• учет конкретной среды или технологии: топологии сети, конфигурации аппаратных средств, использования архитектур «файл-сервер», «клиент-сервер», параллельной обработки, распределенной обработки данных и т.п.\rВ реальных условиях проектирование информационных систем — это поиск способа, который обеспечивает необходимую функциональность системы средствами имеющихся технологий с учетом заданных ограничений.\rПод методологией разработки подразумевается набор методов и критериев оценки, которые используются для постановки задачи, планирования, контроля и в конечном итоге — для достижения поставленной цели. Сам процесс разработки описывается моделью, которая определяет последовательность наиболее общих этапов и получаемых результатов.\rДолгое время процесс разработки ПО осуществлялся в соответствии с методиками, наработанными в инженерной области, — стандартная практика поэтапного создания продукта, начиная с составления спецификаций и заканчивая поставкой заказчику. Существуют стандарты ГОСТ (Россия) и ISO (Европа, Россия), CMM (Capability Maturity Model — распространен в США), регламентирующие данный процесс.\rИзвестны несколько основных моделей жизненного цикла ПО.\rКаскадная модель — переход на следующий этап означает полное завершение работ на предыдущем этапе.\rПоэтапная модель с промежуточным контролем — разработка ПО ведется итерациями с циклами обратной связи между этапами. Межэтапные корректировки позволяют уменьшить трудоемкость процесса разработки по сравнению с каскадной моделью, но время жизни каждого из этапов растягивается на весь период разработки.\rСпиральная модель — особое внимание уделяется начальным этапам разработки: выработке стратегии, анализу и проектированию, где реализуемость тех или иных технических решений проверяется и обосновывается посредством создания прототипов (макетирования). Каждый виток спирали предполагает создание некой версии продукта или какого-либо его компонента; при этом уточняются характеристики и цели проекта, определяется его качество и планируются работы следующего витка спирали.\rАктивное программирование и его клоны — наиболее популярным для данной модели стало экстремальное программирование (extreme Programming, XP). Отцом-идеологом XP считают Кента Бека (Kent Beck). XP является довольно молодой методологией, оценки которой весьма противоречивы: от восторженных до резко негативных. Основными принципами являются простота решений и интенсивная разработка малыми группами, активное общение в группе и обратная связь с клиентом, фактически вовлеченным в процесс разработки, а также известная доля куража.\rНиже мы рассмотрим классические модели, а об экстремальном программировании расскажем в отдельной части данной статьи.\rЖизненный цикл программного обеспечения (ПО) представляет собой модель его создания и использования. Данная модель отражает его различные состояния, начиная с момента возникновения потребности в данном ПО и заканчивая моментом его полного выхода из употребления у всех пользователей. Модели различаются способом взаимосвязи этапов жизненного цикла, но каждый из этих этапов в том или ином виде присутствует в каждой модели. Ниже мы последовательно рассмотрим все эти этапы.\r\rСтратегия\rОпределение стратегии предполагает обследование системы. Основная задача обследования — это оценка реального объема проекта, его целей и задач, а также получение определений сущностей и функций на высоком уровне. На этом этапе привлекаются высококвалифицированные бизнес-аналитики, которые имеют постоянный доступ к руководству фирмы; также предполагается тесное взаимодействие с основными пользователями системы и бизнес-экспертами. Основная задача такого взаимодействия — получить как можно более полную информацию о системе, однозначно понять требования заказчика и передать данную информацию в формализованном виде системным аналитикам. Как правило, информация о системе может быть получена на основании ряда бесед (или семинаров) с руководством, экспертами и пользователями.\rИтогом этапа определения стратегии становится документ, где четко сформулировано следующее: что именно причитается заказчику, если он согласится финансировать проект; когда он сможет получить готовый продукт (график выполнения работ); во сколько это ему обойдется (график финансирования этапов работ для крупных проектов). В документе должны быть отражены не только затраты, но и выгода, например время окупаемости проекта, ожидаемый экономический эффект (если его удается оценить).\rОпределение стратегии — это принципиальный ответ на вопросы типа: «Будем ли мы делать этот проект за такие-то деньги или нет?» или «Делаем ли мы в принципе этот проект с данным разработчиком?» Иными словами, в результате определения стратегии разработчик и заказчик принимают решение о продолжении работ на определенных условиях с определенными обязанностями сторон.\rСледует выделить набор фактов, которые должны быть обязательно отражены в заключительном документе после проведения обследования и анализа деятельности предприятия:\r• ограничения, риски, критические факторы, влияющие на проект;\r• совокупность условий эксплуатации будущей системы: архитектура, аппаратные и программные ресурсы, внешние условия ее функционирования; состав исполнителей и работ, обеспечивающих функционирование системы;\r• критические сроки завершения этапов, форма сдачи работ, защита коммерческой информации;\r• описание выполняемых системой функций;\r• интерфейсы и распределение функций между человеком и системой;\r• требования к программным и информационным компонентам ПО;\r• наличие потенциального развития системы в будущем;\r• то, что не будет реализовано в рамках проекта.\rДанный этап жизненного цикла ПО может быть представлен в модели только один раз, особенно если модель имеет циклическую структуру, однако это не означает, что в циклических моделях стратегическое планирование производится раз и навсегда. Циклические модели предназначены для решения проблем ПО, которое развивается по времени; анализ текущего состояния ПО и предприятия, его использующего, производится на этапе анализа. Таким образом, в циклических моделях этапы определения стратегии и анализа как бы склеиваются, а вероятность их разделения существует лишь на самом первом витке, когда руководство предприятия принимает принципиальное решение о старте проекта. В целом этап анализа посвящен разработке документа уровня руководства предприятия.\r\rАнализ\rЭтап анализа предполагает подробное исследование бизнес-процессов (функций, определенных на предыдущем этапе) и информации, необходимой для их выполнения (сущностей, их атрибутов и связей (отношений)). Этот этап дает информационную модель, а следующий за ним этап проектирования — модель данных.\rВся информация о системе, собранная на этапе определения стратегии, формализуется и уточняется на этапе анализа. Особое внимание следует уделить полноте переданной информации, анализу информации на непротиворечивость, а также поиску неиспользуемой или дублирующейся информации. Как правило, заказчик вначале формирует требования не к системе в целом, а к отдельным ее компонентам. И в этом конкретном случае циклические модели жизненного цикла ПО имеют преимущество, поскольку с течением времени с большой вероятностью потребуется повторный анализ, так как у заказчика зачастую аппетит приходит во время еды. На этом же этапе определяются необходимые компоненты плана тестирования.\rАналитики собирают и фиксируют информацию в двух взаимосвязанных формах:\r• функции — информация о событиях и процессах, которые происходят в бизнесе;\r• сущности — информация о вещах, которые имеют значение для организации и о которых что-либо известно.\rРанее двумя классическими результатами анализа были: иерархия функций, которая разбивает процесс обработки на компоненты («что делается и из чего это состоит»), и модель «сущность-связь» (Entry Relationship model, ER-модель), которая описывает сущности, их атрибуты и связи (отношения) между ними. Эти результаты являются необходимыми, но не достаточными. К достаточным результатам следует отнести диаграммы потоков данных и диаграммы жизненных циклов сущностей, которые описывают динамику системы. В настоящее время существует способ формализации проекта — Unified Modelling Language (UML), позволяющий формально описать различные стороны жизнедеятельности разрабатываемого проекта. Существует достаточно большое количество ПО, реализующего UML, например Rational Rose, Microsoft Visio. О UML мы расскажем в отдельной части данной статьи.\r\rПроектирование\rНа этапе проектирования формируется модель данных. Проектировщики получают входные данные анализа. Конечным продуктом этапа проектирования являются схема базы данных (если таковая существует в проекте) или схема хранилища данных (ER-модель) и набор спецификаций модулей системы (модель функций).\rВ случае небольшого проекта одни и те же люди могут выступать в роли и аналитиков, и проектировщиков, и разработчиков. Возникает вопрос, насколько актуальна передача результатов самому себе. В принципе, достаточно актуальна, поскольку часто помогает найти, например, не описанные вообще, нечетко описанные, противоречиво описанные компоненты системы и прочие недостатки, способствует предотвращению потенциальных ошибок, а также даст возможность еще раз подумать.\rВсе спецификации должны быть предельно точными. План тестирования системы также дорабатывается на этом этапе разработки. Во многих проектах результаты этапа проектирования оформляются в виде единого документа — так называемой технической спецификации. Здесь стоит упомянуть о преимуществах способа UML, который позволяет получить одновременно как документы анализа, которые отличаются меньшей детализацией (их потребители — менеджеры производства), так и документы проектирования (их потребители — менеджеры групп разработки и тестирования). Кроме того, ПО, реализующее UML, позволяет осуществить генерацию кода — как минимум иерархию классов, а также некоторые части кода самих методов.\rЗадачами проектирования являются:\r• рассмотрение результатов анализа и проверка их полноты;\r• семинары с заказчиком;\r• определение критических участков проекта и оценка ограничений проекта;\r• определение архитектуры системы;\r• принятие решения об использовании продуктов сторонних разработчиков, а также о способах интеграции и механизмах обмена информации с этими продуктами;\r• проектирование хранилища данных: модель базы данных, бета-версия базы данных;\r• проектирование процессов и кода: окончательный выбор средств разработки, определение интерфейсов программ, отображение функций системы на ее модули и определение спецификаций модулей;\r• определение требований к процессу тестирования;\r• определение требований безопасности системы.\r\rРеализация\rПри реализации проекта важно координировать группу (группы) разработчиков. Все разработчики должны подчиняться жестким правилам контроля исходных тестов. Группа разработчиков, получив технический проект, начинает писать код модулей. Основная их задача состоит в том, чтобы уяснить спецификацию: проектировщик написал, что надо сделать, разработчик определяет, как это сделать.\rНа этапе разработки осуществляется тесное взаимодействие проектировщиков, разработчиков и групп тестировщиков. В случае интенсивной разработки тестировщик буквально неразлучен с разработчиком, фактически становясь членом группы разработки.\rПроектировщик на этапе разработки выполняет функцию «ходячего справочника», поскольку должен постоянно отвечать на вопросы разработчиков, касающиеся технической спецификации.\rЧаще всего на этапе разработки меняются интерфейсы пользователя. Это обусловлено, наряду с прочим, периодической демонстрацией модулей заказчику. Также могут существенно изменяться запросы к данным.\rСледует отметить необходимость существования выделенного рабочего места, где происходит сборка всего проекта. Именно эти модули передаются на тестирование. Взаимодействие тестировщика и разработчика без централизованной передачи допустимо только в том случае, если срочно требуется проверить какую-то правку. Очень часто этап разработки сопряжен с этапом тестирования, и оба процесса идут параллельно. Синхронизирует действия тестеров и разработчиков система bug tracking.\rКроме того, должны быть организованы хранилища готовых модулей проекта и библиотек, которые используются при сборке модулей. Это хранилище постоянно обновляется. Контролировать процесс обновления должен один человек. Одно хранилище создается для модулей, прошедших функциональное тестирование, второе — для модулей, прошедших тестирование связей. Первое — это черновики, второе — то, из чего уже можно собирать дистрибутив системы и демонстрировать его заказчику для проведения контрольных испытаний или для сдачи каких-либо этапов работ.\rСледует отметить исключительную важность обмена информацией между проектировщиками, разработчиками, тестировщиками: ошибки должны быть классифицированы согласно приоритетам; для каждого класса ошибок должна быть определена четкая структура действий: «что делать», «как срочно», «кто ответственен за результат»; каждая проблема должна отслеживаться проектировщиком/разработчиком/тестировщиком, отвечающим за ее устранение. То же самое касается ситуаций, когда нарушаются запланированные сроки разработки, передачи модулей на тестирование. Все проблемы при взаимодействии между группами могут стоить достаточно дорого.\r\rТестирование\rГруппы тестирования могут привлекаться к сотрудничеству уже на ранних стадиях разработки проекта. Строго говоря, комплексное тестирование следует выделить в отдельный этап разработки. В зависимости от сложности проекта тестирование и исправление ошибок может занимать треть, половину общего времени работы над проектом и даже больше.\rЧем сложнее проект, тем больше будет потребность в автоматизации системы хранения ошибок — bug tracking, которая обеспечивает следующие функции:\r• хранение сообщения об ошибке (к какому компоненту системы относится ошибка, кто ее нашел, как ее воспроизвести, кто отвечает за ее исправление, когда она должна быть исправлена);\r• система уведомления о появлении новых ошибок, об изменении статуса известных в системе ошибок (уведомления по электронной почте);\r• отчеты об актуальных ошибках по компонентам системы;\r• информация об ошибке и ее история;\r• правила доступа к ошибкам тех или иных категорий;\r• интерфейс ограниченного доступа к системе bug tracking для конечного пользователя.\rПодобные системы берут на себя множество организационных проблем, в частности вопросы автоматического уведомления об ошибках.\rСобственно тесты систем можно разделить на несколько категорий:\r• автономные тесты модулей; они используются уже на этапе разработки компонентов системы и позволяют отслеживать ошибки отдельных компонентов;\r• тесты связей компонентов системы; эти тесты также используются и на этапе разработки, и на этапе тестирования, они позволяют отслеживать правильность взаимодействия и обмена информацией компонентов системы;\r• системный тест; он является основным критерием приемки системы; как правило, это группа тестов, включающая и автономные тесты, и тесты связей и модели; данный тест должен воспроизводить работу всех компонентов и функций системы; основная цель данного теста — внутренняя приемка системы и оценка ее качества;\r• приемосдаточный тест; основное его назначение — сдать систему заказчику; здесь разработчики часто занижают требования к системе по сравнению с системным тестом, и причины этого вполне очевидны;\r• тесты производительности и нагрузки; данная группа тестов входит в системный тест, но достойна отдельного упоминания, поскольку именно эта группа тестов является основной для оценки надежности системы.\rВ тесты каждой группы обязательно входят тесты моделирования отказов. Здесь проверяется реакция компонента, группы компонентов, системы в целом на отказы вида:\r• отказ отдельного компонента информационной системы;\r• отказ группы компонентов информационной системы;\r• отказ основных модулей информационной системы;\r• отказ операционной системы;\r• жесткий сбой (отказ питания, жестких дисков).\rЭти тесты позволяют оценить качество подсистемы восстановления корректного состояния информационной системы и служат основным источником информации для разработки стратегий предотвращения негативных последствий сбоев при промышленной эксплуатации. Как правило, этим классом тестов разработчики традиционно пренебрегают, а затем вынуждены «лечить» последствия сбоев на промышленной системе.\rЕще одним важным аспектом программы тестирования информационных систем является наличие генераторов тестовых данных. Они используются для проведения тестов функциональности системы, тестов надежности системы и тестов производительности системы. Задачу оценки характеристик зависимости производительности информационной системы от роста объемов обрабатываемой информации без генераторов данных решить невозможно.\r\rВнедрение\rОпытная эксплуатация перекрывает процесс тестирования. Система редко вводится полностью. Как правило, это процесс постепенный или итерационный — в случае циклического жизненного цикла.\rВвод в эксплуатацию проходит как минимум три стадии:\r• первоначальная загрузка информации;\r• накопление информации;\r• выход на проектную мощность (то есть собственно переход к этапу эксплуатации).\rПервоначальная загрузка информации инициирует довольно узкий спектр ошибок: в основном речь идет о проблемах рассогласования данных при загрузке и о собственных ошибках загрузчиков. Здесь требуется применить методы контроля качества данных (в противном случае в дальнейшем наведенные ошибки обойдутся намного дороже). Это то, чего не было или не могло быть отслежено на тестовых данных. Такие ошибки должны быть исправлены как можно быстрее. Не поленитесь поставить отладочную версию системы (если, конечно, вам позволят развернуть весь комплекс сопровождающего отладку информационной системы ПО на месте). Если отладку «на живых» данных произвести невозможно, вам придется моделировать ситуацию, и как можно быстрее. В этом случае требуются очень квалифицированные тестировщики.\rВ период накопления информации из информационной системы выявляется наибольшее количество ошибок, связанных с многопользовательским доступом. Часто на этапе тестирования им не уделяется должного внимания — из-за сложности моделирования и дороговизны средств автоматизации процесса. Вторая категория исправлений связана с тем, что пользователя не устраивает интерфейс. Здесь не всегда нужно выполнять абсолютно все пожелания пользователя, иначе процесс ввода в эксплуатацию будет бесконечным. В данный момент циклические модели и модели с обратной связью этапов также позволяют снизить затраты.\rЭтот этап является также наиболее серьезным тестом — тестом одобрения пользователем (customer acceptance tests). Если этого не было сделано на этапе тестирования, то на этапе внедрения это непременно произойдет, и вашим тестировщиком фактически будет ваш собственный заказчик, что не всегда приемлемо, особенно если для последнего это будет несколько неожиданно.\rВыход системы на проектную мощность в хорошем варианте — это доводка мелких ошибок и редкие серьезные ошибки.\r\rЭксплуатация и техническая поддержка\rЗдесь последним документом, от которого зависят разработчики, является документ технической приемки. Итак, проект сдан, разработка завершена, ошибки, с которыми заказчик согласился, описаны в документации, и в идеале стороны довольны друг другом. Документ также определяет необходимый персонал и требуемое оборудование для поддержки работоспособности системы, а также условия нарушения эксплуатации продукта и ответственность сторон. Помимо этого, если документ заключается между сторонами, он содержит условия технической поддержки.\rУсловия технической поддержки и ситуации, которые подпадают под понятие «техническая поддержка», а также условия оплаты определяются, как правило, в отдельном документе. Иногда в рекламных целях менеджеры разработки пытаются включить в документы обязательства гарантии исправления ошибок на условиях технической поддержки за «икс» дней. Такой подход, возможно, и хорош с рекламной точки зрения, но следует отдавать себе отчет в том, что невыполнение обязательств по техническим причинам намного хуже, чем отсутствие «вкусной» рекламы.\r\rКаскадная модель\rДанная модель также носит название «водопад». Классическими представителями реализации данной методологии являются стандарты ISO и CMM.\rМодель предполагает следующие свойства взаимодействия этапов:\r• модель состоит из последовательно расположенных этапов;\r• каждый этап полностью заканчивается до того, как начнется следующий;\r• этапы не перекрываются во времени: следующий этап не начинается до тех пор, пока не завершится предыдущий;\r• возврат к предыдущим этапам не предусмотрен либо всячески ограничен;\r• исправление ошибок происходит лишь на стадии тестирования;\r• результат появляется только в конце разработки.\rКритерием появления результата является отсутствие ошибок и точное соответствие продукта первоначальной спецификации.\r\rПоэтапная модель с промежуточным контролем\rДанная модель еще известна как итерационная модель или «водоворот».\rМодель характеризуется следующими свойствами взаимодействия этапов:\r• модель состоит из последовательно расположенных этапов (точно так же, как и «водопад»);\r• каждый этап имеет обратную связь с предыдущими этапами;\r• исправление ошибок происходит на каждом из этапов, сразу при выявлении проблемы — это промежуточный контроль;\r• этапы перекрываются во времени по причине наличия обратной связи: следующий этап не начинается, пока не завершится предыдущий; при первом проходе по модели вниз, как только обнаружена ошибка, осуществляется возврат снизу вверх к предыдущим этапам, которые повлекли ошибку; таким образом, фактически этапы оказываются растянутыми во времени;\r• результат появляется только в конце разработки, как и в модели «водопад».\rКритерием появления результата является приемлемое качество продукта, то есть такое состояние продукта, когда наиболее критические для клиента ошибки устранены, а с наличием непринципиальных для жизнедеятельности системы ошибок клиент согласилcя — данные ошибки описаны в документации и фактически переведены таким образом в разряд особенностей системы.\r\rСпиральная модель\rКоммерческими представителями данной методологии являются RUP (Rational Unified Process), MSF (Microsoft Consulting Services), и об этом будет рассказано в следующих частях данной публикации.\rРезультат появляется фактически на каждом витке спирали. Этот результат, который является промежуточным, анализируется, а затем выявленные недостатки продукта становятся поводом для инициирования следующего витка спирали. Таким образом углубляются и последовательно конкретизируются детали проекта и в итоге выбирается обоснованный вариант, который доводится до реализации. Спираль завершается тогда, когда клиент и разработчик приходят к согласию относительно результата.\rМодель предполагает также свойства взаимодействия этапов:\r• модель состоит из последовательно расположенных этапов (как и «водопад») в пределах одного витка спирали;\r• внутри витка спирали этапы не имеют обратной связи; анализ результата осуществляется в конце витка и инициирует новый виток спирали;\r• исправление ошибок происходит на этапе тестирования на каждом из витков спирали; фактически часть ошибок исправляется в пределах одного витка посредством связи этапов кодирования и тестирования; ошибки, которые не могут быть исправлены и требуют более глубоких структурных изменений, инициируют новый виток спирали;\r• этапы могут перекрываться во времени в пределах одного витка спирали;\r• результат появляется в конце каждого витка спирали и подвергается подробному анализу, анализируются новые требования заказчика и инициируется новый виток спирали;\r• при переходе от витка к витку происходит накопление и повторное использование программных средств, моделей и прототипов;\r• процесс ориентирован на развитие и модификацию системы в процессе ее проектирования, на анализ рисков и издержек в процессе проектирования.\rОтметим, что основная особенность данной методологии состоит в концентрации сложности на начальных этапах жизненного цикла ПО (анализ, проектирование); при этом сложность и трудоемкость последующих этапов в пределах одного витка спирали относительно невысокие. По этой методологии предлагается способ снижения затрат в целом при разработке ПО за счет предотвращения потенциальных ошибок на этапах анализа и проектирования. Этап определения стратегии присутствует на первом витке спирали либо «склеен» с этапом анализа первого витка спирали.",
         "0",
         "[['методология', 'разработка', 'программный', 'обеспечение', 'введение', 'сформулировать', 'цель', 'невозможный', 'ни', 'проект'], ['основный', 'задача', 'успешный', 'проект', 'заключаться', 'момент', 'запуск', 'система', 'течение', 'срок', 'эксплуатация', 'обеспечить', 'требуемую', 'функциональность', 'система', 'степень', 'адаптация', 'изменяться', 'условие', 'функционирование', 'требуемую', 'пропускной', 'способность', 'система', 'требуемое', 'время', 'реакция', 'система', 'запрос', 'безотказный', 'работа', 'система', 'требовать', 'режим', 'готовность', 'доступность', 'система', 'обработка', 'запрос', 'пользователь', 'простота', 'эксплуатация', 'поддержка', 'система', 'требуемую', 'безопасность'], ['производительность', 'являться', 'главный', 'фактор', 'определять', 'эффективность', 'система'], ['хороший', 'проектный', 'решение', 'основа', 'высокопроизводительный', 'система'], ['проектирование', 'информационный_система', 'охватывать', 'три', 'основный', 'область', 'проектирование', 'объект', 'реализовать', 'база', 'проектирование', 'программа', 'экранный', 'форма', 'отчёт', 'обеспечивать', 'выполнение', 'запрос', 'данным', 'учёт', 'конкретный', 'среда', 'технология', 'топология', 'сеть', 'конфигурация', 'аппаратный', 'средство', 'использование', 'архитектура', 'файл', 'сервер', 'клиент', 'сервер', 'параллельный', 'обработка', 'распределить', 'обработка', 'т.п.', 'реальный', 'условие', 'проектирование', 'информационный_система', 'поиск', 'способ', 'обеспечивать', 'необходимый', 'функциональность', 'система', 'средство', 'иметься', 'технология', 'учёт', 'задать', 'ограничение'], ['методология', 'разработка', 'подразумеваться', 'набор', 'метод', 'критерий', 'оценка', 'использоваться', 'постановка', 'задача', 'планирование', 'контроль', 'конечный', 'итог', 'достижение', 'поставить', 'цель'], ['процесс', 'разработка', 'описываться', 'модель', 'определять', 'последовательность', 'общий', 'этап', 'получать', 'результат'], ['долгий', 'время', 'процесс', 'разработка', 'осуществляться', 'соответствие', 'методиками', 'наработать', 'инженерный', 'область', 'стандартный', 'практика', 'поэтапный', 'создание', 'продукт', 'начинать', 'составление', 'спецификация', 'заканчивать', 'поставка', 'заказчик'], ['существовать', 'стандарт', 'гост', 'россия', 'iso', 'европа', 'россия', 'cmm', 'capability', 'maturity', 'model', 'распространить', 'сша', 'регламентировать', 'процесс'], ['известный', 'основный', 'модель', 'жизненный_цикл'], ['каскадный', 'модель', 'переход', 'следующий', 'этап', 'означать', 'полный', 'завершение', 'работа', 'предыдущий', 'этап'], ['поэтапный', 'модель', 'промежуточный', 'контроль', 'разработка', 'вестись', 'итерация', 'цикл', 'обратный_связь', 'этап'], ['межэтапный', 'корректировка', 'позволять', 'уменьшить', 'трудоёмкость', 'процесс', 'разработка', 'сравнение', 'каскадный', 'модель', 'время', 'жизнь', 'каждый', 'этап', 'растягиваться', 'период', 'разработка'], ['спиральный', 'модель', 'особый', 'внимание', 'уделяться', 'начальный', 'этап', 'разработка', 'выработка', 'стратегия', 'анализ', 'проектирование', 'реализуемость', 'иных', 'технический', 'решение', 'проверяться', 'обосновываться', 'создание', 'прототип', 'макетирование'], ['виток_спираль', 'предполагать', 'создание', 'некий', 'версия', 'продукт', 'компонент', 'уточняться', 'характеристика', 'цель', 'проект', 'определяться', 'качество', 'планироваться', 'работа', 'следующий', 'виток_спираль'], ['активный', 'программирование', 'клон', 'популярный', 'модель', 'экстремальный', 'программирование', 'extreme', 'programming', 'xp'], ['отец', 'идеолог', 'xp', 'считать', 'кент', 'бек', 'kent', 'beck'], ['xp', 'являться', 'молодой', 'методология', 'оценка', 'весьма', 'противоречивый', 'восторженный', 'резко', 'негативный'], ['основный', 'принцип', 'являться', 'простота', 'решение', 'интенсивный', 'разработка', 'малый', 'группа', 'активный', 'общение', 'группа', 'обратный_связь', 'клиент', 'фактически', 'вовлечь', 'процесс', 'разработка', 'известный', 'доля', 'кураж'], ['рассмотреть', 'классический', 'модель', 'экстремальный', 'программирование', 'рассказать', 'отдельный', 'часть', 'статья'], ['жизненный_цикл', 'программный', 'обеспечение', 'представлять', 'модель', 'создание', 'использование'], ['модель', 'отражать', 'различный', 'состояние', 'начинать', 'момент', 'возникновение', 'потребность', 'заканчивать', 'момент', 'полный', 'выход', 'употребление', 'пользователь'], ['модель', 'различаться', 'способ', 'взаимосвязь', 'этап', 'жизненный_цикл', 'этап', 'ином', 'вид', 'присутствовать', 'каждый', 'модель'], ['последовательно', 'рассмотреть', 'этап'], ['стратегия', 'определение_стратегия', 'предполагать', 'обследование', 'система'], ['основный', 'задача', 'обследование', 'оценка', 'реальный', 'объём', 'проект', 'цель', 'задача', 'получение', 'определение', 'сущность', 'функция', 'высокий', 'уровень'], ['этап', 'привлекаться', 'высококвалифицированный', 'бизнес', 'аналитики', 'иметь', 'постоянный', 'доступ', 'руководство', 'фирма', 'предполагаться', 'тесный', 'взаимодействие', 'основный', 'пользователь', 'система', 'бизнес', 'экспертами'], ['основный', 'задача', 'взаимодействие', 'получить', 'полный', 'информация', 'система', 'однозначно', 'понять', 'требование', 'заказчик', 'передать', 'данную', 'информация', 'формализованный', 'вид', 'системный', 'аналитик'], ['правило', 'информация', 'система', 'получить', 'основание', 'ряд', 'беседа', 'семинар', 'руководство', 'эксперт', 'пользователь'], ['итог', 'этап', 'определение_стратегия', 'становиться', 'документ', 'четко', 'сформулировать', 'следующий', 'причитаться', 'заказчик', 'согласиться', 'финансировать', 'проект', 'получить', 'готовый', 'продукт', 'график', 'выполнение', 'работа', 'обойтись', 'график', 'финансирование', 'этап', 'работа', 'крупный', 'проект'], ['документ', 'отразить', 'затрата', 'выгода', 'время', 'окупаемость', 'проект', 'ожидать', 'экономический', 'эффект', 'удаваться', 'оценить'], ['определение_стратегия', 'принципиальный', 'ответ', 'вопрос', 'тип', 'делать', 'проект', 'деньга', 'делать', 'принцип', 'проект', 'данным', 'разработчик', 'слово', 'результат', 'определение_стратегия', 'разработчик', 'заказчик', 'принимать', 'решение', 'продолжение', 'работа', 'определённый', 'условие', 'определённый', 'обязанность', 'сторона'], ['выделить', 'набор', 'факт', 'обязательно', 'отразить', 'заключительный', 'документ', 'проведение', 'обследование', 'анализ', 'деятельность', 'предприятие', 'ограничение', 'риск', 'критический', 'фактор', 'влиять', 'проект'], ['совокупность', 'условие', 'эксплуатация', 'будущий', 'система', 'архитектура', 'аппаратный', 'программный', 'ресурс', 'внешний', 'условие', 'функционирование', 'состав', 'исполнитель', 'работа', 'обеспечивать', 'функционирование', 'система', 'критический', 'срок', 'завершение', 'этап', 'форма', 'сдача', 'работа', 'защита', 'коммерческий', 'информация', 'описание', 'выполнять', 'система', 'функция', 'интерфейс', 'распределение', 'функция', 'человек', 'система', 'требование', 'программный', 'информационный', 'компонент', 'наличие', 'потенциальный', 'развитие', 'система', 'будущее', 'реализовать', 'рамка', 'проект'], ['этап', 'жизненный_цикл', 'представить', 'модель', 'раз', 'модель', 'циклический', 'структура', 'означать', 'циклический', 'модель', 'стратегический', 'планирование', 'производиться', 'раз', 'навсегда'], ['циклический', 'модель', 'предназначить', 'решение', 'проблема', 'развиваться', 'время', 'анализ', 'текущий', 'состояние', 'предприятие', 'использовать', 'производиться', 'этап', 'анализ'], ['образ', 'циклический', 'модель', 'этап', 'определение_стратегия', 'анализ', 'склеиваться', 'вероятность', 'разделение', 'существовать', 'первый', 'виток', 'руководство', 'предприятие', 'принимать', 'принципиальный', 'решение', 'старт', 'проект'], ['целое', 'этап', 'анализ', 'посвятить', 'разработка', 'документ', 'уровень', 'руководство', 'предприятие'], ['анализ', 'этап', 'анализ', 'предполагать', 'подробный', 'исследование', 'бизнес', 'процессов', 'функция', 'определить', 'предыдущий', 'этап', 'информация', 'необходимый', 'выполнение', 'сущность', 'атрибут', 'связь', 'отношение'], ['этап', 'давать', 'информационный', 'модель', 'следующий', 'этап', 'проектирование', 'модель'], ['информация', 'система', 'собрать', 'этап', 'определение_стратегия', 'формализоваться', 'уточняться', 'этап', 'анализ'], ['особый', 'внимание', 'уделить', 'полнота', 'передать', 'информация', 'анализ', 'информация', 'непротиворечивость', 'поиск', 'неиспользуемый', 'дублироваться', 'информация'], ['правило', 'заказчик', 'формировать', 'требование', 'система', 'целое', 'отдельный', 'компонент'], ['конкретный', 'случай', 'циклический', 'модель', 'жизненный_цикл', 'иметь', 'преимущество', 'течение', 'время', 'большой', 'вероятность', 'потребоваться', 'повторный', 'анализ', 'заказчик', 'зачастую', 'аппетит', 'приходить', 'время', 'еда'], ['этап', 'определяться', 'компонент', 'план', 'тестирование'], ['аналитик', 'собирать', 'фиксировать', 'информация', 'два', 'взаимосвязанный', 'форма', 'функция', 'информация', 'событие', 'процесс', 'происходить', 'бизнес', 'сущность', 'информация', 'вещь', 'иметь', 'значение', 'организация', 'известный'], ['два', 'классический', 'результат', 'анализ', 'иерархия', 'функция', 'разбивать', 'процесс', 'обработка', 'компонент', 'делаться', 'состоять', 'модель', 'сущность', 'связь', 'entry', 'relationship', 'model', 'er', 'модель', 'описывать', 'сущность', 'атрибут', 'связь', 'отношение'], ['результат', 'являться', 'необходимый', 'достаточный'], ['достаточный', 'результат', 'отнести', 'диаграмма', 'поток', 'диаграмма', 'жизненный_цикл', 'сущность', 'описывать', 'динамика', 'система'], ['время', 'существовать', 'способ', 'формализация', 'проект', 'unified', 'modelling', 'language', 'uml', 'позволять', 'формально', 'описать', 'различный', 'сторона', 'жизнедеятельность', 'разрабатывать', 'проект'], ['существовать', 'достаточно', 'большой', 'количество', 'реализовать', 'uml', 'rational', 'rose', 'microsoft', 'visio'], ['uml', 'рассказать', 'отдельный', 'часть', 'статья'], ['проектирование', 'этап', 'проектирование', 'формироваться', 'модель'], ['проектировщик', 'получать', 'входной', 'анализ'], ['конечный', 'продукт', 'этап', 'проектирование', 'являться', 'схема', 'база', 'таковая', 'существовать', 'проект', 'схема', 'хранилище', 'er', 'модель', 'набор', 'спецификация', 'модуль', 'система', 'модель', 'функция'], ['случай', 'небольшой', 'проект', 'человек', 'выступать', 'роль', 'аналитик', 'проектировщик', 'разработчик'], ['возникать', 'вопрос', 'насколько', 'актуальный', 'передача', 'результат'], ['принцип', 'достаточно', 'актуальный', 'помогать', 'найти', 'описать', 'нечетко', 'описать', 'противоречивый', 'описать', 'компонент', 'система', 'прочие', 'недостаток', 'способствовать', 'предотвращение', 'потенциальный', 'ошибка', 'дать', 'возможность', 'раз', 'подумать'], ['спецификация', 'предельно', 'точный'], ['план', 'тестирование', 'система', 'дорабатываться', 'этап', 'разработка'], ['многих', 'проект', 'результат', 'этап', 'проектирование', 'оформляться', 'вид', 'единый', 'документ', 'называть', 'технический', 'спецификация'], ['стоить', 'упомянуть', 'преимущество', 'способ', 'uml', 'позволять', 'получить', 'одновременно', 'документ', 'анализ', 'отличаться', 'малый', 'детализация', 'потребитель', 'менеджер', 'производство', 'документ', 'проектирование', 'потребитель', 'менеджер', 'группа', 'разработка', 'тестирование'], ['реализовать', 'uml', 'позволять', 'осуществить', 'генерация', 'код', 'минимум', 'иерархия', 'класс', 'часть', 'код', 'метод'], ['задача', 'проектирование', 'являться', 'рассмотрение', 'результат', 'анализ', 'проверка', 'полнота', 'семинар', 'заказчик', 'определение', 'критический', 'участок', 'проект', 'оценка', 'ограничение', 'проект', 'определение', 'архитектура', 'система', 'принятие', 'решение', 'использование', 'продукт', 'сторонний', 'разработчик', 'способ', 'интеграция', 'механизм', 'обмен', 'информация', 'продукт', 'проектирование', 'хранилище', 'модель', 'база', 'бета', 'версия', 'база', 'проектирование', 'процесс', 'код', 'окончательный', 'выбор', 'средство', 'разработка', 'определение', 'интерфейс', 'программа', 'отображение', 'функция', 'система', 'модуль', 'определение', 'спецификация', 'модуль', 'определение', 'требование', 'процесс', 'тестирование', 'определение', 'требование', 'безопасность', 'система'], ['реализация', 'реализация', 'проект', 'важный', 'координировать', 'группа', 'группа', 'разработчик'], ['разработчик', 'подчиняться', 'жёсткий', 'правило', 'контроль', 'исходный', 'тест'], ['группа', 'разработчик', 'получить', 'технический', 'проект', 'начинать', 'писать', 'код', 'модуль'], ['основный', 'задача', 'состоять', 'уяснить', 'спецификация', 'проектировщик', 'написать', 'сделать', 'разработчик', 'определять', 'сделать'], ['этап', 'разработка', 'осуществляться', 'тесный', 'взаимодействие', 'проектировщик', 'разработчик', 'группа', 'тестировщиков'], ['случай', 'интенсивный', 'разработка', 'тестировщик', 'буквально', 'неразлучный', 'разработчик', 'фактически', 'становиться', 'член', 'группа', 'разработка'], ['проектировщик', 'этап', 'разработка', 'выполнять', 'функция', 'ходячий', 'справочник', 'постоянно', 'отвечать', 'вопрос', 'разработчик', 'касаться', 'технический', 'спецификация'], ['этап', 'разработка', 'меняться', 'интерфейс', 'пользователь'], ['обусловить', 'наряду', 'прочим', 'периодический', 'демонстрация', 'модуль', 'заказчик'], ['существенно', 'изменяться', 'запрос', 'данным'], ['отметить', 'необходимость', 'существование', 'выделить', 'рабочий', 'место', 'происходить', 'сборка', 'проект'], ['модуль', 'передаваться', 'тестирование'], ['взаимодействие', 'тестировщика', 'разработчик', 'централизовать', 'передача', 'допустимый', 'случай', 'срочно', 'требоваться', 'проверить', 'какой', 'правка'], ['этап', 'разработка', 'сопрячь', 'этап', 'тестирование', 'процесс', 'идти', 'параллельно'], ['синхронизировать', 'действие', 'тестер', 'разработчик', 'система', 'bug', 'tracking'], ['организовать', 'хранилище', 'готовый', 'модуль', 'проект', 'библиотека', 'использоваться', 'сборка', 'модуль'], ['хранилище', 'постоянно', 'обновляться'], ['контролировать', 'процесс', 'обновление', 'человек'], ['хранилище', 'создаваться', 'модуль', 'пройти', 'функциональный', 'тестирование', 'второй', 'модуль', 'пройти', 'тестирование', 'связь'], ['первый', 'черновик', 'второй', 'собирать', 'дистрибутив', 'система', 'демонстрировать', 'заказчик', 'проведение', 'контрольный', 'испытание', 'сдача', 'какой', 'этап', 'работа'], ['отметить', 'исключительный', 'важность', 'обмен', 'информация', 'проектировщик', 'разработчик', 'тестировщиками', 'ошибка', 'классифицировать', 'согласно', 'приоритет', 'каждый', 'класс', 'ошибка', 'определить', 'чёткий', 'структура', 'действие', 'делать', 'срочно', 'ответственный', 'результат', 'проблема', 'отслеживаться', 'проектировщик', 'разработчик', 'тестировщиком', 'отвечать', 'устранение'], ['касаться', 'ситуация', 'нарушаться', 'запланировать', 'срок', 'разработка', 'передача', 'модуль', 'тестирование'], ['проблема', 'взаимодействие', 'группа', 'стоить', 'достаточно', 'дорого'], ['тестирование', 'группа', 'тестирование', 'привлекаться', 'сотрудничество', 'ранний', 'стадия', 'разработка', 'проект'], ['строго', 'говорить', 'комплексный', 'тестирование', 'выделить', 'отдельный', 'этап', 'разработка'], ['зависимость', 'сложность', 'проект', 'тестирование', 'исправление', 'ошибка', 'занимать', 'треть', 'половина', 'общий', 'время', 'работа', 'проект'], ['сложный', 'проект', 'потребность', 'автоматизация', 'система', 'хранение', 'ошибка', 'bug', 'tracking', 'обеспечивать', 'следующий', 'функция', 'хранение', 'сообщение', 'ошибка', 'компонент', 'система', 'относиться', 'ошибка', 'найти', 'воспроизвести', 'отвечать', 'исправление', 'исправить', 'система', 'уведомление', 'появление', 'новый', 'ошибка', 'изменение', 'статус', 'известный', 'система', 'ошибка', 'уведомление', 'электронный', 'почта', 'отчёт', 'актуальный', 'ошибка', 'компонент', 'система', 'информация', 'ошибка', 'история', 'правило', 'доступ', 'ошибка', 'иных', 'категория', 'интерфейс', 'ограничить', 'доступ', 'система', 'bug', 'tracking', 'конечный', 'пользователь'], ['система', 'брать', 'множество', 'организационный', 'проблема', 'частность', 'вопрос', 'автоматический', 'уведомление', 'ошибка'], ['тест', 'система', 'разделить', 'категория', 'автономный', 'тест', 'модуль', 'использоваться', 'этап', 'разработка', 'компонент', 'система', 'позволять', 'отслеживать', 'ошибка', 'отдельный', 'компонент', 'тест', 'связь', 'компонент', 'система', 'тест', 'использоваться', 'этап', 'разработка', 'этап', 'тестирование', 'позволять', 'отслеживать', 'правильность', 'взаимодействие', 'обмен', 'информация', 'компонент', 'система', 'системный', 'тест', 'являться', 'основный', 'критерий', 'приёмка', 'система', 'правило', 'группа', 'тест', 'включать', 'автономный', 'тест', 'тест', 'связь', 'модель', 'тест', 'воспроизводить', 'работа', 'компонент', 'функция', 'система', 'основный', 'цель', 'тест', 'внутренний', 'приёмка', 'система', 'оценка', 'качество', 'приёмо-сдаточный', 'тест', 'основный', 'назначение', 'сдать', 'система', 'заказчик', 'разработчик', 'занижать', 'требование', 'система', 'сравнение', 'системный', 'тест', 'причина', 'очевидный', 'тест', 'производительность', 'нагрузка', 'группа', 'тест', 'входить', 'системный', 'тест', 'достойный', 'отдельный', 'упоминание', 'группа', 'тест', 'являться', 'основный', 'оценка', 'надёжность', 'система'], ['тест', 'каждый', 'группа', 'обязательно', 'входить', 'тест', 'моделирование', 'отказ'], ['проверяться', 'реакция', 'компонент', 'группа', 'компонент', 'система', 'целое', 'отказ', 'вид', 'отказ', 'отдельный', 'компонент', 'информационный_система', 'отказ', 'группа', 'компонент', 'информационный_система', 'отказ', 'основный', 'модуль', 'информационный_система', 'отказ', 'операционный', 'система', 'жёсткий', 'сбой', 'отказ', 'питание', 'жёсткий', 'диск'], ['тест', 'позволять', 'оценить', 'качество', 'подсистема', 'восстановление', 'корректный', 'состояние', 'информационный_система', 'служить', 'основный', 'источник', 'информация', 'разработка', 'стратегия', 'предотвращение', 'негативный', 'последствие', 'сбой', 'промышленный', 'эксплуатация'], ['правило', 'класс', 'тест', 'разработчик', 'традиционно', 'пренебрегать', 'вынуждены', 'лечить', 'последствие', 'сбой', 'промышленный', 'система'], ['важный', 'аспект', 'программа', 'тестирование', 'информационный_система', 'являться', 'наличие', 'генератор', 'тестовый'], ['использоваться', 'проведение', 'тест', 'функциональность', 'система', 'тест', 'надёжность', 'система', 'тест', 'производительность', 'система'], ['задача', 'оценка', 'характеристика', 'зависимость', 'производительность', 'информационный_система', 'рост', 'объём', 'обрабатывать', 'информация', 'генератор', 'решить', 'невозможный'], ['внедрение', 'опытный', 'эксплуатация', 'перекрывать', 'процесс', 'тестирование'], ['система', 'редко', 'вводиться', 'полностью'], ['правило', 'процесс', 'постепенный', 'итерационный', 'случай', 'циклический', 'жизненный_цикл'], ['ввод', 'эксплуатация', 'проходить', 'минимум', 'три', 'стадия', 'первоначальный', 'загрузка', 'информация', 'накопление', 'информация', 'выход', 'проектный', 'мощность', 'переход', 'этап', 'эксплуатация'], ['первоначальный', 'загрузка', 'информация', 'инициировать', 'узкий', 'спектр', 'ошибка', 'основный', 'речь', 'идти', 'проблема', 'рассогласование', 'загрузка', 'собственный', 'ошибка', 'загрузчик'], ['требоваться', 'применить', 'метод', 'контроль', 'качество', 'противный', 'случай', 'дальнейший', 'навести', 'ошибка', 'обойтись', 'намного', 'дорогой'], ['отследить', 'тестовый'], ['ошибка', 'исправить', 'быстрый'], ['поленитесь', 'поставить', 'отладочный', 'версия', 'система', 'позволить', 'развернуть', 'комплекс', 'сопровождать', 'отладка', 'информационный_система', 'место'], ['отладка', 'живой', 'произвести', 'невозможный', 'прийтись', 'моделировать', 'ситуация', 'быстрый'], ['случай', 'требоваться', 'квалифицированный', 'тестировщики'], ['период', 'накопление', 'информация', 'информационный_система', 'выявляться', 'больший', 'количество', 'ошибка', 'связать', 'многопользовательский', 'доступ'], ['этап', 'тестирование', 'уделяться', 'должный', 'внимание', 'сложность', 'моделирование', 'дороговизна', 'средство', 'автоматизация', 'процесс'], ['второй', 'категория', 'исправление', 'связать', 'пользователь', 'устраивать', 'интерфейс'], ['выполнять', 'абсолютно', 'пожелание', 'пользователь', 'процесс', 'ввод', 'эксплуатация', 'бесконечный'], ['момент', 'циклический', 'модель', 'модель', 'обратный_связь', 'этап', 'позволять', 'снизить', 'затрата'], ['этап', 'являться', 'серьёзный', 'тест', 'тест', 'одобрение', 'пользователь', 'customer', 'acceptance', 'tests'], ['сделать', 'этап', 'тестирование', 'этап', 'внедрение', 'непременно', 'произойти', 'ваш', 'тестировщиком', 'фактически', 'собственный', 'заказчик', 'приемлемый', 'последний', 'неожиданно'], ['выход', 'система', 'проектный', 'мощность', 'хороший', 'вариант', 'доводка', 'мелкий', 'ошибка', 'редкий', 'серьёзный', 'ошибка'], ['эксплуатация', 'технический', 'поддержка', 'последний', 'документ', 'зависеть', 'разработчик', 'являться', 'документ', 'технический', 'приёмка'], ['проект', 'сдать', 'разработка', 'завершить', 'ошибка', 'заказчик', 'согласиться', 'описать', 'документация', 'идеал', 'сторона', 'довольный', 'друг', 'другом'], ['документ', 'определять', 'необходимый', 'персонал', 'требуемое', 'оборудование', 'поддержка', 'работоспособность', 'система', 'условие', 'нарушение', 'эксплуатация', 'продукт', 'ответственность', 'сторона'], ['документ', 'заключаться', 'сторона', 'содержать', 'условие', 'технический', 'поддержка'], ['условие', 'технический', 'поддержка', 'ситуация', 'подпадать', 'понятие', 'технический', 'поддержка', 'условие', 'оплата', 'определяться', 'правило', 'отдельный', 'документ'], ['рекламный', 'цель', 'менеджер', 'разработка', 'пытаться', 'включить', 'документ', 'обязательство', 'гарантия', 'исправление', 'ошибка', 'условие', 'технический', 'поддержка', 'икс', 'день'], ['подход', 'хороший', 'рекламный', 'точка', 'зрение', 'отдавать', 'отчёт', 'невыполнение', 'обязательство', 'технический', 'причина', 'намного', 'отсутствие', 'вкусный', 'реклама'], ['каскадный', 'модель', 'модель', 'носить', 'название', 'водопад'], ['классическими', 'представитель', 'реализация', 'методология', 'являться', 'стандарт', 'iso', 'cmm'], ['модель', 'предполагать', 'следующий', 'свойство', 'взаимодействие', 'этап', 'модель', 'состоять', 'последовательно', 'расположенных', 'этап', 'этап', 'полностью', 'заканчиваться', 'начаться', 'следующий', 'этап', 'перекрываться', 'время', 'следующий', 'этап', 'начинаться', 'завершиться', 'предыдущий', 'возврат', 'предыдущий', 'этап', 'предусмотреть', 'ограничить', 'исправление', 'ошибка', 'происходить', 'стадия', 'тестирование', 'результат', 'появляться', 'конец', 'разработка'], ['критерий', 'появление', 'результат', 'являться', 'отсутствие', 'ошибка', 'точный', 'соответствие', 'продукт', 'первоначальный', 'спецификация'], ['поэтапный', 'модель', 'промежуточный', 'контроль', 'модель', 'известный', 'итерационный', 'модель', 'водоворот'], ['модель', 'характеризоваться', 'следующий', 'свойство', 'взаимодействие', 'этап', 'модель', 'состоять', 'последовательно', 'расположенных', 'этап', 'водопад', 'этап', 'обратный_связь', 'предыдущий', 'этап', 'исправление', 'ошибка', 'происходить', 'каждый', 'этап', 'выявление', 'проблема', 'промежуточный', 'контроль', 'этап', 'перекрываться', 'время', 'причина', 'наличие', 'обратный_связь', 'следующий', 'этап', 'начинаться', 'завершиться', 'предыдущий', 'первый', 'проход', 'модель', 'обнаружить', 'ошибка', 'осуществляться', 'возврат', 'снизу', 'вверх', 'предыдущий', 'этап', 'повлечь', 'ошибка', 'образ', 'фактически', 'этап', 'оказываться', 'растянуть', 'время', 'результат', 'появляться', 'конец', 'разработка', 'модель', 'водопад'], ['критерий', 'появление', 'результат', 'являться', 'приемлемый', 'качество', 'продукт', 'состояние', 'продукт', 'критический', 'клиент', 'ошибка', 'устранить', 'наличие', 'непринципиальный', 'жизнедеятельность', 'система', 'ошибка', 'клиент', 'согласилcя', 'ошибка', 'описать', 'документация', 'фактически', 'перевести', 'образ', 'разряд', 'особенность', 'система'], ['спиральный', 'модель', 'коммерческий', 'представитель', 'методология', 'являться', 'rup', 'rational', 'unified', 'process', 'msf', 'microsoft', 'consulting', 'services', 'рассказать', 'следующий', 'часть', 'публикация'], ['результат', 'появляться', 'фактически', 'каждый', 'виток_спираль'], ['результат', 'являться', 'промежуточный', 'анализироваться', 'выявить', 'недостаток', 'продукт', 'становиться', 'повод', 'инициирование', 'следующий', 'виток_спираль'], ['образ', 'углубляться', 'последовательно', 'конкретизироваться', 'деталь', 'проект', 'итог', 'выбираться', 'обоснованный', 'вариант', 'доводиться', 'реализация'], ['спираль', 'завершаться', 'клиент', 'разработчик', 'приходить', 'согласие', 'относительно', 'результат'], ['модель', 'предполагать', 'свойство', 'взаимодействие', 'этап', 'модель', 'состоять', 'последовательно', 'расположенных', 'этап', 'водопад', 'предел', 'виток_спираль', 'внутри', 'виток_спираль', 'этап', 'иметь', 'обратный_связь', 'анализ', 'результат', 'осуществляться', 'конец', 'виток', 'инициировать', 'новый', 'виток_спираль', 'исправление', 'ошибка', 'происходить', 'этап', 'тестирование', 'каждый', 'виток_спираль', 'фактически', 'часть', 'ошибка', 'исправляться', 'предел', 'виток', 'связь', 'этап', 'кодирование', 'тестирование', 'ошибка', 'исправить', 'требовать', 'глубокий', 'структурный', 'изменение', 'инициировать', 'новый', 'виток_спираль', 'этап', 'перекрываться', 'время', 'предел', 'виток_спираль', 'результат', 'появляться', 'конец', 'каждый', 'виток_спираль', 'подвергаться', 'подробный', 'анализ', 'анализироваться', 'новый', 'требование', 'заказчик', 'инициироваться', 'новый', 'виток_спираль', 'переход', 'виток', 'виток', 'происходить', 'накопление', 'повторный', 'использование', 'программный', 'средство', 'модель', 'прототип', 'процесс', 'ориентировать', 'развитие', 'модификация', 'система', 'процесс', 'проектирование', 'анализ', 'риск', 'издержка', 'процесс', 'проектирование'], ['отметить', 'основный', 'особенность', 'методология', 'состоять', 'концентрация', 'сложность', 'начальный', 'этап', 'жизненный_цикл', 'анализ', 'проектирование', 'сложность', 'трудоёмкость', 'последующий', 'этап', 'предел', 'виток_спираль', 'относительно', 'невысокий'], ['методология', 'предлагаться', 'способ', 'снижение', 'затрата', 'целое', 'разработка', 'счёт', 'предотвращение', 'потенциальный', 'ошибка', 'этап', 'анализ', 'проектирование'], ['этап', 'определение_стратегия', 'присутствовать', 'первый', 'виток_спираль', 'склеить', 'этап', 'анализ', 'первый', 'виток_спираль']]"
        ],
        [
         "25",
         "Методы композиции и декомпозиции.doc",
         "Методы композиции и декомпозиции исполняемых UML моделей\r1. Введение\rИзвестны три интеллектуальные возможности человека, используемые при разработке программных средств: способность к перебору, способность к абстракции и способность к математической индукции. Однако способность человека к перебору, необходимая при создании и модификации сложных систем, в том числе и программных комплексов, весьма ограничена - в среднем человек может уверенно, не сбиваясь, перебирать в пределах 1000 элементов. Средством преодоления этой ограниченности является способность человека к абстракции, благодаря которой человек может объединять разные предметы или экземпляры в одно понятие, заменять множество элементов одним элементом другого рода, упрощая, тем самым, восприятие. Абстракция лежит в основе моделирования, которое в последнее время получило широчайшее распространение и активно используется в процессе создания программных систем. \rНаиболее популярным языком моделирования в области разработки программного обеспечения на данный момент является графический язык UML (Unified Modeling Language - унифицированный язык моделировании) - язык, предназначенный для визуализации, специфицирования, конструирования и документирования программных систем. Выразительных средств этого языка в совокупности с мощными механизмами расширения достаточно для того, чтобы описать любую программную систему со всех точек зрения, актуальных на различных этапах жизненного цикла. Более того, все шире становится область применения концепций модельно-ориентированной разработки (MDD - Model Drive Development), отводящих моделям главную роль в процессе создания и поддержки системы. \rВ рамках таких подходов собственно разработка сводится к последовательному уточнению модели системы, начинающемуся с абстрактной модели и заканчивающемуся готовой программной системой. Таким образом, при использовании MDD сложность создаваемых моделей будет напрямую отражать сложность системы, а работа с моделью может создавать такие же трудности, как те, которые возникают при чтении и понимании большого количества исходного кода на традиционных языках программирования. \rПеречисленные выше факторы обуславливают потребность в методах, позволяющих упрощать восприятие сложных моделей и облегчать работу с ними. В то же время применение таких методов не должно затрагивать важных для пользователей и разработчиков модели свойств системы, например, поведенческих, которые в UML задаются при помощи диаграмм конечных автоматов (statemachine diagrams), диаграмм последовательностей (sequence diagrams) и диаграмм деятельности (activity diagrams). Данное свойство сближает такие методы трансформации моделей с известными приемами рефакторинга объектно-ориентированного программного обеспечения. Однако графическая природа языка UML накладывает свой отпечаток на возникающие проблемы и методы их решения. Кроме того, язык UML продолжает развиваться, и последняя на сегодняшний день версия стандарта UML 2.0 включает в себя множество новых элементов, многие из которых могут быть использованы для упрощения восприятия моделей. \r\r2. Конечные автоматы UML\rКонечные автоматы UML могут описывать поведение следующих элементов исполняемых моделей: активный класс (active class), операция (operation), составное состояние (composite state). В [19] было проведено количественное исследование моделей, используемых в реальных коммерческих проектах. Была составлена представительная выборка таких моделей, анализ которой показал, что, несмотря на наличие достаточно легко понимаемой структуры, почти у 90% исследованных элементов модели (диаграмм, автоматов), оставшиеся 10 % элементов, как правило, весьма сложны и, более того, именно они специфицируют основную логику работы системы. Таким образом, любые попытки понять и проанализировать поведенческие стороны сложной системы будут наталкиваться на необходимость изучения сложных конечных автоматов, описанных посредством громоздких диаграмм состояний. А так как для любой относительно нетривиальной модификации, количество которых за время жизни программной системы может исчисляться сотнями тысяч, требуется понимание логики работы системы, возникает потребность в методах, упрощающих восприятие системы и облегчающих ее понимание. \rСуть предлагаемого подхода состоит в том, что исходная модель сложной системы посредством описываемых преобразований трансформируется и дополняется элементами, образуя иерархическое представление, удобное как в случаях, когда нужно получить представление об общих принципах работы системы, так и в случаях, когда необходим детальный анализ конкретных аспектов. Такие преобразования могут быть классифицированы как методы композиции и декомпозиции автоматных моделей. \rПод композицией в данной работе понимается такое преобразование модели, результатом которого является создание единой новой целостной сущности из нескольких имеющихся сущностей. Например, объединение в одной диаграмме элементов всех диаграмм, описывающих конкретный автомат, есть примитивное преобразование-композиция. Следует отметить, что такая трансформация является примером графической композиции, так как затрагивает только элементы, описывающие графические сущности модели. Как правило, применение композиции способствует получению целостного представления о каком-либо элементе системы; при этом должны быть приняты меры, предотвращающие чрезмерное усложнение создаваемого элемента. \rПод декомпозицией следует понимать преобразование, обратное композиции, то есть такое преобразование, результатом которого является создание нескольких новых сущностей на основе единственной исходной сущности. Для приведенного примера графической композиции обратным будет преобразование, в результате которого элементы одной диаграммы распределяются между несколькими другими диаграммами. \rПрименяя композицию и декомпозицию, можно построить иерархическое описание сложных элементов системы, облегчающее ее восприятие. При этом понимание работы системы будет происходить сверху вниз по иерархии описания. Сначала пользователь знакомится с основными компонентами описываемой части модели и принципами их взаимодействия, и далее по необходимости углубляется, переходя к более детальному описанию интересующего его компонента. На практике даже для достаточно сложных конечных автоматов редко требуется больше 4-5 уровней детализации. \rПомимо упомянутого объединения и разбиения на диаграммы, другие способы композиции-декомпозиции автоматов могут быть основаны на использовании такого элемента языка UML, как метки. Их использование позволяет графически отделить участки диаграммы состояний, чтобы, например, перенести их на другую диаграмму или расположить отдельно на исходной диаграмме. Кроме того, введение меток способствует повторному использованию фрагментов диаграмм, так как переход на единожды описанную метку может быть выполнен многократно из различных частей автомата. Однако, так же, как и при написании программ на традиционных языках программирования, использование меток при спецификации автоматов заметно усложняет понимание принципов работы автомата. Особенно затруднительным становится анализ отдельного перехода в автомате, например, с целью выяснения того, в какие состояния автомат может перейти при срабатывании этого перехода, если в последовательности действий этого перехода встречаются команды перехода на метки, а описания этих меток распределены по многочисленным диаграммам. Поэтому, по нашему мнению, использование меток при описании конечных автоматов оправдано лишь в тех исключительно редких случаях, когда действия, выполняемые при срабатывании перехода, настолько сложны, что требуются отдельные диаграммы даже для описания их частей. \r\r3. Методы композиции и декомпозиции для конечных автоматов UML\rВ результате проведённого исследования разработано несколько методов композиции (декомпозиции) конечных автоматов UML. Предложенные методы базируются на двух основных идеях: объединение части состояний конечного автомата в структурную единицу конечного автомата - метод, и формирование иерархической единицы конечного автомата - составного состояния. \r\r3.1. Трансформация «Выделение метода» для конечных автоматов UML\rИдея трансформации «Выделение метода» состоит в создании нового метода и переносе части исходного автомата в добавленный метод. Данная трансформация во многом аналогична известному рефакторингу «Выделение метода» для объектно-ориентированных языков программирования, описанному в каталоге Фаулера [6]. Суть традиционной трансформации состоит в выделении участка кода и перемещении его в другой метод. Это позволяет сделать код исходного метода более понятным и повышает вероятность повторного использования выделенного метода. \rДля корректного выполнения традиционного рефакторинга «Выделение метода» требуется тщательный анализ потока данных в выделяемом участке кода, так как все используемые переменные должны быть переданы в метод в качестве параметров, а все изменения переменных должны быть тем или иным образом возвращены исходному методу, если измененные переменные используются в нем далее. \rДля первичного рассмотрения проблемы выделения метода в автомате эту проблему можно обойти следующим образом. Если используемая переменная является атрибутом автомата или сущности, содержащей автомат, то она будет видна и в выделенном методе и, следовательно, ее не нужно передавать в качестве параметра. Если же используемая переменная является локальной для действий, выполняемых в переходе, то при перенесении всех действий перехода в выделяемый метод определение локальной переменной и все ее использования будут также перенесены. Для выделения метода, в который помещаются не все действия, выполняемые в переходе, требуется дополнительный анализ потока данных. \rСледует подчеркнуть исключительную важность автоматизированной поддержки рефакторинга при проведении подобных преобразований, ибо сложность проводимого анализа будет способствовать ошибкам. \rИдея, лежащая в основе традиционного рефакторинга \"Выделение метода\", может быть применена к конечным автоматам несколькими способами. \rДля конечных автоматов UML можно применить традиционную трансформацию «выделение метода», которая состоит из выделения в метод подпоследовательности действий одного из переходов конечного автомата. \rВ рамках описываемого исследования был разработан новый вариант трансформации «выделение метода», специфичный только для конечных автоматов UML, - «выделение в метод части конечного автомата», который подразумевает перенос в выделяемый метод не только действий, связанных с переходом, но и самих переходов и состояний. \r\r3.2. Выделение в метод возвратной части конечного автомата\rНазовём возвратной частью конечного автомата для состояния X группу состояний конечного автомата, в которую есть только один вход из некоторого состояния X, и все переходы, выходящие за пределы группы, попадают обратно в X. Между состояниями, входящими в группу, возможны любые переходы, но существует ровно одно состояние, из которого выполняется переход в группу, и куда попадают все переходы, ведущие за пределы выбранной группы состояний. \rСогласно исследованию, проведённому в [19], многие конечные автоматы, используемые в промышленных системах, содержат в себе несколько возвратных частей для различных состояний. Многие из них состоят из 1-3 состояний, однако в каждом третьем конечном автомате с большим количеством состояний встречаются возвратные части из 4 и более состояний. \rБольшое количество состояний затрудняет восприятие общей схемы работы конечного автомата. Зачастую такой конечный автомат приходится описывать на нескольких диаграммах, что нарушает целостность картины. Однако все состояния, входящие в возвратную часть конечного автомата, можно перенести в отдельный метод, что сократит общее количество состояний автомата. Назовём такую трансформацию «выделением в метод возвратной части конечного автомата». \rРассмотрим определение части модельного конечного автомата, представленное на Рис. 1. Это автомат допускает выделение метода, так как для состояния X существует возвратная часть конечного автомата, состоящая из одного состояния Y. \rВ результате применения трансформации «выделение метода», создаётся метод Proc () с реализацией в виде конечного автомата. Все состояния из возвратной части конечного автомата (в данном примере только Y ) переносятся в выделенный метод. Действия, приписанные переходу в Y, становятся действиями, приписанными начальному переходу конечного автомата метода Proc (). Вместо них в исходный конечный автомат вставляются вызов метода Proc () и команда перехода в исходное состояние X (Рис. 2). \rВсе команды перехода в состояние X в созданном конечном автомате заменяются командами возврата из метода (return) (Рис. 3). \rЧасть автомата, выделенная в метод, обладает следующей семантикой: получив сигнал sig3 (), автомат выполняет некоторые действия, начиная с состояния Y, по завершении которых возвращается в состояние X. Подобная логика близка по смыслу к вызову метода - выполнение задачи с последующим возвратом в исходное состояние. Именно это и служит основанием для выделения метода. \rВ результате преобразования выделяется структурная единица автомата - метод, а диаграмма, описывающая конечный автомат, уменьшается, что упрощает его понимание. Выделенный метод можно использовать повторно для уменьшения дублирования кода. \rСуществует частный случай трансформации - выделение в метод группы состояний автомата, все переходы из которых завершают работу автомата, то есть ведут в символ stop. В этом случае выделение метода корректно, если все команды завершения работы автомата в выделенном методе (stop) заменяются командами возврата из метода (return), а вместо действий, приписанных исходному переходу, добавляются вызов метода Proc () и команда завершения работы автомата (stop). \rВ таком случае преобразованный автомат будет выглядеть так, как показано на Рис. 4: \r\r3.3. Выделение в метод последовательной части конечного автомата\rВо многих конечных автоматах встречаются последовательные части - несколько состояний, вытянутых в цепочку, с одним входом и одним выходом для каждого состояния (Рис. 5). Согласно исследованию, проведённому в [19], 25 % рассмотренных крупных автоматов содержат последовательные цепочки длинной 3 и более состояний. \r В таких ситуациях все состояния, входящие в цепочку, можно перенести в метод. Это позволит упростить общий вид конечного автомата, уменьшить количество состояний и переходов и скрыть детали поведения автомата при последовательном прохождении нескольких состояний. Назовём такую трансформацию «выделением в метод последовательной части конечного автомата». \rВ результате применения трансформации «Выделение метода», создаётся метод Proc () с реализацией в виде конечного автомата (Рис. 6). \rВсе состояния из последовательной цепочки состояний (в данном примере X, Y и Z) переносятся в выделенный метод. Последний переход цепочки состояний, перенесённый в метод, завершается возвратом из метода (return). Действия, приписанные началу цепочки переходов, становятся действиями, приписанными начальному переходу конечного автомата метода Proc (). Вместо них в исходный конечный автомат вставляются вызов метода Proc () и команда перехода в состояние, следующее за цепочкой (Q) (Рис. 7) \rПоследовательные цепочки состояний, используемые в конечных автоматах, являются неким многошаговым переходом, определяющим последовательность действий и состояний, которые необходимо пройти, чтобы попасть в очередную часть автомата. Таким образом, все состояния и переходы, формирующие цепочку, являются логически связанными и допускают группировку в отдельную структурную единицу автомата - метод. \r\r3.4. Необходимые условия для выделения части конечного автомата в метод\rАвтоматизация проведения преобразований для крупных конечных автоматов является исключительно важной задачей, ибо сложность проводимого анализа способствует возникновению ошибок. Одним из этапов процесса автоматизации является возможность автоматического поиска частей конечного автомата, которые можно поместить в отдельный метод согласно описанным выше подходам. После выделения одного метода могут появляться новые группы состояний, удовлетворяющие условиям выделения метода; поэтому необходимо иметь возможность автоматически выполнять итеративный поиск с возвращением для выявления наиболее оптимальной последовательности трансформаций. \rВсё сказанное выше подтверждает актуальность и востребованность следующей задачи: сформулировать достаточно формальные необходимые условия для выделения части конечного автомата в метод, общие для всех предложенных трансформаций. Ниже приводятся такие условия. \rОбозначим переход из состояния а в состояние b по событию sig, выполняющий действия act, через t (a?>b; sig; act). Обозначим конечное состояние автомата через stop, ветвление по условию cond через decision (cond), а конечное состояние процедуры (возврат из процедуры) через return. Тогда, например, переход из ветвления по условию cond в конечное состояние автомата будет обозначаться как t ( decision (cond)?> stop; sig; act). \rНа диаграмме конечного автомата, записанной в нотации UML, кроме стрелок, обозначающих переходы, могут присутствовать следующие элементы: состояния автомата, символы ветвления по условию (decision), начальное состояние, конечное состояние (stop) и символы возврата из процедуры (return). Назовём все эти элементы узлами конечного автомата. \rРассмотрим множество узлов N конечного автомата. Назовём узел s \u0001 N входным для множества узлов N, если существует переход t (a->s; sig; act) и a \u0001 N. Назовём узел b \u0001 N выходным для множества узлов N, если существует переход t (s->b; sig; act) и s \u0001 N. \rСформулируем необходимые условия для выделения части конечного автомата в метод: \rМножество узлов N, не содержащее stop, и все переходы между ними можно перенести в отдельный метод, если для множества узлов N существует ровно один входной узел и не более одного выходного узла. \rДля поиска частей автомата, которые можно перенести в отдельный метод, должно использоваться то же самое условие. Необходимо искать множества узлов с одним входным и одним выходным узлом. На Рис. 8.  приведён пример автомата, удовлетворяющего заданному условию. Данное условие не ограничивает количество переходов, по которым можно попасть во входной или выходной узел, и, как видно на рисунке, для входного узла decision (x) и для выходного узла Q существует по два перехода, ведущие в них. \rВсе узлы из выделенного множества, decision (x), s1, s2, s3 перемещаются в новый метод Proc (). Переходы, ведущие во входное состояние, после трансформации напрямую направляются в выходное состояние Q. К действиям, выполняемым в этих переходах, добавляется вызов метода Proc () (Рис. 9). \rПереходы, ведущие в выходное состояние, переносятся в метод и направляются в символ возврата из процедуры (Рис. 10). \rВ основе необходимого свойства для выделения части конечного автомата в метод лежит следующая идея. Состояния, переносимые в выделяемый метод, перестают принадлежать исходному автомату, и, следовательно, некорректны команды перехода, которые приводят из состояний исходного автомата в состояния, перенесенные в выделенный автомат. Такие команды перехода (смены состояния) должны быть заменены командами вызова выделяемого метода. Однако у автомата, реализующего метод, может быть только одна входная точка, поэтому все такие команды должны осуществлять переход в одно и то же состояние. Аналогичные рассуждения касаются и обратных переходов из состояний выделенного метода в состояния исходного автомата. \rТрансформации «выделение метода для конечного автомата», описанные в предыдущих двух параграфах, являются частными случаями трансформации общего вида, базирующейся на необходимом условии. В случае, когда входной узел совпадает с выходным, получаем возвратную часть конечного автомата, которую можно выделить в метод. Последовательные части конечного автомата, очевидно, также удовлетворяют необходимому условию для выделения части конечного автомата в метод. \rСуществуют и другие частные случаи приведённого необходимого условия: \rМножество узлов не имеет ни одного выходного узла (и по необходимому условию не содержит stop), то есть возврат из созданного метода невозможен. Это значит, что в конечном автомате найден бесконечный цикл, который, возможно, представляет собой «серверную составляющую» исходного автомата. \rВ случае, когда выходной узел - это stop, выделенный метод выполняет действия, после которых автомат завершает свою работу, так что, возможно, новый метод является неким аналогом деструктора в объектно-ориентированном программировании. \r\r3.5. Трансформация «выделение составного состояния» для конечных автоматов UML\rАвтоматы, содержащие составные состояния, составляют менее 2 % от всех исследованных в [19] автоматов, что позволяет сделать вывод об их достаточно редком использовании, несмотря на их выразительную мощность. Причиной тому может служить тот факт, что составные состояния не являлись частью языка SDL до его версии SDL-2000. Таким образом, можно предположить, что многим разработчикам моделей, работавшим ранее на языке SDL, недостаточно известна эта конструкция. \rТем не менее, введение «составных» или «иерархических» состояний является достаточно важным методом композиции, используемым для создания легко воспринимаемого описания автомата. \rВ следующих параграфах описываются способы выделения составных состояний в конечных автоматах UML. \r\r3.6. Выделение составного состояния для скрытия деталей реализации\rВ промышленных моделях для спецификации поведения объектов достаточно часто используются автоматы, имеющие одно состояние. Такая структура характерна для классов, не обладающих сложной внутренней логикой, а реализующих некоторый сервис для других компонентов системы. В единственном имеющемся состоянии, которое очень часто носит имя \"Idle\" или \"Wait\", объект ожидает запрос на выполнение какой-либо операции. Получение запроса инициирует срабатывание перехода, в процессе которого выполняются необходимые действия. По завершении обработки объект вновь возвращается в исходное состояние. Частота использования подобного приема позволила даже выделить на его основе типичный образец проектирования, получивший название «Ромашка», за счет визуальной схожести описания автомата с цветком. Однако даже в тех случаях, когда автомат, описывающий сложный компонент системы, не удовлетворяет целиком описанному образцу, зачастую удается выделить некоторые элементы, описание которых ему соответствует. Обособить такие части можно за счет использования описанной в этом параграфе трансформации. \rПри наличии нескольких «основных» состояний детали, описания каждого из них могут значительно усложнять диаграмму, как это показано на Рис. 11. Перегруженные символами диаграммы затрудняют понимание и должны быть преобразованы к более простому виду. \rДля выполнения трансформации выбирается состояние, имеющее возвратные переходы, например Z. Далее это состояние заменяется составным состоянием Z, содержащим одно состояние Z_internals. Для спецификации внутренностей составного состояния Z создается новая диаграмма, на которой определяется начальный переход, ведущий в Z_internals. Все возвратные переходы состояния Z переносятся внутрь этого составного состояния и приписываются состоянию Z_internals. Результаты применения трансформации представлены на Рис. 12 и Рис. 13. \r \rРис. 13. Результат трансформации \rВ результате применения данного преобразования описание автомата становится более иерархичным и поэтому более удобным для восприятия; структурируются и упрощаются диаграммы, специфицирующие автомат. Выполнение трансформации оправдывается в том случае, когда имеется состояние с большим количеством переходов в само себя. Как правило, наличие многих переходов из некоторого состояния в него же говорит о наличии особой семантической роли у функциональности, реализуемой автоматом только в этом состоянии. Выделение составного состояния позволит в данном случае подчеркнуть эту функциональность не только семантически, но и графически посредством переноса ее описания на новую диаграмму. \rДанное преобразование может быть применено к любому состоянию автомата, если это оправдывается с точки зрения семантики. \r\r3.7. Метод текстового сравнения переходов\rКак и при написании программ на традиционных языках программирования, при создании UML-моделей крайне желательно избегать дублирования элементов модели, повторно используя вместо этого существующие элементы, так как наличие нескольких копий каких-либо элементов модели может осложнять понимание и модификацию. В контексте исполняемых моделей, специфицированных посредством конечных автоматов, на практике наиболее часто встречаются дублирование общей архитектуры автомата и дублирование переходов. В первом случае в модели будет встречаться несколько похожих на вид, но необязательно эквивалентных автоматов. Избежать дублирования в данной ситуации весьма затруднительно, можно лишь описать повторяющуюся часть автомата как типичный прием проектирования автоматов (pattern), сохранив информацию об использовании этого образца в комментарии к автомату. \rВ случае наличия в автомате эквивалентных переходов дублирование можно устранить за счет применения трансформаций, описанных в следующих параграфах. Однако задача автоматического обнаружения эквивалентных переходов оказывается достаточно сложной и весьма актуальной для больших автоматных моделей. \rЭквивалентность переходов в автомате означает совпадение списка стимулов, инициирующих эти переходы, а также эквивалентность действий, выполняемых при срабатывании заданного перехода. Если автоматическая проверка эквивалентности списков сигналов, инициирующих сравниваемые переходы, не представляет никакой трудности, то проблема определения эквивалентности двух программ, к которой сводится проверка эквивалентности последовательности действий, выполняемых в переходах, алгоритмически неразрешима. Кроме того, сложно определить критерии эквивалентности двух автоматов. \rНесмотря на это, для конечных автоматов весьма хорошо зарекомендовал себя простой подход, суть которого состоит в сравнении текстовых строк, описывающих переход. При очевидной простоте реализации этот способ позволяет достаточно эффективно находить в автомате эквивалентные переходы. Эквивалентность текстуально совпадающих действий, приписанных переходам, практически очевидна. Достаточно учесть, что оба перехода описаны в контексте одного конечного автомата, и поэтому все использованные при их описании идентификаторы, например, имена функций и переменных, означают в обоих переходах одни и те же объекты. Действительно, каждое имя в переходе либо относится к объекту, объявленному локально, и тогда его определения текстуально совпадают в обоих переходах, и для них можно повторить это рассуждение; либо относится к объекту, определенному в контексте автомата и выше, но в этом случае правила, по которым идентификатору сопоставляется элемент модели, дадут одинаковый результат для обоих переходов, так как их применение в обоих случаях можно начинать с автомата, содержащего оба рассматриваемых перехода, поскольку сами переходы не содержат подходящего объекта. Отсюда следует, что текстуальное совпадение переходов гарантирует их эквивалентность. \rТем не менее, отсутствие текстуального совпадения отнюдь не обязательно означает отсутствие эквивалентности: к примеру, если в одном из переходов выполняются действия {a++; b++}, а в другом - {b++; a++}, где и a и b являются атрибутами класса, содержащего автомат, то эти переходы можно считать эквивалентными, хотя текстуально они различны. Однако текстуальное сравнение может быть использовано и позволяет получать приемлемые результаты. \rМетод текстуального сравнения может быть усовершенствован следующим образом: перед сравнением из строк, описывающих переходы, удаляются фрагменты, не имеющие отношения к выполняемым действиям, например, комментарии. Кроме того, все локальные идентификаторы (в случае, если их количество в обоих переходах одинаково) следует переименовать так, чтобы они имели одни и те же имена в порядке их объявления. \rАвтоматизация поиска эквивалентных переходов позволяет упростить процесс применения трансформаций, устраняющих дублирование переходов. \r\r3.8. Выделение составного состояния по общему переходу\rРассматриваемую здесь трансформацию следует применять, когда в исходном автомате достаточно много состояний, и при этом можно выделить группу семантически связанных состояний, для каждого из которых существует переход, эквивалентный некоторому заданному переходу. \rДостаточно часто при создании промышленных моделей возникают ситуации, когда невозможно знать заранее точные время и условия осуществления какого-либо события, например, прихода сигнала от окружения системы. Если событие достаточно важно и не допускает отложенной обработки, то разработчик конечного автомата будет вынужден описать реакцию на это событие сразу в нескольких возможных состояниях, поскольку он не может знать, в каком именно состоянии будет находиться автомат в момент осуществления события. \rТакие описания затрудняют понимание и приводят к ненужному дублированию кода, что повышает вероятность возникновения ошибок в случае изменения реакции на это событие или добавления в автомат новых состояний. \rДанная трансформация состоит из двух этапов, каждый из которых является композиционным преобразованием. Перед проведением преобразований должен быть выбран переход, копии которого определены сразу для нескольких состояний в исходном автомате. На первом этапе создается новое иерархическое состояние, в которое включаются все состояния, имеющие переход, эквивалентный выбранному. На втором этапе для всех состояний удаляются переходы, эквивалентные выбранному, а для вновь созданного иерархического состояния такой переход добавляется. \rПрименение данной трансформации к автомату, изображенному на рис. 14, позволяет выделить составное состояние On, содержащее состояния X, Y, Q, Z, если в качестве выделенного перехода использовать переход по сигналу TurnOff (). Для спецификации внутренностей составного состояния создается диаграмма, приведенная на рис. 15, а модифицированный исходный автомат показан на рис. 16. Введение иерархического состояния позволило упростить исходную диаграмму за счет удаления дублировавшихся переходов и сделать ее более наглядной и понятной. Кроме того, замена множества одинаковых переходов одним помогает избежать ошибок при изменении спецификации действий, выполняемых при срабатывании перехода. \r \rРис. 15. Результат трансформации: спецификация составного состояния On \rСоздание в автомате S нового составного состояния B, явно содержащего состояния A1…An, корректно в том и только том случае, когда это добавление не нарушает строгую иерархию состояний по включению. Иными словами, новое состояние, будучи изображенным на любой диаграмме состояний, описывающей автомат, не должно пересекать границы уже существующих состояний. Перенос перехода T из состояний D1…Dn в состояние E корректен только в том случае, если E является составным состоянием и не содержит явно никаких состояний, кроме D1…Dn, а в каждом из состояний D1…Dn есть либо переход, эквивалентный T, либо переход, срабатывающий при тех же условиях, что и T. \r\r3.9. Выделение составного состояния по общему возвратному переходу\rПо причине описанного ранее негативного влияния дублирования переходов желательно устранять эквивалентные действия, даже если они находятся на неэквивалентных переходах. В этом параграфе будет описана трансформация, позволяющая устранить дублирование действий в переходах отличающихся лишь состоянием, в которое они переводят автомат. \rДля сложных автоматов достаточно типична ситуация, когда какое-либо событие должно быть одинаковым образом обработано в нескольких состояниях, при этом его обработка не должна прерывать основной ход событий, то есть по его окончании автомат должен возвратиться в исходное состояние. Примером таких событий может быть протоколирование какой-либо активности либо другие «фоновые» для автомата задачи. Моделирование такого поведения вынуждает разработчиков определять для каждого из состояний, в котором должна быть обработана «фоновая» активность, переход, содержащий эквивалентную последовательность действий и возвращающий автомат в исходное состояние. Такие переходы избыточны, загромождают описание автомата и мешают его восприятию, как, например, на Рис. 17. \rПредлагаемая трансформация выполняется во многом аналогично предыдущей. На первом шаге выделяется множество состояний A1…An автомата S, для каждого из которых существует переход Ti, обладающий следующими свойствами: он срабатывает при условии t, в нем выполняются действия act, и после его завершения автомат возвращается в исходное состояние Ai. К автомату S добавляется новое составное состояние B, содержащее состояния A1…An, а для спецификации состояния В создается отдельная диаграмма D. К автомату S добавляется переход T из состояния B по стимулу t, выполняющий действия act и завершающийся оператором перехода в состояние истории (deep history state). Если у множества состояний A1…An имеется только одна входная точка A1, то возможно дальнейшее преобразование автомата. Все операторы перехода в состояние A1 заменяются операторами перехода в состояние В, а к состоянию В добавляется стартовый переход, ведущий в состояние A1. После этого становится возможным переместить состояния A1…An с исходной диаграммы на диаграмму D (Рис. 19), добавив вместо них состояние В и переход Т к исходной диаграмме (Рис. 18). \rДанная декомпозиция позволяет упростить описание исходного автомата, сделав его более удобным, а также улучшает структуру автомата, устраняя дублирование действий, выполняемых при срабатывании переходов. «Выделение составного состояния по общему возвратному переходу» может быть применено, если в автомате можно выделить такую группу состояний с единственной входной точкой, что для каждого состояния группы определен возвратный переход по одинаковому для всех состояний стимулу и с эквивалентными для всех состояний действиями. \r\r3.10. Выделение составного состояния для моделей, импортированных из SDL\rНесмотря на то, что сейчас язык UML де-факто является стандартным языком моделирования, среди используемых сегодня в реальных промышленных проектах моделей можно выделить класс систем, которые изначально были описаны на других языках моделирования - преимущественно SDL. В основном, язык SDL использовался для спецификации телекоммуникационных систем. Однако преимущества UML подтолкнули многих разработчиков к преобразованию их моделей в UML. При этом, если описание статической структуры системы на SDL достаточно легко моделируется в UML, то для некоторых элементы SDL, используемые для спецификации конечных автоматов, отсутствуют UML-аналоги, например, понятие «мультисостояния» (multistate). \rВ SDL в символе состояния можно перечислить несколько имен состояний, и тогда все переходы, изображенные выходящими из этого символа, будут относиться ко всем перечисленным состояниям. Кроме того, если в качестве имени состояния указать символ «*», то переходы, выходящие из этого символа, будут относиться ко всем состояниям автомата. Также имеется возможность исключить определенные состояния из множества состояний, описываемого символом «*». Умелое использование этих возможностей позволяет значительно упростить описание переходов, применимых более чем к одному состоянию. Результаты статистического исследования показывают, что символ «*» присутствует в 12 % символов состояния, что свидетельствует о достаточно активном использовании этой подстановки и необходимости ее более детального изучения [19]. \rОтсутствие методов трансформации таких конструкций заставило разработчиков инструментальных средств моделирования пойти по пути внедрения в свои продукты для работы с UML недостающих элементов языка SDL. Так, например, в среде моделирования Telelogic Tau 3.0 поддерживаются «мультисостояния», в том числе, и «*-состояния». Однако для создания моделей, соответствующих стандартному языку UML, необходимо преобразовать подобные состояния в другие элементы, сохранив при этом функциональность автомата. \rПредлагаемая трансформация упрощает мультисостояния следующим образом. Для каждого символа мультисостояния к исходному автомату добавляется новое составное состояние B, которое содержит в точности все состояния A1…An, перечисленные в символе мультисостояния. Все переходы, приписанные мультисостоянию, переносятся в созданное составное состояние. После этого мультисостояние может быть безболезненно удалено из автомата. Кроме того, если у множества состояний A1…An имеется всего одна входная точка A1, то можно определить отдельную диаграмму для спецификации внутренностей созданного составного состояния B, переместив на нее все описания, касающиеся множества состояний A1…An, заменив при этом в исходной диаграмме все операторы перехода в A1 операторами перехода в состояния В. \rПример исходной диаграммы приведен на Рис. 20, а результат преобразования - на Рис. 21. Выделение иерархического состояния также возможно, когда в качестве символа мультисостояния указан «*», то есть определяется переход для всех состояний автомата. \r\r3.11. Пример «Мобильный телефон»\rПродемонстрируем применение предложенных трансформаций на одном из конечных автоматов системы Mobile, моделирующей работу мобильного телефона. \rВ исходной системе конечный автомат представлен на 28 диаграммах, каждая из которых описывает ровно один переход (Рис. 22). \rТакое представление, в котором используется нотация SDL для описания переходов, не позволяет понять цельную структуру конечного автомата. Для упрощения понимания была сгенерирована дополнительная OVERVIEW-диаграмма, описывающая весь конечный автомат в нотации UML (Рис. 23). \rПриведённый алгоритм позволяет найти и выделить из данного конечного автомата три метода. На первом шаге в метод Initialize () выделяются четыре последовательных состояния. На втором шаге выделяется метод Talking (), после чего становится возможным выделить ещё один метод, который назовём Working (). \rОбратим внимание на то, что выделение метода Working () возможно только после выделения метода Talking (). Процесс применения трансформации итеративный. Поиск частей конечного автомата, которые можно вынести в отдельный метод, можно автоматизировать. \rВ результате применения трансформаций исходный конечный автомат сильно упростился и свободно помещается на одной диаграмме (Рис. 24). Теперь он содержит только одно состояние (вместо четырнадцати состояний в исходном автомате) и вызов двух методов. \rВыделены три метода Initialize (), Talking () (Рис. 25) и Working () (Рис. 28), содержащие 4, 5 и 4 состояния соответственно. \rВ методе Talking () три состояния из пяти содержат пары одинаковых возвратных переходов, а остальные два состояния определяют реакцию (defer) на те сигналы, которые инициируют возвратные переходы. Таким образом, к данному методу можно применить трансформацию «выделение составного состояния по общему возвратному переходу». В результате пара общих переходов будет вынесена с основной диаграммы и применена к внешнему составному состоянию (Рис. 26). \rПосле данной трансформации конечный автомат, описывающий поведение метода Talking (), будет перенесён в составное состояние Talking, и из него будут удалены три пары возвратных переходов, что повысит наглядность (Рис. 27). \rПрименив трансформацию «выделение составного состояния для скрытия деталей реализации» для метода Working () и выделив три составных состояния, получим более компактную диаграмму с меньшим количеством переходов (Рис. 29). \r\r4. Заключение\rВ статье были предложены 6 новых методов трансформации исполняемых моделей на языке UML, основанных на композиции и декомпозиции. Была продемонстрирована практическая применимость предлагаемых методов как средства упрощения восприятия и улучшения структуры сложных автоматов. \rКаждый из предложенных методов допускает как автоматизацию выполнения преобразования, так и автоматический поиск частей модели, к которым это преобразование применимо и, вероятно, его применение целесообразно. Приоритетными направлениями дальнейшей работы являются реализация модуля автоматического поиска и применения трансформаций в среде моделирования, наряду с продолжением работ по разработке и исследованию новых методов трансформации.",
         "0",
         "[['метод', 'композиция_декомпозиция', 'исполнять', 'uml', 'модель', '1'], ['введение', 'известный', 'три', 'интеллектуальный', 'возможность', 'человек', 'использовать', 'разработка', 'программный', 'средство', 'способность', 'перебор', 'способность', 'абстракция', 'способность', 'математический', 'индукция'], ['способность', 'человек', 'перебор', 'необходимый', 'создание', 'модификация', 'сложный', 'система', 'число', 'программный', 'комплекс', 'весьма', 'ограничить', 'среднее', 'человек', 'уверенно', 'сбиваться', 'перебирать', 'предел', '1000', 'элемент'], ['средство', 'преодоление', 'ограниченность', 'являться', 'способность', 'человек', 'абстракция', 'человек', 'объединять', 'разный', 'предмет', 'экземпляр', 'понятие', 'заменять', 'множество', 'элемент', 'элемент', 'другого', 'род', 'упрощая', 'самым', 'восприятие'], ['абстракция', 'лежать', 'основа', 'моделирование', 'последний', 'время', 'получить', 'широкий', 'распространение', 'активно', 'использоваться', 'процесс', 'создание', 'программный', 'система'], ['популярный', 'язык', 'моделирование', 'область', 'разработка', 'программный', 'обеспечение', 'момент', 'являться', 'графический', 'язык_uml', 'unified', 'modeling', 'language', 'унифицированный', 'язык', 'моделировании', 'язык', 'предназначить', 'визуализация', 'специфицирование', 'конструирование', 'документирование', 'программный', 'система'], ['выразительный', 'средство', 'язык', 'совокупность', 'мощный', 'механизм', 'расширение', 'достаточный', 'описать', 'программный', 'система', 'точка', 'зрение', 'актуальный', 'различный', 'этап', 'жизненный', 'цикл'], ['широкий', 'становиться', 'область', 'применение', 'концепция', 'модельный', 'ориентированный', 'разработка', 'mdd', 'model', 'drive', 'development'], ['отводить', 'моделям', 'главный', 'роль', 'процесс', 'создание', 'поддержка', 'система'], ['рамка', 'подход', 'разработка', 'сводиться', 'последовательный', 'уточнение', 'модель', 'система', 'начинающемуся', 'абстрактный', 'модель', 'заканчивающемуся', 'готовый', 'программный', 'система'], ['образ', 'использование', 'mdd', 'сложность', 'создавать', 'модель', 'отражать', 'сложность', 'система', 'работа', 'модель', 'создавать', 'трудность', 'возникать', 'чтение', 'понимание', 'большой', 'количество', 'исходный', 'код', 'традиционный', 'язык', 'программирование'], ['перечислить', 'выше', 'фактор', 'обуславливать', 'потребность', 'метод', 'позволять', 'упрощать', 'восприятие', 'сложный', 'модель', 'облегчать', 'работа'], ['время', 'применение', 'метод', 'затрагивать', 'важный', 'пользователь', 'разработчик', 'модель', 'свойство', 'система', 'поведенческий', 'uml', 'задаваться', 'помощь', 'диаграмма', 'конечный_автомат', 'statemachine', 'diagrams', 'диаграмма', 'последовательность', 'sequence', 'diagrams', 'диаграмма', 'деятельность', 'activity', 'diagrams'], ['свойство', 'сближать', 'метод', 'трансформация', 'модель', 'известный', 'приемами', 'рефакторинг', 'объектный', 'ориентированный', 'программный', 'обеспечение'], ['графический', 'природа', 'язык_uml', 'накладывать', 'отпечаток', 'возникать', 'проблема', 'метод', 'решение'], ['язык_uml', 'продолжать', 'развиваться', 'последний', 'сегодняшний', 'день', 'версия', 'стандарт', 'uml', '2.0', 'включать', 'множество', 'новый', 'элемент', 'использовать', 'упрощение', 'восприятие', 'модель'], ['2'], ['конечный_автомат', 'uml', 'конечный_автомат', 'uml', 'описывать', 'поведение', 'следующий', 'элемент', 'исполнять', 'модель', 'активный', 'класс', 'active', 'class', 'операция', 'operation', 'составной_состояние', 'composite', 'state'], ['19', 'провести', 'количественный', 'исследование', 'модель', 'использовать', 'реальный', 'коммерческий', 'проект'], ['составить', 'представительный', 'выборка', 'модель', 'анализ', 'показать', 'несмотря', 'наличие', 'достаточно', 'легко', 'понимать', 'структура', '90', 'исследовать', 'элемент', 'модель', 'диаграмма', 'автомат', 'остаться', '10', 'элемент', 'правило', 'весьма', 'сложный', 'специфицировать', 'основный', 'логика', 'работа', 'система'], ['образ', 'любой', 'попытка', 'понять', 'проанализировать', 'поведенческий', 'сторона', 'сложный', 'система', 'наталкиваться', 'необходимость', 'изучение', 'сложный', 'конечный_автомат', 'описать', 'громоздкий', 'диаграмма', 'состояние'], ['относительно', 'нетривиальный', 'модификация', 'количество', 'время', 'жизнь', 'программный', 'система', 'исчисляться', 'сотня', 'тысяча', 'требоваться', 'понимание', 'логика', 'работа', 'система', 'возникать', 'потребность', 'метод', 'упрощать', 'восприятие', 'система', 'облегчать', 'понимание'], ['предлагаемого', 'подход', 'состоять', 'исходный', 'модель', 'сложный', 'система', 'описывать', 'преобразование', 'трансформируется', 'дополняться', 'элемент', 'образовать', 'иерархический', 'представление', 'удобный', 'случай', 'получить', 'представление', 'общий', 'принцип', 'работа', 'система', 'случай', 'необходимый', 'детальный', 'анализ', 'конкретный', 'аспект'], ['преобразование', 'классифицировать', 'метод', 'композиция_декомпозиция', 'автоматный', 'модель'], ['композиция', 'работа', 'пониматься', 'преобразование', 'модель', 'результат', 'являться', 'создание', 'единый', 'новый', 'целостный', 'сущность', 'несколько', 'иметься', 'сущность'], ['объединение', 'диаграмма', 'элемент', 'диаграмма', 'описывать', 'конкретный', 'автомат', 'примитивный', 'преобразование', 'композиция'], ['отметить', 'трансформация', 'являться', 'пример', 'графический', 'композиция', 'затрагивать', 'элемент', 'описывать', 'графический', 'сущность', 'модель'], ['правило', 'применение', 'композиция', 'способствовать', 'получение', 'целостный', 'представление', 'какой', 'элемент', 'система', 'принять', 'мера', 'предотвращать', 'чрезмерный', 'усложнение', 'создаваемого', 'элемент'], ['декомпозиция', 'понимать', 'преобразование', 'обратный', 'композиция', 'преобразование', 'результат', 'являться', 'создание', 'несколько', 'новый', 'сущность', 'основа', 'единственный', 'исходный', 'сущность'], ['привести', 'пример', 'графический', 'композиция', 'обратный', 'преобразование', 'результат', 'элемент', 'диаграмма', 'распределяться', 'несколько', 'диаграммами'], ['применять', 'композиция_декомпозиция', 'построить', 'иерархический', 'описание', 'сложный', 'элемент', 'система', 'облегчать', 'восприятие'], ['понимание', 'работа', 'система', 'происходить', 'сверху', 'иерархия', 'описание'], ['пользователь', 'знакомиться', 'основный', 'компонент', 'описывать', 'часть', 'модель', 'принцип', 'взаимодействие', 'углубляться', 'переходить', 'детальный', 'описание', 'интересовать', 'компонент'], ['практика', 'достаточно', 'сложный', 'конечный_автомат', 'редко', 'требоваться', '4', '5', 'уровень', 'детализация'], ['упомянутого', 'объединение', 'разбиение', 'диаграмма', 'способ', 'композиция_декомпозиция', 'автомат', 'основать', 'использование', 'элемент', 'язык_uml', 'метка'], ['использование', 'позволять', 'графически', 'отделить', 'участок', 'диаграмма', 'состояние', 'перенести', 'другую', 'диаграмма', 'расположить', 'отдельно', 'исходный', 'диаграмма'], ['введение', 'метка', 'способствовать', 'повторный', 'использование', 'фрагмент', 'диаграмма', 'переход', 'единожды', 'описать', 'метка', 'выполнить', 'многократно', 'различный', 'часть', 'автомат'], ['написание', 'программа', 'традиционный', 'язык', 'программирование', 'использование', 'метка', 'спецификация', 'автомат', 'заметно', 'усложнять', 'понимание', 'принцип', 'работа', 'автомат'], ['затруднительный', 'становиться', 'анализ', 'отдельный', 'переход', 'автомат', 'цель', 'выяснение', 'состояние', 'автомат', 'перейти', 'срабатывание', 'переход', 'последовательность', 'действие', 'переход', 'встречаться', 'команда', 'переход', 'метка', 'описание', 'метка', 'распределить', 'многочисленный', 'диаграммам'], ['мнение', 'использование', 'метка', 'описание', 'конечный_автомат', 'оправдать', 'исключительно', 'редкий', 'случай', 'действие_выполнять', 'срабатывание', 'переход', 'настолько', 'сложный', 'требоваться', 'отдельный', 'диаграмма', 'описание', 'часть'], ['3'], ['метод', 'композиция_декомпозиция', 'конечный_автомат', 'uml', 'результат', 'провести', 'исследование', 'разработать', 'метод', 'композиция_декомпозиция', 'конечный_автомат', 'uml'], ['предложенные', 'метод', 'базироваться', 'два', 'основный', 'идея', 'объединение', 'часть', 'состояние', 'конечный_автомат', 'структурный', 'единица', 'конечный_автомат', 'метод', 'формирование', 'иерархический', 'единица', 'конечный_автомат', 'составной_состояние'], ['3.1'], ['трансформация_выделение', 'метод', 'конечный_автомат', 'uml', 'идея', 'трансформация_выделение', 'метод', 'состоять', 'создание', 'новый', 'метод', 'перенос', 'часть', 'исходный', 'автомат', 'добавить', 'метод'], ['трансформация', 'аналогичный', 'известный', 'рефакторинг', 'выделение_метод', 'объектно', 'ориентированный', 'язык', 'программирование', 'описать', 'каталог', 'фаулера', '6'], ['традиционный', 'трансформация', 'состоять', 'выделение', 'участок', 'код', 'перемещение', 'метод'], ['позволять', 'сделать', 'код', 'исходный', 'метод', 'понятный', 'повышать', 'вероятность', 'повторный', 'использование', 'выделить', 'метод'], ['корректный', 'выполнение', 'традиционный', 'рефакторинг', 'выделение_метод', 'требоваться', 'тщательный', 'анализ', 'поток', 'выделяемом', 'участок', 'код', 'использовать', 'переменный', 'передать', 'метод', 'качество', 'параметр', 'изменение', 'переменный', 'образ', 'возвратить', 'исходный', 'метод', 'изменить', 'переменный', 'использоваться'], ['первичный', 'рассмотрение', 'проблема', 'выделение_метод', 'автомат', 'проблема', 'обойти', 'следующий', 'образ'], ['использовать', 'переменная', 'являться', 'атрибут', 'автомат', 'сущность', 'содержать', 'автомат', 'видный', 'выделить', 'метод', 'следовательно', 'передавать', 'качество', 'параметр'], ['использовать', 'переменная', 'являться', 'локальный', 'действие_выполнять', 'переход', 'перенесение', 'действие', 'переход', 'выделять', 'метод', 'определение', 'локальный', 'переменный', 'использование', 'перенести'], ['выделение_метод', 'помещаться', 'действие_выполнять', 'переход', 'требоваться', 'дополнительный', 'анализ', 'поток'], ['подчеркнуть', 'исключительный', 'важность', 'автоматизировать', 'поддержка', 'рефакторинг', 'проведение', 'преобразование', 'сложность', 'проводить', 'анализ', 'способствовать', 'ошибка'], ['идея', 'лежать', 'основа', 'традиционный', 'рефакторинг', 'выделение_метод', 'применить', 'конечный_автомат', 'несколько', 'способ'], ['конечный_автомат', 'uml', 'применить', 'традиционный', 'трансформация_выделение', 'метод', 'состоять', 'выделение_метод', 'подпоследовательность', 'действие', 'переход', 'конечный_автомат'], ['рамка', 'описываемого', 'исследование', 'разработать', 'новый', 'вариант', 'трансформация_выделение', 'метод', 'специфичный', 'конечный_автомат', 'uml', 'выделение_метод', 'часть_конечный', 'автомат', 'подразумевать', 'перенос', 'выделять', 'метод', 'действие', 'связать', 'переход', 'переход', 'состояние'], ['3.2'], ['выделение_метод', 'возвратной', 'часть_конечный', 'автомат', 'назовём', 'возвратной', 'часть_конечный', 'автомат', 'состояние', 'x', 'группа', 'состояние', 'конечный_автомат', 'вход', 'некоторый', 'состояние', 'x', 'переход', 'выходить', 'предел', 'группа', 'попадать', 'обратно', 'x.', 'состояние', 'входить', 'группа', 'возможный', 'любой', 'переход', 'существовать', 'ровно', 'состояние', 'выполняться', 'переход', 'группа', 'попадать', 'переход', 'вести', 'предел', 'выбрать', 'группа', 'состояние'], ['согласно', 'исследование', 'провести', '19', 'конечный_автомат', 'использовать', 'промышленный', 'система', 'содержать', 'возвратный', 'часть', 'различный', 'состояние'], ['состоять', '1', '3', 'состояние', 'каждый', 'третий', 'конечный_автомат', 'больший', 'количество', 'состояние', 'встречаться', 'возвратный', 'часть', '4', 'состояние'], ['большой', 'количество', 'состояние', 'затруднять', 'восприятие', 'общий', 'схема', 'работа', 'конечный_автомат'], ['зачастую', 'конечный_автомат', 'приходиться', 'описывать', 'несколько', 'диаграмма', 'нарушать', 'целостность', 'картина'], ['состояние', 'входить', 'возвратный', 'часть_конечный', 'автомат', 'перенести', 'отдельный', 'метод', 'сократить', 'общий', 'количество', 'состояние', 'автомат'], ['назовём', 'трансформация_выделение', 'метод', 'возвратной', 'часть_конечный', 'автомат'], ['рассмотреть', 'определение', 'часть', 'модельный', 'конечный_автомат', 'представить', 'рис'], ['1'], ['автомат', 'допускать', 'выделение_метод', 'состояние', 'x', 'существовать', 'возвратная', 'часть_конечный', 'автомат', 'состоять', 'состояние', 'y.', 'результат', 'применение_трансформация', 'выделение_метод', 'создаваться', 'метод_proc', 'реализация', 'вид', 'конечный_автомат'], ['состояние', 'возвратной', 'часть_конечный', 'автомат', 'пример', 'y', 'переноситься', 'выделить', 'метод'], ['действие_приписать', 'переход', 'y', 'становиться', 'действие_приписать', 'начальный', 'переход', 'конечный_автомат', 'метод_proc'], ['исходный', 'конечный_автомат', 'вставляться', 'вызов', 'метод_proc', 'команда', 'переход', 'исходный', 'состояние', 'x', 'рис'], ['2'], ['команда', 'переход', 'состояние', 'x', 'создать', 'конечный_автомат', 'заменяться', 'команда', 'возврат', 'метод', 'return', 'рис', '3'], ['часть', 'автомат', 'выделить', 'метод', 'обладать', 'следующий', 'семантика', 'получить', 'сигнал', 'sig3', 'автомат', 'выполнять', 'действие', 'начинать', 'состояние', 'y', 'завершение', 'возвращаться', 'состояние', 'x.'], ['логика', 'близкий', 'смысл', 'вызов', 'метод', 'выполнение', 'задача', 'последующий', 'возврат', 'исходный', 'состояние'], ['служить', 'основание', 'выделение_метод'], ['результат', 'преобразование', 'выделяться', 'структурный', 'единица', 'автомат', 'метод', 'диаграмма', 'описывать', 'конечный_автомат', 'уменьшаться', 'упрощать', 'понимание'], ['выделенный', 'метод', 'использовать', 'повторно', 'уменьшение', 'дублирование', 'код'], ['существовать', 'частный', 'случай', 'трансформация_выделение', 'метод', 'группа', 'состояние', 'автомат', 'переход', 'завершать', 'работа', 'автомат', 'вести', 'символ', 'stop'], ['случай', 'выделение_метод', 'корректный', 'команда', 'завершение', 'работа', 'автомат', 'выделить', 'метод', 'stop', 'заменяться', 'команда', 'возврат', 'метод', 'return', 'действие_приписать', 'исходный', 'переход', 'добавляться', 'вызов', 'метод_proc', 'команда', 'завершение', 'работа', 'автомат', 'stop'], ['случай', 'преобразовать', 'автомат', 'выглядеть', 'показать', 'рис'], ['4', '3.3'], ['выделение_метод', 'последовательный', 'часть_конечный', 'автомат', 'многих', 'конечный_автомат', 'встречаться', 'последовательный', 'часть', 'состояние', 'вытянуть', 'цепочка', 'вход', 'выход', 'каждый', 'состояние', 'рис', '5'], ['согласно', 'исследование', 'провести', '19', '25', 'рассмотреть', 'крупный', 'автомат', 'содержать', 'последовательный', 'цепочка', 'длинный', '3', 'состояние'], ['ситуация', 'состояние', 'входить', 'цепочка', 'перенести', 'метод'], ['позволить', 'упростить', 'общий', 'вид', 'конечный_автомат', 'уменьшить', 'количество', 'состояние', 'переход', 'скрыть', 'деталь', 'поведение', 'автомат', 'последовательный', 'прохождение', 'несколько', 'состояние'], ['назовём', 'трансформация_выделение', 'метод', 'последовательный', 'часть_конечный', 'автомат'], ['результат', 'применение_трансформация', 'выделение_метод', 'создаваться', 'метод_proc', 'реализация', 'вид', 'конечный_автомат', 'рис', '6'], ['состояние', 'последовательный', 'цепочка', 'состояние', 'пример', 'x', 'y', 'z', 'переноситься', 'выделить', 'метод'], ['последний', 'переход', 'цепочка', 'состояние', 'перенести', 'метод', 'завершаться', 'возврат', 'метод', 'return'], ['действие_приписать', 'начало', 'цепочка', 'переход', 'становиться', 'действие_приписать', 'начальный', 'переход', 'конечный_автомат', 'метод_proc'], ['исходный', 'конечный_автомат', 'вставляться', 'вызов', 'метод_proc', 'команда', 'переход', 'состояние', 'следующий', 'цепочка', 'q', 'рис', '7', 'последовательный', 'цепочка', 'состояние', 'использовать', 'конечный_автомат', 'являться', 'некий', 'многошаговый', 'переход', 'определять', 'последовательность', 'действие', 'состояние', 'пройти', 'попасть', 'очередной', 'часть', 'автомат'], ['образ', 'состояние', 'переход', 'формировать', 'цепочка', 'являться', 'логически', 'связать', 'допускать', 'группировка', 'отдельный', 'структурный', 'единица', 'автомат', 'метод'], ['3.4'], ['условие', 'выделение', 'часть_конечный', 'автомат', 'метод', 'автоматизация', 'проведение', 'преобразование', 'крупный', 'конечный_автомат', 'являться', 'исключительно', 'важный', 'задача', 'сложность', 'проводить', 'анализ', 'способствовать', 'возникновение', 'ошибка'], ['этап', 'процесс', 'автоматизация', 'являться', 'возможность', 'автоматический', 'поиск', 'часть_конечный', 'автомат', 'поместить', 'отдельный', 'метод', 'согласно', 'описать', 'выше', 'подход'], ['выделение_метод', 'появляться', 'новый', 'группа', 'состояние', 'удовлетворять', 'условие', 'выделение_метод', 'возможность', 'автоматически', 'выполнять', 'итеративный', 'поиск', 'возвращение', 'выявление', 'оптимальный', 'последовательность', 'трансформация'], ['сказать', 'выше', 'подтверждать', 'актуальность', 'востребованность', 'следующий', 'задача', 'сформулировать', 'достаточно', 'формальный', 'условие', 'выделение', 'часть_конечный', 'автомат', 'метод', 'общий', 'предложить', 'трансформация'], ['приводиться', 'условие'], ['обозначим', 'переход', 'состояние', 'состояние', 'b', 'событие', 'sig', 'выполнять', 'действие', 'act', 't', 'a?>b', 'sig', 'act'], ['обозначить', 'конечный', 'состояние', 'автомат', 'stop', 'ветвление', 'условие', 'cond', 'decision', 'cond', 'конечный', 'состояние', 'процедура', 'возврат', 'процедура', 'return'], ['переход', 'ветвление', 'условие', 'cond', 'конечный', 'состояние', 'автомат', 'обозначаться', 't', 'decision', 'cond', '>', 'stop', 'sig', 'act'], ['диаграмма', 'конечный_автомат', 'записать', 'нотация', 'uml', 'стрелка', 'обозначать', 'переход', 'присутствовать', 'следующий', 'элемент', 'состояние', 'автомат', 'символ', 'ветвление', 'условие', 'decision', 'начальный', 'состояние', 'конечный', 'состояние', 'stop', 'символ', 'возврат', 'процедура', 'return'], ['назовём', 'элемент', 'узел', 'конечный_автомат'], ['рассмотреть', 'множество_узел', 'n', 'конечный_автомат'], ['назовём', 'узел', 's', '\\x01', 'n', 'входной', 'множество_узел', 'n', 'существовать', 'переход', 't', 'a->s', 'sig', 'act', 'a', '\\x01', 'n.', 'назовём', 'узел', 'b', '\\x01', 'n', 'выходной', 'множество_узел', 'n', 'существовать', 'переход', 't', 's->b', 'sig', 'act', 's', '\\x01', 'n.', 'сформулируем', 'условие', 'выделение', 'часть_конечный', 'автомат', 'метод', 'множество_узел', 'n', 'содержать', 'stop', 'переход', 'перенести', 'отдельный', 'метод', 'множество_узел', 'n', 'существовать', 'ровно', 'входной', 'узел', 'выходной_узел'], ['поиск', 'часть', 'автомат', 'перенести', 'отдельный', 'метод', 'использоваться', 'условие'], ['искать', 'множество_узел', 'входной', 'выходной_узел'], ['рис'], ['8', 'привести', 'пример', 'автомат', 'удовлетворять', 'задать', 'условие'], ['условие', 'ограничивать', 'количество', 'переход', 'попасть', 'входной', 'выходной_узел', 'рисунок', 'входной', 'узел', 'decision', 'x', 'выходной_узел', 'q', 'существовать', 'два', 'переход', 'вести'], ['узел', 'выделить', 'множество', 'decision', 'x', 's1', 's2', 's3', 'перемещаться', 'новый', 'метод_proc'], ['переход', 'вести', 'входной', 'состояние', 'трансформация', 'направляться', 'выходной', 'состояние', 'q.', 'действие_выполнять', 'переход', 'добавляться', 'вызов', 'метод_proc', 'рис', '9'], ['переход', 'вести', 'выходной', 'состояние', 'переноситься', 'метод', 'направляться', 'символ', 'возврат', 'процедура', 'рис', '10'], ['основа', 'необходимый', 'свойство', 'выделение', 'часть_конечный', 'автомат', 'метод', 'лежать', 'следующий', 'идея'], ['состояние', 'переносить', 'выделять', 'метод', 'переставать', 'принадлежать', 'исходный', 'автомат', 'следовательно', 'некорректный', 'команда', 'переход', 'приводить', 'состояние', 'исходный', 'автомат', 'состояние', 'перенести', 'выделить', 'автомат'], ['команда', 'переход', 'смена', 'состояние', 'заменить', 'команда', 'вызов', 'выделяемого', 'метод'], ['автомат', 'реализовать', 'метод', 'входной', 'точка', 'команда', 'осуществлять', 'переход', 'состояние'], ['аналогичный', 'рассуждение', 'касаться', 'обратный', 'переход', 'состояние', 'выделить', 'метод', 'состояние', 'исходный', 'автомат'], ['трансформация_выделение', 'метод', 'конечный_автомат', 'описать', 'предыдущий', 'два', 'параграф', 'являться', 'частный', 'случай', 'трансформация', 'общий', 'вид', 'базироваться', 'необходимый', 'условие'], ['случай', 'входной', 'узел', 'совпадать', 'выходной', 'получать', 'возвратный', 'часть_конечный', 'автомат', 'выделить', 'метод'], ['последовательный', 'часть_конечный', 'автомат', 'удовлетворять', 'необходимый', 'условие', 'выделение', 'часть_конечный', 'автомат', 'метод'], ['существовать', 'частный', 'случай', 'привести', 'необходимый', 'условие', 'множество_узел', 'ни', 'выходной_узел', 'необходимый', 'условие', 'содержать', 'stop', 'возврат', 'создать', 'метод', 'невозможный'], ['конечный_автомат', 'найти', 'бесконечный', 'цикл', 'представлять', 'серверный', 'составляющую', 'исходный', 'автомат'], ['случай', 'выходной_узел', 'stop', 'выделить', 'метод', 'выполнять', 'действие', 'автомат', 'завершать', 'работа', 'новый', 'метод', 'являться', 'некий', 'аналог', 'деструктор', 'объектный', 'ориентированный', 'программирование'], ['3.5'], ['трансформация_выделение', 'составной_состояние', 'конечный_автомат', 'uml', 'автоматы', 'содержать', 'составной_состояние', 'составлять', '2', 'исследовать', '19', 'автомат', 'позволять', 'сделать', 'вывод', 'достаточно', 'редкий', 'использование', 'несмотря', 'выразительный', 'мощность'], ['причина', 'служить', 'факт', 'составной_состояние', 'являться', 'часть', 'язык', 'sdl', 'версия', 'sdl-2000'], ['образ', 'предположить', 'многим', 'разработчик', 'модель', 'работать', 'язык', 'sdl', 'недостаточно', 'известный', 'конструкция'], ['введение', 'составной', 'иерархический', 'состояние', 'являться', 'достаточно', 'важный', 'метод', 'композиция', 'использовать', 'создание', 'легко', 'воспринимаемого', 'описание', 'автомат'], ['следующий', 'параграф', 'описываться', 'способ', 'выделение_составной', 'состояние', 'конечный_автомат', 'uml'], ['3.6'], ['выделение_составной', 'состояние', 'скрытие', 'деталь', 'реализация', 'промышленный', 'модель', 'спецификация', 'поведение', 'объект', 'достаточно', 'использоваться', 'автомат', 'иметь', 'состояние'], ['структура', 'характерный', 'класс', 'обладать', 'сложный', 'внутренний', 'логика', 'реализовать', 'сервис', 'компонент', 'система'], ['единственный', 'иметься', 'состояние', 'носить', 'имя', 'idle', 'wait', 'объект', 'ожидать', 'запрос', 'выполнение', 'операция'], ['получение', 'запрос', 'инициировать', 'срабатывание', 'переход', 'процесс', 'выполняться', 'действие'], ['завершение', 'обработка', 'объект', 'возвращаться', 'исходный', 'состояние'], ['частота', 'использование', 'приём', 'позволить', 'выделить', 'основа', 'типичный', 'образец', 'проектирование', 'получить', 'название', 'ромашка', 'счёт', 'визуальный', 'схожесть', 'описание', 'автомат', 'цветок'], ['случай', 'автомат', 'описывать', 'сложный', 'компонент', 'система', 'удовлетворять', 'целиком', 'описать', 'образец', 'зачастую', 'удаваться', 'выделить', 'элемент', 'описание', 'соответствовать'], ['обособить', 'часть', 'счёт', 'использование', 'описать', 'параграф', 'трансформация'], ['наличие', 'несколько', 'основный', 'состояние', 'деталь', 'описание', 'каждый', 'значительно', 'усложнять', 'диаграмма', 'показать', 'рис'], ['11'], ['перегрузить', 'символ', 'диаграмма', 'затруднять', 'понимание', 'преобразовать', 'простой', 'вид'], ['выполнение', 'трансформация', 'выбираться', 'состояние', 'иметь', 'возвратный', 'переход', 'z.', 'состояние', 'заменяться', 'составной_состояние', 'z', 'содержать', 'состояние', 'z_internals'], ['спецификация', 'внутренность', 'составной_состояние', 'z', 'создаваться', 'новый', 'диаграмма', 'определяться', 'начальный', 'переход', 'вести', 'z_internals'], ['возвратный', 'переход', 'состояние', 'z', 'переноситься', 'внутрь', 'составной_состояние', 'приписываться', 'состояние', 'z_internals'], ['результат', 'применение_трансформация', 'представить', 'рис'], ['12', 'рис'], ['13'], ['рис'], ['13'], ['результат', 'трансформация', 'результат', 'применение', 'преобразование', 'описание', 'автомат', 'становиться', 'иерархичным', 'удобный', 'восприятие', 'структурируются', 'упрощаются', 'диаграмма', 'специфицировать', 'автомат'], ['выполнение', 'трансформация', 'оправдываться', 'случай', 'иметься', 'состояние', 'больший', 'количество', 'переход'], ['правило', 'наличие', 'многих', 'переход', 'некоторый', 'состояние', 'говорить', 'наличие', 'особый', 'семантический', 'роль', 'функциональность', 'реализовать', 'автомат', 'состояние'], ['выделение_составной', 'состояние', 'позволить', 'случай', 'подчеркнуть', 'функциональность', 'семантически', 'графически', 'перенос', 'описание', 'новый', 'диаграмма'], ['преобразование', 'применить', 'любой', 'состояние', 'автомат', 'оправдываться', 'точка', 'зрение', 'семантика'], ['3.7'], ['метод', 'текстовый', 'сравнение', 'переход', 'написание', 'программа', 'традиционный', 'язык', 'программирование', 'создание', 'uml', 'модель', 'крайне', 'желательный', 'избегать', 'дублирование', 'элемент', 'модель', 'повторно', 'использовать', 'существовать', 'элемент', 'наличие', 'несколько', 'копия', 'какой', 'элемент', 'модель', 'осложнять', 'понимание', 'модификация'], ['контекст', 'исполнять', 'модель', 'специфицированных', 'конечный_автомат', 'практика', 'встречаться', 'дублирование', 'общий', 'архитектура', 'автомат', 'дублирование', 'переход'], ['первый', 'случай', 'модель', 'встречаться', 'похожий', 'вид', 'необязательно', 'эквивалентный', 'автомат'], ['избежать', 'дублирование', 'ситуация', 'весьма', 'затруднительный', 'описать', 'повторяться', 'часть', 'автомат', 'типичный', 'приём', 'проектирование', 'автомат', 'pattern', 'сохранить', 'информация', 'использование', 'образец', 'комментарий', 'автомат'], ['случай', 'наличие', 'автомат', 'эквивалентный', 'переход', 'дублирование', 'устранить', 'счёт', 'применение_трансформация', 'описать', 'следующий', 'параграф'], ['задача', 'автоматический', 'обнаружение', 'эквивалентный', 'переход', 'оказываться', 'достаточно', 'сложный', 'весьма', 'актуальный', 'больший', 'автоматный', 'модель'], ['эквивалентность', 'переход', 'автомат', 'означать', 'совпадение', 'список', 'стимул', 'инициировать', 'переход', 'эквивалентность', 'действие_выполнять', 'срабатывание', 'задать', 'переход'], ['автоматический', 'проверка', 'эквивалентность', 'список', 'сигнал', 'инициировать', 'сравниваемые', 'переход', 'представлять', 'трудность', 'проблема', 'определение', 'эквивалентность', 'два', 'программа', 'сводиться', 'проверка', 'эквивалентность', 'последовательность', 'действие_выполнять', 'переход', 'алгоритмически', 'неразрешимый'], ['сложный', 'определить', 'критерий', 'эквивалентность', 'два', 'автомат'], ['несмотря', 'конечный_автомат', 'весьма', 'зарекомендовать', 'простой', 'подход', 'состоять', 'сравнение', 'текстовый', 'строка', 'описывать', 'переход'], ['очевидный', 'простота', 'реализация', 'способ', 'позволять', 'достаточно', 'эффективно', 'находить', 'автомат', 'эквивалентный', 'переход'], ['эквивалентность', 'текстуальный', 'совпадать', 'действие_приписать', 'переход', 'практически', 'очевидный'], ['достаточный', 'учесть', 'переход', 'описать', 'контекст', 'конечный_автомат', 'использовать', 'описание', 'идентификатор', 'имя', 'функция', 'переменный', 'означать', 'оба', 'переход', 'объект'], ['имя', 'переход', 'относиться', 'объект', 'объявить', 'локально', 'определение', 'текстуальный', 'совпадать', 'оба', 'переход', 'повторить', 'рассуждение', 'относиться', 'объект', 'определенному', 'контекст', 'автомат', 'высоко', 'случай', 'правило', 'идентификатор', 'сопоставляться', 'элемент', 'модель', 'дать', 'одинаковый', 'результат', 'оба', 'переход', 'применение', 'оба', 'случай', 'начинать', 'автомат', 'содержать', 'рассматривать', 'переход', 'переход', 'содержать', 'подходить', 'объект'], ['текстуальный', 'совпадение', 'переход', 'гарантировать', 'эквивалентность'], ['отсутствие', 'текстуальный', 'совпадение', 'отнюдь', 'обязательно', 'означать', 'отсутствие', 'эквивалентность', 'пример', 'переход', 'выполняться', 'действие', 'a++', 'b++', 'другом', 'b++', 'a++', 'a', 'b', 'являться', 'атрибут', 'класс', 'содержать', 'автомат', 'переход', 'считать', 'эквивалентный', 'текстуальный', 'различный'], ['текстуальный', 'сравнение', 'использовать', 'позволять', 'получать', 'приемлемый', 'результат'], ['метод', 'текстуальный', 'сравнение', 'усовершенствовать', 'следующий', 'образ', 'сравнение', 'строка', 'описывать', 'переход', 'удаляться', 'фрагмент', 'иметь', 'отношение', 'выполнять', 'действие', 'комментарий'], ['локальный', 'идентификатор', 'случай', 'количество', 'оба', 'переход', 'одинаково', 'переименовать', 'иметь', 'имя', 'порядок', 'объявление'], ['автоматизация', 'поиск', 'эквивалентный', 'переход', 'позволять', 'упростить', 'процесс', 'применение_трансформация', 'устранять', 'дублирование', 'переход'], ['3.8'], ['выделение_составной', 'состояние', 'общий', 'переход', 'рассматриваемую', 'трансформация', 'применять', 'исходный', 'автомат', 'достаточно', 'состояние', 'выделить', 'группа', 'семантически', 'связать', 'состояние', 'каждый', 'существовать', 'переход', 'эквивалентный', 'некоторому', 'задать', 'переход'], ['достаточно', 'создание', 'промышленный', 'модель', 'возникать', 'ситуация', 'невозможный', 'знать', 'заранее', 'точный', 'время', 'условие', 'осуществление', 'событие', 'приход', 'сигнал', 'окружение', 'система'], ['событие', 'достаточно', 'важный', 'допускать', 'отложенной', 'обработка', 'разработчик', 'конечный_автомат', 'вынудить', 'описать', 'реакция', 'событие', 'несколько', 'возможный', 'состояние', 'знать', 'какой', 'состояние', 'автомат', 'момент', 'осуществление', 'событие'], ['описание', 'затруднять', 'понимание', 'приводить', 'ненужный', 'дублирование', 'код', 'повышать', 'вероятность', 'возникновение', 'ошибка', 'случай', 'изменение', 'реакция', 'событие', 'добавление', 'автомат', 'новый', 'состояние'], ['трансформация', 'состоять', 'два', 'этап', 'являться', 'композиционный', 'преобразование'], ['проведение', 'преобразование', 'выбрать', 'переход', 'копия', 'определить', 'несколько', 'состояние', 'исходный', 'автомат'], ['первый', 'этап', 'создаваться', 'новый', 'иерархический', 'состояние', 'включаться', 'состояние', 'иметь', 'переход', 'эквивалентный', 'выбрать'], ['второй', 'этап', 'состояние', 'удаляться', 'переход', 'эквивалентные', 'выбрать', 'создать', 'иерархический', 'состояние', 'переход', 'добавляться'], ['применение_трансформация', 'автомат', 'изобразить', 'рис'], ['14', 'позволять', 'выделить', 'составной_состояние', 'on', 'содержать', 'состояние', 'x', 'y', 'q', 'z', 'качество', 'выделить', 'переход', 'использовать', 'переход', 'сигнал', 'turnoff'], ['спецификация', 'внутренность', 'составной_состояние', 'создаваться', 'диаграмма', 'привести', 'рис'], ['15', 'модифицировать', 'исходный', 'автомат', 'показать', 'рис'], ['16'], ['введение', 'иерархический', 'состояние', 'позволить', 'упростить', 'исходный', 'диаграмма', 'счёт', 'удаление', 'дублировавшихся', 'переход', 'сделать', 'наглядный', 'понятный'], ['замена', 'множество', 'одинаковый', 'переход', 'помогать', 'избежать', 'ошибка', 'изменение', 'спецификация', 'действие_выполнять', 'срабатывание', 'переход'], ['рис'], ['15'], ['результат', 'трансформация', 'спецификация', 'составной_состояние', 'on', 'создание', 'автомат', 's', 'новый', 'составной_состояние', 'b', 'содержать', 'состояние', 'a1_an', 'корректно', 'случай', 'добавление', 'нарушать', 'строгий', 'иерархия', 'состояние', 'включение'], ['слово', 'новый', 'состояние', 'изобразить', 'диаграмма', 'состояние', 'описывать', 'автомат', 'пересекать', 'граница', 'существовать', 'состояние'], ['перенос', 'переход', 't', 'состояние', 'd1', 'dn', 'состояние', 'e', 'корректный', 'случай', 'e', 'являться', 'составной_состояние', 'содержать', 'никакой', 'состояние', 'd1', 'dn', 'каждый', 'состояние', 'd1', 'dn', 'переход', 'эквивалентный', 't', 'переход', 'срабатывать', 'условие', 't.', '3.9'], ['выделение_составной', 'состояние', 'общий', 'возвратный', 'переход', 'причина', 'описать', 'негативный', 'влияние', 'дублирование', 'переход', 'желательный', 'устранять', 'эквивалентные', 'действие', 'находиться', 'неэквивалентный', 'переход'], ['параграф', 'описать', 'трансформация', 'позволять', 'устранить', 'дублирование', 'действие', 'переход', 'отличаться', 'состояние', 'переводить', 'автомат'], ['сложный', 'автомат', 'достаточно', 'типичный', 'ситуация', 'какой', 'событие', 'одинаковый', 'образ', 'обработать', 'несколько', 'состояние', 'обработка', 'прерывать', 'основной', 'ход', 'событие', 'окончание', 'автомат', 'возвратиться', 'исходный', 'состояние'], ['пример', 'событие', 'протоколирование', 'активность', 'фоновый', 'автомат', 'задача'], ['моделирование', 'поведение', 'вынуждать', 'разработчик', 'определять', 'каждый', 'состояние', 'обработать', 'фоновый', 'активность', 'переход', 'содержать', 'эквивалентный', 'последовательность', 'действие', 'возвращать', 'автомат', 'исходный', 'состояние'], ['переход', 'избыточный', 'загромождать', 'описание', 'автомат', 'мешать', 'восприятие', 'рис'], ['17'], ['предлагаемая', 'трансформация', 'выполняться', 'аналогично', 'предыдущий'], ['первый', 'шаг', 'выделяться', 'множество', 'состояние', 'a1_an', 'автомат', 's', 'каждый', 'существовать', 'переход', 'ti', 'обладать', 'следующий', 'свойство', 'срабатывать', 'условие', 't', 'выполняться', 'действие', 'act', 'завершение', 'автомат', 'возвращаться', 'исходный', 'состояние', 'ai'], ['автомат', 's', 'добавляться', 'новый', 'составной_состояние', 'b', 'содержать', 'состояние', 'a1_an', 'спецификация', 'состояние', 'создаваться', 'отдельный', 'диаграмма', 'd.', 'автомат', 's', 'добавляться', 'переход', 't', 'состояние', 'b', 'стимул', 't', 'выполнять', 'действие', 'act', 'завершаться', 'оператор', 'переход', 'состояние', 'история', 'deep', 'history', 'state'], ['множество', 'состояние', 'a1_an', 'иметься', 'входной', 'точка', 'a1', 'дальнейший', 'преобразование', 'автомат'], ['оператор', 'переход', 'состояние', 'a1', 'заменяться', 'оператор', 'переход', 'состояние', 'состояние', 'добавляться', 'стартовый', 'переход', 'вести', 'состояние', 'a1'], ['становиться', 'возможный', 'переместить', 'состояние', 'a1_an', 'исходный', 'диаграмма', 'диаграмма', 'd', 'рис', '19', 'добавить', 'состояние', 'переход', 'т', 'исходный', 'диаграмма', 'рис', '18'], ['декомпозиция', 'позволять', 'упростить', 'описание', 'исходный', 'автомат', 'сделать', 'удобный', 'улучшать', 'структура', 'автомат', 'устранять', 'дублирование', 'действие_выполнять', 'срабатывание', 'переход'], ['выделение_составной', 'состояние', 'общий', 'возвратный', 'переход', 'применить', 'автомат', 'выделить', 'группа', 'состояние', 'единственный', 'входной', 'точка', 'каждый', 'состояние', 'группа', 'определить', 'возвратный', 'переход', 'одинаковому', 'состояние', 'стимулу', 'эквивалентный', 'состояние', 'действие'], ['3.10'], ['выделение_составной', 'состояние', 'модель', 'импортировать', 'sdl', 'несмотря', 'язык_uml', 'факто', 'являться', 'стандартный', 'язык', 'моделирование', 'использовать', 'сегодня', 'реальный', 'промышленный', 'проект', 'модель', 'выделить', 'класс', 'система', 'изначально', 'описать', 'язык', 'моделирование', 'преимущественно', 'sdl'], ['основный', 'язык', 'sdl', 'использоваться', 'спецификация', 'телекоммуникационный', 'система'], ['преимущество', 'uml', 'подтолкнуть', 'многих', 'разработчик', 'преобразование', 'модель', 'uml'], ['описание', 'статический', 'структура', 'система', 'sdl', 'достаточно', 'легко', 'моделируется', 'uml', 'элемент', 'sdl', 'использовать', 'спецификация', 'конечный_автомат', 'отсутствовать', 'uml', 'аналог', 'понятие', 'мультисостояния', 'multistate'], ['sdl', 'символ', 'состояние', 'перечислить', 'имя', 'состояние', 'переход', 'изобразить', 'выходить', 'символ', 'относиться', 'перечислить', 'состояние'], ['качество', 'имя', 'состояние', 'указать', 'символ', 'переход', 'выходить', 'символ', 'относиться', 'состояние', 'автомат'], ['иметься', 'возможность', 'исключить', 'определённый', 'состояние', 'множество', 'состояние', 'описываемого', 'символ'], ['умелый', 'использование', 'возможность', 'позволять', 'значительно', 'упростить', 'описание', 'переход', 'применимых', 'состояние'], ['результат', 'статистический', 'исследование', 'показывать', 'символ', 'присутствовать', '12', 'символ', 'состояние', 'свидетельствовать', 'достаточно', 'активный', 'использование', 'подстановка', 'детальный', 'изучение', '19'], ['отсутствие', 'метод', 'трансформация', 'конструкция', 'заставить', 'разработчик', 'инструментальный', 'средство', 'моделирование', 'пойти', 'путь', 'внедрение', 'продукт', 'работа', 'uml', 'недоставать', 'элемент', 'язык', 'sdl'], ['среда', 'моделирование', 'telelogic', 'tau', '3.0', 'поддерживаться', 'мультисостояния', 'число', '-состояния'], ['создание', 'модель', 'соответствовать', 'стандартный', 'язык_uml', 'преобразовать', 'состояние', 'элемент', 'сохранить', 'функциональность', 'автомат'], ['предлагаемая', 'трансформация', 'упрощать', 'мультисостояния', 'следующий', 'образ'], ['каждый', 'символ', 'мультисостояния', 'исходный', 'автомат', 'добавляться', 'новый', 'составной_состояние', 'b', 'содержать', 'точность', 'состояние', 'a1_an', 'перечислить', 'символ', 'мультисостояния'], ['переход', 'приписать', 'мультисостоянию', 'переноситься', 'создать', 'составной_состояние'], ['мультисостояние', 'безболезненно', 'удалить', 'автомат'], ['множество', 'состояние', 'a1_an', 'иметься', 'входной', 'точка', 'a1', 'определить', 'отдельный', 'диаграмма', 'спецификация', 'внутренность', 'создать', 'составной_состояние', 'b', 'переместить', 'описание', 'касаться', 'множество', 'состояние', 'a1_an', 'заменить', 'исходный', 'диаграмма', 'оператор', 'переход', 'a1', 'оператор', 'переход', 'состояние', 'в.', 'пример', 'исходный', 'диаграмма', 'привести', 'рис'], ['20', 'результат', 'преобразование', 'рис'], ['21'], ['выделение', 'иерархический', 'состояние', 'качество', 'символ', 'мультисостояния', 'указать', 'определяться', 'переход', 'состояние', 'автомат'], ['3.11'], ['пример', 'мобильный', 'телефон', 'продемонстрируем', 'применение', 'предложить', 'трансформация', 'конечный_автомат', 'система', 'mobile', 'моделировать', 'работа', 'мобильный', 'телефон'], ['исходный', 'система', 'конечный_автомат', 'представить', '28', 'диаграмма', 'описывать', 'ровно', 'переход', 'рис', '22'], ['представление', 'использоваться', 'нотация', 'sdl', 'описание', 'переход', 'позволять', 'понять', 'цельный', 'структура', 'конечный_автомат'], ['упрощение', 'понимание', 'сгенерировать', 'дополнительный', 'overview', 'диаграмма', 'описывать', 'конечный_автомат', 'нотация', 'uml', 'рис'], ['23'], ['приведённый', 'алгоритм', 'позволять', 'найти', 'выделить', 'конечный_автомат', 'три', 'метод'], ['первый', 'шаг', 'метод', 'initialize', 'выделяться', 'четыре', 'последовательный', 'состояние'], ['второй', 'шаг', 'выделяться', 'метод', 'talking', 'становиться', 'возможный', 'выделить', 'метод', 'назовём', 'working'], ['обратить', 'внимание', 'выделение_метод', 'working', 'выделение_метод', 'talking'], ['процесс', 'применение_трансформация', 'итеративный'], ['поиск', 'часть_конечный', 'автомат', 'вынести', 'отдельный', 'метод', 'автоматизировать'], ['результат', 'применение_трансформация', 'исходный', 'конечный_автомат', 'сильно', 'упроститься', 'свободно', 'помещаться', 'диаграмма', 'рис'], ['24'], ['содержать', 'состояние', 'четырнадцать', 'состояние', 'исходный', 'автомат', 'вызов', 'два', 'метод'], ['выделить', 'три', 'метод', 'initialize', 'talking', 'рис', '25', 'working', 'рис', '28', 'содержать', '4', '5', '4', 'состояние', 'соответственно'], ['метод', 'talking', 'три', 'состояние', 'пять', 'содержать', 'пара', 'одинаковый', 'возвратный', 'переход', 'остальные', 'два', 'состояние', 'определять', 'реакция', 'defer', 'сигнал', 'инициировать', 'возвратный', 'переход'], ['образ', 'метод', 'применить', 'трансформация_выделение', 'составной_состояние', 'общий', 'возвратный', 'переход'], ['результат', 'пара', 'общий', 'переход', 'вынести', 'основный', 'диаграмма', 'применить', 'внешний', 'составной_состояние', 'рис'], ['26'], ['трансформация', 'конечный_автомат', 'описывать', 'поведение', 'метод', 'talking', 'перенести', 'составной_состояние', 'talking', 'удалить', 'три', 'пара', 'возвратный', 'переход', 'повысить', 'наглядность', 'рис'], ['27'], ['применить', 'трансформация_выделение', 'составной_состояние', 'скрытие', 'деталь', 'реализация', 'метод', 'working', 'выделить', 'три', 'составной_состояние', 'получить', 'компактный', 'диаграмма', 'малый', 'количество', 'переход', 'рис', '29'], ['4'], ['заключение', 'статья', 'предложить', '6', 'новый', 'метод', 'трансформация', 'исполнять', 'модель', 'язык_uml', 'основать', 'композиция_декомпозиция'], ['продемонстрировать', 'практический', 'применимость', 'предлагать', 'метод', 'средство', 'упрощение', 'восприятие', 'улучшение', 'структура', 'сложный', 'автомат'], ['предложить', 'метод', 'допускать', 'автоматизация', 'выполнение', 'преобразование', 'автоматический', 'поиск', 'часть', 'модель', 'преобразование', 'применимый', 'вероятно', 'применение', 'целесообразный'], ['приоритетный', 'направление', 'дальнейший', 'работа', 'являться', 'реализация', 'модуль', 'автоматический', 'поиск', 'применение_трансформация', 'среда', 'моделирование', 'наряду', 'продолжение', 'работа', 'разработка', 'исследование', 'новый', 'метод', 'трансформация']]"
        ],
        [
         "26",
         "Модели представления данных в СУБД.doc",
         "2.3.1. Исследование моделей информационного представления данных в современных СУБД.\rИсследование различным методов ис средств представления и управления данными в информационных системах проведем на примере интерактивной базы данных патентного обеспечения (ПО) конструкторско-технологического проектирования (КТП). Патент - это документ, свидетельствующий о праве изобретателя на его изобретение. Для стандартизации и облегчения поиска информации были введены различные классификации патентов: (Национальная Классификация Патентов (НКИ), Универсальная Десятичная Классификация (УДК), Международная Классификация Изобретений (МКИ)). Все эти классификации призваны служить инструментом для упорядоченного хранения патентных документов, что облегчает доступ к содержащейся в них информации, быть основой для избирательного распределения информации среди потребителей патентной информации и для получения систематических данных в области промышленного соответствия, что в свою очередь, определяет уровень развития различных областей техники. \rКлассификации патентов имеют сложную структуру, и для поиска необходимой информации может потребоваться много времени. Возможна организация поиска по всем имеющимся классификациям изобретений, но пока, в качестве примера, мы рассмотрим только Международную Классификацию Изобретений, которая являясь средством для единообразного в международном масштабе классифицирования патентных документов, представляет собой эффективный инструмент для патентных ведомств и других потребителей, осуществляющих поиск патентных документов с целью установления новизны и оценки вклада изобретения в заявленное техническое решение (включая оценку технической прогрессивности и полезности или результата). \rМеждународная Классификация Изобретений (МКИ) имеет иерархическую структуру (представленную на рис.1) и состоит из следующих отделов: 1 - Раздел, 2 - Класс, 3 - Подкласс, 4 - Группа, 5 - Подгруппа. Иерархическая структура классификации МКИ представлена на рис.31. \r\rЛогическая модель \rПереход от функциональной модели к логической осуществляется с помощью реляционных методов, при этом иерархическая структура функциональной модели реализуется с использованием отношений один - ко -многим и рекурсивных рис. 27. Реализацией данной логической модели является совокупностью таблиц, объединенных в единый модуль - патентную информационную базу данных ( PIB - Patent Information dateBase). \rЯдром логической модели является таблица PIB_MKI (МКИ), связывающая таблицы PIB_PART (Раздел), PIB_CLASS (Класс), PIB_SUBCLASS (Подкласс), PIB_GROUP (Группа), PIB_SUB-GROUP (Подгруппа) в единую структуру, определяющую реализацию Международной Классификации Изобретений (МКИ) винформационной системе патентного обеспечения технологического проектирования. Таблица PIB_MKI (МКИ) в свою очередь связана с таблицей PIB_PATENT (Патент), отвечающей за связь с таблицами PIB_GRATHDOC (Графические документы) и PIB_UDK (УДК).Таблица PIB_UDK (УДК) реализует Универсальную Десятичную Классификацию (УДК). Структура таблиц модуля PIB представлена в таблице1. \rТаблица 1. Информационно-логическая Структура модуля Международной Классификации Изобретений. \rИмя таблицы\r\u0007Имя поля\r\u0007Функц. Назначение\r\u0007\r\u0007PIB_PART\r\u0007PART_NNN\r\u0007Уникальный идентификатор\r\u0007\r\u0007 \r\u0007PART_INDEX\r\u0007Индекс раздела в МКИ\r\u0007\r\u0007 \r\u0007PART_TITLE\r\u0007Название раздела\r\u0007\r\u0007PIB_CLASS\r\u0007CLASS_NNN\r\u0007Уникальный идентификатор\r\u0007\r\u0007 \r\u0007CLASS_INDEX\r\u0007Индекс класса в МКИ\r\u0007\r\u0007 \r\u0007CLASS_TITLE\r\u0007Название класса\r\u0007\r\u0007PIB_SUBCLASS\r\u0007SUBCLASS_NNN\r\u0007Уникальный идентификатор\r\u0007\r\u0007 \r\u0007SUBCLASS_INDEX\r\u0007Индекс подкласса в МКИ\r\u0007\r\u0007 \r\u0007SUBCLASS_TITLE\r\u0007Название подкласса\r\u0007\r\u0007PIB_GROUP\r\u0007GROUP_NNN\r\u0007Уникальный идентификатор\r\u0007\r\u0007 \r\u0007GROUP_INDEX\r\u0007Индекс группы в МКИ\r\u0007\r\u0007 \r\u0007GROUP_TITLE\r\u0007Название группы\r\u0007\r\u0007PIB_SUB-GROUP\r\u0007SUB-GROUP_NNN\r\u0007Уникальный идентификатор\r\u0007\r\u0007 \r\u0007SUB-GROUP_INDEX\r\u0007Индекс подгруппы в МКИ\r\u0007\r\u0007 \r\u0007SUB-GROUP_TITLE\r\u0007Название подгруппы\r\u0007\r\u0007PIB_PATENT\r\u0007PATENT_NNN\r\u0007Уникальный идентификатор\r\u0007\r\u0007 \r\u0007PATENT_INDEX\r\u0007Патентный индекс в МКИ\r\u0007\r\u0007 \r\u0007PATENT_TITLE\r\u0007Название патента\r\u0007\r\u0007 \r\u0007PATENT_AUTHOR\r\u0007Авторы патента\r\u0007\r\u0007 \r\u0007PATENT_NOTES\r\u0007Примечания\r\u0007\r\u0007PIB_UDK\r\u0007UDK_NNN\r\u0007Уникальный идентификатор\r\u0007\r\u0007 \r\u0007UDK_INDEX\r\u0007Патентный индекс в УДК\r\u0007\r\u0007 \r\u0007UDK_NOTES\r\u0007Примечания\r\u0007\r\u0007PIB_GRATHDOC\r\u0007GRATHDOC_NNN\r\u0007Уникальный идентификатор\r\u0007\r\u0007 \r\u0007GRATHDOC_FILE\r\u0007Имя файла\r\u0007\r\u0007PIB_MKI\r\u0007MKI_NNN\r\u0007Уникальный идентификатор\r\u0007\r\u0007\rИсследование архитектур программно-технологической реализации АИС \rВ настоящее время существует множество архитектур, служащих для разработки информационных систем, ядром которых является СУБД. Клиент в типичной конфигурации клиент/сервер - это автоматизированное рабочее место, использующее графический интерфейс (Graphical User Interface - GUI), обычно Microsoft Windows, Macintosh. \rСервер же, в основном, предназначен для хранения, передачи и распределения информации между клиентами. В клиент/серверной конфигурации программные средства имеют разделение на клиентскую и серверную часть, однако, частые обращения клиента к серверу снижают производительность работы сети и обуславливают сложность настройки системы. \rРассмотрим варианты распределения функций СУБД в клиент/серверной системы. СУБД выполняет три основные функции: \rдоступ к данным; \rпредоставление данных; \rбизнес - функции. \rСервер СУБД может быть реализован на различных платформах, под управлением операционных систем UNIX, NetWare, Windows NT, OS/2 и др. \rДо появления технологии клиент/сервер большинство приложений функционировало на одной ЭВМ. Одна система отвечала не только за всю обработку данных, но также и за выполнение логики приложения. Кроме того, та же система обрабатывала весь обмен с каждым терминалом; все нажатия клавиш и элементы отображения обслуживались тем же процессором, который обрабатывал запросы к базе данных и логику приложения. \rOracle предоставляет такие возможности, как хранимые процедуры, поддержка ограничений целостности, функции, определяемые пользователем, триггеры базы данных и ряд других. Все это позволяет приложению хранить большое количество бизнес-правил (или семантику модели данных) на уровне базы данных. В результате приложение освобождается для выполнения более тонких задач обработки. Как показано на рис.28, такая СУБД намного более устойчива. \rПрограммные продукты Oracle охватывают все основные компоненты архитектуры клиент/сервер, показанной на рис. 29: \r1)полнофункциональный высокопроизводительный сервер RDBMS (система управления реляционной базой данных), масштабируемый от портативных ЭВМ до мэйнфреймов; \rсредства для разработки и запуска клиентских приложений, поддерживающие несколько сред GUI; \rпрограммный компонент для организации связи между БД на различных ЭВМ, который обеспечивает эффективную и безопасную связь с помощью широкого набора сетевых протоколов.\rOracle использует память системы (как реальную, так и виртуальную) для выполнения пользовательских процессов и самого программного обеспечения СУБД, и для кэширования объектов данных. В простой конфигурации Oracle файлы базы данных, структуры памяти, фоновые и пользовательские процессы располагаются на одной машине без использования сети. Однако, намного чаще встречается конфигурация, когда БД расположена на машине-сервере, а инструментальные средства Oracle - на другой машине (например, РС с Microsoft Windows). При такой клиент/серверной конфигурации машины связываются посредством некоторого сетевого программного обеспечения, которое позволяет двум машинам поддерживать связь. Для организации взаимодействия клиент/сервер или сервер-сервер необходимо использовать программный продукт Oracle SQL*Net, который позволяет СУБД Oracle взаимодействовать с сетевым протоколом. SQL*Net и поддерживает большинство сетевых протоколов для локальных вычислительных сетей (таких как TCP/IP, IPX/SPX) и для мэйнфреймов (например, SNA). По существу, SQL*Net является промежуточной программной прослойкой между Oracle и сетевым ПО, обеспечивающей связь между клиентской машиной Oracle (на которой работает, например, SQL*Plus) и сервером базы данных или между серверами баз данных. Опции SQL*Net позволяют одной машине работать с одним сетевым протоколом, сообщаясь с другой машиной, работающей с другим протоколом. \rВ зависимости от размеров, таблицы (и других объектов) всех учетных разделов пользователей могут, очевидно, размещаться в одном файле базы данных, но это - не лучшее решение, так как оно не способствует гибкости структуры базы данных для управления доступом к различным пользовательским разделам, размещения базы данных на различных дисководах или резервного копирования и восстановления части базы данных. В СУБД Oracle предусмотрены привилегии системного уровня, резервное копирование и поддержка национальных языков. Все это позволяет сделать вывод о целесообразности разработки интерактивной информационной системы патентного обеспечения технологического проектирования на основе СУБД Oracle. \r\r2.3.2 Компоненты системы управления реляционной базой данных (RDBMS).\r2.3.2.1 Ядро системы управления реляционной базой данных (RDBMS).\rДве важные части архитектуры RDBMS - ядро, которое является программным обеспечением, и словарь данных, который состоит из структур данных системного уровня, используемых ядром, управляющим базой данных. \rRDBMS можно рассматривать как операционную систему (или подсистему), разработанную специально для управления доступом к данным; ее основные функции - хранение, выборка и обеспечение безопасности данных. Подобно операционной системе, СУБД Oracle управляет доступом одновременно работающих пользователей базы данных к некоторому набору ресурсов. Подсистемы RDBMS очень схожи с соответствующими подсистемами ОС и сильно интегрированы с предоставляемыми базовой ОС сервисными функциями доступа на машинном уровне к таким ресурсам, как память, центральный процессор, устройства и файловые структуры. \rRDBMS поддерживают собственный список авторизованных пользователей и их привилегий; управляют кэшем памяти и страничным обменом; управляют блокировкой разделяемых ресурсов; принимают и планируют выполнение запросов пользователя; управляют использованием табличного пространства. \rНа рис.31. показаны основные подсистемы ядра Oracle, управляющего базой данных. \rИтак, база данных - собрание данных, между которыми существуют (смысловые) связи. Физическое расположение и реализация базы данных прозрачны для прикладных программ; физическую базу данных можно перемещать и реорганизовывать и это не окажет влияния на работоспособность программ. \rФизически база данных Oracle - не более чем набор файлов где-то на диске. Расположение этих файлов несущественно для функционирования (хотя важно для производительности) базы данных. \rЛогически база данных - это множество пользовательских разделов Oracle, каждый из которых идентифицируется именем пользователя (с паролем), уникальным в данной БД. На рис.29. показана архитектура Oracle. \rСуществуют три основные группы файлов на диске, составляющие базу данных. \rФайлы базы данных \rУправляющие файлы \rЖурнальные файлы \rНаиболее важные из них - файлы базы данных, где располагаются собственно данные. Управляющие и журнальные файлы поддерживают функционирование архитектуры. Для доступа к данным БД все три набора файлов должны присутствовать, быть открытыми и доступными Oracle. Если эти файлы отсутствуют, обратиться к базе данных нельзя, и администратор базы данных должен будет восстанавливать часть или всю БД, используя файлы резервных копий (если их сделали!). Все эти файлы двоичные. \rПосле инсталляции СУБД (об этапах установки подробно написано в [ ]) администратор имеет возможность войти в СУБД используя учетные записи SYS или SYSTEM, с парролем: master или manager, для создание учетных записей других пользовтаелей, при этом пароли учетных записей SYS и SYSTEM необходимо сразу же изменить. \rДля работы с файлами базы данных на машине должны существовать системные процессы Oracle и один (или больше) пользовательский процесс. \rСистемные процессы Oracle (их называют фоновыми) обеспечивают функционирование пользовательских процессов - выполняют функции, которые иначе пришлось бы выполнять пользовательским процессам непосредственно. \rДополнительно к фоновым процессам Oracle в простейшем случае на одно подключение к базе данных должен существовать один пользовательский процесс. Пользователь должен подключиться к базе данных прежде чем он сможет обратиться к какому-либо объекту. Если один пользователь регистрируется в Oracle, используя SQL*Plus, другой пользователь выбирает Oracle Forms, а еще один пользователь открывает электронную таблицу Excel, значит имеется три пользовательских процесса для работы с этой базой данных - по одному для каждого подключения. \rOracle использует память системы (как реальную, так и виртуальную) для выполнения пользовательских процессов и самого программного обеспечения СУБД, и для кэширования объектов данных. Существуют две главные области памяти Oracle: \rразделяемая память, которая используется всеми процессами, работающими с базой данных, \rлокальная память для каждого пользовательского процесса.\rСистемная память. \rСистемная память. Oracle для всей базы данных называется SGA (system global агеа - системная глобальная область или shared global агеа - разделяемая глобальная область). Данные и управляющие структуры в SGA являются разделяемыми, и все фоновые процессы Oracle и пользовательские процессы могут к ним обращаться. \rПамять пользовательского процесса. Для каждого подключения к базе данных Oracle выделяет PGA (process global агеа - глобальную область процесса или program global агеа - глобальную область программы) в памяти машины и, кроме того, - PGA для фоновых процессов. Эта область памяти содержит данные и управляющую информацию одного процесса и между процессами не разделяется. \r\r2.3.2.2 Типы обрабатываемых данных\rТипы данных обрабатываемых СУБД Oracle представлены в таблице. \rТаблица 2. Типы обрабатываемых данных. \rТип данных\r\u0007Описание\r\u0007\r\u0007СНАR(size)\r\u0007Символьная строка фиксированной длины, имеющая максимальную длину size символов. Длина по умолчанию 1, максимальная -255.\r\u0007\r\u0007СНАRАСТЕR(size)\r\u0007То же, что и CHAR.\r\u0007\r\u0007DATE\r\u0007Правильные даты в интервале от 1 января 4712 года до н.э. до 31 декабря 4712 года.\r\u0007\r\u0007LONG\r\u0007Символьные данные переменной длины до 2 Гигабайт.\r\u0007\r\u0007LONG RAW\r\u0007Двоичные данные переменной длины вплоть до 2 Гигабайт или 231-1.\r\u0007\r\u0007MLSLABEL\r\u0007Используется в Trusted ORACLE.\r\u0007\r\u0007NUMBER(p,s)\r\u0007Число, имеющее p значащих цифр и масштаб s. р может быть от 1 до 38. s может принимать значения от -84 до 127.\r\u0007\r\u0007RAW(size)\r\u0007Двоичные данные длиной size байт. Максимальное значение для size - 2000 байт. Параметр те для RAW обязателен.\r\u0007\r\u0007RAW MLSLABEL\r\u0007Используется в Trusted ORACLE.\r\u0007\r\u0007ROWID\r\u0007Значения псевдостолбца ROWID.\r\u0007\r\u0007VARCHAR2(size)\r\u0007Символьная строка переменной длины, имеющая максимальную длину size символов. Длина по умолчанию 1, максимальная - 2000.\r\u0007\r\u0007VARCHAR(size)\r\u0007То же что и VARCHAR2.\r\u0007\r\u0007Извлекать данные можно также и из псевдостолбцов (табл.3), которые похожи на столбцы таблиц, но их значения нельзя изменять при помощи операторов DML. \rТаблица 3. Псевдостолбцы. \rНазвание столбца\r\u0007Возвращаемое значение\r\u0007\r\u0007sequence.CURRVAL\r\u0007Текущее значение sequence в данном сеансе (sequence.NEXTVAL должен быть выбран).\r\u0007\r\u0007sequence.NEXTVAL\r\u0007Следующее значение sequence в текущем сеансе.\r\u0007\r\u0007[table.]LEVEL\r\u00071 - для корня дерева, 2 - для узлов второго уровня и так далее. Используется в операторе SELECT в иерархических запросах.\r\u0007\r\u0007[table.]ROWID\r\u0007Значение, которое идентифицируют строку в таблице table уникальным образом. Значения псевдостолбца ROWID имеют тип данных ROWID, а не NUMBER и не CHAR.\r\u0007\r\u0007ROWNUM\r\u0007Порядковый номер строки среди других строк, выбираемых запросом. ORACLE выбирает строки в произвольном порядке и приписывает значения ROWNUM, прежде чем строки будут отсортированы предложением ORDER BY.\r\u0007\r\u0007Требования к именам объектов базы данных \rдолжны иметь длину от 1 до 30 бант, за исключением имен баз данных, длина которых ограничена 8 байтами; \rне могут содержать кавычек; \rне могут совпадать с именами других объектов. \rИмена, которые всегда заключены в двойные кавычки, могут нарушать, приведенные ниже правила. В противном случае, имена \rдолжны начинаться с букв A-Z; \rмогут содержать только символы A-Z, 0-9, _, $ и #; \rне могут дублировать зарезервированные слова SQL. \rРазличие между прописными и строчными буквами учитывается только в именах, заключенных о двойные кавычки. \rОперации и их приоритеты \rАрифметические операции\r\u0007Символьные операции\r\u0007Логические операции\r\u0007Операции сравнения\r\u0007\r\u0007+ - (один операнд)\r\u0007| |\r\u0007NOT\r\u0007=\r\u0007\r\u0007* /\r\u0007 \r\u0007AND\r\u0007!= ^= ~= <>\r\u0007\r\u0007+ - (два операнда)\r\u0007 \r\u0007OR\r\u0007> >= < <=\r\u0007\r\u0007 \r\u0007 \r\u0007 \r\u0007IN \r\u0007\r\u0007 \r\u0007 \r\u0007 \r\u0007NOT IN\r\u0007\r\u0007 \r\u0007 \r\u0007 \r\u0007ANY, SOME\r\u0007\r\u0007 \r\u0007 \r\u0007 \r\u0007ALL\r\u0007\r\u0007",
         "0",
         "[['2.3.1'], ['исследование', 'модель', 'информационный', 'представление', 'современный', 'субд'], ['исследование', 'различный', 'метод', 'ис', 'средство', 'представление', 'управление', 'данными', 'информационный', 'система', 'провести', 'пример', 'интерактивный', 'база', 'патентный', 'обеспечение', 'конструкторско', 'технологический', 'проектирование', 'ктп'], ['патент', 'документ', 'свидетельствовать', 'право', 'изобретатель', 'изобретение'], ['стандартизация', 'облегчение', 'поиск', 'информация', 'ввести', 'различный', 'классификация', 'патент', 'национальный', 'классификация', 'патент', 'нки', 'универсальный', 'десятичный', 'классификация', 'удк', 'международный', 'классификация', 'изобретений', 'мки'], ['классификация', 'призваны', 'служить', 'инструмент', 'упорядоченного', 'хранение', 'патентный', 'документ', 'облегчать', 'доступ', 'содержаться', 'информация', 'основа', 'избирательный', 'распределение', 'информация', 'потребитель', 'патентный', 'информация', 'получение', 'систематический', 'область', 'промышленный', 'соответствие', 'очередь', 'определять', 'уровень', 'развитие', 'различный', 'область', 'техника'], ['классификация', 'патент', 'иметь', 'сложный', 'структура', 'поиск', 'необходимый', 'информация', 'потребоваться', 'время'], ['возможный', 'организация', 'поиск', 'иметься', 'классификация', 'изобретение', 'качество', 'пример', 'рассмотреть', 'международный', 'классификация', 'изобретений', 'являться', 'средство', 'единообразный', 'международный', 'масштаб', 'классифицирование', 'патентный', 'документ', 'представлять', 'эффективный', 'инструмент', 'патентный', 'ведомство', 'потребитель', 'осуществлять', 'поиск', 'патентный', 'документ', 'цель', 'установление', 'новизна', 'оценка', 'вклад', 'изобретение', 'заявить', 'технический', 'решение', 'оценка', 'технический', 'прогрессивность', 'полезность', 'результат'], ['международный', 'классификация', 'изобретений', 'мки', 'иерархический', 'структура', 'представить', 'рис.1', 'состоять', 'следующий', 'отдел', '1', 'раздел', '2', 'класс', '3', 'подкласс', '4', 'группа', '5', 'подгруппа'], ['иерархический', 'структура', 'классификация', 'мки', 'представить', 'рис.31'], ['логический', 'модель', 'переход', 'функциональный', 'модель', 'логический', 'осуществляться', 'помощь', 'реляционный', 'метод', 'иерархический', 'структура', 'функциональный', 'модель', 'реализоваться', 'использование', 'отношение', '-многим', 'рекурсивных', 'рис'], ['27'], ['реализация', 'логический', 'модель', 'являться', 'совокупность', 'таблица', 'объединить', 'единый', 'модуль', 'патентный', 'информационный', 'база', 'pib', 'patent', 'information', 'datebase'], ['ядром', 'логический', 'модель', 'являться', 'таблица', 'pib_mki', 'мки', 'связывать', 'таблица', 'pib_part', 'раздел', 'pib_class', 'класс', 'pib_subclass', 'подкласс', 'pib_group', 'группа', 'pib_sub', 'group', 'подгруппа', 'единый', 'структура', 'определять', 'реализация', 'международный', 'классификация', 'изобретений', 'мки', 'винформационной', 'система', 'патентный', 'обеспечение', 'технологический', 'проектирование'], ['таблица', 'pib_mki', 'мки', 'очередь', 'связать', 'таблица', 'pib_patent', 'патент', 'отвечать', 'связь', 'таблицами', 'pib_grathdoc', 'графический', 'документ', 'pib_udk', 'удк).таблица', 'pib_udk', 'удк', 'реализовать', 'универсальный', 'десятичный', 'классификация', 'удк'], ['структура', 'таблица', 'модуль', 'pib', 'представить', 'таблице1'], ['таблица', '1'], ['информационный', 'логический', 'структура', 'модуль', 'международный', 'классификация', 'изобретений'], ['имя', 'таблица', '\\x07имя', 'поле', '\\x07функц'], ['назначение', '\\x07', '\\x07pib_part', '\\x07part_nnn', '\\x07уникальный_идентификатор', '\\x07', '\\x07', '\\x07part_index', '\\x07индекс', 'раздел', 'мки', '\\x07', '\\x07', '\\x07part_title', '\\x07название', 'раздел', '\\x07', '\\x07pib_class', '\\x07class_nnn', '\\x07уникальный_идентификатор', '\\x07', '\\x07', '\\x07class_index', '\\x07индекс', 'класс', 'мки', '\\x07', '\\x07', '\\x07class_title', '\\x07название', 'класс', '\\x07', '\\x07pib_subclass', '\\x07subclass_nnn', '\\x07уникальный_идентификатор', '\\x07', '\\x07', '\\x07subclass_index', '\\x07индекс', 'подкласс', 'мки', '\\x07', '\\x07', '\\x07subclass_title', '\\x07название', 'подкласс', '\\x07', '\\x07pib_group', '\\x07group_nnn', '\\x07уникальный_идентификатор', '\\x07', '\\x07', '\\x07group_index', '\\x07индекс', 'группа', 'мки', '\\x07', '\\x07', '\\x07group_title', '\\x07название', 'группа', '\\x07', '\\x07pib_sub', 'group', '\\x07sub', 'group_nnn', '\\x07уникальный_идентификатор', '\\x07', '\\x07', '\\x07sub', 'group_index', '\\x07индекс', 'подгруппа', 'мки', '\\x07', '\\x07', '\\x07sub', 'group_title', '\\x07название', 'подгруппа', '\\x07', '\\x07pib_patent', '\\x07patent_nnn', '\\x07уникальный_идентификатор', '\\x07', '\\x07', '\\x07patent_index', '\\x07патентный', 'индекс', 'мки', '\\x07', '\\x07', '\\x07patent_title', '\\x07название', 'патент', '\\x07', '\\x07', '\\x07patent_author', '\\x07авторы', 'патент', '\\x07', '\\x07', '\\x07patent_notes', '\\x07примечание', '\\x07', '\\x07pib_udk', '\\x07udk_nnn', '\\x07уникальный_идентификатор', '\\x07', '\\x07', '\\x07udk_index', '\\x07патентный', 'индекс', 'удк', '\\x07', '\\x07', '\\x07udk_notes', '\\x07примечание', '\\x07', '\\x07pib_grathdoc', '\\x07grathdoc_nnn', '\\x07уникальный_идентификатор', '\\x07', '\\x07', '\\x07grathdoc_file', '\\x07имя', 'файл', '\\x07', '\\x07pib_mki', '\\x07mki_nnn', '\\x07уникальный_идентификатор', '\\x07', '\\x07', 'исследование', 'архитектура', 'программный', 'технологический', 'реализация', 'аис', 'время', 'существовать', 'множество', 'архитектура', 'служить', 'разработка', 'информационный', 'система', 'ядро', 'являться', 'субд'], ['клиент', 'типичный', 'конфигурация', 'клиент', 'сервер', 'автоматизированный', 'рабочий', 'место', 'использовать', 'графический', 'интерфейс', 'graphical', 'user', 'interface', 'gui', 'microsoft', 'windows', 'macintosh'], ['сервер', 'основный', 'предназначить', 'хранение', 'передача', 'распределение', 'информация', 'клиент'], ['клиент', 'серверный', 'конфигурация', 'программный', 'средство', 'иметь', 'разделение', 'клиентский', 'серверный', 'часть', 'частый', 'обращение', 'клиент', 'сервер', 'снижать', 'производительность', 'работа', 'сеть', 'обуславливать', 'сложность', 'настройка', 'система'], ['рассмотреть', 'вариант', 'распределение', 'функция', 'субд', 'клиент', 'серверный', 'система'], ['субд', 'выполнять', 'три', 'основный', 'функция', 'доступ', 'данным', 'предоставление', 'бизнес', 'функции'], ['сервер', 'субд', 'реализовать', 'различный', 'платформа', 'управление', 'операционный', 'система', 'unix', 'netware', 'windows', 'nt', 'os/2', 'и др.'], ['появление', 'технология', 'клиент', 'сервер', 'большинство', 'приложение', 'функционировать', 'эвм'], ['система', 'отвечать', 'обработка', 'выполнение', 'логика', 'приложение'], ['система', 'обрабатывать', 'обмен', 'каждый', 'терминал', 'нажатие', 'клавиш', 'элемент', 'отображение', 'обслуживаться', 'процессор', 'обрабатывать', 'запрос', 'база', 'логика', 'приложение'], ['oracle', 'предоставлять', 'возможность', 'хранить', 'процедура', 'поддержка', 'ограничение', 'целостность', 'функция', 'определять', 'пользователь', 'триггеры', 'база', 'ряд'], ['позволять', 'приложение', 'хранить', 'большой', 'количество', 'бизнес', 'правил', 'семантика', 'модель', 'уровень', 'база'], ['результат', 'приложение', 'освобождаться', 'выполнение', 'тонкий', 'задача', 'обработка'], ['показать', 'рис.28', 'субд', 'намного', 'устойчивый'], ['программный', 'продукт', 'oracle', 'охватывать', 'основный', 'компонент', 'архитектура', 'клиент', 'сервер', 'показать', 'рис'], ['29', '1)полнофункциональный', 'высокопроизводительный', 'сервер', 'rdbms', 'система', 'управление', 'реляционный', 'база', 'масштабировать', 'портативный', 'эвм', 'мэйнфрейм', 'средство', 'разработка', 'запуск', 'клиентский', 'приложение', 'поддерживать', 'среда', 'gui', 'программный', 'компонент', 'организация', 'связь', 'бд', 'различный', 'эвм', 'обеспечивать', 'эффективный', 'безопасный', 'связь', 'помощь', 'широкий', 'набор', 'сетевой', 'протокол'], ['oracle', 'использовать', 'память', 'система', 'реальный', 'виртуальный', 'выполнение', 'пользовательский_процесс', 'программный', 'обеспечение', 'субд', 'кэширование', 'объект'], ['простой', 'конфигурация', 'oracle', 'файл', 'база', 'структура', 'память', 'фоновый', 'пользовательский_процесс', 'располагаться', 'машина', 'использование', 'сеть'], ['намного', 'встречаться', 'конфигурация', 'бд', 'расположена', 'машина', 'сервер', 'инструментальный', 'средство', 'oracle', 'машина', 'рс', 'microsoft', 'windows'], ['клиент', 'серверный', 'конфигурация', 'машина', 'связываться', 'некоторый', 'сетевой', 'программный', 'обеспечение', 'позволять', 'два', 'машина', 'поддерживать', 'связь'], ['организация', 'взаимодействие', 'клиент', 'сервер', 'сервер', 'сервер', 'использовать', 'программный', 'продукт', 'oracle', 'sql*net', 'позволять', 'субд', 'oracle', 'взаимодействовать', 'сетевой', 'протокол'], ['sql*net', 'поддерживать', 'большинство', 'сетевой', 'протокол', 'локальный', 'вычислительный', 'сеть', 'tcp', 'ip', 'ipx', 'spx', 'мэйнфрейм', 'sna'], ['существо', 'sql*net', 'являться', 'промежуточный', 'программный', 'прослойка', 'oracle', 'сетевой', 'обеспечивать', 'связь', 'клиентский', 'машина', 'oracle', 'работать', 'sql*plus', 'сервер', 'база', 'сервер', 'база'], ['опция', 'sql*net', 'позволять', 'машина', 'работать', 'сетевой', 'протокол', 'сообщаться', 'машина', 'работать', 'протокол'], ['зависимость', 'размер', 'таблица', 'объект', 'учётный', 'раздел', 'пользователь', 'размещаться', 'файл', 'база', 'хороший', 'решение', 'способствовать', 'гибкость', 'структура', 'база', 'управление', 'доступ', 'различный', 'пользовательский', 'раздел', 'размещение', 'база', 'различный', 'дисковод', 'резервный', 'копирование', 'восстановление', 'часть', 'база'], ['субд', 'oracle', 'предусмотреть', 'привилегия', 'системный', 'уровень', 'резервный', 'копирование', 'поддержка', 'национальный', 'язык'], ['позволять', 'сделать', 'вывод', 'целесообразность', 'разработка', 'интерактивный', 'информационный', 'система', 'патентный', 'обеспечение', 'технологический', 'проектирование', 'основа', 'субд', 'oracle'], ['2.3.2', 'компоненты', 'система', 'управление', 'реляционный', 'база', 'rdbms'], ['2.3.2.1', 'ядро', 'система', 'управление', 'реляционный', 'база', 'rdbms'], ['два', 'важный', 'часть', 'архитектура', 'rdbms', 'ядро', 'являться', 'программный', 'обеспечение', 'словарь', 'состоять', 'структура', 'системный', 'уровень', 'использовать', 'ядро', 'управлять', 'база'], ['rdbms', 'рассматривать', 'операционный', 'система', 'подсистема', 'разработать', 'специально', 'управление', 'доступ', 'данным', 'основной', 'функция', 'хранение', 'выборка', 'обеспечение', 'безопасность'], ['операционный', 'система', 'субд', 'oracle', 'управлять', 'доступ', 'одновременно', 'работать', 'пользователь', 'база', 'некоторому', 'набор', 'ресурс'], ['подсистемы', 'rdbms', 'схожий', 'соответствующий', 'подсистемами', 'ос', 'сильно', 'интегрировать', 'предоставлять', 'базовый', 'ос', 'сервисный', 'функция', 'доступ', 'машинный', 'уровень', 'ресурс', 'память', 'центральный', 'процессор', 'устройство', 'файловый', 'структура'], ['rdbms', 'поддерживать', 'собственный', 'список', 'авторизованный', 'пользователь', 'привилегия', 'управлять', 'кэш', 'память', 'страничный', 'обмен', 'управлять', 'блокировка', 'разделять', 'ресурс', 'принимать', 'планировать', 'выполнение', 'запрос', 'пользователь', 'управлять', 'использование', 'табличный', 'пространство'], ['рис.31', 'показать', 'основной', 'подсистема', 'ядро', 'oracle', 'управлять', 'база'], ['база', 'собрание', 'существовать', 'смысловой', 'связь'], ['физический', 'расположение', 'реализация', 'база', 'прозрачный', 'прикладной', 'программа', 'физический', 'база', 'перемещать', 'реорганизовывать', 'оказать', 'влияние', 'работоспособность', 'программа'], ['физически', 'база', 'oracle', 'набор', 'файл', 'диск'], ['расположение', 'файл', 'несущественный', 'функционирование', 'важный', 'производительность', 'база'], ['логически', 'база', 'множество', 'пользовательский', 'раздел', 'oracle', 'идентифицируется', 'имя', 'пользователь', 'пароль', 'уникальный', 'бд'], ['рис.29', 'показать', 'архитектура', 'oracle'], ['существовать', 'три', 'основной', 'группа', 'файл', 'диск', 'составлять', 'база'], ['файл', 'база', 'управлять', 'файл', 'журнальный', 'файл', 'важный', 'файл', 'база', 'располагаться'], ['управлять', 'журнальный', 'файл', 'поддерживать', 'функционирование', 'архитектура'], ['доступ', 'данным', 'бд', 'три', 'набор', 'файл', 'присутствовать', 'открытый', 'доступный', 'oracle'], ['файл', 'отсутствовать', 'обратиться', 'база', 'администратор', 'база', 'восстанавливать', 'часть', 'бд', 'использовать', 'файл', 'резервный', 'копия', 'сделать'], ['файл', 'двоичный'], ['инсталляция', 'субд', 'этап', 'установка', 'подробно', 'написать', 'администратор', 'возможность', 'войти', 'субд', 'использовать', 'учётный', 'запись', 'sys', 'system', 'парролем', 'master', 'manager', 'создание', 'учётный', 'запись', 'пользовтаелей', 'пароль', 'учётный', 'запись', 'sys', 'system', 'изменить'], ['работа', 'файл', 'база', 'машина', 'существовать', 'системный', 'процесс', 'oracle', 'пользовательский_процесс'], ['системный', 'процесс', 'oracle', 'называть', 'фоновый', 'обеспечивать', 'функционирование', 'пользовательский_процесс', 'выполнять', 'функция', 'прийтись', 'выполнять', 'пользовательский_процесс', 'непосредственно'], ['фоновый', 'процесс', 'oracle', 'простой', 'случай', 'подключение', 'база', 'существовать', 'пользовательский_процесс'], ['пользователь', 'подключиться', 'база', 'обратиться', 'объект'], ['пользователь', 'регистрироваться', 'oracle', 'использовать', 'sql*plus', 'пользователь', 'выбирать', 'oracle', 'forms', 'пользователь', 'открывать', 'электронный', 'таблица', 'excel', 'иметься', 'три', 'пользовательский_процесс', 'работа', 'база', 'каждый', 'подключение'], ['oracle', 'использовать', 'память', 'система', 'реальный', 'виртуальный', 'выполнение', 'пользовательский_процесс', 'программный', 'обеспечение', 'субд', 'кэширование', 'объект'], ['существовать', 'два', 'главный', 'область', 'память', 'oracle', 'разделять', 'память', 'использоваться', 'процесс', 'работать', 'база', 'локальный', 'память', 'каждый', 'пользовательский_процесс'], ['системный', 'память'], ['системный', 'память'], ['oracle', 'база', 'называться', 'sga', 'system', 'global', 'агеа', 'системный', 'глобальный', 'область', 'shared', 'global', 'агеа', 'разделять', 'глобальный', 'область'], ['управлять', 'структура', 'sga', 'являться', 'разделяемыми', 'фоновый', 'процесс', 'oracle', 'пользовательский_процесс', 'обращаться'], ['память', 'пользовательский_процесс'], ['каждый', 'подключение', 'база', 'oracle', 'выделять', 'pga', 'process', 'global', 'агеа', 'глобальный', 'область', 'процесс', 'program', 'global', 'агеа', 'глобальный', 'область', 'программа', 'память', 'машина', 'pga', 'фоновый', 'процесс'], ['область', 'память', 'содержать', 'управлять', 'информация', 'процесс', 'процесс', 'разделяться'], ['2.3.2.2', 'тип', 'обрабатывать', 'типы', 'обрабатывать', 'субд', 'oracle', 'представить', 'таблица'], ['таблица', '2'], ['тип', 'обрабатывать'], ['тип', '\\x07описание', '\\x07', '\\x07снаr(size', '\\x07символьная', 'строка', 'фиксированный', 'длина', 'иметь', 'максимальный', 'длина', 'size', 'символ'], ['длина', 'умолчание', '1', 'максимальный', '-255'], ['\\x07', '\\x07снаrастеr(size'], ['\\x07то', 'char'], ['\\x07', '\\x07date', '\\x07правильные', 'дата', 'интервал', '1', 'январь', '4712', 'год', 'до н.э.', '31', 'декабрь', '4712', 'год'], ['\\x07', '\\x07long', '\\x07символьные', 'переменный', 'длина', '2', 'гигабайт'], ['\\x07', '\\x07long', 'raw', '\\x07двоичные', 'переменный', 'длина', '2', 'гигабайт', '231', '1'], ['\\x07', '\\x07mlslabel', '\\x07использоваться', 'trusted', 'oracle'], ['\\x07', '\\x07number(p', 's', '\\x07число', 'иметь', 'p', 'значащий', 'цифра', 'масштаб', 's.', '1', '38'], ['s', 'принимать', 'значение', '-84', '127', '\\x07', '\\x07raw(size', '\\x07двоичные', 'длина', 'size', 'байт'], ['максимальный', 'значение', 'size', '2000', 'байт'], ['параметр', 'raw', 'обязательный'], ['\\x07', '\\x07raw', 'mlslabel', '\\x07использоваться', 'trusted', 'oracle'], ['\\x07', '\\x07rowid', '\\x07значение', 'псевдостолбца', 'rowid'], ['\\x07', '\\x07varchar2(size', '\\x07символьная', 'строка', 'переменный', 'длина', 'иметь', 'максимальный', 'длина', 'size', 'символ'], ['длина', 'умолчание', '1', 'максимальный', '2000', '\\x07', '\\x07varchar(size'], ['\\x07то', 'varchar2'], ['\\x07', '\\x07извлекать', 'псевдостолбцов', 'табл.3', 'похожий', 'столбец', 'таблица', 'значение', 'изменять', 'помощь', 'оператор', 'dml'], ['таблица', '3'], ['псевдостолбцы'], ['название', 'столбец', '\\x07возвращаемое', 'значение', '\\x07', '\\x07sequence', 'currval', '\\x07текущее', 'значение', 'sequence', 'сеанс', 'sequence', 'nextval', 'выбрать'], ['\\x07', '\\x07sequence'], ['nextval', '\\x07следующее', 'значение', 'sequence', 'текущий', 'сеанс'], ['\\x07', '\\x07[table.]level', '\\x071', 'корень', 'дерево', '2', 'узел', 'второй', 'уровень'], ['используется', 'оператор', 'select', 'иерархический', 'запрос'], ['\\x07', '\\x07[table.]rowid', '\\x07значение', 'идентифицировать', 'строка', 'таблица', 'table', 'уникальный', 'образ'], ['значение', 'псевдостолбца', 'rowid', 'иметь', 'тип', 'rowid', 'number', 'char', '\\x07', '\\x07rownum', '\\x07порядковый', 'номер', 'строка', 'строка', 'выбирать', 'запрос'], ['oracle', 'выбирать', 'строка', 'произвольный', 'порядок', 'приписывать', 'значение', 'rownum', 'строка', 'отсортировать', 'предложение', 'order', 'by'], ['\\x07', '\\x07требование', 'имя', 'объект', 'база', 'длина', '1', '30', 'бант', 'исключение', 'имя', 'база', 'длина', 'ограничить', '8', 'байт', 'содержать', 'кавычка', 'совпадать', 'имя', 'объект'], ['имя', 'заключить', 'двойной', 'кавычки', 'нарушать', 'привести', 'правило'], ['противный', 'случай', 'имя', 'начинаться', 'буква', 'a', 'z', 'содержать', 'символ', 'a', 'z', '0', '9', '$', 'дублировать', 'зарезервированный', 'слово', 'sql'], ['различие', 'прописной', 'строчный', 'буква', 'учитываться', 'имя', 'заключить', 'двойной', 'кавычки'], ['операция', 'приоритет', 'арифметический', 'операция', '\\x07символьные', 'операция', '\\x07логический', 'операция', '\\x07операции', 'сравнение', '\\x07', '\\x07+', 'операнд', '\\x07|', '|', '\\x07not', '\\x07=', '\\x07', '\\x07', '\\x07', '\\x07and', '\\x07!=', '^=', '~=', '<', '>', '\\x07', '\\x07+', 'два', 'операнд', '\\x07', '\\x07or', '\\x07', '>', '>', '=', '<', '<', '=', '\\x07', '\\x07', '\\x07', '\\x07', '\\x07in', '\\x07', '\\x07', '\\x07', '\\x07', '\\x07not', 'in', '\\x07', '\\x07', '\\x07', '\\x07', '\\x07any', 'some', '\\x07', '\\x07', '\\x07', '\\x07', '\\x07all', '\\x07', '\\x07']]"
        ],
        [
         "27",
         "Некоторые особенности проектирования.doc",
         "Некоторые особенности проектирования под конкретные архитектуры\rАрхитектура «клиент-сервер» \rАрхитектура «клиент-сервер» предоставляет пользователю одно основное преимущество - возможность получить графический пользовательский интерфейс, не модернизируя сервер. По сравнению с файл-серверными архитектурами в данном случае резко снижается трафик (правда, только при правильном проектировании).\rСуществует два ключевых момента любой архитектуры:\rЧисло пар операций обмена (запрос, ответ), прежде всего там, где используются медленные и неустойчивые каналы связи. \rСтрогое разделение задачи управления пользовательским интерфейсом и задачи управления данными. Нарушение этого принципа - одна из главных причин высокого сетевого трафика. \rВ случае архитектуры «клиент-сервер» обработка данных производится централизованно на сервере. Клиент посылает запрос к данным, сервер обрабатывает этот запрос и передает клиенту ответ. Казалось бы, все очень просто: ПО на сервере одно и то же, равно как и набор клиентских приложений один и тот же, так что все должно замечательно работать в любом случае.\rКлиентское приложение должно идентифицировать по имени целевой сервер, к которому оно посылает запрос, а поиск физического сервера осуществляется на основании правил разрешения имен. Эти функции берут на себя серверный и клиентский компоненты СУБД, которые обеспечивают сетевой сервис. Все вопросы разрешения имен находятся в компетенции настроек этого ПО, а не собственно приложения-клиента. По сути, приложение-клиент общается непосредственно с клиентским ПО сетевого драйвера СУБД, а не с ядром СУБД. При этом:\rКлиентский и серверный процессы могут находиться как на одной, так и на разных машинах. \rКлиентский и серверный процессы могут работать в разном окружении (аппаратное обеспечение, операционная система). Архитектура обеспечивает независимость клиентского ПО от серверного ПО СУБД. Независимость достигается за счет строго определенного интерфейса обмена, который, в свою очередь, осуществляется посредством посылки сообщений строго определенного формата. \rКлиентский процесс не знает, какой сервер в итоге будет обрабатывать его запрос. Средства передачи запросов от сервиса к сервису контролируются как СУБД, так и другими серверными процессами (например, запрос был обработан Web-сервером, преобразовавшим его в запрос для монитора транзакций, который обратился непосредственно к СУБД, а передача ответа идет в обратном порядке - в результате клиентский запрос последовательно обработан тремя серверами). \rВсе эти положения, по сути, описывают инкапсуляцию, которая является необходимым условием успешного проектирования в этой архитектуре.\rПроектируя любое приложение в архитектуре «клиент-сервер», следует обратить внимание на минимизацию операций обмена между клиентом и сервером. Вынесение части бизнес-логики на сервер в виде хранимых процедур позволяет снизить количество операций обмена.\rЕще одним фактором является количество соединений одного приложения с сервером баз данных. СУБД на каждое соединение выделяет определенный ресурс. Если приложение открыло 10 соединений, а работает только одно из них, то СУБД реально резервирует все 10 ресурсов. Большинство интерактивных приложений характеризуются тем, что более 90% времени по открытым этими приложениями соединениям не ведется никакой работы. Для некоторых СУБД большое количество неактивных соединений серьезно снижает эффективность работы сервера, например для Oracle (поскольку при открытии соединения системные ресурсы под него выделяются сразу). Лучше пусть соединений будет меньше, но они будут работать.\rВажным фактором является пропускная способность сети, а также пропускная способность выбранного протокола обмена данными. Большинство СУБД поддерживают протоколы Named Pipes, TCP/IP, NetBIOS, IPX/SPX. Все эти протоколы изначально не предназначались для обмена с базами данных. Некоторые производители реализуют собственные протоколы обмена - например, APPC, предоставляемый IBM DB2, специально оптимизирован для операций обмена, характерных для баз данных. Полоса пропускания протокола становится критичной только в том случае, когда передаваемые пакеты являются большими, например при передаче изображений и звука. Полоса пропускания протокола - один из возможных параметров, которые следует оптимизировать для повышения скорости передачи информации.\rОсновная задача проектирования в архитектуре «клиент-сервер» - реализовать на клиенте качественный прикладной интерфейс (экранные формы и, может быть, небольшое число проверок корректности ввода данных) и осуществить на сервере обработку разделяемых данных.\rМодель, представленная на рис. 1, показывает типы распределения нагрузки между клиентом и сервером. Эту же модель можно распространить и на трехуровневые архитектуры, где уровнями являются клиент, ПО промежуточного слоя, сервер. Чем более жестко вы примените инкапсуляцию при проектировании, тем меньше будет вероятность того, что маленькие фрагменты управления логикой представления данных окажутся спрятанными в коде управления данными. Если этого не сделать, вы получите очень чувствительный к изменениям прикладной код, а значит, создадите трудности как при разработке кода, так и при поддержке приложения.\rНаличие тонкого клиента также важно в современных информационных системах. Большинство серверов баз данных оптимизировано для селективной выборки данных, серверное ПО рассчитано на прием и передачу данных за минимальное время. Не следует злоупотреблять на разделяемых ресурсах сервера прикладными программами, используемыми клиентами. Это, конечно, гарантирует факт запуска одного и того же ПО с любой из клиентских машин, но нужно правильно оценивать стоимость этих операций с точки зрения сетевого трафика.\rЕсли одни и те же данные часто запрашиваются с сервера, то их можно кэшировать на клиенте. Это, как правило, небольшие, редко обновляемые справочники. Такой подход снижает количество запросов к данным с сервера, а следовательно, понижает нагрузку не только на сеть, но и на сам сервер. Приложение-клиент должно уметь работать с таким кэшем данных. Организация его - скорее компетенция разработчиков, чем проектировщиков. Более серьезная задача - это обеспечение непротиворечивости и актуальности данных в кэше. Если в СУБД реализован механизм событий (event), который позволяет по факту модификации данных в справочнике послать клиенту уведомление об этом событии, последнее обрабатывается приложением-клиентом и вызывается функция, которая инициирует новое считывание справочника и обновление данных в кэше. Такие вызовы могут быть асинхронными.\rЕсли же справочники велики, упорядочены всегда одинаково и изменяются мало, можно хранить их на клиенте не в кэше, а в обычных файлах. Это может расцениваться как некий упрощенный вариант распределенной базы данных, когда часть считанных данных хранится на клиенте в течение всего времени его работы. Таким образом можно хранить изображение и звук, а также другую информацию большого объема. Актуализация указанных данных также может быть реализована посредством механизма событий.\r\rТрехуровневая архитектура\rСейчас часто употребляют термин «ПО промежуточного слоя». Некоторые авторы определяют этим понятием даже драйверы ODBC, иными словами, считают, что все, что работает между интерфейсом native-вызовов сервера и интерфейсом вызовов клиента, является ПО промежуточного слоя. Если допустить, что такое ПО обеспечивает только независимость клиента и сервера, то подобный термин имеет право на существование.\rК ПО промежуточного слоя относят мониторы транзакций. В этом случае правила обработки данных, правила процессов определяются на языке монитора транзакций. Клиентское ПО обращается только к монитору транзакций. Вся обработка данных находится в компетенции монитора транзакций.\rПО промежуточного слоя обладает всеми системными функциями, например функциями сервера печати. Большинство проектировщиков мотивируют использование трехуровневой архитектуры необходимостью сконцентрировать логику обработки данных, системные функции в одном месте и убрать эти функции из состава ПО клиента.\rПО промежуточного слоя актуально в тех случаях, когда требуется обеспечить прозрачность доступа к данным, управляемым разными СУБД; здесь проблемы общения с СУБД берет на себя сервер приложений.\rЧасто ПО промежуточного слоя обеспечивает дополнительную защиту данных от несанкционированного доступа, например когда требуется уровень защиты B2 и выше. Некоторые СУБД обеспечивают такой уровень защиты собственными средствами - речь идет о Trusted-версиях, например Oracle, Sybase, Informix. Функции защиты данных обеспечиваются не только СУБД, но и специальными версиями операционных систем. Функции Trusted-сервера выполняет также IBM DB2 на архитектурах S/390, AS/400 в соответствующем окружении. К Trusted-серверам также относится Linter SQL Server производства российской компании РЕЛЭКС - защита данных здесь полностью обеспечивается ядром СУБД. В России эта СУБД сертифицирована по 2-му классу защищенности и может быть использована для построения защищенных информационных систем (сертификат действителен для версий СУБД, функционирующих в Windows NT, UNIX, Novell NetWare).\r\rРаспределенная база данных, параллельный сервер баз данных \rЕсть много причин, которые могут подтолкнуть проектировщика к принятию решения о построении распределенной базы данных. Приведем некоторые из них:\rРазмещение часто используемых данных ближе к клиенту, что позволяет минимизировать сетевой трафик. \rРасположение часто меняющихся данных в одном месте, обеспечивающее минимизацию затрат по синхронизации копий данных. \rУвеличение надежности комплекса к единичным отказам серверов (горячее резервирование). \rПонижение стоимости системы за счет использования группы небольших серверов вместо одного мощного центрального сервера. \rЕсли в информационной системе наличествуют все перечисленные факторы, то распределенная база данных может оказаться хорошим решением. Часто распределение базы данных изначально определяется требованиями бизнеса, например когда объединяется информация нескольких крупных подразделений одной компании и требуется постоянный обмен данными между филиалами.\rРешение о распределенной базе данных оправданно и для систем, где есть четко выраженные группа меняющихся данных и группа устойчивых данных, по которым выполняются отчеты. Тогда в самом простом варианте работают два сервера: один обслуживает часто меняющиеся данные - это, как правило, OLTP (On-Line Transaction Processing. - Прим. ред.), второй - отчеты, то есть DSS (Decision Support System. - Прим. ред.). Ряд СУБД не очень хорошо совмещает обработку OLTP- и DSS-потоков запросов, поскольку для этих двух типов потоков запросов оптимальные параметры конфигурации серверов будут различаться. Решение такой базы данных как распределенной может оказаться более выгодным.\rПреимущества распределенной базы данных имеют свою цену - должны быть обеспечены:\rНепротиворечивость данных, независимо от того, какой клиент к какому серверу обратился. \rПроизводительность распределенной базы данных должна удовлетворять требованиям заказчика, а это может оказаться более сложной задачей, чем в случае централизованной базы данных. \rНадежность распределенной базы данных не должна уступать надежности централизованной базы данных. \rСовременные СУБД позволяют осуществлять запрос данных, находящихся на разных узлах распределенной сети в одном SQL-запросе. Прозрачность доступа СУБД также обеспечивают - в каких-то реализациях хуже, в каких-то лучше. Одна из самых распространенных проблем - более сложная обработка транзакций. Практически все промышленные реализации поддерживают только двухфазную фиксацию транзакций, а в этом режиме не все типы отказов разрешимы. Распределенный deadlock (взаимоблокировка. - Прим. ред.) также может представлять значительную проблему, и большинство реализаций используют только таймауты для его детектирования.\rКак бы то ни было, стратегия распределения данных должна определяться не политикой предприятия (что обычно пытается навязать руководство), а требованиями надежности и производительности системы. При построении распределенной базы данных следует уделить особое внимание проектированию топологии сети. Узлы распределенной базы данных должны быть соединены скоростными надежными линями связи. Это же касается линий соединения узлов базы данных и серверов приложений. Наличие низкоскоростного и ненадежного канала связи между узлами распределенной базы данных резко повышает количество детектируемых отказов сети.\rВ распределенной базе данных могут быть использованы следующие типы вызовов:\rУдаленные DDL- и DML- операции, а также выборка данных. \rСинхронные удаленные вызовы процедур. \rАсинхронные удаленные вызовы процедур. \rНепротиворечивые снимки. \rАсинхронная симметричная репликация. \rСинхронная симметричная репликация. \rВызов распределенного запроса (запрашивает данные на чтение и модификацию с нескольких узлов). \rРаспределенная база данных может обеспечить горизонтальную фрагментацию; например, в филиале чаще всего используют данные о клиентах, находящихся в городе N (CLIENT_PLACE = ‘N’). В этом случае на узле распределенной базы данных этого филиала может быть расположен фрагмент таблицы данных, выделенный согласно условию CLIENT_PLACE = ‘N’.\rСтратегия распределения данных для каждой СУБД определяется по-своему и достойна отдельной книги. Определение стратегии преследует две цели: сократить нагрузку на сеть и сервер и/или повысить уровень готовности данных.\rСледует отметить, что проектировщики должны четко представлять себе особенности реализации распределенной базы данных используемой СУБД. Не владеющий этой информацией проектировщик рискует создать нерабочую или плохо работающую схему, причем проявится это даже не на моделях, а в реальной эксплуатации. Если вы решили строить распределенную базу данных, позаботьтесь о наличии в штате квалифицированного администратора. Есть одно простое правило: проектировщик не может принять окончательного решения об определении стратегии распределения данных без администратора баз данных. Редко встречаются проектировщики, которые имеют практический опыт администрирования 2-3 серверов баз данных и которые реально работали на них с распределенными базами данных. Для каждой СУБД принципы, влияющие на детали распределения базы данных, индивидуальны.\rОсобый интерес представляет неоднородная распределенная база данных. Это то, что постоянно, но безуспешно пытаются изживать и проектировщики, и администраторы баз данных. Никто не любит иметь дело со шлюзами данных. Но если неоднородной распределенной базы избежать не удалось, уделите особое внимание выбору шлюзов данных, а также ПО, обеспечивающему синхронизацию информации базах данных под управлением разных СУБД. Если синхронизация данных на узлах под управлением одной СУБД может быть обеспечена самой СУБД (что реализуется большинством производителей), то синхронизация данных на узлах под управлением разных СУБД обеспечивается, как правило, специальным ПО. Тщательно оцените, что будет дешевле: использовать это ПО или импортировать данные и схему и сделать распределенную базу данных однородной.\rСледует также отметить, что в подавляющем большинстве реализаций каждый из узлов распределенной базы данных может обслуживаться параллельным сервером баз данных, и это является важным критерием повышения производительности системы. Промышленные СУБД также используют параллельный доступ к хранилищам данных; RAID, например, могут размещать данные, используя не файловую систему операционной системы, а свою файловую систему. Реализация всех этих возможностей существенно различается у различных СУБД. Это означает, что выбор параллельного сервера баз данных должен осуществляться только после серьезных консультаций с администраторами тех СУБД, которые рассматриваются как возможные претенденты на роль сервера баз данных в проекте.\rМетод распределения данных по дискам для поддержки параллельных вычислений во многом зависит и от особенностей реализации СУБД. Администратор базы данных не может выбрать такой метод в отрыве от особенностей конкретной информационной системы. Еще одна возможность параллельной обработки данных, предоставляемая СУБД: обработка одного запроса несколькими менеджерами ресурсов. В реализациях также имеется возможность использования одного хранилища данных несколькими серверами баз данных (Parallel Server). Такая архитектура может быть эффективно использована на кластерах.\r\rХранилище данных \rИнформационные системы такого вида сегодня одни из самых актуальных. Хранилище данных характеризуется большим объемом редко изменяемой информации. Хранилище данных обменивается информацией с другими хранилищами; как правило, речь идет о пакетной загрузке. Здесь решаются задачи обработки и хранения больших объемов информации (VLDB, Very Large Databases). Хранилище данных формирует сводное представление обо всех данных информационной системы.\rВ проектировании хранилищ данных важное место занимают интерфейсы обмена данными и интерфейсы конвертации данных. Следует четко выделить те системы, которые поставляют данные в хранилище, и те, что забирают данные из хранилища.\rВнутренняя структура хранилища рассчитана на выполнение сложных запросов. Как правило, хранилище данных обслуживается выделенным сервером, а нередко - параллельным сервером баз данных. Хранилища данных используются для прогнозирования развития бизнеса. Они оснащаются средствами аналитической обработки данных (OLAP, On-Line Analytical Processing). На данный момент существуют специально ориентированные на OLAP версии серверов баз данных.\rПО хранилища баз данных состоит из следующих компонентов (рис. 2):\rПО источников данных. \rЗдесь формируются входные пакеты данных, которые в состоянии интерпретировать конвертор и загрузчик данных. Это ПО входит в состав внешних систем (если повезло) или разрабатывается специально; в последнем случае основная его задача - достать данные из внешней системы.\rЗагрузочная секция (отвечает и за трансформацию данных). \rПО принимает входные пакеты данных в необработанном формате, проверяет целостность пакета (например, контрольную сумму и т.п.), выполняет первичную обработку пакета (например, расшифровку), а также переводит данные во внутренний формат. Теперь они готовы для передачи в хранилище. Данные загрузочной секции хранятся во внутреннем формате системы, обеспечивающей пересылку данных.\rПО трансформации данных. \rЗдесь обеспечиваются пересылка данных в хранилище и логика обработки данных. Данные проходит проверку на корректность, переводятся в нужный формат и интегрируются в хранилище.\rСобственно хранилище данных. \rПреимущественно это один или несколько мощных параллельных серверов баз данных, которые обеспечивают обработку информации в хранилище. Само хранилище может быть распределенной среды (распределенная база данных) или трехуровневой среды (централизованная или распределенная база данных и сервер приложений). Собственно база данных хранилища редко представляет собой объединение рабочих баз данных. База данных не обязательно должна быть реляционной. Здесь могут с успехом использоваться расширения, предоставляемые современными СУБД, например Spatial Data-расширения, которые поддерживают многомерные данные.\rИнтерфейс клиента. \rПО этого уровня обеспечивает взаимодействие приложений-клиентов, запрашивающих информацию из хранилища. Здесь запрещены операции модификации данных.\rРассмотрим один из приемов проектирования хранилищ данных.\rЗвездообразная схема (она же многомерная схема, соединение по схеме «звезда», куб данных) состоит из центральной таблицы фактов и нескольких таблиц измерений (рис. 3).\rФакты представляют собой основные виды деятельности и факторы, влияющие на бизнес. В таблице измерений хранятся данные, способные оказывать определенное влияние либо порождать те или иные пути развития фактов.\rЧасто таблица фактов разбивается на секции для повышения скорости доступа к хранящимся в ней записям в зависимости от запроса, поскольку оптимизатор в этом случае сканирует только часть таблицы/индекса (определенную секцию), а не весь объем данных. Отношение между таблицей фактов и таблицей измерения должно быть как можно более простым, так как должен существовать единственно возможный путь их соединения.",
         "0",
         "[['особенность', 'проектирование', 'конкретный', 'архитектура', 'архитектура', 'клиент', 'сервер', 'архитектура', 'клиент', 'сервер', 'предоставлять', 'пользователь', 'основный', 'преимущество', 'возможность', 'получить', 'графический', 'пользовательский', 'интерфейс', 'модернизировать', 'сервер'], ['сравнение', 'файл', 'серверный', 'архитектурами', 'случай', 'резко', 'снижаться', 'трафик', 'правда', 'правильный', 'проектирование'], ['существовать', 'два', 'ключевой', 'момент', 'архитектура', 'число', 'пара', 'операция', 'обмен', 'запрос', 'ответ', 'использоваться', 'медленный', 'неустойчивый', 'канал', 'связь'], ['строгий', 'разделение', 'задача', 'управление', 'пользовательский', 'интерфейс', 'задача', 'управление', 'данными'], ['нарушение', 'принцип', 'главный', 'причина', 'высокий', 'сетевой', 'трафик'], ['случай', 'архитектура', 'клиент', 'сервер', 'обработка', 'производиться', 'централизованно', 'сервер'], ['клиент', 'посылать', 'запрос', 'данным', 'сервер', 'обрабатывать', 'запрос', 'передавать', 'клиент', 'ответ'], ['сервер', 'равно', 'набор', 'клиентский', 'приложение', 'замечательно', 'работать', 'случай'], ['клиентский', 'приложение', 'идентифицировать', 'имя', 'целевой', 'сервер', 'посылать', 'запрос', 'поиск', 'физический', 'сервер', 'осуществляться', 'основание', 'правило', 'разрешение', 'имя'], ['функция', 'брать', 'серверный', 'клиентский', 'компонент', 'субд', 'обеспечивать', 'сетевой', 'сервис'], ['вопрос', 'разрешение', 'имя', 'находиться', 'компетенция', 'настройка', 'приложение', 'клиент'], ['суть', 'приложение', 'клиент', 'общаться', 'непосредственно', 'клиентский', 'сетевой', 'драйвер', 'субд', 'ядро', 'субд'], ['клиентский', 'серверный', 'процесс', 'разный', 'машина'], ['клиентский', 'серверный', 'процесс', 'работать', 'разный', 'окружение', 'аппаратный', 'обеспечение', 'операционный', 'система'], ['архитектура', 'обеспечивать', 'независимость', 'клиентский', 'серверного', 'субд'], ['независимость', 'достигаться', 'счёт', 'строго', 'определённый', 'интерфейс', 'обмен', 'очередь', 'осуществляться', 'посылка', 'сообщение', 'строго', 'определённый', 'формат'], ['клиентский', 'процесс', 'знать', 'сервер', 'итог', 'обрабатывать', 'запрос'], ['средство', 'передача', 'запрос', 'сервис', 'сервис', 'контролироваться', 'субд', 'серверный', 'процесс', 'запрос', 'обработать', 'web', 'сервер', 'преобразовать', 'запрос', 'монитор', 'транзакция', 'обратиться', 'непосредственно', 'субд', 'передача', 'ответ', 'идти', 'обратный', 'порядок', 'результат', 'клиентский', 'запрос', 'последовательно', 'обработать', 'три', 'сервер'], ['положение', 'суть', 'описывать', 'инкапсуляция', 'являться', 'условие', 'успешный', 'проектирование', 'архитектура'], ['проектировать', 'приложение', 'архитектура', 'клиент', 'сервер', 'обратить', 'внимание', 'минимизация', 'операция', 'обмен', 'клиент', 'сервер'], ['вынесение', 'часть', 'бизнес', 'логики', 'сервер', 'вид', 'хранить', 'процедура', 'позволять', 'снизить', 'количество', 'операция', 'обмен'], ['фактор', 'являться', 'количество', 'соединение', 'приложение', 'сервер', 'база'], ['субд', 'соединение', 'выделять', 'определённый', 'ресурс'], ['приложение', 'открыть', '10', 'соединение', 'работать', 'субд', 'реально', 'резервировать', '10', 'ресурс'], ['большинство', 'интерактивный', 'приложение', 'характеризоваться', '90', 'время', 'открыть', 'приложение', 'соединение', 'вестись', 'работа'], ['субд', 'большой', 'количество', 'неактивный', 'соединение', 'серьезно', 'снижать', 'эффективность', 'работа', 'сервер', 'oracle', 'открытие', 'соединение', 'системный', 'ресурс', 'выделяться'], ['лучше', 'соединение', 'работать'], ['важный', 'фактор', 'являться', 'пропускной', 'способность', 'сеть', 'пропускной', 'способность', 'выбрать', 'протокол', 'обмен', 'данными'], ['большинство', 'субд', 'поддерживать', 'протокол', 'named', 'pipes', 'tcp', 'ip', 'netbios', 'ipx', 'spx'], ['протокол', 'изначально', 'предназначаться', 'обмен', 'база'], ['производитель', 'реализовать', 'собственный', 'протокол', 'обмен', 'appc', 'предоставлять', 'ibm', 'db2', 'специально', 'оптимизирован', 'операция', 'обмен', 'характерный', 'база'], ['полоса', 'пропускание', 'протокол', 'становиться', 'критичный', 'случай', 'передавать', 'пакет', 'являться', 'больший', 'передача', 'изображение', 'звук'], ['полоса', 'пропускание', 'протокол', 'возможный', 'параметр', 'оптимизировать', 'повышение', 'скорость', 'передача', 'информация'], ['основный', 'задача', 'проектирование', 'архитектура', 'клиент', 'сервер', 'реализовать', 'клиент', 'качественный', 'прикладной', 'интерфейс', 'экранный', 'форма', 'небольшой', 'число', 'проверка', 'корректность', 'ввод', 'осуществить', 'сервер', 'обработка', 'разделять'], ['модель', 'представить', 'рис'], ['1', 'показывать', 'тип', 'распределение', 'нагрузка', 'клиент', 'сервер'], ['модель', 'распространить', 'трехуровневые', 'архитектура', 'уровень', 'являться', 'клиент', 'промежуточный_слой', 'сервер'], ['жестко', 'применить', 'инкапсуляция', 'проектирование', 'вероятность', 'маленький', 'фрагмент', 'управление', 'логика', 'представление', 'оказаться', 'спрятать', 'код', 'управление', 'данными'], ['сделать', 'получить', 'чувствительный', 'изменение', 'прикладной', 'код', 'создадите', 'трудность', 'разработка', 'код', 'поддержка', 'приложение'], ['наличие', 'тонкий', 'клиент', 'важный', 'современный', 'информационный_система'], ['большинство', 'сервер', 'база', 'оптимизировать', 'селективный', 'выборка', 'серверное', 'рассчитать', 'приём', 'передача', 'минимальный', 'время'], ['злоупотреблять', 'разделять', 'ресурс', 'сервер', 'прикладной', 'программа', 'используемыми', 'клиент'], ['гарантировать', 'факт', 'запуск', 'клиентский', 'машина', 'правильно', 'оценивать', 'стоимость', 'операция', 'точка', 'зрение', 'сетевой', 'трафик'], ['запрашиваться', 'сервер', 'кэшировать', 'клиент'], ['правило', 'небольшой', 'редко', 'обновлять', 'справочник'], ['подход', 'снижать', 'количество', 'запрос', 'данным', 'сервер', 'следовательно', 'понижать', 'нагрузка', 'сеть', 'сервер'], ['приложение', 'клиент', 'уметь', 'работать', 'кэш'], ['организация', 'компетенция', 'разработчик', 'проектировщик'], ['серьёзный', 'задача', 'обеспечение', 'непротиворечивость', 'актуальность', 'кэш'], ['субд', 'реализовать', 'механизм', 'событие', 'event', 'позволять', 'факт', 'модификация', 'справочник', 'послать', 'клиент', 'уведомление', 'событие', 'последний', 'обрабатываться', 'приложение', 'клиент', 'вызываться', 'функция', 'инициировать', 'новый', 'считывание', 'справочник', 'обновление', 'кэш'], ['вызов', 'асинхронный'], ['справочник', 'большой', 'упорядочить', 'одинаково', 'изменяться', 'хранить', 'клиент', 'кэш', 'обычный', 'файл'], ['расцениваться', 'некий', 'упростить', 'вариант', 'распределить_база', 'часть', 'считанных', 'храниться', 'клиент', 'течение', 'время', 'работа'], ['образ', 'хранить', 'изображение', 'звук', 'другую', 'информация', 'большой', 'объём'], ['актуализация', 'указать', 'реализовать', 'механизм', 'событие'], ['трехуровневая', 'архитектура', 'употреблять', 'термин', 'промежуточный_слой'], ['автор', 'определять', 'понятие', 'драйвер', 'odbc', 'слово', 'считать', 'работать', 'интерфейс', 'native', 'вызов', 'сервер', 'интерфейс', 'вызов', 'клиент', 'являться', 'промежуточный_слой'], ['допустить', 'обеспечивать', 'независимость', 'клиент', 'сервер', 'термин', 'право', 'существование'], ['промежуточный_слой', 'относить', 'монитор', 'транзакция'], ['случай', 'правило', 'обработка', 'правило', 'процесс', 'определяться', 'язык', 'монитор', 'транзакция'], ['клиентский', 'обращаться', 'монитор', 'транзакция'], ['обработка', 'находиться', 'компетенция', 'монитор', 'транзакция'], ['промежуточный_слой', 'обладать', 'системный', 'функция', 'функция', 'сервер', 'печать'], ['большинство', 'проектировщик', 'мотивировать', 'использование', 'трехуровневой', 'архитектура', 'необходимость', 'сконцентрировать', 'логика', 'обработка', 'системный', 'функция', 'место', 'убрать', 'функция', 'состав', 'клиент'], ['промежуточный_слой', 'актуальный', 'случай', 'требоваться', 'обеспечить', 'прозрачность', 'доступ', 'данным', 'управляемым', 'разный', 'субд', 'проблема', 'общение', 'субд', 'брать', 'сервер', 'приложение'], ['промежуточный_слой', 'обеспечивать', 'дополнительный', 'защита', 'несанкционированный', 'доступ', 'требоваться', 'уровень', 'защита', 'b2', 'высоко'], ['субд', 'обеспечивать', 'уровень', 'защита', 'собственный', 'средство', 'речь', 'идти', 'trusted', 'версия', 'oracle', 'sybase', 'informix'], ['функция', 'защита', 'обеспечиваться', 'субд', 'специальный', 'версия', 'операционный', 'система'], ['функция', 'trusted', 'сервер', 'выполнять', 'ibm', 'db2', 'архитектурах', 's/390', 'as/400', 'соответствующий', 'окружение'], ['trusted', 'сервер', 'относиться', 'linter', 'sql', 'server', 'производство', 'российский', 'компания', 'релэкс', 'защита', 'полностью', 'обеспечиваться', 'ядро', 'субд'], ['россия', 'субд', 'сертифицировать', '2-й', 'класс', 'защищённость', 'использовать', 'построение', 'защитить', 'информационный_система', 'сертификат', 'действительный', 'версия', 'субд', 'функционировать', 'windows', 'nt', 'unix', 'novell', 'netware'], ['распределённый_база', 'параллельный', 'сервер', 'база', 'причина', 'подтолкнуть', 'проектировщик', 'принятие', 'решение', 'построение', 'распределить_база'], ['привести', 'размещение', 'использовать', 'близкий', 'клиент', 'позволять', 'минимизировать', 'сетевой', 'трафик'], ['расположение', 'меняться', 'место', 'обеспечивать', 'минимизация', 'затрата', 'синхронизация', 'копия'], ['увеличение', 'надёжность', 'комплекс', 'единичный', 'отказ', 'сервер', 'горячий', 'резервирование'], ['понижение', 'стоимость', 'система', 'счёт', 'использование', 'группа', 'небольшой', 'сервер', 'мощный', 'центральный', 'сервер'], ['информационный_система', 'наличествовать', 'перечислить', 'фактор', 'распределённый_база', 'оказаться', 'хороший', 'решение'], ['распределение', 'база', 'изначально', 'определяться', 'требование', 'бизнес', 'объединяться', 'информация', 'несколько', 'крупный', 'подразделение', 'компания', 'требоваться', 'постоянный', 'обмен', 'данными', 'филиал'], ['решение', 'распределить_база', 'оправданный', 'система', 'четко', 'выразить', 'группа', 'меняться', 'группа', 'устойчивый', 'выполняться', 'отчёт'], ['простой', 'вариант', 'работать', 'два', 'сервер', 'обслуживать', 'меняться', 'правило', 'oltp', 'on', 'line', 'transaction', 'processing'], [], ['прим'], ['ред', 'второй', 'отчёт', 'dss', 'decision', 'support', 'system'], [], ['прим'], ['ред'], ['ряд', 'субд', 'совмещать', 'обработка', 'oltp-', 'dss', 'поток', 'запрос', 'два', 'тип', 'поток', 'запрос', 'оптимальный', 'параметр', 'конфигурация', 'сервер', 'различаться'], ['решение', 'база', 'распределить', 'оказаться', 'выгодный'], ['преимущество', 'распределить_база', 'иметь', 'цена', 'обеспечить', 'непротиворечивость', 'независимо', 'клиент', 'сервер', 'обратиться'], ['производительность', 'распределить_база', 'удовлетворять', 'требование', 'заказчик', 'оказаться', 'сложный', 'задача', 'случай', 'централизовать', 'база'], ['надёжность', 'распределить_база', 'уступать', 'надёжность', 'централизовать', 'база'], ['современный', 'субд', 'позволять', 'осуществлять', 'запрос', 'находиться', 'разный', 'узел', 'распределить', 'сеть', 'sql', 'запрос'], ['прозрачность', 'доступ', 'субд', 'обеспечивать', 'какой', 'реализация', 'какой', 'хороший'], ['распространенных', 'проблема', 'сложный', 'обработка', 'транзакция'], ['практически', 'промышленный', 'реализация', 'поддерживать', 'двухфазную', 'фиксация', 'транзакция', 'режим', 'тип', 'отказ', 'разрешимый'], ['распределённый', 'deadlock', 'взаимоблокировка'], [], ['прим'], ['ред', 'представлять', 'значительный', 'проблема', 'большинство', 'реализация', 'использовать', 'таймаут', 'детектирование'], ['ни', 'стратегия', 'распределение', 'определяться', 'политика', 'предприятие', 'пытаться', 'навязать', 'руководство', 'требование', 'надёжность', 'производительность', 'система'], ['построение', 'распределить_база', 'уделить', 'особый', 'внимание', 'проектирование', 'топология', 'сеть'], ['узлы', 'распределить_база', 'соединить', 'скоростной', 'надёжный', 'линь', 'связь'], ['касаться', 'линия', 'соединение', 'узел', 'база', 'сервер', 'приложение'], ['наличие', 'низкоскоростной', 'ненадёжный', 'канал', 'связь', 'узел', 'распределить_база', 'резко', 'повышать', 'количество', 'детектируемых', 'отказ', 'сеть'], ['распределить_база', 'использовать', 'следующий', 'тип', 'вызов', 'удалённый', 'ddl-', 'dml-', 'операция', 'выборка'], ['синхронный', 'удалённый', 'вызов', 'процедура'], ['асинхронный', 'удалённый', 'вызов', 'процедура'], ['непротиворечивый', 'снимок'], ['асинхронный', 'симметричный', 'репликация'], ['синхронный', 'симметричный', 'репликация'], ['вызов', 'распределить', 'запрос', 'запрашивать', 'чтение', 'модификация', 'несколько', 'узел'], ['распределённый_база', 'обеспечить', 'горизонтальный', 'фрагментация', 'филиал', 'использовать', 'клиент', 'находиться', 'город', 'n', 'client_place', '=', 'n'], ['случай', 'узел', 'распределить_база', 'филиал', 'расположен', 'фрагмент', 'таблица', 'выделить', 'согласно', 'условие', 'client_place', '=', 'n'], ['стратегия', 'распределение', 'каждый', 'субд', 'определяться', 'достойный', 'отдельный', 'книга'], ['определение', 'стратегия', 'преследовать', 'два', 'цель', 'сократить', 'нагрузка', 'сеть', 'сервер', 'повысить', 'уровень', 'готовность'], ['отметить', 'проектировщик', 'четко', 'представлять', 'особенность', 'реализация', 'распределить_база', 'использовать', 'субд'], ['владеть', 'информация', 'проектировщик', 'рисковать', 'создать', 'нерабочую', 'плохо', 'работать', 'схема', 'проявиться', 'модель', 'реальный', 'эксплуатация'], ['решить', 'строить', 'распределённый_база', 'позаботьтесь', 'наличие', 'штат', 'квалифицированный', 'администратор'], ['простой', 'правило', 'проектировщик', 'принять', 'окончательный', 'решение', 'определение', 'стратегия', 'распределение', 'администратор', 'база'], ['редко', 'встречаться', 'проектировщик', 'иметь', 'практический', 'опыт', 'администрирование', '2', '3', 'сервер', 'база', 'реально', 'работать', 'распределить_база'], ['каждый', 'субд', 'принцип', 'влиять', 'деталь', 'распределение', 'база', 'индивидуальный'], ['особый', 'интерес', 'представлять', 'неоднородный', 'распределённый_база'], ['постоянно', 'безуспешно', 'пытаться', 'изживать', 'проектировщик', 'администратор', 'база'], ['любить', 'дело', 'шлюз'], ['неоднородный', 'распределить_база', 'избежать', 'удаться', 'уделить', 'особый', 'внимание', 'выбор', 'шлюз', 'обеспечивающему', 'синхронизация', 'информация', 'база', 'управление', 'разный', 'субд'], ['синхронизация', 'узел', 'управление', 'субд', 'обеспечить', 'субд', 'реализоваться', 'большинство', 'производитель', 'синхронизация', 'узел', 'управление', 'разный', 'субд', 'обеспечиваться', 'правило', 'специальный'], ['тщательно', 'оценить', 'дешёвый', 'использовать', 'импортировать', 'схема', 'сделать', 'распределённый_база', 'однородный'], ['отметить', 'подавляющем', 'большинство', 'реализация', 'узел', 'распределить_база', 'обслуживаться', 'параллельный', 'сервер', 'база', 'являться', 'важный', 'критерий', 'повышение', 'производительность', 'система'], ['промышленные', 'субд', 'использовать', 'параллельный', 'доступ', 'хранилищам', 'raid', 'размещать', 'использовать', 'файловый', 'система', 'операционный', 'система', 'файловый', 'система'], ['реализация', 'возможность', 'существенно', 'различаться', 'различный', 'субд'], ['означать', 'выбор', 'параллельный', 'сервер', 'база', 'осуществляться', 'серьёзный', 'консультация', 'администратор', 'субд', 'рассматриваться', 'возможный', 'претендент', 'роль', 'сервер', 'база', 'проект'], ['метод', 'распределение', 'дискам', 'поддержка', 'параллельный', 'вычисление', 'зависеть', 'особенность', 'реализация', 'субд'], ['администратор', 'база', 'выбрать', 'метод', 'отрыв', 'особенность', 'конкретный', 'информационный_система'], ['возможность', 'параллельный', 'обработка', 'предоставлять', 'субд', 'обработка', 'запрос', 'несколько', 'менеджер', 'ресурс'], ['реализация', 'иметься', 'возможность', 'использование', 'хранилище', 'несколько', 'сервер', 'база', 'parallel', 'server'], ['архитектура', 'эффективно', 'использовать', 'кластер'], ['хранилище', 'информационный_система', 'вид', 'сегодня', 'актуальный'], ['хранилище', 'характеризоваться', 'больший', 'объём', 'редко', 'изменять', 'информация'], ['хранилище', 'обмениваться', 'информация', 'хранилищами', 'правило', 'речь', 'идти', 'пакетный', 'загрузка'], ['решаться', 'задача', 'обработка', 'хранение', 'больший', 'объём', 'информация', 'vldb', 'very', 'large', 'databases'], ['хранилище', 'формировать', 'сводный', 'представление', 'обо', 'информационный_система'], ['проектирование', 'хранилище', 'важный', 'место', 'занимать', 'интерфейс', 'обмен', 'данными', 'интерфейс', 'конвертация'], ['четко', 'выделить', 'система', 'поставлять', 'хранилище', 'забирать', 'хранилище'], ['внутренний', 'структура', 'хранилище', 'рассчитать', 'выполнение', 'сложный', 'запрос'], ['правило', 'хранилище', 'обслуживаться', 'выделить', 'сервер', 'параллельный', 'сервер', 'база'], ['хранилище', 'использоваться', 'прогнозирование', 'развитие', 'бизнес'], ['оснащаться', 'средство', 'аналитический', 'обработка', 'olap', 'on', 'line', 'analytical', 'processing'], ['момент', 'существовать', 'специально', 'ориентировать', 'olap', 'версия', 'сервер', 'база'], ['хранилище', 'база', 'состоять', 'следующий', 'компонент', 'рис'], ['2', 'источник'], ['формироваться', 'входной', 'пакет', 'состояние', 'интерпретировать', 'конвертор', 'загрузчик'], ['входить', 'состав', 'внешний', 'система', 'повезти', 'разрабатываться', 'специально', 'последний', 'случай', 'основный', 'задача', 'достать', 'внешний', 'система'], ['загрузочный', 'секция', 'отвечать', 'трансформация'], ['принимать', 'входной', 'пакет', 'необработанный', 'формат', 'проверять', 'целостность', 'пакет', 'контрольный', 'сумма', 'т.п.', 'выполнять', 'первичный', 'обработка', 'пакет', 'расшифровка', 'переводить', 'внутренний', 'формат'], ['готовый', 'передача', 'хранилище'], ['загрузочный', 'секция', 'храниться', 'внутренний', 'формат', 'система', 'обеспечивать', 'пересылка'], ['трансформация'], ['обеспечиваться', 'пересылка', 'хранилище', 'логика', 'обработка'], ['проходить', 'проверка', 'корректность', 'переводиться', 'формат', 'интегрироваться', 'хранилище'], ['хранилище'], ['преимущественно', 'мощный', 'параллельный', 'сервер', 'база', 'обеспечивать', 'обработка', 'информация', 'хранилище'], ['хранилище', 'распределить', 'среда', 'распределённый_база', 'трехуровневой', 'среда', 'централизованный', 'распределённый_база', 'сервер', 'приложение'], ['база', 'хранилище', 'редко', 'представлять', 'объединение', 'рабочий', 'база'], ['база', 'обязательно', 'реляционный'], ['успех', 'использоваться', 'расширение', 'предоставлять', 'современный', 'субд', 'spatial', 'data', 'расширение', 'поддерживать', 'многомерный'], ['интерфейс', 'клиент'], ['уровень', 'обеспечивать', 'взаимодействие', 'приложение', 'клиентов', 'запрашивать', 'информация', 'хранилище'], ['запретить', 'операция', 'модификация'], ['рассмотреть', 'приём', 'проектирование', 'хранилище'], ['звездообразный', 'схема', 'многомерный', 'схема', 'соединение', 'схема', 'звезда', 'куб', 'состоять', 'центральный', 'таблица', 'факт', 'несколько', 'таблица', 'измерение', 'рис'], ['3'], ['факт', 'представлять', 'основный', 'вид', 'деятельность', 'фактор', 'влиять', 'бизнес'], ['таблица', 'измерение', 'храниться', 'способный', 'оказывать', 'определённый', 'влияние', 'порождать', 'иные', 'путь', 'развитие', 'факт'], ['таблица', 'факт', 'разбиваться', 'секция', 'повышение', 'скорость', 'доступ', 'храниться', 'запись', 'зависимость', 'запрос', 'оптимизатор', 'случай', 'сканировать', 'часть', 'таблица', 'индекс', 'определённый', 'секция', 'объём'], ['отношение', 'таблица', 'факт', 'таблица', 'измерение', 'простой', 'существовать', 'единственно', 'возможный', 'путь', 'соединение']]"
        ],
        [
         "28",
         "Непроцедурный доступ к данным.doc",
         "2.3.2.3 Непроцедурный доступ к данным (SQL).\rХарактерной чертой RDBMS является способность обработки данных как множества; файловые системы и СУБД с другими моделями обрабатывают данные способом \"запись-за-записью\". С RDBMS можно общаться, используя структурированный язык запросов (Structured Query Language - SQL). SQL - непроцедурный язык, который разработан специально для операций доступа к нормализованным структурам реляционных баз данных. Основное различие между SQL и традиционными языками программирования состоит в том, что операторы SQL указывают, какие операции с данными должны выполниться, а не способ их выполнения. \r\rСписок, зарезервированных слов SQL \rЯзык SQL включает зарезервированные слова, имеющие определенное значение в операторах SQL. Эти слова нельзя использовать в качестве имен объектов базы данных. \rACCESS*\r\u0007DEFAULT*\r\u0007INTEGER\r\u0007OPTION*\r\u0007START*\r\u0007\r\u0007ADD*\r\u0007DELETE*\r\u0007INTERSECT*\r\u0007OR*\r\u0007SUCCESSFUL\r\u0007\r\u0007ALL*\r\u0007DESC*\r\u0007INTO*\r\u0007ORDER*\r\u0007SYNONYM\r\u0007\r\u0007ALTER*\r\u0007DISTINCT*\r\u0007IS*\r\u0007PCTFREE*\r\u0007SYSDATE\r\u0007\r\u0007AND*\r\u0007DROP*\r\u0007LEVEL*\r\u0007PRIOR*\r\u0007TABLE*\r\u0007\r\u0007ANY*\r\u0007ELSE*\r\u0007LIKE*\r\u0007PRIVILEGES\r\u0007THEN*\r\u0007\r\u0007AS*\r\u0007EXCLUSIVE\r\u0007LOCK\r\u0007PUBLIC*\r\u0007TO*\r\u0007\r\u0007ASC*\r\u0007EXISTS*\r\u0007LONG\r\u0007RAW\r\u0007TRIGGER\r\u0007\r\u0007AUDIT\r\u0007FILE\r\u0007MAXEXTENTS\r\u0007RENAME*\r\u0007UID\r\u0007\r\u0007BETWEEN*\r\u0007FLOAT\r\u0007MINUS*\r\u0007RESOURCE*\r\u0007UNION*\r\u0007\r\u0007BY*\r\u0007FOR*\r\u0007MODE\r\u0007REVOKE\r\u0007UNIQUE*\r\u0007\r\u0007CHAR*\r\u0007FROM*\r\u0007MODIFY\r\u0007ROW\r\u0007UPDATE*\r\u0007\r\u0007CHECK*\r\u0007GRANT*\r\u0007NOAUDIT\r\u0007ROWID\r\u0007USER\r\u0007\r\u00070CLUSTER*\r\u0007GROUP*\r\u0007NOCOMPRESS*\r\u0007ROWLABEL\r\u0007VALIDATE\r\u0007\r\u0007COLUMN\r\u0007HAVING*\r\u0007NOT*\r\u0007ROWNUM*\r\u0007VALUES*\r\u0007\r\u0007COMMENT\r\u0007IDENTIFIED*\r\u0007NOWAIT\r\u0007ROWS\r\u0007VARCHAR*\r\u0007\r\u0007COMPRESS*\r\u0007IMMEDIATE\r\u0007NULL*\r\u0007SELECT*\r\u0007VARCHAR2*\r\u0007\r\u0007CONNECT*\r\u0007IN*\r\u0007NUMBER*\r\u0007SESSION\r\u0007VIEW*\r\u0007\r\u0007CREATE*\r\u0007INCREMENT\r\u0007OF*\r\u0007SET*\r\u0007WHENEVER\r\u0007\r\u0007CURRENT*\r\u0007INDEX*\r\u0007OFFLINE\r\u0007SHARE\r\u0007WHERE*\r\u0007\r\u0007DATE*\r\u0007INITIAL\r\u0007ON*\r\u0007SIZE*\r\u0007WITH*\r\u0007\r\u0007DECIMAL*\r\u0007INSERT*\r\u0007ONLINE\r\u0007SMALLINT\r\u0007 \r\u0007\r\u0007\rКомментарии \rКомментарии, заданные ограничителями '/*' и '*/', могут стоять в любом месте оператора SQL: \rALTER USER petrov /* Это комментарий */ IDENTIFIED BY petr; \rМожно использовать стандартные комментарии ANSI. Все символы после двух дефисов до конца строки игнорируются. \rALTER USER petrov /* Это комментарий продолжен до конца строки IDENTIFIED BY petr; \r\rПриоритеты операций \rПри вычислении выражения, содержащего несколько операций, ORACLE сначала выполняет операции с более высоким приоритетом. Операции, приведенные на одной и тойже строке, имеют одинаковые приоритеты. \rЗамечание: В выражениях можно использовать круглые скобки, чтобы изменять последовательность выполнения операций, предписываемую приоритетом. Выражения, заключенные в скобки, ORACLE вычесляет в первую очередь. Без скобок операции с одинаковым приоритетом ORACLE выполняет слева направо. \r\rПриоритеты операций SQL \rУнарные арифметические операции + - операция PRIOR \rАрифметические операции * / \rБинарные арифметические операции + - символьная операция | | \rВсе операции сравнения \rЛогическая операция NOT \rЛогическая операция AND \rЛогическая операция OR \r\rПриоритеты арифметических операций \rУнарные арифметические операции + - \rАрифметические операции * / \rБинарные арифметические операции + -",
         "0",
         "[['2.3.2.3', 'непроцедурный', 'доступ', 'данным', 'sql'], ['характерный', 'черта', 'rdbms', 'являться', 'способность', 'обработка', 'множество', 'файловый', 'система', 'субд', 'модель', 'обрабатывать', 'способ', 'запись', 'запись'], ['rdbms', 'общаться', 'использовать', 'структурировать', 'язык', 'запрос', 'structured', 'query', 'language', 'sql'], ['sql', 'непроцедурный', 'язык', 'разработать', 'специально', 'операция', 'доступ', 'нормализованным', 'структура', 'реляционный', 'база'], ['основный', 'различие', 'sql', 'традиционный', 'язык', 'программирование', 'состоять', 'оператор', 'sql', 'указывать', 'операция', 'данными', 'выполниться', 'способ', 'выполнение'], ['список', 'зарезервировать', 'слово', 'sql', 'язык', 'sql', 'включать', 'зарезервированный', 'слово', 'иметь', 'определённый', 'значение', 'оператор', 'sql'], ['слово', 'использовать', 'качество', 'имя', 'объект', 'база'], ['access', '\\x07default', '\\x07integer', '\\x07option', '\\x07start', '\\x07', '\\x07add', '\\x07delete', '\\x07intersect', '\\x07or', '\\x07successful', '\\x07', '\\x07all', '\\x07desc', '\\x07into', '\\x07order', '\\x07synonym', '\\x07', '\\x07alter', '\\x07distinct', '\\x07is', '\\x07pctfree', '\\x07sysdate', '\\x07', '\\x07and', '\\x07drop', '\\x07level', '\\x07prior', '\\x07table', '\\x07', '\\x07any', '\\x07else', '\\x07like', '\\x07privileges', '\\x07then', '\\x07', '\\x07as', '\\x07exclusive', '\\x07lock', '\\x07public', '\\x07to', '\\x07', '\\x07asc', '\\x07exists', '\\x07long', '\\x07raw', '\\x07trigger', '\\x07', '\\x07audit', '\\x07file', '\\x07maxextents', '\\x07rename', '\\x07uid', '\\x07', '\\x07between', '\\x07float', '\\x07minus', '\\x07resource', '\\x07union', '\\x07', '\\x07by', '\\x07for', '\\x07mode', '\\x07revoke', '\\x07unique', '\\x07', '\\x07char', '\\x07from', '\\x07modify', '\\x07row', '\\x07update', '\\x07', '\\x07check', '\\x07grant', '\\x07noaudit', '\\x07rowid', '\\x07user', '\\x07', '\\x070cluster', '\\x07group', '\\x07nocompress', '\\x07rowlabel', '\\x07validate', '\\x07', '\\x07column', '\\x07having', '\\x07not', '\\x07rownum', '\\x07values', '\\x07', '\\x07comment', '\\x07identified', '\\x07nowait', '\\x07rows', '\\x07varchar', '\\x07', '\\x07compress', '\\x07immediate', '\\x07null', '\\x07select', '\\x07varchar2', '\\x07', '\\x07connect', '\\x07in', '\\x07number', '\\x07session', '\\x07view', '\\x07', '\\x07create', '\\x07increment', '\\x07of', '\\x07set', '\\x07whenever', '\\x07', '\\x07current', '\\x07index', '\\x07offline', '\\x07share', '\\x07where', '\\x07', '\\x07date', '\\x07initial', '\\x07on', '\\x07size', '\\x07with', '\\x07', '\\x07decimal', '\\x07insert', '\\x07online', '\\x07smallint', '\\x07', '\\x07', '\\x07', 'комментарии', 'комментарии', 'задать', 'ограничителями', 'стоять', 'место', 'оператор', 'sql', 'alter', 'user', 'petrov', 'комментарий', 'identified', 'by', 'petr', 'использовать', 'стандартный', 'комментарий', 'ansi'], ['символ', 'два', 'дефис', 'конец', 'строка', 'игнорироваться'], ['alter', 'user', 'petrov', 'комментарий', 'продолжить', 'конец', 'строка', 'identified', 'by', 'petr'], ['приоритет', 'операция', 'вычисление', 'выражение', 'содержать', 'операция', 'oracle', 'выполнять', 'операция', 'высокий', 'приоритет'], ['операция', 'привести', 'тойже', 'строка', 'иметь', 'одинаковый', 'приоритет'], ['замечание', 'выражение', 'использовать', 'круглый', 'скобка', 'изменять', 'последовательность', 'выполнение', 'операция', 'предписывать', 'приоритет'], ['выражение', 'заключить', 'скобка', 'oracle', 'вычесляет', 'первый', 'очередь'], ['скобка', 'операция', 'одинаковый', 'приоритет', 'oracle', 'выполнять', 'слева', 'направо'], ['приоритет', 'операция', 'sql', 'унарный', 'арифметический', 'операция', '+', 'операция', 'prior', 'арифметический', 'операция', 'бинарный', 'арифметический', 'операция', '+', 'символьный', 'операция', '|', '|', 'операция', 'сравнение', 'логический', 'операция', 'not', 'логический', 'операция', 'and', 'логический', 'операция', 'or', 'приоритет', 'арифметический', 'операция', 'унарный', 'арифметический', 'операция', '+', 'арифметический', 'операция', 'бинарный', 'арифметический', 'операция', '+']]"
        ],
        [
         "29",
         "Процедурное расширение языка SQL.doc",
         "Процедурное расширение языка SQL - PL/SQL.\rOracle Server - полнофункциональная реляционная СУБД, которая идеально подходит для архитектур клиент/сервер и интернет/интранет. Особенности внутренней архитектуры Oracle ориентированы на обеспечение готовности, максимальной пропускной способности, безопасности и эффективного использования ресурсов. \rOracle также присущи черты, связанные с используемым языком программирования, которые способствуют ускорению разработки и улучшению эффективности серверной части приложений: \rОдин из основных компонентов Oracle Server - его процессор PL/SQL. (PL - Procedural Language - процедурный язык.) \rPL/SQL - язык Oracle четвертого поколения, объединяющий структурированные элементы процедурного языка программирования с языком SQL, разработанный специально для организации вычислений в среде клиент/сервер. Он позволяет передать на сервер программный блок PL/SQL, содержаший логику приложения, как оператор SQL, одним запросом. Используя PL/SQL, можно значительно уменьшить объем обработки в клиентской части приложения и нагрузку на сеть. Например, может понадобиться выполнить различные наборы операторов SQL в зависимости от результата некоторого запроса. Запрос, последующие операторы SQL и операторы условного управления могут быть включены в один блок PL/SQL и пересланы серверу за одно обращение к сети. \rПри этом вся логика приложений делится на клиентскую и серверную части. Серверная часть может быть релаизована в виде функций, хранимых процедур и пакетов. \rФункции. Часть логики приложения ориентированной на выполнение конкретного комплекса операций на сервере, результат которых возвращается в виде значения функции. Откомпилированные функции и их исходные тексты содержатся в базе данных. \rХранимые процедуры. Часть логики приложения, особенно нуждающаяся в доступе к базе данных, может храниться там, где она обрабатывается (на сервере). Хранимые процедуры не возвращают значения результата, обеспечивают удобный и эффективный механизм безопасности. Откомпилированные хранимые процедуры и их исходные тексты содержатся в базе данных. \rПакеты. Часть логики приложений: фукций и пакетов, предназначеных для решениях задач в рамках одного модуля (подсистемы) АИС. \rТриггеры базы данных. Можно использовать триггеры, чтобы организовать сложный контроль целостности, выполнять протоколирование (аудит) и другие функции безопасности, реализовать в приложениях выдачу предупреждений и мониторинг. \rДекларативная целостность. Ограничения активизируются сервером всякий раз, когда записи вставляются, обновляются или удаляются. В дополнение к ограничениям ссылочной целостности, которые проверяют соответствие первичного и внешнего ключей, можно также накладывать ограничения на значения, содержащиеся в столбцах таблицы. Поддержка целостности на сервере уменьшает размер кода клиентской части, необходимого для проверки допустимости данных, и увеличивает устойчивость бизнес- модели, определенной в базе данных. \r\rСписок, зарезервированных слов PL/SQL \rЯзык PL/SQL также включает зарезервированные слова, имеющие определенное значение в операторах PL/SQL. \rABORT\r\u0007DEFINITION\r\u0007NOT\r\u0007TADAUTH\r\u0007\r\u0007ACCEPT\r\u0007DELAY\r\u0007NULL\r\u0007TABLE\r\u0007\r\u0007ACCESS\r\u0007DELETE\r\u0007NUMBER\r\u0007TABLES\r\u0007\r\u0007ADD\r\u0007DELTA\r\u0007NUMBER_BASE\r\u0007TASK\r\u0007\r\u0007ALL\r\u0007DESC\r\u0007OF\r\u0007TERMINATE\r\u0007\r\u0007ALTER\r\u0007DIGITS\r\u0007ON\r\u0007THEN\r\u0007\r\u0007AND\r\u0007DISPOSE\r\u0007OPEN\r\u0007TO\r\u0007\r\u0007ANY\r\u0007DISTINCT\r\u0007OPTION\r\u0007TRUE\r\u0007\r\u0007ARRAY\r\u0007DO\r\u0007OR\r\u0007TYPE\r\u0007\r\u0007ARRAYLEN\r\u0007DROP\r\u0007ORDER\r\u0007UNION\r\u0007\r\u0007AS\r\u0007ELSE\r\u0007OTHERS\r\u0007UNIQUE\r\u0007\r\u0007ASC\r\u0007ELSIF\r\u0007OUT\r\u0007UPDATE\r\u0007\r\u0007ASSERT\r\u0007END\r\u0007PACKAGE\r\u0007USE\r\u0007\r\u0007ASSIGN\r\u0007ENTRY\r\u0007PARTITION\r\u0007VALUES\r\u0007\r\u0007AT\r\u0007EXCEPTION\r\u0007PCTFREE\r\u0007VARCHAR\r\u0007\r\u0007AUTHORIZATION\r\u0007EXCEPTION_INIT\r\u0007PRAGMA\r\u0007VARCHAR2\r\u0007\r\u0007AVG\r\u0007EXISTS\r\u0007PRIOR\r\u0007VARIANCE\r\u0007\r\u0007BEGIN\r\u0007EXIT\r\u0007PRIVATE\r\u0007VIEW\r\u0007\r\u0007BETWEEN\r\u0007FALSE\r\u0007PROCEDURE\r\u0007VIEWS\r\u0007\r\u0007BODY\r\u0007FETCH\r\u0007PUBLIC\r\u0007WHEN\r\u0007\r\u0007BOOLEAN\r\u0007FOR\r\u0007RAISE\r\u0007WHERE\r\u0007\r\u0007BY\r\u0007FORM\r\u0007RANGE\r\u0007WHILE\r\u0007\r\u0007CASE\r\u0007FROM\r\u0007REAL\r\u0007WITH\r\u0007\r\u0007CHAR\r\u0007FUNCTION\r\u0007RECORD\r\u0007WORK\r\u0007\r\u0007CHAR_BASE\r\u0007GENERIC\r\u0007RELEASE\r\u0007XOR\r\u0007\r\u0007CHECK\r\u0007GOTO\r\u0007REM\r\u0007 \r\u0007\r\u0007CLOSE\r\u0007GRANT\r\u0007RENAME\r\u0007 \r\u0007\r\u0007CLUSTER\r\u0007GROUP\r\u0007RESOURCE\r\u0007\r\u0007CLUSTERS\r\u0007HAVING\r\u0007RETURN\r\u0007 \r\u0007\r\u0007COLAUTH\r\u0007IDENTIFIED\r\u0007REVERSE\r\u0007 \r\u0007\r\u0007COLUMNS\r\u0007IF\r\u0007REVOKE\r\u0007 \r\u0007\r\u0007COMMIT\r\u0007IN\r\u0007ROLLBACK\r\u0007\r\u0007COMPRESS\r\u0007INDEX\r\u0007ROWNUM\r\u0007 \r\u0007\r\u0007CONNECT\r\u0007INDEXES\r\u0007ROWTYPE\r\u0007\r\u0007CONSTANT\r\u0007INDICATOR\r\u0007RUN\r\u0007 \r\u0007\r\u0007COUNT\r\u0007INSERT\r\u0007SAVEPOINT\r\u0007\r\u0007CRASH\r\u0007INTEGER\r\u0007SCHEMA\r\u0007 \r\u0007\r\u0007CREATE\r\u0007INTERSECT\r\u0007SELECT\r\u0007 \r\u0007\r\u0007CURRENT\r\u0007INTO\r\u0007SEPARATE\r\u0007\r\u0007CURSOR\r\u0007IS\r\u0007SET\r\u0007 \r\u0007\r\u0007DATABASE\r\u0007LEVEL\r\u0007SIZE\r\u0007 \r\u0007\r\u0007DATA_BASE\r\u0007LIKE\r\u0007SPACE\r\u0007 \r\u0007\r\u0007DATE\r\u0007LIMITED\r\u0007SQL\r\u0007 \r\u0007\r\u0007DBA\r\u0007LOOP\r\u0007SQLCODE\r\u0007 \r\u0007\r\u0007DEBUGOFF\r\u0007MAX\r\u0007SQLERRM\r\u0007 \r\u0007\r\u0007DEBUGON\r\u0007MIN\r\u0007START\r\u0007 \r\u0007\r\u0007DECIMAL\r\u0007MINUS\r\u0007STATEMENT\r\u0007\r\u0007DECLARE\r\u0007MOD\r\u0007STDDEV\r\u0007 \r\u0007\r\u0007DEFAULT\r\u0007NEW\r\u0007SUBTYPE\r\u0007 \r\u0007\r\u0007 \r\u0007NOCOMPRESS\r\u0007SUM\r\u0007 \r\u0007\r\u0007",
         "0",
         "[['процедурный', 'расширение', 'язык', 'sql', 'pl_sql'], ['oracle', 'server', 'полнофункциональная', 'реляционный', 'субд', 'идеально', 'подходить', 'архитектура', 'клиент', 'сервер', 'интернет', 'интранет'], ['особенность', 'внутренний', 'архитектура', 'oracle', 'ориентировать', 'обеспечение', 'готовность', 'максимальный', 'пропускной', 'способность', 'безопасность', 'эффективный', 'использование', 'ресурс'], ['oracle', 'присущий', 'черта', 'связать', 'использовать', 'язык', 'программирование', 'способствовать', 'ускорение', 'разработка', 'улучшение', 'эффективность', 'серверный', 'часть', 'приложение', 'основный', 'компонент', 'oracle', 'server', 'процессор', 'pl_sql'], ['pl', 'procedural', 'language', 'процедурный', 'язык'], ['pl_sql', 'язык', 'oracle', 'четвёртый', 'поколение', 'объединять', 'структурировать', 'элемент', 'процедурный', 'язык', 'программирование', 'язык', 'sql', 'разработать', 'специально', 'организация', 'вычисление', 'среда', 'клиент', 'сервер'], ['позволять', 'передать', 'сервер', 'программный', 'блок', 'pl_sql', 'содержаший', 'логика', 'приложение', 'оператор', 'sql', 'запрос'], ['использовать', 'pl_sql', 'значительно', 'уменьшить', 'объём', 'обработка', 'клиентский', 'часть', 'приложение', 'нагрузка', 'сеть'], ['понадобиться', 'выполнить', 'различный', 'набор', 'оператор', 'sql', 'зависимость', 'результат', 'некоторый', 'запрос'], ['запрос', 'последующий', 'оператор', 'sql', 'оператор', 'условный', 'управление', 'включить', 'блок', 'pl_sql', 'переслать', 'сервер', 'обращение', 'сеть'], ['логика', 'приложение', 'делиться', 'клиентский', 'серверный', 'часть'], ['серверный', 'часть', 'релаизована', 'вид', 'функция', 'хранить', 'процедура', 'пакет'], ['функция'], ['часть', 'логика', 'приложение', 'ориентировать', 'выполнение', 'конкретный', 'комплекс', 'операция', 'сервер', 'результат', 'возвращаться', 'вид', 'значение', 'функция'], ['откомпилированные', 'функция', 'исходный', 'текст', 'содержаться', 'база'], ['хранимые', 'процедура'], ['часть', 'логика', 'приложение', 'нуждающаяся', 'доступ', 'база', 'храниться', 'обрабатываться', 'сервер'], ['хранимые', 'процедура', 'возвращать', 'значение', 'результат', 'обеспечивать', 'удобный', 'эффективный', 'механизм', 'безопасность'], ['откомпилированные', 'хранить', 'процедура', 'исходный', 'текст', 'содержаться', 'база'], ['пакет'], ['часть', 'логика', 'приложение', 'фукций', 'пакет', 'предназначеных', 'решение', 'задача', 'рамка', 'модуль', 'подсистема', 'аис'], ['триггеры', 'база'], ['использовать', 'триггеры', 'организовать', 'сложный', 'контроль', 'целостность', 'выполнять', 'протоколирование', 'аудит', 'функция', 'безопасность', 'реализовать', 'приложение', 'выдача', 'предупреждение', 'мониторинг'], ['декларативный', 'целостность'], ['ограничение', 'активизироваться', 'сервер', 'раз', 'запись', 'вставляться', 'обновляться', 'удаляться'], ['дополнение', 'ограничение', 'ссылочный', 'целостность', 'проверять', 'соответствие', 'первичный', 'внешний', 'ключ', 'накладывать', 'ограничение', 'значение', 'содержаться', 'столбцах', 'таблица'], ['поддержка', 'целостность', 'сервер', 'уменьшать', 'размер', 'код', 'клиентский', 'часть', 'необходимый', 'проверка', 'допустимость', 'увеличивать', 'устойчивость', 'бизнес-', 'модель', 'определить', 'база'], ['список', 'зарезервировать', 'слово', 'pl_sql', 'язык', 'pl_sql', 'включать', 'зарезервированный', 'слово', 'иметь', 'определённый', 'значение', 'оператор', 'pl_sql'], ['abort', '\\x07definition', '\\x07not', '\\x07tadauth', '\\x07', '\\x07accept', '\\x07delay', '\\x07null', '\\x07table', '\\x07', '\\x07access', '\\x07delete', '\\x07number', '\\x07tables', '\\x07', '\\x07add', '\\x07delta', '\\x07number_base', '\\x07task', '\\x07', '\\x07all', '\\x07desc', '\\x07of', '\\x07terminate', '\\x07', '\\x07alter', '\\x07digits', '\\x07on', '\\x07then', '\\x07', '\\x07and', '\\x07dispose', '\\x07open', '\\x07to', '\\x07', '\\x07any', '\\x07distinct', '\\x07option', '\\x07true', '\\x07', '\\x07array', '\\x07do', '\\x07or', '\\x07type', '\\x07', '\\x07arraylen', '\\x07drop', '\\x07order', '\\x07union', '\\x07', '\\x07as', '\\x07else', '\\x07others', '\\x07unique', '\\x07', '\\x07asc', '\\x07elsif', '\\x07out', '\\x07update', '\\x07', '\\x07assert', '\\x07end', '\\x07package', '\\x07use', '\\x07', '\\x07assign', '\\x07entry', '\\x07partition', '\\x07values', '\\x07', '\\x07at', '\\x07exception', '\\x07pctfree', '\\x07varchar', '\\x07', '\\x07authorization', '\\x07exception_init', '\\x07pragma', '\\x07varchar2', '\\x07', '\\x07avg', '\\x07exists', '\\x07prior', '\\x07variance', '\\x07', '\\x07begin', '\\x07exit', '\\x07private', '\\x07view', '\\x07', '\\x07between', '\\x07false', '\\x07procedure', '\\x07views', '\\x07', '\\x07body', '\\x07fetch', '\\x07public', '\\x07when', '\\x07', '\\x07boolean', '\\x07for', '\\x07raise', '\\x07where', '\\x07', '\\x07by', '\\x07form', '\\x07range', '\\x07while', '\\x07', '\\x07case', '\\x07from', '\\x07real', '\\x07with', '\\x07', '\\x07char', '\\x07function', '\\x07record', '\\x07work', '\\x07', '\\x07char_base', '\\x07generic', '\\x07release', '\\x07xor', '\\x07', '\\x07check', '\\x07goto', '\\x07rem', '\\x07', '\\x07', '\\x07close', '\\x07grant', '\\x07rename', '\\x07', '\\x07', '\\x07cluster', '\\x07group', '\\x07resource', '\\x07', '\\x07clusters', '\\x07having', '\\x07return', '\\x07', '\\x07', '\\x07colauth', '\\x07identified', '\\x07reverse', '\\x07', '\\x07', '\\x07columns', '\\x07if', '\\x07revoke', '\\x07', '\\x07', '\\x07commit', '\\x07in', '\\x07rollback', '\\x07', '\\x07compress', '\\x07index', '\\x07rownum', '\\x07', '\\x07', '\\x07connect', '\\x07indexes', '\\x07rowtype', '\\x07', '\\x07constant', '\\x07indicator', '\\x07run', '\\x07', '\\x07', '\\x07count', '\\x07insert', '\\x07savepoint', '\\x07', '\\x07crash', '\\x07integer', '\\x07schema', '\\x07', '\\x07', '\\x07create', '\\x07intersect', '\\x07select', '\\x07', '\\x07', '\\x07current', '\\x07into', '\\x07separate', '\\x07', '\\x07cursor', '\\x07is', '\\x07set', '\\x07', '\\x07', '\\x07database', '\\x07level', '\\x07size', '\\x07', '\\x07', '\\x07data_base', '\\x07like', '\\x07space', '\\x07', '\\x07', '\\x07date', '\\x07limited', '\\x07sql', '\\x07', '\\x07', '\\x07dba', '\\x07loop', '\\x07sqlcode', '\\x07', '\\x07', '\\x07debugoff', '\\x07max', '\\x07sqlerrm', '\\x07', '\\x07', '\\x07debugon', '\\x07min', '\\x07start', '\\x07', '\\x07', '\\x07decimal', '\\x07minus', '\\x07statement', '\\x07', '\\x07declare', '\\x07mod', '\\x07stddev', '\\x07', '\\x07', '\\x07default', '\\x07new', '\\x07subtype', '\\x07', '\\x07', '\\x07', '\\x07nocompress', '\\x07sum', '\\x07', '\\x07', '\\x07']]"
        ],
        [
         "30",
         "Системные объекты базы данных.doc",
         "Системные объекты базы данных.\rСловарь данных. Первыми таблицами, создаваемыми в любой базе данных, являются системные таблицы, или словарь данных Oracle. Системные таблицы хранят информацию о структуре базы данных и объектов внутри нее, и Oracle обращается к ним, когда нуждается в информации о базе данных или когда выполняет оператор DDL (Data Definition Language - язык определения данных) либо оператор DML (Data Manipulation Language - язык манипулирования данными). Эти таблицы никогда непосредственно не обновляются, однако обновление в них происходит в фоновом режиме всякий раз, когда выполняется оператор DDL. Главные таблицы словаря данных содержат нормализованную информацию, которая является довольно трудной для восприятия человеком, так что в Oracle предусмотрен набор представлений, выдающих информацию главных системных таблиц в более понятном виде. Oracle запрашивает информацию из таблиц словаря данных для синтаксического разбора любого оператора SQL. Информация кэшируется в области словаря данных разделяемого пула в SGA. \rСегменты отката. Когда данные в Oracle изменяются, изменение должно быть или подтверждено, или отменено. Если изменение отменяется (\"откатывается назад\"), содержимое блоков данных восстанавливается в исходное состояние, существовавшее до изменения. Сегменты отката - это системные объекты, которые поддерживают этот процесс. Всякий раз, когда осуществляются какие-либо изменения в таблицах приложения или в системных таблицах, в сегмент отката автоматически помещается предыдущая версия изменяемых данных, так что старая версия данных всегда доступна, если требуется отказ. Другие пользователи при необходимости чтения данных, в то время как изменение не завершено, всегда имеют доступ к прежней версии из сегмента отката. Им предоставляется непротиворечивая по чтению версия данных. После того как изменение фиксируется, доступной становится измененная версия данных. Сегменты отката получают внешнюю память таким же образом, как другие сегменты - экстентами. Сегменту отката, однако, нужно первоначально распределить минимум два экстента. \rВременные сегменты используют пространство в файлах базы данных, чтобы создать временную рабочую область для промежуточных стадий обработки SQL и для больших операций сортировки. Oracle создает временные сегменты в процессе работы и они автоматически удаляются, когда фоновый процесс SMON больше в них не нуждается. Если требуется только небольшая рабочая область, Oracle не создает временного сегмента, но вместо этого как временная рабочая область используется часть памяти PGA (глобальная область программы). Администратор базы данных может определять, в каких табличных пространствах будут располагаться временные сегменты для различных пользователей. \rСегмент начальной загрузки (или кэш-сегмент) - специальный тип объекта в базе данных, выполняющий начальную загрузку кэша словаря данных в область разделяемого пула SGA. Oracle использует кэш-сегмент только при запуске экземпляра и не обращается к нему вплоть до рестарта экземпляра. Сегмент необходим, чтобы выполнить начальную загрузку кэша словаря данных, после чего занимаемая им память освобождается. \r\rСловарь данных. \rФундаментальное различие между RDBMS и другими БД и файловыми системами заключается в способе доступа к данным. RDBMS позволяет обращаться к физическим данным в более абстрактной, логической форме, обеспечивая легкость и гибкость при разработке кода приложения. Программы, использующие RDBMS, обращаются к данным через \"машину\" базы данных без непосредственной зависимости от фактического источника данных, изолируя приложение от деталей \"нижележащих\" физических структур данных. RDBMS сама заботится о том, где поле хранится в базе данных. Такая независимость данных возможна благодаря словарю данных RDBMS, который хранит метаданные (данные о данных) для всех объектов, расположенных в базе данных. \rСловарь данных Oracle - множество таблиц и объектов базы данных, которое хранится в специальной области базы данных и ведется исключительно ядром Oracle. Словарь данных содержит информацию об объектах базы данных, пользователях и событиях. К этой информации можно обратиться с помощью представлений словаря данных. Как показано на рис.31, запросы чтения или обновления базы данных обрабатываются ядром Oracle с использованием информации из словаря данных. \rИнформация в словаре данных предназначена для подтверждения существования объектов, обеспечения доступа к ним и описания фактического физического расположения в памяти. \rRDBMS не только обеспечивает размещение данных, но также определяет оптимальный путь доступа для хранения или выборки данных. Oracle использует сложные алгоритмы, которые позволяют выбирать информацию с наибольшей производительностью, исходя из критерия скорейшего получения первых строк результата или критерия минимального времени выполнения запроса в целом. \rПредставления словаря данных \rСловарь данных содержит информацию об объектах базы данных, пользователях и событиях. К этой информации можно обратиться с помощью представления словаря данных: \rALL_OBJECTS\r\u0007Объекты, доступные пользователю.\r\u0007\r\u0007ALL_SEQUENCES\r\u0007Описание последовательностей, доступных пользователю.\r\u0007\r\u0007ALL_SNAPSHOTS\r\u0007Все моментальные копии, доступные пользователю.\r\u0007\r\u0007ALL_SOURCE\r\u0007Исходный текст объектов, доступных пользователю.\r\u0007\r\u0007ALL_SYNONYMS\r\u0007Все синонимы, доступные пользователю.\r\u0007\r\u0007ALL_TABLES\r\u0007Описание таблиц, доступных пользователю.\r\u0007\r\u0007ALL_TAB_COLUMNS\r\u0007Столбцы всех таблиц, представлений и кластеров, доступных пол.\r\u0007\r\u0007ALL_TAB_COMMENTS\r\u0007Комментарии к таблицам и представлениям, доступным пользователю.\r\u0007\r\u0007ALL_TAB_PRIVS\r\u0007Привилегии на объекты, которые получил пользователь непосредственно, через роль или как PUBLIC.\r\u0007\r\u0007ALL_TAB_PRIVS_MADE\r\u0007Привилегии пользователя и привилегии на его объекты.\r\u0007\r\u0007ALL_TAB_PRIVS_RECD\r\u0007Привилегии на объекты, которые получил пользователь непосредственно, через роль или как PUBLIC.\r\u0007\r\u0007ALL_TRIGGERS\r\u0007Триггеры, доступные пользователю.\r\u0007\r\u0007ALL_TRIGGER_COLS\r\u0007Использование столбцов в пользовательских триггерах, в триггерах для его таблиц или во всех триггкрах, если он имеет привелегию CREATE ANY TRIGGER.\r\u0007\r\u0007ALL_USERS\r\u0007Информация о всех пользователях базы данных.\r\u0007\r\u0007ALL_VIEWS\r\u0007Текст представлений, доступных пользователю.\r\u0007\r\u0007AUDIT_ACTIONS\r\u0007Коды типов аудиторских действий.\r\u0007\r\u0007CAT\r\u0007Синоним для USER_CATALOG.\r\u0007\r\u0007CLU\r\u0007Синоним для USER_CLUSTERS.\r\u0007\r\u0007CODE_PIECES\r\u0007Используется для создания представлений _OBJECT_SIZE.\r\u0007\r\u0007CODE_SIZE\r\u0007Используется для создания представлений _OBJECT_SIZE.\r\u0007\r\u0007COLS\r\u0007Синоним для USER_TAB_COLUMNS.\r\u0007\r\u0007COLUMN_PRIVILEGES\r\u0007Привилегии на столбцы, которые принадлежат пользователю, которые он выдал или получил непосредственно, через роль или как пользователь PUBLIC.\r\u0007\r\u0007DBA_2PC_NEIGHBORS\r\u0007Информация от вновь поступивших и отработанных запросов задержанных транзакций.\r\u0007\r\u0007DBA_2PC_PENDING\r\u0007Информация о транзакциях, в которых произошел сбой во время фазы подготовки.\r\u0007\r\u0007DBA_AUDIT_EXISTS\r\u0007Журнал записей протокола, созданных командой AUDIT EXISTS.\r\u0007\r\u0007DBA_AUDIT_OBJECT\r\u0007Журнал протокола команд над объектами. Создается в файле CATAUDIT.SQL.\r\u0007\r\u0007DBA_AUDIT_SESSION\r\u0007Журнал протокола команд входа и выхода из ORACLE.\r\u0007\r\u0007DBA_AUDIT_STATEMENT\r\u0007Синоним для USER_AUDIT_STATEMENT.\r\u0007\r\u0007DBA_AUDIT_TRAIL\r\u0007Журнал протокола всей системы.\r\u0007\r\u0007DBA_BLOCKERS\r\u0007Все сеансы, которые держат блокировки, которых ожидает кто-то другой.\r\u0007\r\u0007DBA_CATALOG\r\u0007Все таблицы, представления, синонимы и последовательности, принадлежащие пользователю.\r\u0007\r\u0007DBA_CLUSTERS\r\u0007Описание всех кластеров.\r\u0007\r\u0007DBA_CLU_COLUMNS\r\u0007Соответствие столбцов таблиц столбцам кластера.\r\u0007\r\u0007DBA_COL_COMMENTS\r\u0007Комментарии к столбцам всех таблиц и представлений.\r\u0007\r\u0007DBA_COL_PRIVS\r\u0007Привилегии на все столбцы базы данных.\r\u0007\r\u0007DBA_CONSTRAINTS\r\u0007Определения правил целостности для всех таблиц базы данных.\r\u0007\r\u0007DBA_CONS_COLUMNS\r\u0007Информация о столбцах в определениях правила целостности, созданных пользователем.\r\u0007\r\u0007DBA_DATA_FILES\r\u0007Файлы базы данных.\r\u0007\r\u0007DBA_DB_LINKS\r\u0007Все связи базы данных.\r\u0007\r\u0007DBA_DDL_LOCKS\r\u0007Все блокировки DDL в базе данных и все связанные с ними запросы к блокировкам DML.\r\u0007\r\u0007DBA_DEPENDENCIES\r\u0007Зависимости (от) всех объектов базы данных.\r\u0007\r\u0007DBA_DML_LOCKS\r\u0007Все блокировки DML в базе данных и все связанные с ними запросы к блокировкам DML.\r\u0007\r\u0007DBA_ERRORS\r\u0007Текущие ошибки для всех хранимых объектов.\r\u0007\r\u0007DBA_EXP_FILES\r\u0007Описание экспортных файлов.\r\u0007\r\u0007DBA_EXP_OBJECTS\r\u0007Объекты, которые экспортировались.\r\u0007\r\u0007DBA_EXP_VERSION\r\u0007Номер версии последнего экспорта.\r\u0007\r\u0007DBA_EXTENTS\r\u0007Экстенты всех сегментов базы данных.\r\u0007\r\u0007DBA_FREE_SPACE\r\u0007Свободные экстенты в табличных пространствах, доступных пользователю.\r\u0007\r\u0007DBA_INDEXES\r\u0007Описание индексов, доступных пользователю.\r\u0007\r\u0007DBA_IND_COLUMNS\r\u0007Столбцы индексов пользователь или его индексированных таблиц.\r\u0007\r\u0007DBA_LOCKS\r\u0007Все блокировки и задержки в базе данных, а также все поступающие на них запросы.\r\u0007\r\u0007DBA_OBJECTS\r\u0007Все объекты базы данных.\r\u0007\r\u0007DBA_OBJECT_SIZE\r\u0007Размер объектов PL/SQL базы данных.\r\u0007\r\u0007DBA_OBJ_AUDIT_OPTS\r\u0007Параметры аудиторства для всех таблиц и представлений.\r\u0007\r\u0007DBA_PRIV_AUDIT_OPTS\r\u0007Параметры аудиторства для привилегий.\r\u0007\r\u0007DBA_ROLES\r\u0007Все роли в базе данных.\r\u0007\r\u0007DBA_ROLE_PRIVS\r\u0007Роли, выданные пользователям или другим ролям.\r\u0007\r\u0007DBA_ROLLBACK_SEGS\r\u0007Описание сегментов отката базы данных.\r\u0007\r\u0007DBA_SEGMENTS\r\u0007Распределение пространства для всех сегментов базы данных.\r\u0007\r\u0007DBA_SEQUENCES\r\u0007Описание всех последовательностей в базе данных.\r\u0007\r\u0007DBA_SNAPSHOTS\r\u0007Все моментальные копии в базе данных.\r\u0007\r\u0007DBA_SNAPSHOT_LOGS\r\u0007Все журналы моментальных копий в базе данных.\r\u0007\r\u0007DBA_SOURCE\r\u0007Исходный текст всех хранимых объектов.\r\u0007\r\u0007DBA_STMT_AUDIT_OPTS\r\u0007Параметры системного аудиторства.\r\u0007\r\u0007DBA_SYNONYMS\r\u0007Все синонимы в базе данных.\r\u0007\r\u0007DBA_SYS_PRIVS\r\u0007Системные привилегии, выданные пользователям или ролям.\r\u0007\r\u0007DBA_TABLES\r\u0007Описание всех таблиц базы данных.\r\u0007\r\u0007DBA_TABLESPACES\r\u0007Описание всех табличных пространств в базе данных.\r\u0007\r\u0007DBA_TAB_COLUMNS\r\u0007Столбцы всех таблиц, представлений и кластеров.\r\u0007\r\u0007DBA_TAB_COMMENTS\r\u0007Комментарии к таблицам и представлениям базы данных.\r\u0007\r\u0007DBA_TAB_PRIVS\r\u0007Привилегии на объекты всей базы данных.\r\u0007\r\u0007DBA_TRIGGERS\r\u0007Описание всех триггеров базы данных.\r\u0007\r\u0007DBA_TRIGGERS_COLS\r\u0007Использование столбцов в пользовательских триггерах или в триггерах для его таблиц.\r\u0007\r\u0007DBA_TS_QUOTAS\r\u0007Квоты всех пользователей в табличном пространстве.\r\u0007\r\u0007DBA_USERS\r\u0007Информация о всех пользователях базы данных.\r\u0007\r\u0007DBA_VIEWS\r\u0007Текст всех представлений базы данных.\r\u0007\r\u0007DBA_WAITERS\r\u0007Все сеансы, ожидающие или владеющие блокировками.\r\u0007\r\u0007DBMS_ALERT_INFO\r\u0007Таблица регистрируемых сигналов тревоги.\r\u0007\r\u0007DBMS_LOCK_ALLOCATED\r\u0007Таблица пользовательских блокировок.\r\u0007\r\u0007DEPTREE\r\u0007Дерево зависимости объектов.\r\u0007\r\u0007DICT\r\u0007Синоним для DICTIONARY.\r\u0007\r\u0007DICTIONARY\r\u0007Описание таблиц и представлений словаря данных.\r\u0007\r\u0007DICT_COLUMNS\r\u0007Описание столбцов таблиц и представлений словаря данных.\r\u0007\r\u0007ERROR_SIZE\r\u0007Используется для создания представлений _OBJECT_SIZE.\r\u0007\r\u0007GLOBAL_NAME\r\u0007Содержит одну строку с глобальным именем текущей базы данных.\r\u0007\r\u0007IDEPTREE\r\u0007Отсортированный, сформатированный вариант DEPTREE.\r\u0007\r\u0007IND\r\u0007Синоним для USER_INDEXES.\r\u0007\r\u0007INDEX_HISTOGRAM\r\u0007Содержит статистику команды ANALYZE INDEX VALIDATE STRUCTURE.\r\u0007\r\u0007INDEX_STATS\r\u0007Содержит статистику команды ANALYZE INDEX VALIDATE STRUCTURE.\r\u0007\r\u0007LOADER_COL_INFO\r\u0007Представление SQL*LOADER, используемое для прямой загрузки.\r\u0007\r\u0007LOADER_CONSTRAINT_INFO\r\u0007Представление SQL*LOADER, используемое для прямой загрузки.\r\u0007\r\u0007LOADER_INDCOL_INFO\r\u0007Представление SQL*LOADER, используемое для прямой загрузки.\r\u0007\r\u0007LOADER_IND_INFO\r\u0007Представление SQL*LOADER, используемое для прямой загрузки.\r\u0007\r\u0007LOADER_PARAM_INFO\r\u0007Представление SQL*LOADER, используемое для прямой загрузки.\r\u0007\r\u0007LOADER_TAB_INFO\r\u0007Представление SQL*LOADER, используемое для прямой загрузки.\r\u0007\r\u0007LOADER_TRIGGER_INFO\r\u0007Представление SQL*LOADER, используемое для прямой загрузки.\r\u0007\r\u0007OBJ\r\u0007Синоним для USER_OBJECTS.\r\u0007\r\u0007PARSED_PIECES\r\u0007Используется для создания представлений _OBJECT_SIZE.\r\u0007\r\u0007PARSED_SIZE\r\u0007Используется для создания представлений _OBJECT_SIZE.\r\u0007\r\u0007PUBLIC_DEPENDENCY\r\u0007Зависимости между объектами.\r\u0007\r\u0007RESOURCE_COST\r\u0007Стоимость каждого ресурса.\r\u0007\r\u0007ROLE_ROLE_PRIVS\r\u0007Информация о ролях, назначенных другим ролям.\r\u0007\r\u0007ROLE_SYS_PRIVS\r\u0007Информация о системных привилегиях, назначенных ролям.\r\u0007\r\u0007ROLE-TAB-PRIVS\r\u0007Информация об объектных привилегиях, назначенных ролям.\r\u0007\r\u0007SEQ\r\u0007Синоним для USER_SEQUENCES.\r\u0007\r\u0007SESSION-PRIVS\r\u0007Привилегии, которые пользователь имеет в настоящий момент.\r\u0007\r\u0007SESSION-ROLES\r\u0007Роли, включенные для пользователя в настоящий момент.\r\u0007\r\u0007SOURCE-SIZE\r\u0007Используется для создания представлений -OBJECT_SIZE.\r\u0007\r\u0007STMT_AUDIT_OPTION_MAP\r\u0007Таблица описания кодов типов параметров протоколирования.\r\u0007\r\u0007SYN\r\u0007Синоним для USE_SYNONYMS.\r\u0007\r\u0007SYSTEM_PRIVILEGE_MAP\r\u0007Таблица описания кодов системных привилегий.\r\u0007\r\u0007TABLE_PRIVILEGES\r\u0007Привилегии на объекты, к которым пользователь получил привилегии, выдал, для которых он является владельцем или привилегия выдана пользователю PUBLIC.\r\u0007\r\u0007TABS\r\u0007Синоним для USER_TABLES.\r\u0007\r\u0007USER_AUDIT_OBJECT\r\u0007Записи протокольного журнала для команд обращающихся к объекту.\r\u0007\r\u0007USER_AUDIT_.SESSION\r\u0007Записи протокольного журнала о входах и выходах в систему.\r\u0007\r\u0007USER_AUDIT_STATEMENT\r\u0007Записи протокольного журнала о следующих командах: GRANT, REVOKE, AUDIT, NOAUDIT и ALTER SYSTEM.\r\u0007\r\u0007USER_AUDIT_TRAIL\r\u0007Записи протокольного журнала относящиеся к пользователю.\r\u0007\r\u0007USER_CATALOG\r\u0007Все таблицы, представления, синонимы и последовательности, принадлежащее пользователю.\r\u0007\r\u0007USER_CLUSTERS\r\u0007Описание кластеров пользователя.\r\u0007\r\u0007USER_CLU_COLUMNS\r\u0007Соответствие столбцов таблиц столбцам кластера.\r\u0007\r\u0007USER_COL_COMMENTS\r\u0007Комментарии к столбцам пользовательских таблиц и представлений.\r\u0007\r\u0007USER_COL_PR1VS\r\u0007Привилегии на столбцы, для которых пользователь является владельцем, выдал или получил привилегии.\r\u0007\r\u0007USER_COL_PRIVS_MADE\r\u0007Привилегии на столбцы, для которых пользователь является владельцем.\r\u0007\r\u0007USER_COL_PRIVS_RECD\r\u0007Привилегии на столбцы, для которых пользователь является владельцем, выдал или получил привилегии.\r\u0007\r\u0007USER_CONSTRAINTS\r\u0007Определения правил целостности для таблиц пользователя.\r\u0007\r\u0007USER_CONS_COLUMNS\r\u0007Информация о столбцах в определениях правила целостности, созданных пользователем.\r\u0007\r\u0007USER.DB_LINKS\r\u0007Связи базы данных, принадлежащие пользователю.\r\u0007\r\u0007USER_DEPENDENCIES\r\u0007Зависимости объектов пользователя.\r\u0007\r\u0007USER_ERRORS\r\u0007Текущие ошибки для всех объектов, принадлежащих пользователю.\r\u0007\r\u0007USER_EXTENTS\r\u0007Экстенты сегментов, выделенные объектам, принадлежащим пользователю.\r\u0007\r\u0007USER_FREE_SPACE\r\u0007Свободные экстенты в табличных пространствах, доступных пользователю\r\u0007\r\u0007USER_INDEXES\r\u0007Описание индексов, доступных пользователю\r\u0007\r\u0007USER_IND_COLUMNS\r\u0007Столбцы индексов пользователь или его индексированных таблиц.\r\u0007\r\u0007USER_OBJECTS\r\u0007Объекты, принадлежащие пользователю.\r\u0007\r\u0007USER_OBJECT_SIZE\r\u0007Размер объектов PL/SQL, принадлежащих пользователю.\r\u0007\r\u0007USER_OBJ_AUDIT_OPTS\r\u0007Параметры аудиторства для пользовательских таблиц и представлении.\r\u0007\r\u0007USER_RESOURCE_LIMITS\r\u0007Ограничения на ресурсы, доступные текущему пользователю.\r\u0007\r\u0007USER_ROLE_PRIVS\r\u0007Роли, выданные текущему пользователю.\r\u0007\r\u0007USER_SEGMENTS\r\u0007Распределение пространства для сегментов объектов пользователя.\r\u0007\r\u0007USER_SEQUENCES\r\u0007Описание последовательностей, созданных пользователем.\r\u0007\r\u0007USER_SNAPSHOTS\r\u0007Все моментальные копии, доступные пользователю.\r\u0007\r\u0007USER_SNAPSHOT_LOGS\r\u0007Все журналы моментальных копий, принадлежащие пользователю.\r\u0007\r\u0007USER_SOURCE\r\u0007Исходный текст хранимых объектов, принадлежащих пользователю.\r\u0007\r\u0007USER_SYNONYMS\r\u0007Все частные синонимы пользователя.\r\u0007\r\u0007USER_SYS_PRIVS\r\u0007Системные привилегии, выданные текущему пользователю.\r\u0007\r\u0007USER_TABLES\r\u0007Описание таблиц пользователя.\r\u0007\r\u0007USER_TABLESPACES\r\u0007Описание доступных табличных пространств.\r\u0007\r\u0007USER_TAB_COLUMNS\r\u0007Столбцы всех таблиц, представлений и кластеров.\r\u0007\r\u0007USER_TAB_COMMENTS\r\u0007Комментарии к таблицам и представлениям, принадлежащим пользователю\r\u0007\r\u0007USER_TAB_PR1VS\r\u0007Привилегии на объекты, для которых пользователь является владельцем, выдал или получил привилегии.\r\u0007\r\u0007USER_TAB_PRIVS_MADE\r\u0007Все привилегии на объекты, принадлежащие пользователю.\r\u0007\r\u0007USER_TAB_PR1VS_RECD\r\u0007Привилегии на объекты, которые получил пользователь.\r\u0007\r\u0007USER_TRIGGERS\r\u0007Описание всех пользовательских триггеров.\r\u0007\r\u0007USER_TRIGGER_COLS\r\u0007Использование столбцов в пользовательских триггерах или в триггерах для его таблиц.\r\u0007\r\u0007USER_TS_QUOTAS\r\u0007Квоты пользователя в табличном пространстве.\r\u0007\r\u0007USER_USERS\r\u0007Информация о текущем пользователе базы данных.\r\u0007\r\u0007USER_VIEWS\r\u0007Текст представлений пользователя.\r\u0007\r\u0007Динамические таблицы производительности, доступные пользователю SYS, позволяют управлять производительностью работы сервера СУБД. \rV$ACCESS\r\u0007Заблокированные на текущий момент объекты и сеансы, в которых они используются.\r\u0007\r\u0007V$ARCHIVE\r\u0007Информация о журналах архива для каждого потока системы базы данных. .\r\u0007\r\u0007V$BACKUP\r\u0007Статус сброса всех ON-LINE баз данных.\r\u0007\r\u0007V$BGPROCESS\r\u0007Описание фоновых процессов.\r\u0007\r\u0007V$CIRCUIT\r\u0007Информация о виртуальных цепях.\r\u0007\r\u0007V$DATABASE\r\u0007Информация из контрольного файла о базе данных.\r\u0007\r\u0007V$DATAFILE\r\u0007Информация из контрольного файла о файлах базы данных.\r\u0007\r\u0007V$DBFILE\r\u0007Информация о всех файлах базы данных.\r\u0007\r\u0007V$DB-OBJECT-CACHE\r\u0007Объекты базы данных, находящиеся в библиотечном кеше.\r\u0007\r\u0007V$DISPATCHER\r\u0007Информация о процессах диспетчера.\r\u0007\r\u0007V$ENABLEDPRIVS\r\u0007Включенные привилегии.\r\u0007\r\u0007V$F1LESTAT\r\u0007Информация о статистике ввода/вывода в файл.\r\u0007\r\u0007V$FIXED-TABLE\r\u0007Все таблицы, представления и производные та\r\u0007\r\u0007V$INSTANCE\r\u0007блицы в базе данных.\r\u0007\r\u0007V$INSTANCE\r\u0007Статус текущего экземпляра\r\u0007\r\u0007V$ LATCH\r\u0007Число задержек каждого типа. (Строки этой таблицы однозначно соответствуют строкам таблицы V$ATCHHOLDER)\r\u0007\r\u0007V$LATCHHOLDER\r\u0007Информация о владельцах задержек.\r\u0007\r\u0007V$LATCHNAME\r\u0007Закодированные имена задержек из таблицы V$ATCH.\r\u0007\r\u0007V$LIBRARYCACHE\r\u0007Статистика по управлению буферами библиотечной памяти.\r\u0007\r\u0007V$LICENSE\r\u0007Параметры лицензии.\r\u0007\r\u0007V$ADCSTAT\r\u0007Статистика SQL*Loader при выполнении прямой загрузки.\r\u0007\r\u0007V$LOADTSTAT\r\u0007Статистика SQL* Loader при выполнении прямой загрузки.\r\u0007\r\u0007V$LOCK\r\u0007Блокировки и ресурсы.\r\u0007\r\u0007V$LOG\r\u0007Информация о журнальном файле.\r\u0007\r\u0007V$LOGFILE\r\u0007Информация о журнальных файлах.\r\u0007\r\u0007V$LOGHIST\r\u0007Информация об истории журнального файла.\r\u0007\r\u0007V$LOG-HISTORY\r\u0007Информация об истории журнального файла.\r\u0007\r\u0007U$NLS-PARAMETERS\r\u0007Текущие значения параметров NLS.\r\u0007\r\u0007V$OPEN-CURSOR\r\u0007Открытые пользователями курсоры.\r\u0007\r\u0007V$PARAMETER\r\u0007Информация о текущих значениях параметров.\r\u0007\r\u0007V$PROCESS\r\u0007Информация о всех активных процессах.\r\u0007\r\u0007V$QUEUE\r\u0007Информация об очереди мульти-серверных сообщений.\r\u0007\r\u0007V$RECOVERY-LOG\r\u0007Журнальные файлы, необходимые для полного восстановления базы данных.\r\u0007\r\u0007V$RECOVER-FILE\r\u0007Статус файлов, которые нужно восстанавливать.\r\u0007\r\u0007V$REQD1ST\r\u0007Гистограмма времен обращения, разделенная на 12 столбцов или периодов времени.\r\u0007\r\u0007V$RESOURCE\r\u0007Информация о ресурсах.\r\u0007\r\u0007V$ROLLNAME\r\u0007Имена всех активных сегментов отката.\r\u0007\r\u0007V$ROLLSTAT\r\u0007Статистика для всех активных сегментов отката.\r\u0007\r\u0007V$ROWCACHE\r\u0007Статистика активности словаря данных. (Одна строка для каждого буфера памяти)\r\u0007\r\u0007V$SECONDARY\r\u0007Представление Trusted ORACLE, u котором перечислены вторичнее смонтированные базы данных.\r\u0007\r\u0007V$SESS10N\r\u0007Информация о текущих сеансах.\r\u0007\r\u0007V$SESS10N-WA1T\r\u0007Список ресурсов или событий, которых ожидает текущий сеанс.\r\u0007\r\u0007V$SESSTAT\r\u0007Статистика для текущих сеансов.\r\u0007\r\u0007V$SGA\r\u0007Суммарная информация об SGA.\r\u0007\r\u0007V$SHARED-SERVER\r\u0007Информация о вcex разделяемых процессах сервера.\r\u0007\r\u0007V$SQLAREA\r\u0007Статистика о разделяемых буферах памяти курсора. Одна строка для каждого курсора.\r\u0007\r\u0007V$SQLTEXT\r\u0007Текст команд SQL, находящихся в разделенных курсорах SGA.\r\u0007\r\u0007V$STATNAME\r\u0007Раскодированные имена для статистик .из таблицы V$SESSTAT.\r\u0007\r\u0007V$SYSLABEL\r\u0007Представление Trusted ORACLE, в котором перечислены системные метки.\r\u0007\r\u0007V$SYSSTAT\r\u0007Текущие значения статистик из таблицы V$SESSTAT.\r\u0007\r\u0007V$THREAD\r\u0007Информация о потоках, содержащихся п контрольном файле.\r\u0007\r\u0007V$TIMER\r\u0007Текущее время в сотых долях секунды.\r\u0007\r\u0007V$TRANSACTION\r\u0007Информация о транзакциях.\r\u0007\r\u0007V$TYPE-SIZE\r\u0007Размеры различных компонентов базы данных.\r\u0007\r\u0007V$VERSION\r\u0007Имена версии компонентов библиотеки ядра ORACLE.\r\u0007\r\u0007V$WAITSTAT\r\u0007Статистика содержимого блока. Обновляется только при включенной временной статистики.\r\u0007\r\u0007Специальные таблицы \rТаблица CHAINED_ROWS \rСписок сцепленных строк таблицы или кластера, использованного в команде ANALYZE. \rСтолбец\r\u0007Тип данных\r\u0007\r\u0007OWNER-NAME\r\u0007VARCHAR2\r\u0007\r\u0007TABLE-NAME\r\u0007VARCHAR2\r\u0007\r\u0007CLUSTER-NAME\r\u0007VARCHAR2\r\u0007\r\u0007HEAD_ROWID\r\u0007ROWID\r\u0007\r\u0007TIMESTAMP\r\u0007DATE\r\u0007\r\u0007Таблица EXCEPTIONS \rЭта таблица используется для определения строк, нарушающих правила целостности, если правила целостности включены. \rСтолбец\r\u0007Тип данных\r\u0007\r\u0007HEAD.ROWID\r\u0007ROWID\r\u0007\r\u0007OWNER\r\u0007VARCHAR2\r\u0007\r\u0007TABLE-NAME\r\u0007VARCHAR2\r\u0007\r\u0007CONSTRAINT\r\u0007VARCHAR2\r\u0007\r\u0007PLAN_TABLE \rЭта таблица может заполняться командой EXPLAIN PLAN для того, чтобы описать план выполнения оператора SQL. \rСтолбец\r\u0007Тип данных\r\u0007\r\u0007STATEMENT.ID\r\u0007VARCHAR2\r\u0007\r\u0007TIMESTAMP\r\u0007DATE\r\u0007\r\u0007REMARKS\r\u0007VARCHAR2\r\u0007\r\u0007OPERATION\r\u0007VARCHAR2\r\u0007\r\u0007OPTIONS\r\u0007VARCHAR\r\u0007\r\u0007OBJECT_NODE\r\u0007VARCHAR2\r\u0007\r\u0007OBJECT_OWNER\r\u0007VARCHAR2\r\u0007\r\u0007OBJECT.NAME\r\u0007VARCHAR\r\u0007\r\u0007OBJECT_INSTANCE\r\u0007NUMBER\r\u0007\r\u0007OBJECT_TYPE\r\u0007VARCHAR2\r\u0007\r\u0007SEARCH_COLUMNS\r\u0007NUMBER\r\u0007\r\u0007ID\r\u0007NUMBER\r\u0007\r\u0007PARENT.ID\r\u0007NUMBER\r\u0007\r\u0007POSITION\r\u0007NUMBER\r\u0007\r\u0007OTHER\r\u0007LONG\r\u0007\r\u0007\r2.3.3 Защита данных.\rТранзакции, фиксация и откат. Изменения в базе данных не сохраняются, пока пользователь явно не укажет, что результаты вставки, модификации и удаления должны быть зафиксированы окончательно. Вплоть до этого момента изменения находятся в отложенном состоянии, и какие-либо сбои, подобные аварийному отказу машины, аннулируют изменения. \rТранзакция - элементарная единица работы, состоящая из одного или нескольких операторов SQL; \rВсе результаты транзакции или целиком сохраняются (фиксируются), или.целиком отменяются (откатываются назад). Фиксация транзакции делает изменения окончательными, занося их в базу данных, и после того как транзакция фиксируется, изменения не могут быть отменены. Откат отменяет все вставки, модификации и удаления, сделанные в транзакции; после отката транзакции ее изменения не могут быть зафиксированы. Процесс фиксации транзакции подразумевает запись изменений, занесенных в журнальный кэш SGA, в оперативные журнальные файлы на диске. Если этот дисковый ввод/вывод успешен, приложение получает сообщение об успешной фиксации транзакции. (Текст сообшения изменяется в зависимости от инструментального средства.) Фоновый процесс DBWR может записывать блоки актуальных данных Oracle в буферный кэш SGA базы данных позже. В случае сбоя системы Oracle может автоматически повторить изменения из журнальных файлов, даже если блоки данных Oracle не были перед сбоем записаны в файлы базы данных. \rOracle также реализует идею отката на уровне оператора. Если произойдет единственный сбой при выполнении оператора, весь оператор завершится неудачей. Если оператор терпит неудачу в пределах транзакции, остальные операторы транзакции будут находиться в отложенном состоянии и должны либо фиксироваться, либо откатываться. \rВсе блокировки, захваченные транзакцией, автоматически освобождаются, когда транзакция фиксируется или откатывается, или когда фоновый процесс PMON отменяет транзакцию. Кроме того, другие ресурсы системы (такие как сегменты отката) освобождаются для использования другими транзакциями. \rТочки сохранения позволяют устанавливать маркеры внутри транзакции таким образом, чтобы имелась возможность отмены только части работы, проделанной в транзакции. Целесообразно использовать точки сохранения в длинных и сложных транзакциях, чтобы обеспечить возможность отмены изменения для определенных операторов. Однако это обусловливает дополнительные затраты ресурсов системы - оператор выполняет работу, а изменения затем отменяются; обычно усовершенствование в логике обработки могут оказаться более оптимальным решением. Oracle освобождает блокировки, захваченные отмененными операторами. \rЦелостность данных связана с определением правил проверки достоверности данных гарантирующих, что недействительные данные не попадут в ваши таблицы. Oracle позволяет определять и хранить эти правила для объектов базы данных, которых они касаются, таким образом, чтобы кодировать их только однажды. При этом они активируются всякий раз, когда какой-либо вид изменения проводится в таблице, независимо от того, какая программа выполняет вставки, модификации или удаления. Этот контроль осуществляется в форме ограничений целостности и триггеров базы данных. \rОграничения целостности устанавливают бизнес-правила на уровне базы данных, определяя набор проверок для таблиц системы, Эти проверки автоматически выполняются всякий раз, когда вызываются оператор вставки, модификации или удаления данных в таблице. Если какие-либо ограничения нарушены, операторы отменяются. Другие операторы транзакции остаются в отложенном состоянии и могут фиксироваться или отменяться согласно логике приложения. \r\r2.3.4 Привилегии системного уровня\rКаждый пользователь Oracle, определяемый в базе данных, может иметь одну или несколько из более чем 80 привилегий системного уровня. Эти привилегии очень тонко управляют правами выполнения команд SQL. Администратор базы данных назначает системные привилегии или непосредственно пользовательским учетным разделам Oracle, или ролям. Роли затем назначаются учетным разделам Oracle. \rНапример, прежде чем создать триггер для таблицы (даже если вы владелец таблицы как пользователь Oracle), нужно иметь системную привилегию, называемую CREATE TRIGGER, назначенную вашему учетному разделу пользователя Oracle, или роли, присвоенной учетному разделу. \rПривилегия CREATE SESSION - другая часто используемая привилегия системного уровня. Чтобы выполнить соединение с базой данных, учетный раздел Oracle должен иметь привилегию системного уровня CREATE SESSION. \rПривилегии объектного уровня. Привилегии объектного уровня обеспечивают возможность выполнить определенный тип действия (выбрать, вставить, модифицировать, удалить и т.д.) с указанным объектом. Владелец объекта имеет полный контроль над объектом и может выполнять любые действия с ним; он не обязан иметь привилегии объектного уровня. Фактически владелец объекта - пользователь Oracle, который может предоставлять привилегии объектного уровня другим пользователям. \rНапример, если пользователь, который владеет таблицей, желает, чтобы другой пользователя вставлял и выбирал строки из его таблицы (но не модифицировал или удалял), он предоставляет другому пользователю привилегии (объектного уровня) отбора и вставки для этой таблицы. Вы можете предоставлять привилегии объектного уровня непосредственно пользователям или ролям, которые затем назначаются учетным разделам пользователей Oracle. \rПривилегии выдаются пользователям и ролям командой GRANT и отбираются командой REVOKE. Все привелегии можно разделить на системные и объектные. Системные привилегии относятся ко всему классу объектов, а объектные относятся к заданным объектам.",
         "0",
         "[['системный', 'объект', 'база'], ['словарь'], ['первый', 'таблицами', 'создаваемыми', 'база', 'являться', 'системный', 'таблица', 'словарь', 'oracle'], ['системный', 'таблица', 'хранить', 'информация', 'структура', 'база', 'объект', 'внутри', 'oracle', 'обращаться', 'нуждаться', 'информация', 'база', 'выполнять', 'оператор', 'ddl', 'data', 'definition', 'language', 'язык', 'определение'], ['оператор', 'dml', 'data', 'manipulation', 'language', 'язык', 'манипулирование', 'данными'], ['таблица', 'непосредственно', 'обновляться', 'обновление', 'происходить', 'фоновый', 'режим', 'раз', 'выполняться', 'оператор', 'ddl'], ['главный', 'таблица', 'словарь', 'содержать', 'нормализованную', 'информация', 'являться', 'трудный', 'восприятие', 'человек', 'oracle', 'предусмотреть', 'набор', 'представление', 'выдавать', 'информация', 'главный', 'системный', 'таблица', 'понятный', 'вид'], ['oracle', 'запрашивать', 'информация', 'таблица', 'словарь', 'синтаксический', 'разбор', 'оператор', 'sql'], ['информация', 'кэшироваться', 'область', 'словарь', 'разделяемого', 'пул', 'sga'], ['сегмент_откат'], ['oracle', 'изменяться', 'изменение', 'подтвердить', 'отменить'], ['изменение', 'отменяться', 'откатываться', 'содержимое', 'блок', 'восстанавливаться', 'исходный', 'состояние', 'существовать', 'изменение'], ['сегмент_откат', 'системный', 'объект', 'поддерживать', 'процесс'], ['раз', 'осуществляться', 'изменение', 'таблицах', 'приложение', 'системный', 'таблица', 'сегмент_откат', 'автоматически', 'помещаться', 'предыдущий', 'версия', 'изменять', 'старый', 'версия', 'доступный', 'требоваться', 'отказ'], ['пользователь', 'чтение', 'время', 'изменение', 'завершить', 'иметь', 'доступ', 'прежний', 'версия', 'сегмент_откат'], ['предоставляться', 'непротиворечивый', 'чтение', 'версия'], ['изменение', 'фиксироваться', 'доступный', 'становиться', 'изменить', 'версия'], ['сегмент_откат', 'получать', 'внешний', 'память', 'образ', 'сегмент', 'экстент'], ['сегменту', 'откат', 'первоначально', 'распределить', 'минимум', 'два', 'экстент'], ['временной', 'сегмент', 'использовать', 'пространство', 'файл', 'база', 'создать', 'временной', 'рабочий', 'область', 'промежуточный', 'стадия', 'обработка', 'sql', 'больший', 'операция', 'сортировка'], ['oracle', 'создавать', 'временной', 'сегмент', 'процесс', 'работа', 'автоматически', 'удаляться', 'фоновый', 'процесс', 'smon', 'нуждаться'], ['требоваться', 'небольшой', 'рабочий', 'область', 'oracle', 'создавать', 'временной', 'сегмент', 'временной', 'рабочий', 'область', 'использоваться', 'часть', 'память', 'pga', 'глобальный', 'область', 'программа'], ['администратор', 'база', 'определять', 'какой', 'табличный_пространство', 'располагаться', 'временной', 'сегмент', 'различный', 'пользователь'], ['сегмент', 'начальный', 'загрузка', 'кэш', 'сегмент', 'специальный', 'тип', 'объект', 'база', 'выполнять', 'начальный', 'загрузка', 'кэш', 'словарь', 'область', 'разделяемого', 'пул', 'sga'], ['oracle', 'использовать', 'кэш', 'сегмент', 'запуск', 'экземпляр', 'обращаться', 'рестарт', 'экземпляр'], ['сегмент', 'необходимый', 'выполнить', 'начальный', 'загрузка', 'кэш', 'словарь', 'занимать', 'память', 'освобождаться'], ['словарь'], ['фундаментальный', 'различие', 'rdbms', 'бд', 'файловый', 'система', 'заключаться', 'способ', 'доступ', 'данным'], ['rdbms', 'позволять', 'обращаться', 'физический', 'данным', 'абстрактный', 'логический', 'форма', 'обеспечивать', 'лёгкость', 'гибкость', 'разработка', 'код', 'приложение'], ['программа', 'использовать', 'rdbms', 'обращаться', 'данным', 'машина', 'база', 'непосредственный', 'зависимость', 'фактический', 'источник', 'изолировать', 'приложение', 'деталь', 'нижележащих', 'физический', 'структура'], ['rdbms', 'заботиться', 'поле', 'храниться', 'база'], ['независимость', 'возможный', 'словарь', 'rdbms', 'хранить', 'метаданные', 'объект', 'расположенных', 'база'], ['словарь', 'oracle', 'множество', 'таблица', 'объект', 'база', 'храниться', 'специальный', 'область', 'база', 'вестись', 'исключительно', 'ядро', 'oracle'], ['словарь', 'содержать', 'информация', 'объект', 'база', 'пользователь', 'событие'], ['информация', 'обратиться', 'помощь', 'представление', 'словарь'], ['показать', 'рис.31', 'запрос', 'чтение', 'обновление', 'база', 'обрабатываться', 'ядро', 'oracle', 'использование', 'информация', 'словарь'], ['информация', 'словарь', 'предназначить', 'подтверждение', 'существование', 'объект', 'обеспечение', 'доступ', 'описание', 'фактический', 'физический', 'расположение', 'память'], ['rdbms', 'обеспечивать', 'размещение', 'определять', 'оптимальный', 'путь', 'доступ', 'хранение', 'выборка'], ['oracle', 'использовать', 'сложный', 'алгоритм', 'позволять', 'выбирать', 'информация', 'больший', 'производительность', 'исходить', 'критерий', 'скорый', 'получение', 'первый', 'строка', 'результат', 'критерий', 'минимальный', 'время', 'выполнение', 'запрос', 'целое'], ['представление', 'словарь', 'словарь', 'содержать', 'информация', 'объект', 'база', 'пользователь', 'событие'], ['информация', 'обратиться', 'помощь', 'представление', 'словарь', 'all_objects', '\\x07объект', 'доступный_пользователь'], ['\\x07', '\\x07all_sequences', '\\x07описание', 'последовательность', 'доступный_пользователь'], ['\\x07', '\\x07all_snapshots', '\\x07все', 'моментальный', 'копия', 'доступный_пользователь'], ['\\x07', '\\x07all_source', '\\x07исходный', 'текст', 'объект', 'доступный_пользователь'], ['\\x07', '\\x07all_synonyms', '\\x07все', 'синоним', 'доступный_пользователь'], ['\\x07', '\\x07all_tables', '\\x07описание', 'таблица', 'доступный_пользователь'], ['\\x07', '\\x07all_tab_columns', '\\x07столбцы', 'таблица_представление', 'кластер', 'доступный', 'пол'], ['\\x07', '\\x07all_tab_comments', '\\x07комментарий', 'таблица_представление', 'доступный_пользователь'], ['\\x07', '\\x07all_tab_privs', '\\x07привилегия', 'объект', 'получить', 'пользователь', 'непосредственно', 'роль', 'public'], ['\\x07', '\\x07all_tab_privs_made', '\\x07привилегии', 'пользователь', 'привилегия', 'объект'], ['\\x07', '\\x07all_tab_privs_recd', '\\x07привилегия', 'объект', 'получить', 'пользователь', 'непосредственно', 'роль', 'public'], ['\\x07', '\\x07all_triggers', '\\x07триггеры', 'доступный_пользователь'], ['\\x07', '\\x07all_trigger_cols', '\\x07использование', 'столбец', 'пользовательский', 'триггер', 'триггер', 'таблица', 'триггкрах'], ['привелегию', 'create', 'any', 'trigger'], ['\\x07', '\\x07all_users', '\\x07информация', 'пользователь', 'база'], ['\\x07', '\\x07all_views', '\\x07текст', 'представление', 'доступный_пользователь'], ['\\x07', '\\x07audit_actions', '\\x07коды', 'тип', 'аудиторский', 'действие'], ['\\x07', '\\x07cat', '\\x07синоним', 'user_catalog', '\\x07', '\\x07clu', '\\x07синоним', 'user_clusters', '\\x07', '\\x07code_pieces', '\\x07используется', 'создание_представление', 'object_size'], ['\\x07', '\\x07code_size', '\\x07используется', 'создание_представление', 'object_size'], ['\\x07', '\\x07cols', '\\x07синоним', 'user_tab_columns'], ['\\x07', '\\x07column_privileges', '\\x07привилегия', 'столбец', 'принадлежать_пользователь', 'выдать', 'получить', 'непосредственно', 'роль', 'пользователь', 'public'], ['\\x07', '\\x07dba_2pc_neighbors', '\\x07информация', 'поступить', 'отработать', 'запрос', 'задержать', 'транзакция'], ['\\x07', '\\x07dba_2pc_pending', '\\x07информация', 'транзакция', 'произойти', 'сбой', 'время', 'фаза', 'подготовка'], ['\\x07', '\\x07dba_audit_exists', '\\x07журнал', 'запись', 'протокол', 'создать', 'команда', 'audit', 'exists'], ['\\x07', '\\x07dba_audit_object', '\\x07журнал', 'протокол', 'команда', 'объект'], ['создаваться', 'файл', 'cataudit.sql', '\\x07', '\\x07dba_audit_session', '\\x07журнал', 'протокол', 'команда', 'вход', 'выход', 'oracle'], ['\\x07', '\\x07dba_audit_statement', '\\x07синоним', 'user_audit_statement'], ['\\x07', '\\x07dba_audit_trail', '\\x07журнал', 'протокол', 'система'], ['\\x07', '\\x07dba_blockers', '\\x07все', 'сеанс', 'держать', 'блокировка', 'ожидать'], ['\\x07', '\\x07dba_catalog', '\\x07все', 'таблица_представление', 'синоним', 'последовательность', 'принадлежать_пользователь'], ['\\x07', '\\x07dba_clusters', '\\x07описание', 'кластер'], ['\\x07', '\\x07dba_clu_columns', '\\x07соответствие', 'столбец', 'таблица', 'столбцам', 'кластер'], ['\\x07', '\\x07dba_col_comments', '\\x07комментарий', 'столбцам', 'таблица_представление'], ['\\x07', '\\x07dba_col_privs', '\\x07привилегия', 'столбец', 'база'], ['\\x07', '\\x07dba_constraints', '\\x07определение', 'правило_целостность', 'таблица', 'база'], ['\\x07', '\\x07dba_cons_columns', '\\x07информация', 'столбцах', 'определение', 'правило_целостность', 'создать', 'пользователь'], ['\\x07', '\\x07dba_data_files', '\\x07файлы', 'база'], ['\\x07', '\\x07dba_db_links', '\\x07все', 'связь', 'база'], ['\\x07', '\\x07dba_ddl_locks', '\\x07все', 'блокировка', 'ddl', 'база', 'связать', 'запрос', 'блокировка', 'dml'], ['\\x07', '\\x07dba_dependencies', '\\x07зависимости', 'объект', 'база'], ['\\x07', '\\x07dba_dml_locks', '\\x07все', 'блокировка', 'dml', 'база', 'связать', 'запрос', 'блокировка', 'dml'], ['\\x07', '\\x07dba_errors', '\\x07текущие', 'ошибка', 'хранить', 'объект'], ['\\x07', '\\x07dba_exp_files', '\\x07описание', 'экспортный', 'файл'], ['\\x07', '\\x07dba_exp_objects', '\\x07объект', 'экспортировались'], ['\\x07', '\\x07dba_exp_version', '\\x07номер', 'версия', 'последний', 'экспорт'], ['\\x07', '\\x07dba_extents', '\\x07экстенты', 'сегмент', 'база'], ['\\x07', '\\x07dba_free_space', '\\x07свободные', 'экстент', 'табличный_пространство', 'доступный_пользователь'], ['\\x07', '\\x07dba_indexes', '\\x07описание', 'индекс', 'доступный_пользователь'], ['\\x07', '\\x07dba_ind_columns', '\\x07столбцы', 'индекс', 'пользователь', 'индексированных', 'таблица'], ['\\x07', '\\x07dba_locks', '\\x07все', 'блокировка', 'задержка', 'база', 'поступать', 'запрос'], ['\\x07', '\\x07dba_objects', '\\x07все', 'объект', 'база'], ['\\x07', '\\x07dba_object_size', '\\x07размер', 'объект', 'pl', 'sql', 'база'], ['\\x07', '\\x07dba_obj_audit_opts', '\\x07параметр', 'аудиторство', 'таблица_представление'], ['\\x07', '\\x07dba_priv_audit_opts', '\\x07параметр', 'аудиторство', 'привилегия'], ['\\x07', '\\x07dba_roles', '\\x07все', 'роль', 'база'], ['\\x07', '\\x07dba_role_privs', '\\x07роли', 'выдать', 'пользователь', 'роль'], ['\\x07', '\\x07dba_rollback_segs', '\\x07описание', 'сегмент_откат', 'база'], ['\\x07', '\\x07dba_segments', '\\x07распределение', 'пространство', 'сегмент', 'база'], ['\\x07', '\\x07dba_sequences', '\\x07описание', 'последовательность', 'база'], ['\\x07', '\\x07dba_snapshots', '\\x07все', 'моментальный', 'копия', 'база'], ['\\x07', '\\x07dba_snapshot_logs', '\\x07все', 'журнал', 'моментальный', 'копия', 'база'], ['\\x07', '\\x07dba_source', '\\x07исходный', 'текст', 'хранить', 'объект'], ['\\x07', '\\x07dba_stmt_audit_opts', '\\x07параметр', 'системный', 'аудиторство'], ['\\x07', '\\x07dba_synonyms', '\\x07все', 'синоним', 'база'], ['\\x07', '\\x07dba_sys_privs', '\\x07системные', 'привилегия', 'выдать', 'пользователь', 'роль'], ['\\x07', '\\x07dba_tables', '\\x07описание', 'таблица', 'база'], ['\\x07', '\\x07dba_tablespaces', '\\x07описание', 'табличный_пространство', 'база'], ['\\x07', '\\x07dba_tab_columns', '\\x07столбцы', 'таблица_представление', 'кластер'], ['\\x07', '\\x07dba_tab_comments', '\\x07комментарий', 'таблица_представление', 'база'], ['\\x07', '\\x07dba_tab_privs', '\\x07привилегия', 'объект', 'база'], ['\\x07', '\\x07dba_triggers', '\\x07описание', 'триггер', 'база'], ['\\x07', '\\x07dba_triggers_cols', '\\x07использование', 'столбец', 'пользовательский', 'триггер', 'триггер', 'таблица'], ['\\x07', '\\x07dba_ts_quotas', '\\x07квоты', 'пользователь', 'табличный_пространство'], ['\\x07', '\\x07dba_users', '\\x07информация', 'пользователь', 'база'], ['\\x07', '\\x07dba_views', '\\x07текст', 'представление', 'база'], ['\\x07', '\\x07dba_waiters', '\\x07все', 'сеанс', 'ожидать', 'владеть', 'блокировками'], ['\\x07', '\\x07dbms_alert_info', '\\x07таблица', 'регистрировать', 'сигнал', 'тревога'], ['\\x07', '\\x07dbms_lock_allocated', '\\x07таблица', 'пользовательский', 'блокировка'], ['\\x07', '\\x07deptree', '\\x07дерево', 'зависимость', 'объект'], ['\\x07', '\\x07dict', '\\x07синоним', 'dictionary', '\\x07', '\\x07dictionary', '\\x07описание', 'таблица_представление', 'словарь'], ['\\x07', '\\x07dict_columns', '\\x07описание', 'столбец', 'таблица_представление', 'словарь'], ['\\x07', '\\x07error_size', '\\x07используется', 'создание_представление', 'object_size'], ['\\x07', '\\x07global_name', '\\x07содержать', 'строка', 'глобальный', 'имя', 'текущий', 'база'], ['\\x07', '\\x07ideptree', '\\x07отсортированный', 'сформатированный', 'вариант', 'deptree'], ['\\x07', '\\x07ind', '\\x07синоним', 'user_indexes', '\\x07', '\\x07index_histogram', '\\x07содержать', 'статистика', 'команда', 'analyze', 'index', 'validate', 'structure'], ['\\x07', '\\x07index_stats', '\\x07содержать', 'статистика', 'команда', 'analyze', 'index', 'validate', 'structure'], ['\\x07', '\\x07loader_col_info', '\\x07представление_sql*loader', 'использовать_прямой', 'загрузка'], ['\\x07', '\\x07loader_constraint_info', '\\x07представление_sql*loader', 'использовать_прямой', 'загрузка'], ['\\x07', '\\x07loader_indcol_info', '\\x07представление_sql*loader', 'использовать_прямой', 'загрузка'], ['\\x07', '\\x07loader_ind_info', '\\x07представление_sql*loader', 'использовать_прямой', 'загрузка'], ['\\x07', '\\x07loader_param_info', '\\x07представление_sql*loader', 'использовать_прямой', 'загрузка'], ['\\x07', '\\x07loader_tab_info', '\\x07представление_sql*loader', 'использовать_прямой', 'загрузка'], ['\\x07', '\\x07loader_trigger_info', '\\x07представление_sql*loader', 'использовать_прямой', 'загрузка'], ['\\x07', '\\x07obj', '\\x07синоним', 'user_objects', '\\x07', '\\x07parsed_pieces', '\\x07использоваться', 'создание_представление', 'object_size'], ['\\x07', '\\x07parsed_size', '\\x07используется', 'создание_представление', 'object_size'], ['\\x07', '\\x07public_dependency', '\\x07зависимости', 'объект'], ['\\x07', '\\x07resource_cost', '\\x07стоимость', 'каждый', 'ресурс'], ['\\x07', '\\x07role_role_privs', '\\x07информация', 'роль', 'назначить', 'роль'], ['\\x07', '\\x07role_sys_privs', '\\x07информация', 'системный', 'привилегия', 'назначить', 'роль'], ['\\x07', '\\x07role', 'tab', 'privs', '\\x07информация', 'объектный', 'привилегия', 'назначить', 'роль'], ['\\x07', '\\x07seq', '\\x07синоним', 'user_sequences', '\\x07', '\\x07session', 'privs', '\\x07привилегия', 'пользователь', 'момент'], ['\\x07', '\\x07session', 'roles', '\\x07роли', 'включить', 'пользователь', 'момент'], ['\\x07', '\\x07source', 'size', '\\x07использоваться', 'создание_представление', '-object_size'], ['\\x07', '\\x07stmt_audit_option_map', '\\x07таблица', 'описание', 'код', 'тип', 'параметр', 'протоколирование'], ['\\x07', '\\x07syn', '\\x07синоним', 'use_synonyms', '\\x07', '\\x07system_privilege_map', '\\x07таблица', 'описание', 'код', 'системный', 'привилегия'], ['\\x07', '\\x07table_privileges', '\\x07привилегия', 'объект', 'пользователь', 'получить', 'привилегия', 'выдать', 'являться', 'владелец', 'привилегия', 'выдать', 'пользователь', 'public'], ['\\x07', '\\x07tabs', '\\x07синоним', 'user_tables', '\\x07', '\\x07user_audit_object', '\\x07запись', 'протокольный', 'журнал', 'команда', 'обращаться', 'объект'], ['\\x07', '\\x07user_audit_.session', '\\x07запись', 'протокольный', 'журнал', 'вход', 'выход', 'система'], ['\\x07', '\\x07user_audit_statement', '\\x07запись', 'протокольный', 'журнал', 'следующий', 'команда', 'grant', 'revoke', 'audit', 'noaudit', 'alter', 'system'], ['\\x07', '\\x07user_audit_trail', '\\x07запись', 'протокольный', 'журнал', 'относиться', 'пользователь'], ['\\x07', '\\x07user_catalog', '\\x07все', 'таблица_представление', 'синоним', 'последовательность', 'принадлежать_пользователь'], ['\\x07', '\\x07user_clusters', '\\x07описание', 'кластер', 'пользователь'], ['\\x07', '\\x07user_clu_columns', '\\x07соответствие', 'столбец', 'таблица', 'столбцам', 'кластер'], ['\\x07', '\\x07user_col_comments', '\\x07комментарий', 'столбцам', 'пользовательский', 'таблица_представление'], ['\\x07', '\\x07user_col_pr1vs', '\\x07привилегия', 'столбец', 'пользователь', 'являться', 'владелец', 'выдать', 'получить', 'привилегия'], ['\\x07', '\\x07user_col_privs_made', '\\x07привилегия', 'столбец', 'пользователь', 'являться', 'владелец'], ['\\x07', '\\x07user_col_privs_recd', '\\x07привилегия', 'столбец', 'пользователь', 'являться', 'владелец', 'выдать', 'получить', 'привилегия'], ['\\x07', '\\x07user_constraints', '\\x07определение', 'правило_целостность', 'таблица', 'пользователь'], ['\\x07', '\\x07user_cons_columns', '\\x07информация', 'столбцах', 'определение', 'правило_целостность', 'создать', 'пользователь'], ['\\x07', '\\x07user.db_links', '\\x07связь', 'база', 'принадлежать_пользователь'], ['\\x07', '\\x07user_dependencies', '\\x07зависимости', 'объект', 'пользователь'], ['\\x07', '\\x07user_errors', '\\x07текущие', 'ошибка', 'объект', 'принадлежать_пользователь'], ['\\x07', '\\x07user_extents', '\\x07экстенты', 'сегмент', 'выделить', 'объект', 'принадлежать_пользователь'], ['\\x07', '\\x07user_free_space', '\\x07свободные', 'экстент', 'табличный_пространство', 'доступный_пользователь', '\\x07', '\\x07user_indexes', '\\x07описание', 'индекс', 'доступный_пользователь', '\\x07', '\\x07user_ind_columns', '\\x07столбцы', 'индекс', 'пользователь', 'индексированных', 'таблица'], ['\\x07', '\\x07user_objects', '\\x07объект', 'принадлежать_пользователь'], ['\\x07', '\\x07user_object_size', '\\x07размер', 'объект', 'pl', 'sql', 'принадлежать_пользователь'], ['\\x07', '\\x07user_obj_audit_opts', '\\x07параметр', 'аудиторство', 'пользовательский', 'таблица_представление'], ['\\x07', '\\x07user_resource_limits', '\\x07ограничение', 'ресурс', 'доступный', 'текущий', 'пользователь'], ['\\x07', '\\x07user_role_privs', '\\x07роли', 'выдать', 'текущий', 'пользователь'], ['\\x07', '\\x07user_segments', '\\x07распределение', 'пространство', 'сегмент', 'объект', 'пользователь'], ['\\x07', '\\x07user_sequences', '\\x07описание', 'последовательность', 'создать', 'пользователь'], ['\\x07', '\\x07user_snapshots', '\\x07все', 'моментальный', 'копия', 'доступный_пользователь'], ['\\x07', '\\x07user_snapshot_logs', '\\x07все', 'журнал', 'моментальный', 'копия', 'принадлежать_пользователь'], ['\\x07', '\\x07user_source', '\\x07исходный', 'текст', 'хранить', 'объект', 'принадлежать_пользователь'], ['\\x07', '\\x07user_synonyms', '\\x07все', 'частный', 'синоним', 'пользователь'], ['\\x07', '\\x07user_sys_privs', '\\x07системные', 'привилегия', 'выдать', 'текущий', 'пользователь'], ['\\x07', '\\x07user_tables', '\\x07описание', 'таблица', 'пользователь'], ['\\x07', '\\x07user_tablespaces', '\\x07описание', 'доступный', 'табличный_пространство'], ['\\x07', '\\x07user_tab_columns', '\\x07столбцы', 'таблица_представление', 'кластер'], ['\\x07', '\\x07user_tab_comments', '\\x07комментарий', 'таблица_представление', 'принадлежать_пользователь', '\\x07', '\\x07user_tab_pr1vs', '\\x07привилегия', 'объект', 'пользователь', 'являться', 'владелец', 'выдать', 'получить', 'привилегия'], ['\\x07', '\\x07user_tab_privs_made', '\\x07все', 'привилегия', 'объект', 'принадлежать_пользователь'], ['\\x07', '\\x07user_tab_pr1vs_recd', '\\x07привилегия', 'объект', 'получить', 'пользователь'], ['\\x07', '\\x07user_triggers', '\\x07описание', 'пользовательский', 'триггер'], ['\\x07', '\\x07user_trigger_cols', '\\x07использование', 'столбец', 'пользовательский', 'триггер', 'триггер', 'таблица'], ['\\x07', '\\x07user_ts_quotas', '\\x07квоты', 'пользователь', 'табличный_пространство'], ['\\x07', '\\x07user_users', '\\x07информация', 'текущий', 'пользователь', 'база'], ['\\x07', '\\x07user_views', '\\x07текст', 'представление', 'пользователь'], ['\\x07', '\\x07динамический', 'таблица', 'производительность', 'доступный_пользователь', 'sys', 'позволять', 'управлять', 'производительность', 'работа', 'сервер', 'субд'], ['v$access', '\\x07заблокированные', 'текущий', 'момент', 'объект', 'сеанс', 'использоваться', '\\x07', '\\x07v$archive', '\\x07информация', 'журнал', 'архив', 'каждый', 'поток', 'система', 'база'], [], ['\\x07', '\\x07v$backup', '\\x07статус', 'сброс', 'on', 'line', 'база'], ['\\x07', '\\x07v$bgprocess', '\\x07описание', 'фоновый', 'процесс'], ['\\x07', '\\x07v$circuit', '\\x07информация', 'виртуальный', 'цепь'], ['\\x07', '\\x07v$database', '\\x07информация', 'контрольный', 'файл', 'база'], ['\\x07', '\\x07v$datafile', '\\x07информация', 'контрольный', 'файл', 'файл', 'база'], ['\\x07', '\\x07v$dbfile', '\\x07информация', 'файл', 'база'], ['\\x07', '\\x07v$db', 'object', 'cache', '\\x07объект', 'база', 'находиться', 'библиотечный', 'кеш'], ['\\x07', '\\x07v$dispatcher', '\\x07информация', 'процесс', 'диспетчер'], ['\\x07', '\\x07v$enabledprivs', '\\x07включенные', 'привилегия'], ['\\x07', '\\x07v$f1lestat', '\\x07информация', 'статистика', 'ввод', 'вывод', 'файл'], ['\\x07', '\\x07v$fixed', 'table', '\\x07все', 'таблица_представление', 'производный', '\\x07', '\\x07v$instance', '\\x07блицы', 'база'], ['\\x07', '\\x07v$instance', '\\x07статус', 'текущий', 'экземпляр', '\\x07', '\\x07v$', 'latch', '\\x07число', 'задержка', 'каждый', 'тип'], ['строка', 'таблица', 'однозначно', 'соответствовать', 'строкам', 'таблица', 'v$atchholder', '\\x07', '\\x07v$latchholder', '\\x07информация', 'владелец', 'задержка'], ['\\x07', '\\x07v$latchname', '\\x07закодированные', 'имя', 'задержка', 'таблица', 'v$atch'], ['\\x07', '\\x07v$librarycache', '\\x07статистика', 'управление', 'буфер', 'библиотечный', 'память'], ['\\x07', '\\x07v$license', '\\x07параметр', 'лицензия'], ['\\x07', '\\x07v$adcstat', '\\x07статистика', 'sql*loader', 'выполнение', 'прямой_загрузка'], ['\\x07', '\\x07v$loadtstat', '\\x07статистика', 'sql', 'loader', 'выполнение', 'прямой_загрузка'], ['\\x07', '\\x07v$lock', '\\x07блокировка', 'ресурс'], ['\\x07', '\\x07v$log', '\\x07информация', 'журнальный_файл'], ['\\x07', '\\x07v$logfile', '\\x07информация', 'журнальный_файл'], ['\\x07', '\\x07v$loghist', '\\x07информация', 'история', 'журнальный_файл'], ['\\x07', '\\x07v$log', 'history', '\\x07информация', 'история', 'журнальный_файл'], ['\\x07', '\\x07u$nls', 'parameters', '\\x07текущие', 'значение', 'параметр', 'nls'], ['\\x07', '\\x07v$open', 'cursor', '\\x07открытые', 'пользователь', 'курсоры'], ['\\x07', '\\x07v$parameter', '\\x07информация', 'текущий', 'значение', 'параметр'], ['\\x07', '\\x07v$process', '\\x07информация', 'активный', 'процесс'], ['\\x07', '\\x07v$queue', '\\x07информация', 'очередь', 'мульти', 'серверный', 'сообщение'], ['\\x07', '\\x07v$recovery', 'log', '\\x07журнальные', 'файл', 'полный', 'восстановление', 'база'], ['\\x07', '\\x07v$recover', 'file', '\\x07статус', 'файл', 'восстанавливать'], ['\\x07', '\\x07v$reqd1st', '\\x07гистограмма', 'время', 'обращение', 'разделить', '12', 'столбец', 'период', 'время'], ['\\x07', '\\x07v$resource', '\\x07информация', 'ресурс'], ['\\x07', '\\x07v$rollname', '\\x07имена', 'активный', 'сегмент_откат'], ['\\x07', '\\x07v$rollstat', '\\x07статистика', 'активный', 'сегмент_откат'], ['\\x07', '\\x07v$rowcache', '\\x07статистика', 'активность', 'словарь'], ['строка', 'каждый', 'буфер', 'память', '\\x07', '\\x07v$secondary', '\\x07представление', 'trusted', 'oracle', 'u', 'перечислить', 'вторичный', 'смонтировать', 'база'], ['\\x07', '\\x07v$sess10n', '\\x07информация', 'текущий', 'сеанс'], ['\\x07', '\\x07v$sess10n', 'wa1', 't', '\\x07список', 'ресурс', 'событие', 'ожидать', 'текущий', 'сеанс'], ['\\x07', '\\x07v$sesstat', '\\x07статистика', 'текущий', 'сеанс'], ['\\x07', '\\x07v$sga', '\\x07суммарная', 'информация', 'sga'], ['\\x07', '\\x07v$shared', 'server', '\\x07информация', 'вcex', 'разделять', 'процесс', 'сервер'], ['\\x07', '\\x07v$sqlarea', '\\x07статистика', 'разделять', 'буфер', 'память', 'курсор'], ['строка', 'каждый', 'курсор'], ['\\x07', '\\x07v$sqltext', '\\x07текст', 'команда', 'sql', 'находиться', 'разделить', 'курсор', 'sga'], ['\\x07', '\\x07v$statname', '\\x07раскодированные', 'имя', 'статистик', '.из', 'таблица', 'v$sesstat'], ['\\x07', '\\x07v$syslabel', '\\x07представление', 'trusted', 'oracle', 'перечислить', 'системный', 'метка'], ['\\x07', '\\x07v$sysstat', '\\x07текущие', 'значение', 'статистик', 'таблица', 'v$sesstat'], ['\\x07', '\\x07v$thread', '\\x07информация', 'потоках', 'содержащихся', 'контрольный', 'файл'], ['\\x07', '\\x07v$timer', '\\x07текущее', 'время', 'сотый', 'доля', 'секунда'], ['\\x07', '\\x07v$transaction', '\\x07информация', 'транзакция'], ['\\x07', '\\x07v$type', 'size', '\\x07размеры', 'различный', 'компонент', 'база'], ['\\x07', '\\x07v$version', '\\x07имена', 'версия', 'компонент', 'библиотека', 'ядро', 'oracle', '\\x07', '\\x07v$waitstat', '\\x07статистика', 'содержимого', 'блок'], ['обновляется', 'включить', 'временной', 'статистики'], ['\\x07', '\\x07специальные', 'таблица', 'таблица', 'chained_rows', 'список', 'сцепить', 'строка', 'таблица', 'кластер', 'использовать', 'команда', 'analyze'], ['столбец', '\\x07тип', '\\x07', '\\x07owner', 'name', '\\x07varchar2', '\\x07', '\\x07table', 'name', '\\x07varchar2', '\\x07', '\\x07cluster', 'name', '\\x07varchar2', '\\x07', '\\x07head_rowid', '\\x07rowid', '\\x07', '\\x07timestamp', '\\x07date', '\\x07', '\\x07таблица', 'exceptions', 'таблица', 'использоваться', 'определение', 'строка', 'нарушать', 'правило_целостность', 'правило_целостность', 'включить'], ['столбец', '\\x07тип', '\\x07', '\\x07head.rowid', '\\x07rowid', '\\x07', '\\x07owner', '\\x07varchar2', '\\x07', '\\x07table', 'name', '\\x07varchar2', '\\x07', '\\x07constraint', '\\x07varchar2', '\\x07', '\\x07plan_table', 'таблица', 'заполняться', 'команда', 'explain', 'plan', 'описать', 'план', 'выполнение', 'оператор', 'sql'], ['столбец', '\\x07тип', '\\x07', '\\x07statement.id', '\\x07varchar2', '\\x07', '\\x07timestamp', '\\x07date', '\\x07', '\\x07remarks', '\\x07varchar2', '\\x07', '\\x07operation', '\\x07varchar2', '\\x07', '\\x07options', '\\x07varchar', '\\x07', '\\x07object_node', '\\x07varchar2', '\\x07', '\\x07object_owner', '\\x07varchar2', '\\x07', '\\x07object.name', '\\x07varchar', '\\x07', '\\x07object_instance', '\\x07number', '\\x07', '\\x07object_type', '\\x07varchar2', '\\x07', '\\x07search_columns', '\\x07number', '\\x07', '\\x07id', '\\x07number', '\\x07', '\\x07parent.id', '\\x07number', '\\x07', '\\x07position', '\\x07number', '\\x07', '\\x07other', '\\x07long', '\\x07', '\\x07', '2.3.3', 'защита'], ['транзакция', 'фиксация', 'откат'], ['изменение', 'база', 'сохраняться', 'пользователь', 'указать', 'результат', 'вставка', 'модификация', 'удаление', 'зафиксировать', 'окончательно'], ['момент', 'изменение', 'находиться', 'отложенном', 'состояние', 'сбой', 'аварийный', 'отказ', 'машина', 'аннулировать', 'изменение'], ['транзакция', 'элементарный', 'единица', 'работа', 'состоять', 'несколько', 'оператор', 'sql', 'результат', 'транзакция', 'целиком', 'сохраняться', 'фиксироваться', 'или.целиком', 'отменяться', 'откатываться'], ['фиксация', 'транзакция', 'делать', 'изменение', 'окончательный', 'заносить', 'база', 'транзакция', 'фиксироваться', 'изменение', 'отменить'], ['откат', 'отменять', 'вставка', 'модификация', 'удаление', 'сделать', 'транзакция', 'откат', 'транзакция', 'изменение', 'зафиксировать'], ['процесс', 'фиксация', 'транзакция', 'подразумевать', 'запись', 'изменение', 'занести', 'журнальный', 'кэш', 'sga', 'оперативный', 'журнальный_файл', 'диск'], ['дисковый', 'ввод', 'вывод', 'успешный', 'приложение', 'получать', 'сообщение', 'успешный', 'фиксация', 'транзакция'], ['текст', 'сообшения', 'изменяться', 'зависимость', 'инструментальный', 'средство'], ['фоновый', 'процесс', 'dbwr', 'записывать', 'блок', 'актуальный', 'oracle', 'буферный', 'кэш', 'sga', 'база'], ['случай', 'сбой', 'система', 'oracle', 'автоматически', 'повторить', 'изменение', 'журнальный_файл', 'блок', 'oracle', 'сбой', 'записать', 'файл', 'база'], ['oracle', 'реализовать', 'идея', 'откат', 'уровень', 'оператор'], ['произойти', 'единственный', 'сбой', 'выполнение', 'оператор', 'оператор', 'завершиться', 'неудача'], ['оператор', 'терпеть', 'неудача', 'предел', 'транзакция', 'остальные', 'оператор', 'транзакция', 'отложенном', 'состояние', 'фиксироваться', 'откатываться'], ['блокировка', 'захватить', 'транзакция', 'автоматически', 'освобождаться', 'транзакция', 'фиксироваться', 'откатываться', 'фоновый', 'процесс', 'pmon', 'отменять', 'транзакция'], ['ресурс', 'система', 'сегмент_откат', 'освобождаться', 'использование', 'транзакция'], ['точка', 'сохранение', 'позволять', 'устанавливать', 'маркер', 'внутри', 'транзакция', 'образ', 'иметься', 'возможность', 'отмена', 'часть', 'работа', 'проделать', 'транзакция'], ['целесообразно', 'использовать', 'точка', 'сохранение', 'длинный', 'сложный', 'транзакция', 'обеспечить', 'возможность', 'отмена', 'изменение', 'определённый', 'оператор'], ['обусловливать', 'дополнительный', 'затрата', 'ресурс', 'система', 'оператор', 'выполнять', 'работа', 'изменение', 'отменяться', 'усовершенствование', 'логика', 'обработка', 'оказаться', 'оптимальный', 'решение'], ['oracle', 'освобождать', 'блокировка', 'захватить', 'отмененными', 'оператор'], ['целостность', 'связать', 'определение', 'правило', 'проверка', 'достоверность', 'гарантировать', 'недействительный', 'попасть', 'таблица'], ['oracle', 'позволять', 'определять', 'хранить', 'правило', 'объект', 'база', 'касаться', 'образ', 'кодировать'], ['активироваться', 'раз', 'вид', 'изменение', 'проводиться', 'таблица', 'независимо', 'программа', 'выполнять', 'вставка', 'модификация', 'удаление'], ['контроль', 'осуществляться', 'форма', 'ограничение', 'целостность', 'триггер', 'база'], ['ограничение', 'целостность', 'устанавливать', 'бизнес', 'правила', 'уровень', 'база', 'определять', 'набор', 'проверка', 'таблица', 'система', 'проверка', 'автоматически', 'выполняться', 'раз', 'вызываться', 'оператор', 'вставка', 'модификация', 'удаление', 'таблица'], ['ограничение', 'нарушить', 'оператор', 'отменяться'], ['оператор', 'транзакция', 'оставаться', 'отложенном', 'состояние', 'фиксироваться', 'отменяться', 'согласно', 'логика', 'приложение'], ['2.3.4', 'привилегия', 'системный', 'уровень', 'пользователь', 'oracle', 'определять', 'база', '80', 'привилегия', 'системный', 'уровень'], ['привилегия', 'тонко', 'управлять', 'право', 'выполнение', 'команда', 'sql'], ['администратор', 'база', 'назначать', 'системный', 'привилегия', 'непосредственно', 'пользовательский', 'учётный_раздел', 'oracle', 'роль'], ['роль', 'назначаться', 'учётный_раздел', 'oracle'], ['создать', 'триггер', 'таблица', 'владелец', 'таблица', 'пользователь', 'oracle', 'системный', 'привилегия', 'называть', 'create', 'trigger', 'назначить', 'ваш', 'учётный_раздел', 'пользователь', 'oracle', 'роль', 'присвоить', 'учётный_раздел'], ['привилегия', 'create', 'session', 'использовать', 'привилегия', 'системный', 'уровень'], ['выполнить', 'соединение', 'база', 'учётный_раздел', 'oracle', 'привилегия', 'системный', 'уровень', 'create', 'session'], ['привилегия', 'объектный_уровень'], ['привилегия', 'объектный_уровень', 'обеспечивать', 'возможность', 'выполнить', 'определённый', 'тип', 'действие', 'выбрать', 'вставить', 'модифицировать', 'удалить', 'т.д.', 'указать', 'объект'], ['владелец', 'объект', 'полный', 'контроль', 'объект', 'выполнять', 'любой', 'действие', 'обязанный', 'привилегия', 'объектный_уровень'], ['фактически', 'владелец', 'объект', 'пользователь', 'oracle', 'предоставлять', 'привилегия', 'объектный_уровень', 'пользователь'], ['пользователь', 'владеть', 'таблица', 'желать', 'пользователь', 'вставлять', 'выбирать', 'строка', 'таблица', 'модифицировать', 'удалять', 'предоставлять', 'другому', 'пользователь', 'привилегия', 'объектный_уровень', 'отбор', 'вставка', 'таблица'], ['предоставлять', 'привилегия', 'объектный_уровень', 'непосредственно', 'пользователь', 'роль', 'назначаться', 'учётный_раздел', 'пользователь', 'oracle'], ['привилегия', 'выдаваться', 'пользователь', 'роль', 'команда', 'grant', 'отбираться', 'команда', 'revoke'], ['привелегии', 'разделить', 'системный', 'объектный'], ['системный', 'привилегия', 'относиться', 'класс', 'объект', 'объектный', 'относиться', 'задать', 'объект']]"
        ],
        [
         "31",
         "Технология создания распр ИС.doc",
         "2. ТЕХНОЛОГИИ СОЗДАНИЯ РАСПРЕДЕЛЕННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ\rПостроение современных распределенных информационных систем сегодня на прямую связано с реаляционными и объектно-ориентированными СУБД, которые в последнее время утвердились как основные средства для обработки данных в информационных системах различного масштаба - от больших приложений обработки транзакций в банковских системах до персональных систем на РС. В настоящее время существует множество систем управления базами данных (СУБД) и других программ выполняющих сходные функции. Инструментальные средства Oracle - одни из лучших и наиболее мощных имеющихся инструментов разработки профессионального класса. \r\r2.1 Базы данных и их сравнительные характеристики.\r2.1.1 Классификация моделей построения баз данных\rВ зависимости от архитектуры СУБД делятся на локальные и распределенные СУБД. Все части локальной СУБД размещаются на одном компьютере, а распределенной на нескольких. За несколько десятилетий последовательно появлялись системы (СУБД), основанные на трех базовых моделях данных: иерархической, сетевой и реляционной. Основные определения теории баз знаний и баз данных представлены в таблице 1. \rБаза данных (БД) \u001f Базами данных называют электронные хранилища информации, доступ к которым осуществляется с помощью одного или нескольких компьютеров.\rСистемы управления базами данных (СУБД) \u001f это программные средства для создания, наполнения, обновления и удаления баз данных.\rБаза знаний \u001f Базы знаний это хранилища знаний, представленных в формализованном виде.\rСистема управления базами знаний СУБЗ \u001f это программные средства для создания, наполнения, обновления и удаления баз знаний.\rВиды знаний: \rПроцедурные \u001f Знания, отвечающие на вопрос \"Как решать поставленную задачу?\" \rДекларативные \u001f Знания, не содержащие в явном виде процедуры решения задач. \rКаузальные \u001f Знания о причинно-следственных связях между объектами предметной области \rНеточные \u001f Знания отличающиеся неполнотой или противоречивостью.\rПарадигмы решения задач:\rВ СУБД \u001f Данные + Алгоритм = Программа решения задачи.\rВ СУБЗ \u001f Знания + Стратегия вывода = Решение проблемы.\rМодели знаний:\rПродукционная \u001f Знания представленные в формате \"ЕСЛИ-ТО\".\rФреймовая \u001f Знания представленные в виде набора взаимосвязанный фреймов. \rСемантическая сеть \u001f Граф, вершины которого соответствуют объектам или понятиям, а дуги определяют отношения между вершинами.\rФрейм \u001f Структурированное описание объекта предметной области состоящее из наименования объекта (имя фрейма), атрибутов объекта (свойств, характеристик) - слоты фрейма. \rФрейм прототип \u001f Это фрейм у которого значения слотов не определены. \rКонкретный фрейм \u001f Это фрейм прототип с конкретными значениями.\rEnterprise JavaBeans \u001f Стандарт для создания средствами языка Java пригодных для многократного использования компонентов, из которых формируются прикладные программы. Компоненты Enterprise JavaBeans облегчают разработку программ, обеспечивающих доступ к хранимой в базе данных информации.\rРаспараллеливание обработки запроса (Intraquery parallelism) \u001f Использование нескольких ЦП для обработки одного запроса.\rПараллельная обработка запросов (interquery parallelism) подразумевает параллельную обработку нескольких запросов (на разных ЦП).\rУровень изоляции (Isolation level).Установочный параметр БД, определяющий, в какой степени одновременно обратившиеся к базе данных пользователи могут оказывать влияние на работу друг друга. Как правило, используются три уровня изоляции: завершение чтения (read committed), характеризуется большим количеством одновременно обслуживаемых пользователей и низким уровнем изоляции каждого из них); в установленном порядке (serializable), небольшое число одновременно обслуживаемых пользователей, высокая степень изоляции и повторяющееся чтение (repeatable read), сочетание двух первых уровней.\rТехнология СОМ \u001f COM - Component Object Model - Компонентная модель объектов, предложена корпорацией Микрософт.\rТехнология CORBA\r\u0007CORBA - Common Object Require Broker Architecture - архитектура с брокером требуемых общих объектов, разработана независимой группой OMG.\r\u0007\r\u0007JDBC (Java\u000bDatabase Connectivity).\r\u0007Интерфейс взаимодействия с базами данных на языке Java. Этот стандарт, разработанный фирмой Sun Microsystems, определяет способы доступа Java-приложений к данным БД.\r\u0007\r\u0007ODBC (Open\u000bDatabase Connectivity).\r\u0007Открытый интерфейс взаимодействия с базами данных. Предложенный корпорацией Microsoft стандарт, регулирующий доступ Windows -приложений к базам данных. Стандарт ODBC постепенно заменяется спецификацией OLE DB.\r\u0007\r\u0007OLAP (Online\u000banalytical processing).\r\u0007Оперативный анализ данных. Этот метод обработки применяется с целью ускорения обработки запросов и предусматривает предварительный расчет часто запрашиваемых данных (например, сумм или значений счетчика).\r\u0007\r\u0007OLE DB\u000b(Object Linking and\u000bEmbedding Database).\r\u0007OLE для баз данных. Новый стандарт Microsoft, регулирующий доступ приложений к базам данных. Имеет расширения для серверов OLAP и предусматривает применение специальных средств обработки мультимедийных данных.\r\u0007\r\u0007 \r\u0007Дополнения к табл.2\r\u0007\r\u0007Операция соединения\u000b(Join).\r\u0007Процесс, позволяющий объединять данные из двух таблиц посредством сопоставления содержимого двух аналогичных столбцов.\r\u0007\r\u0007SQL (Structured\u000bquery language).\r\u0007Язык структурированных запросов, язык S0L. Является принятым в отрасли стандартом для выполнения операций вставки, обновления, удаления и выборки данных из реляционных БД.\r\u0007\r\u0007Хранимая процедура\u000b(Stored procedure).\r\u0007Программа, которая выполняется внутри базы данных и может предпринимать сложные действия на основе информации, задаваемой пользователем. Поскольку хранимые процедуры выполняются непосредственно на сервере базы данных, обеспечивается более высокое быстродействие, нежели при выполнении тех же операций средствами клиента БД.\r\u0007\r\u0007Транзакция\u000b(Transaction).\r\u0007Совокупность операций базы данных, выполнение которых не может быть прервано. Для того чтобы изменения, внесенные в БД в ходе выполнения любой из входящих в транзакцию операций, были зафиксированы в базе данных, все операции должны завершиться успешно. Все базы данных, представленные в нашем обзоре, позволяют использовать транзакции, тогда как БД для настольных систем, например Visual dBase фирмы Inprise или Microsoft Access, не предусматривают применения механизма транзакций.\r\u0007\r\u0007Триггер\u000b(Trigger).\r\u0007Программа базы данных, вызываемая всякий раз при вставке, изменении или удалении строки таблицы. Триггеры обеспечивают проверку любых изменений на корректность, прежде чем эти изменения будут приняты\r\u0007\r\u0007\r2.1.1.1 Иерархическая модель\rПервые иерархические и сетевые СУБД были созданы в начале 60-х годов. Причиной послужила необходимость управления миллионами записей (связанных друг с другом иерархическим образом), например при информационной поддержке лунного проекта Аполлон. Среди реализуемых на практике СУБД этого типа преобладает система IMS (Information Management System компании IBM) (На данный момент это самая распространенная СУБД из всех данного типа). Применяются и другие иерархические системы: TDMS (Time-Shared Date Management System) компании Development Corporation; Mark IV Multi - Access Retrieval System компании Control Data Corporation; System - 2000 разработки SAS-Institute. \rОтношения в иерархической модели данных организованы в виде совокупностей деревьев, где дерево - структура данных, в которой тип сегмента потомка связан только с одним типом сегмента предка. Графически: Предок - точка на конце стрелки, а Потомок - точка на острие стрелки. В базах данных определено, что точки - это типы записей, а стрелки представляют отношения один - к - одному или один - ко - многим. \rК ограничения иерархической модели данных можно отнести: \rОтсутствует явное разделение логических и физических характеристик модели; \rДля представления неиерархических отношений данных требуются дополнительные манипуляции; \rНепредвиденные запросы могут требовать реорганизации базы данных. \r\r2.1.1.2 Сетевая модель.\rСети - естественный способ представления отношений между объектами. Они широко применяются в математике, исследованиях операций, химии, физике, социологии и других областях знаний. Сети обычно могут быть представлены математической структурой, которая называется направленным графом. Направленный граф имеет простую структуру. Он состоит из точек или узлов,соединенных стрелками или ребрами. В контексте моделей данных узлы можно представлять как типы записей данных, а ребра представляют отношения один-к -одному или один-ко-многим. Структура графа делает возможными простые представления иерархических отношений (таких, как генеалогические данные) . \rСетевая модель данных - это представление данных сетевыми структурами типов записей и связанных отношениями мощности один-к-одному или один-ко-многим. В конце 60-х конференция по языкам систем данных (Conference on Data Systems Languages, CODASYL) поручила подгруппе, названной Database Task Group (DTBG), разработать стандарты систем управления базами данных. На DTBG оказывала сильное влияние архитектура, использованная в одной из самых первых СУБД, Iategrated Data Store (IDS), созданной ранее компанией General Electric.Это привело к тому, что была рекомендована сетевая модель. \rДокументы Database Task Group (DTBG) (группа для разработки стандартов систем управления базами данных) от 1971 года остается основной формулировкой сетевой модели, на него ссылаются как на модель CODASYL DTBG. Она послужила основой для разработки сетевых систем управления базами данных нескольких производителей. IDS (Honeywell) и IDMS (Computer Associates) - две наиболее известных коммерческих реализации. В сетевой модели существует две основные структуры данных: типы записей и наборы: \rТип записей. Совокупность логически связанных элементов данных. \rНабор. В модели DTBG отношение один-ко-многим между двумя типами записей. \rПростая сеть. Структура данных, в которой все бинарные отношения имеют мощность один-ко-многим. \rСложная сеть. Структура данных, в которой одно или несколько бинарных отношений имеют мощность многие-ко-многим. \rТип записи связи. Формальная запись, созданная для того, чтобы преобразовать сложную сеть в эквивалентную ей простую сеть.\rВ модели DBTG возможны только простые сети, в которых все отношения имеют мощность один-к-одному или один-ко-многим. Сложные сети, включающие одно или несколько отношений многие-ко-многим, не могут быть напрямую реализованы в модели DBTG. Следствием возможности создания искусственных формальных записей является необходимость дополнительного объема памяти и обработки, однако при этом модель данных имеет простую сетевую форму и удовлетворяет требованиям DBTG. \r\r2.1.1.3 Реляционная модель.\rВ 1970-1971 годах Е.Ф.Кодд опубликовал две статьи, в которых ввел реляционную модель данных и реляционные языки обработки данных - реляционную алгебру и реляционное исчисление. \rРеляционная алгебра Процедурный язык обработки реляционных таблиц. \rРеляционное исчисление Непроцедурный язык создания запросов. \rВсе существующие к тому времени подходы к связыванию записей из разных файлов использовали физические указатели или адреса на диске. В своей работе Кодд продемонстрировал, что такие базы данных существенно ограничивают число типов манипуляций данными. Более того, они очень чувствительны к изменениям в физическом окружении. Когда в компьютерной системе устанавливался новый накопитель или изменялись адреса хранения данных, требовалось дополнительное преобразование файлов. Если к формату записи в файле добавлялись новые поля, то физические адреса всех записей файла изменялись. То есть такие базы данных не позволяли манипулировать данными так, как это позволяла бы логическая структура. Все эти проблемы преодолела реляционная модель, основанная на логических отношениях данных. \rСуществует два подхода к проектированию реляционной базы данных. \rПервый подход заключается в том, что на этапе концептуального проектирования создается не концептуальная модель данных, а непосредственно реляционная схема базы данных, состоящая из определений реляционных таблиц, подвергающихся нормализации. \rВторой подход основан на механическом преобразовании функциональной модели, созданной ранее, в нормализованную реляционную модель. Этот подход чаще всего используется при проектировании больших, сложных схем баз данных, необходимых для корпоративных информационных систем. \rТабл.1. Основные определения реляционных СУБД \r№\r\u0007Термин\r\u0007Определение\r\u0007\r\u00071\r\u0007Реляционная модель данных\r\u0007Организует и представляет данные в виде таблиц или реляций.\r\u0007\r\u00072\r\u0007Реляционная база данных (РБД, RDBMS).\r\u0007База данных, построенная на реляционной модели.\r\u0007\r\u00072\r\u0007Реляция (таблица-элементарная информационная единица)\r\u0007Двумерная таблица, содержащая строки и столбцы данных.\r\u0007\r\u00074\r\u0007Степень реляции.\r\u0007Количество атрибутов реляции. При том необходимо помнить, что никакие два атрибута реляции не могут иметь одинаковых имен.\r\u0007\r\u0007 \r\u0007Кортежи\r\u0007Строки реляции (таблицы), соответствуют объекта, конкретному событию или явлению.\r\u0007\r\u0007 \r\u0007Атрибуты\r\u0007Столбцы таблицы, характеризующие признаки, параметры объекта, события, явления.\r\u0007\r\u0007 \r\u0007Область атрибута\r\u0007Набор всех возможных значений, которые могут принимать атрибуты. Если в процессе работы возникает ситуация, что атрибут неприменим или значения одного или нескольких атрибутовстроки пока неизвестны, то строка запишется в базуданных с пустыми значениямиэтих атрибутов (NULL строка).\r\u0007\r\u0007 \r\u0007Пустое значение\r\u0007Значение, приписываемое атрибуту в кортеже, если атрибут неприменим или его значение неизвестно\r\u0007\r\u0007 \r\u0007Ключ\r\u0007Любой набор атрибутов, однозначно определяющий каждый кортеж реляционной таблицы.\r\u0007\r\u0007 \r\u0007Ключ реляции\r\u0007Ключ также можно описать как минимальное множество атрибутов, однозначно определяющих (или функционально определяющих)каждое значение атрибута в кортеже.\r\u0007\r\u0007 \r\u0007Составной ключ\r\u0007Ключ содержащий два или более атрибута.\r\u0007\r\u0007 \r\u0007Потенциальный ключ\r\u0007В любой данной реляционной таблице может оказаться более одного набора атрибутов. Обычно в качестве первичного ключа выбирают потенциальный ключ, которым проще всего пользоваться при повседневной работе по вводу данных.\r\u0007\r\u0007 \r\u0007Первичный ключ.\r\u0007Поле или набор полей, однозначно идентифицирующий запись.\r\u0007\r\u0007 \r\u0007Внешний ключ.\r\u0007Набор атрибутов одной таблицы, являющийся ключом другой (или той же самой) таблицы; используется для определения логических связей между таблицами. Атрибуты внешнего ключа не обязательно должны иметь те же имена, что и атрибуты ключа, которым они соответствуют.\r\u0007\r\u0007 \r\u0007Рекурсивный внешний ключ.\r\u0007Внешний ключ, ссылающийся на свою собственную реляционную таблицу.\r\u0007\r\u0007 \r\u0007Родительская реляция (таблица)\r\u0007Таблица, поля которой входят в другую таблицу.\r\u0007\r\u0007 \r\u0007Дочерняя реляция (таблица)\r\u0007Таблица, поля которой используют информацию из полей другой таблицы, являющейся по отношению к данной родительской.\r\u0007\r\u0007 \r\u0007Отношение один-к-одному\r\u0007Когда одной записи в родительской таблицы соответствует одна запись в дочерней таблице\r\u0007\r\u0007 \r\u0007Отношение один-ко-многим\r\u0007Когда одной записи в родительской таблицы соответствует несколько записей в дочерней таблице\r\u0007\r\u0007 \r\u0007Отношение многие-ко-многим\r\u0007Когда многим записям в родительской таблицы соответствуют несколько записей в дочерней таблице\r\u0007\r\u0007 \r\u0007Рекурсивное отношение.\r\u0007Отношение, связывающее объектное множество с ним самим.\r\u0007\r\u0007 \r\u0007View (Представления)\r\u0007Информационная единица РБД (по структуре аналогичная таблице), записи которой сформированы в результате выполнения запросов к другим таблицам.\r\u0007\r\u0007 \r\u0007Ссылочная целлостность\r\u0007Адекватное воспроизведение записей в ссылочных полях таблиц.\r\u0007\r\u0007 \r\u0007Триггер\r\u0007Средство обеспечения ссылочной целостности на основе механизма каскадных изменений.\r\u0007\r\u0007 \r\u0007Индекс\r\u0007Механизмы быстрого доступа к хранящимся в таблицах данных путем их предварительной сортировки.\r\u0007\r\u0007 \r\u0007Транзакция\r\u0007Такое воздействие на СУБД, которое переводит ее из одного целостного состояния в другое.\r\u0007\r\u0007",
         "0",
         "[['2'], ['технологии', 'создания', 'распределенных', 'информационных', 'систем', 'построение', 'современный', 'распределить', 'информационный', 'система', 'сегодня', 'прямая', 'связать', 'реаляционными', 'объектный', 'ориентированный', 'субд', 'последний', 'время', 'утвердиться', 'основной', 'средство', 'обработка', 'информационный', 'система', 'различный', 'масштаб', 'больший', 'приложение', 'обработка', 'транзакция', 'банковский', 'система', 'персональный', 'система', 'рс'], ['время', 'существовать', 'множество', 'система_управление', 'база', 'субд', 'программа', 'выполнять', 'сходный', 'функция'], ['инструментальный', 'средство', 'oracle', 'хороший', 'мощный', 'иметься', 'инструмент', 'разработка', 'профессиональный', 'класс'], ['2.1', 'база', 'сравнительный', 'характеристика'], ['2.1.1', 'классификация', 'модель', 'построение', 'база', 'зависимость', 'архитектура', 'субд', 'делиться', 'локальный', 'распределить', 'субд'], ['часть', 'локальный', 'субд', 'размещаться', 'компьютер', 'распределить', 'несколько'], ['десятилетие', 'последовательно', 'появляться', 'система', 'субд', 'основать', 'три', 'базовый', 'модель', 'иерархический', 'сетевой', 'реляционной'], ['основной', 'определение', 'теория', 'база', 'знание', 'база', 'представить', 'таблица', '1'], ['база', 'бд', 'баз', 'называть', 'электронный', 'хранилище', 'информация', 'доступ', 'осуществляться', 'помощь', 'несколько', 'компьютер'], ['система_управление', 'база', 'субд', 'программный', 'средство', 'создание', 'наполнение', 'обновление', 'удаление', 'база'], ['база', 'знание', 'база', 'знание', 'хранилище', 'знание', 'представить', 'формализованный', 'вид'], ['система_управление', 'база', 'знание', 'субз', 'программный', 'средство', 'создание', 'наполнение', 'обновление', 'удаление', 'база', 'знание'], ['вид', 'знание', 'процедурный', 'знание', 'отвечать', 'вопрос', 'решать', 'поставить', 'задача', 'декларативный', 'знание', 'содержать', 'явный', 'вид', 'процедура', 'решение', 'задача'], ['каузальный', 'знание', 'причинно', 'следственный', 'связь', 'объект', 'предметный', 'область', 'неточный', 'знание', 'отличаться', 'неполнота', 'противоречивость'], ['парадигмы', 'решение', 'задача', 'субд', '+', 'алгоритм', '=', 'программа', 'решение', 'задача'], ['субз', 'знание', '+', 'стратегия', 'вывод', '=', 'решение', 'проблема'], ['модель', 'знание', 'продукционный', 'знание', 'представить', 'формат'], ['фреймовый', 'знание', 'представить', 'вид', 'набор', 'взаимосвязанный', 'фрейм'], ['семантический', 'сеть', 'граф', 'вершина', 'соответствовать', 'объект', 'понятие', 'дуга', 'определять', 'отношение', 'вершинами'], ['фрейм', 'структурированный', 'описание', 'объект', 'предметный', 'область', 'состоять', 'наименование', 'объект', 'имя', 'фрейм', 'атрибут', 'объект', 'свойство', 'характеристика', 'слот', 'фрейм'], ['фрейм', 'прототип', 'фрейм', 'значение', 'слот', 'определить'], ['конкретный', 'фрейм', 'фрейм', 'прототип', 'конкретный', 'значение'], ['enterprise', 'javabeans', 'стандарт', 'создание', 'средство', 'язык', 'java', 'пригодный', 'многократный', 'использование', 'компонент', 'формироваться', 'прикладной', 'программа'], ['компонент', 'enterprise', 'javabeans', 'облегчать', 'разработка', 'программа', 'обеспечивать', 'доступ', 'хранить', 'база', 'информация'], ['распараллеливание', 'обработка', 'запрос', 'intraquery', 'parallelism', 'использование', 'несколько', 'цп', 'обработка', 'запрос'], ['параллельный', 'обработка', 'запрос', 'interquery', 'parallelism', 'подразумевать', 'параллельный', 'обработка', 'несколько', 'запрос', 'разный', 'цп'], ['уровень', 'изоляция', 'isolation', 'level).установочный', 'параметр', 'бд', 'определять', 'степень', 'одновременно', 'обратиться', 'база', 'пользователь', 'оказывать', 'влияние', 'работа', 'друг', 'друга'], ['правило', 'использоваться', 'три', 'уровень', 'изоляция', 'завершение', 'чтение', 'read', 'committed', 'характеризоваться', 'больший', 'количество', 'одновременно', 'обслуживать', 'пользователь', 'низкий', 'уровень', 'изоляция', 'каждый', 'установить', 'порядок', 'serializable', 'небольшой', 'число', 'одновременно', 'обслуживать', 'пользователь', 'высокий', 'степень', 'изоляция', 'повторяться', 'чтение', 'repeatable', 'read', 'сочетание', 'два', 'первый', 'уровень'], ['технология', 'сом', 'com', 'component', 'object', 'model', 'компонентный', 'модель', 'объект', 'предложить', 'корпорация', 'микрософт'], ['технология', 'corba', '\\x07corba', 'common', 'object', 'require', 'broker', 'architecture', 'архитектура', 'брокер', 'требуемых', 'общий', 'объект', 'разработать', 'независимый', 'группа', 'omg'], ['\\x07', '\\x07jdbc', 'java', 'database', 'connectivity'], ['\\x07интерфейс', 'взаимодействие', 'база', 'язык', 'java'], ['стандарт', 'разработать', 'фирма', 'sun', 'microsystems', 'определять', 'способ', 'доступ', 'java', 'приложение', 'данным', 'бд'], ['\\x07', '\\x07odbc', 'open', 'database', 'connectivity'], ['\\x07открытый', 'интерфейс', 'взаимодействие', 'база'], ['предложить', 'корпорация', 'microsoft', 'стандарт', 'регулировать', 'доступ', 'windows', '-приложений', 'база'], ['стандарт', 'odbc', 'постепенно', 'заменяться', 'спецификация', 'ole', 'db'], ['\\x07', '\\x07olap', 'online', 'analytical', 'processing'], ['\\x07оперативный', 'анализ'], ['метод', 'обработка', 'применяться', 'цель', 'ускорение', 'обработка', 'запрос', 'предусматривать', 'предварительный', 'расчёт', 'запрашивать', 'сумма', 'значение', 'счётчик'], ['\\x07', '\\x07ole', 'db', 'object', 'linking', 'and', 'embedding', 'database'], ['\\x07ole', 'база'], ['новый', 'стандарт', 'microsoft', 'регулировать', 'доступ', 'приложение', 'база'], ['расширение', 'сервер', 'olap', 'предусматривать', 'применение', 'специальный', 'средство', 'обработка', 'мультимедийный'], ['\\x07', '\\x07', '\\x07дополнение', 'табл.2', '\\x07', '\\x07операция', 'соединение', 'join'], ['\\x07процесс', 'позволять', 'объединять', 'два', 'таблица', 'сопоставление', 'содержимое', 'два', 'аналогичный', 'столбец'], ['\\x07', '\\x07sql', 'structured', 'query', 'language'], ['\\x07язык', 'структурировать', 'запрос', 'язык', 's0l.', 'являться', 'принять', 'отрасль', 'стандарт', 'выполнение', 'операция', 'вставка', 'обновление', 'удаление', 'выборка', 'реляционный', 'бд'], ['\\x07', '\\x07хранимая', 'процедура', 'stored', 'procedure'], ['\\x07программа', 'выполняться', 'внутри', 'база', 'предпринимать', 'сложный', 'действие', 'основа', 'информация', 'задавать', 'пользователь'], ['хранить', 'процедура', 'выполняться', 'непосредственно', 'сервер', 'база', 'обеспечиваться', 'высокий', 'быстродействие', 'нежели', 'выполнение', 'операция', 'средство', 'клиент', 'бд'], ['\\x07', '\\x07транзакция', 'transaction'], ['\\x07совокупность', 'операция', 'база', 'выполнение', 'прервать'], ['изменение', 'внести', 'бд', 'ход', 'выполнение', 'входить', 'транзакция', 'операция', 'зафиксировать', 'база', 'операция', 'завершиться', 'успешно'], ['база', 'представить', 'обзор', 'позволять', 'использовать', 'транзакция', 'бд', 'настольный', 'система', 'visual', 'dbase', 'фирма', 'inprise', 'microsoft', 'access', 'предусматривать', 'применение', 'механизм', 'транзакция'], ['\\x07', '\\x07триггер', 'trigger'], ['\\x07программа', 'база', 'вызывать', 'раз', 'вставка', 'изменение', 'удаление', 'строка', 'таблица'], ['триггеры', 'обеспечивать', 'проверка', 'изменение', 'корректность', 'изменение', 'принять', '\\x07', '\\x07', '2.1.1.1', 'иерархический', 'модель', 'первый', 'иерархический', 'сетевой', 'субд', 'создать', '60-й', 'год'], ['причина', 'послужить', 'необходимость', 'управление', 'миллион', 'запись', 'связать', 'друг', 'другом', 'иерархический', 'образ', 'информационный', 'поддержка', 'лунный', 'проект', 'аполлон'], ['реализовать', 'практика', 'субд', 'тип', 'преобладать', 'система', 'ims', 'information', 'management', 'system', 'компания', 'ibm', 'момент', 'распространенная', 'субд', 'тип'], ['применяться', 'иерархический', 'система', 'tdms', 'time', 'shared', 'date', 'management', 'system', 'компания', 'development', 'corporation', 'mark', 'iv', 'multi', 'access', 'retrieval', 'system', 'компания', 'control', 'data', 'corporation', 'system', '2000', 'разработка', 'sas', 'institute'], ['отношение', 'иерархический', 'модель', 'организовать', 'вид', 'совокупность', 'дерево', 'дерево', 'структура', 'тип', 'сегмент', 'потомок', 'связать', 'тип', 'сегмент', 'предок'], ['графически', 'предок', 'точка', 'конец', 'стрелка', 'потомок', 'точка', 'остриё', 'стрелка'], ['база', 'определить', 'точка', 'тип_запись', 'стрелка', 'представлять', 'отношение', 'многим'], ['ограничение', 'иерархический', 'модель', 'отнести', 'отсутствовать', 'явный', 'разделение', 'логический', 'физический', 'характеристика', 'модель', 'представление', 'неиерархический', 'отношение', 'требоваться', 'дополнительный', 'манипуляция', 'непредвиденный', 'запрос', 'требовать', 'реорганизация', 'база'], ['2.1.1.2', 'сетевой', 'модель'], ['сети', 'естественный', 'способ', 'представление', 'отношение', 'объект'], ['широко', 'применяться', 'математика', 'исследование', 'операция', 'химия', 'физика', 'социология', 'область', 'знание'], ['сеть', 'представить', 'математический', 'структура', 'называться', 'направленным', 'граф'], ['направленный', 'граф', 'простой', 'структура'], ['состоять', 'точка', 'узел', 'соединить', 'стрелок', 'ребрами'], ['контекст', 'модель', 'узел', 'представлять', 'тип_запись', 'ребро', 'представлять', 'отношение', '-одному', 'многим'], ['структура', 'граф', 'делать', 'возможный', 'простой', 'представление', 'иерархический', 'отношение', 'генеалогический'], ['сетевой', 'модель', 'представление', 'сетевой', 'структура', 'тип_запись', 'связать', 'отношение', 'мощность', 'многим'], ['конец', '60-й', 'конференция', 'язык', 'система', 'conference', 'on', 'data', 'systems', 'languages', 'codasyl', 'поручить', 'подгруппа', 'назвать', 'database', 'task', 'group', 'dtbg', 'разработать', 'стандарт', 'система_управление', 'база'], ['dtbg', 'оказывать', 'сильный', 'влияние', 'архитектура', 'использовать', 'первый', 'субд', 'iategrated', 'data', 'store', 'ids', 'создать', 'компания', 'general', 'electric'], ['привести', 'рекомендовать', 'сетевой', 'модель'], ['документ', 'database', 'task', 'group', 'dtbg', 'группа', 'разработка', 'стандарт', 'система_управление', 'база', '1971', 'год', 'оставаться', 'основный', 'формулировка', 'сетевой', 'модель', 'ссылаться', 'модель', 'codasyl', 'dtbg'], ['послужить', 'основа', 'разработка', 'сетевой', 'система_управление', 'база', 'несколько', 'производитель'], ['ids', 'honeywell', 'idms', 'computer', 'associates', 'два', 'известный', 'коммерческий', 'реализация'], ['сетевой', 'модель', 'существовать', 'два', 'основной', 'структура', 'тип_запись', 'набор', 'тип_запись'], ['совокупность', 'логически', 'связать', 'элемент'], ['набор'], ['модель', 'dtbg', 'отношение', 'многим', 'два', 'тип_запись'], ['простой', 'сеть'], ['структура', 'бинарный', 'отношение', 'иметь', 'мощность', 'многим'], ['сложный', 'сеть'], ['структура', 'бинарный', 'отношение', 'иметь', 'мощность', 'многим'], ['тип_запись', 'связь'], ['формальный', 'запись', 'создать', 'преобразовать', 'сложный', 'сеть', 'эквивалентный', 'простой', 'сеть'], ['модель', 'dbtg', 'возможный', 'простой', 'сеть', 'отношение', 'иметь', 'мощность', 'многим'], ['сложный', 'сеть', 'включать', 'отношение', 'многим', 'реализовать', 'модель', 'dbtg'], ['следствие', 'возможность', 'создание', 'искусственный', 'формальный', 'запись', 'являться', 'необходимость', 'дополнительный', 'объём', 'память', 'обработка', 'модель', 'простой', 'сетевой', 'форма', 'удовлетворять', 'требование', 'dbtg'], ['2.1.1.3', 'реляционный', 'модель'], ['1970', '1971', 'год', 'е.ф.кодд', 'опубликовать', 'два', 'статья', 'ввести', 'реляционный', 'модель', 'реляционный', 'язык', 'обработка', 'реляционный', 'алгебра', 'реляционный', 'исчисление'], ['реляционный', 'алгебра', 'процедурный', 'язык', 'обработка', 'реляционный', 'таблица'], ['реляционный', 'исчисление', 'непроцедурный', 'язык', 'создание', 'запрос'], ['существовать', 'время', 'подход', 'связывание', 'запись', 'разный', 'файл', 'использовать', 'физический', 'указатель', 'адрес', 'диск'], ['работа', 'кодд', 'продемонстрировать', 'база', 'существенно', 'ограничивать', 'число', 'тип', 'манипуляция', 'данными'], ['чувствительный', 'изменение', 'физический', 'окружение'], ['компьютерный', 'система', 'устанавливаться', 'новый', 'накопитель', 'изменяться', 'адрес', 'хранение', 'требоваться', 'дополнительный', 'преобразование', 'файл'], ['формат', 'запись', 'файл', 'добавляться', 'новый', 'поле', 'физический', 'адрес', 'запись', 'файл', 'изменяться'], ['база', 'позволять', 'манипулировать', 'данными', 'позволять', 'логический', 'структура'], ['проблема', 'преодолеть', 'реляционный', 'модель', 'основать', 'логический', 'отношение'], ['существовать', 'два', 'подход', 'проектирование', 'реляционный', 'база'], ['первый', 'подход', 'заключаться', 'этап', 'концептуальный', 'проектирование', 'создаваться', 'концептуальный', 'модель', 'непосредственно', 'реляционная', 'схема', 'база', 'состоять', 'определение', 'реляционный', 'таблица', 'подвергаться', 'нормализация'], ['второй', 'подход', 'основать', 'механический', 'преобразование', 'функциональный', 'модель', 'создать', 'нормализованную', 'реляционный', 'модель'], ['подход', 'использоваться', 'проектирование', 'больший', 'сложный', 'схема', 'база', 'необходимый', 'корпоративный', 'информационный', 'система'], ['табл.1'], ['основной', 'определение', 'реляционный', 'субд', '№', '\\x07термин', '\\x07определение', '\\x07', '\\x071', '\\x07реляционная', 'модель', '\\x07организует', 'представлять', 'вид', 'таблица', 'реляция'], ['\\x07', '\\x072', '\\x07реляционная', 'база', 'рбд', 'rdbms'], ['\\x07база', 'построить', 'реляционный', 'модель'], ['\\x07', '\\x072', '\\x07реляция', 'таблица', 'элементарный', 'информационный', 'единица', '\\x07двумерная', 'таблица', 'содержать', 'строка', 'столбец'], ['\\x07', '\\x074', '\\x07степень', 'реляция'], ['\\x07количество', 'атрибут', 'реляция'], ['помнить', 'никакой', 'два', 'атрибут', 'реляция', 'одинаковый', 'имя'], ['\\x07', '\\x07', '\\x07кортежи', '\\x07строки', 'реляция', 'таблица', 'соответствовать', 'объект', 'конкретный', 'событие', 'явление'], ['\\x07', '\\x07', '\\x07атрибут', '\\x07столбцы', 'таблица', 'характеризовать', 'признак', 'параметр', 'объект', 'событие', 'явление'], ['\\x07', '\\x07', '\\x07область', 'атрибут', '\\x07набор', 'возможный', 'значение', 'принимать', 'атрибут'], ['процесс', 'работа', 'возникать', 'ситуация', 'атрибут', 'неприменимый', 'значение', 'несколько', 'атрибутовстроки', 'неизвестный', 'строка', 'записаться', 'базуданных', 'пустой', 'значениямиэтих', 'атрибут', 'null', 'строка'], ['\\x07', '\\x07', '\\x07пустое', 'значение', '\\x07значение', 'приписывать', 'атрибут', 'кортеж', 'атрибут', 'неприменимый', 'значение', 'неизвестный', '\\x07', '\\x07', '\\x07ключ', '\\x07любой', 'набор', 'атрибут', 'однозначно', 'определять', 'кортеж', 'реляционный', 'таблица'], ['\\x07', '\\x07', '\\x07ключ', 'реляция', '\\x07ключ', 'описать', 'минимальный', 'множество', 'атрибут', 'однозначно', 'определять', 'функционально', 'определяющих)каждое', 'значение', 'атрибут', 'кортеж'], ['\\x07', '\\x07', '\\x07составной', 'ключ', '\\x07ключ', 'содержать', 'два', 'атрибут'], ['\\x07', '\\x07', '\\x07потенциальный', 'ключ', '\\x07в', 'реляционной', 'таблица', 'оказаться', 'набор', 'атрибут'], ['качество', 'первичный', 'ключ', 'выбирать', 'потенциальный', 'ключ', 'пользоваться', 'повседневный', 'работа', 'ввод'], ['\\x07', '\\x07', '\\x07первичный', 'ключ'], ['\\x07поле', 'набор', 'поле', 'однозначно', 'идентифицировать', 'запись'], ['\\x07', '\\x07', '\\x07внешний', 'ключ'], ['\\x07набор', 'атрибут', 'таблица', 'являться', 'ключ', 'таблица', 'использоваться', 'определение', 'логический', 'связь', 'таблицами'], ['атрибут', 'внешний', 'ключ', 'обязательно', 'имя', 'атрибут', 'ключ', 'соответствовать'], ['\\x07', '\\x07', '\\x07рекурсивный', 'внешний', 'ключ'], ['\\x07внешний', 'ключ', 'ссылающийся', 'собственный', 'реляционный', 'таблица'], ['\\x07', '\\x07', '\\x07родительская', 'реляция', 'таблица', '\\x07таблица', 'поле', 'входить', 'другую', 'таблица'], ['\\x07', '\\x07', '\\x07дочерняя', 'реляция', 'таблица', '\\x07таблица', 'поле', 'использовать', 'информация', 'поле', 'таблица', 'являться', 'отношение', 'родительский'], ['\\x07', '\\x07', '\\x07отношение', '\\x07когда', 'запись', 'родительский', 'таблицы', 'соответствовать', 'запись', 'дочерний', 'таблица', '\\x07', '\\x07', '\\x07отношение', 'многим', '\\x07когда', 'запись', 'родительский', 'таблицы', 'соответствовать', 'запись', 'дочерний', 'таблица', '\\x07', '\\x07', '\\x07отношение', 'многим', '\\x07когда', 'многим', 'запись', 'родительский', 'таблицы', 'соответствовать', 'запись', 'дочерний', 'таблица', '\\x07', '\\x07', '\\x07рекурсивное', 'отношение'], ['\\x07отношение', 'связывать', 'объектный', 'множество', '\\x07', '\\x07', '\\x07view', 'представления', '\\x07информационная', 'единица', 'рбд', 'структура', 'аналогичный', 'таблица', 'запись', 'сформировать', 'результат', 'выполнение', 'запрос', 'таблица'], ['\\x07', '\\x07', '\\x07ссылочная', 'целлостность', '\\x07адекватное', 'воспроизведение', 'запись', 'ссылочный', 'поле', 'таблица'], ['\\x07', '\\x07', '\\x07триггер', '\\x07средство', 'обеспечение', 'ссылочный', 'целостность', 'основа', 'механизм', 'каскадный', 'изменение'], ['\\x07', '\\x07', '\\x07индекс', '\\x07механизм', 'быстрый', 'доступ', 'храниться', 'таблицах', 'путем', 'предварительный', 'сортировка'], ['\\x07', '\\x07', '\\x07транзакция', '\\x07такое', 'воздействие', 'субд', 'переводить', 'целостный', 'состояние'], ['\\x07', '\\x07']]"
        ],
        [
         "32",
         "Требования к проекту.doc",
         "Требования к проекту\rВведение\rОтносительно свободная форма изложения, принятая авторами, допускает введение новых терминов и соответствующих им понятий, так сказать, по ходу изложения материала, не обременяя читателя отдельно вынесенными определениями или описаниями. Но это только там, где авторы надеются на опыт и интуицию читателя. Например, с самого начала используется термин требования к проекту (или, коротко, требования), обозначающий \"то, что под этим понимают компетентные люди\". \rНо есть термины, с которыми подобные вольности недопустимы. В статье вводится понятие область требований. В российских стандартах существует термин предметная область, а в украинских — предметна сфера, однако область требований обозначает нечто принципиально другое. \rПочему именно \"область\", а не класс, к примеру, или группа? Тут две причины: \rЧасто необходимо учитывать не только актуально существующие требования, но и требования, которых сейчас нет, но которые потенциально могут возникнуть. Кроме того, иногда необходимо принимать во внимание именно факт отсутствия требований, обладающих определенными свойствами. В этих случаях термин пустая область воспринимается гораздо естественнее, чем, скажем, пустой класс или пустая группа. \rДля визуализации предлагается авторский тип диаграмм, где каждой области требований соответствует графическая область на диаграмме. \rОбласти требований могут частично перекрываться, равно как одна из них может полностью содержать другую, отражая тем самым какое-либо из свойств принадлежащих им требований. Области требований очень похожи на диаграммы Венна из теории множеств. И чем в большей степени каждое отдельное требование будет обладать свойствами атомарности и отличимости (обязательные свойства для элемента множества), тем больше математических результатов из теории множеств можно будет применить. \rПредлагаемый метод построения диаграмм областей является инструментом аналитика для процедуры начальной классификации требований. В процессе выделения существенных в данном конкретном случае областей, определения их взаимосвязей относительно включения-пересечения и распределения имеющихся требований по соответствующим областям аналитик приходит ко все более точному и глубокому пониманию сути самих требований. \rПо ходу изложения материала диаграмма будет эволюционировать от вспомогательного и совсем не обязательного инструмента визуализации простых и очевидных понятий до самостоятельного, мощного механизма, несущего глубокую семантику и, при необходимости, являющегося прочной базой для дальнейшей формализации и применения математических методов. \r\rДиаграмма областей требований\rПростейший случай диаграмм\rИтак, в простейшем случае на диаграмме имеем область всех мыслимых и \"немыслимых\" требований — наш аналог универсального множества в математике. \rВ рамках этого универсального множества всех требований выделяем две большие области: область компетенции и состоятельности Заказчика и область компетенции и состоятельности Разработчика. \rТаким образом, есть Заказчик и Разработчик, у каждого из них — своя область компетенции и состоятельности. Чем дальше в сторону информационных технологий смещаемся, тем шире область компетенции и состоятельности Разработчика. Соответственно, чем дальше в противоположную сторону (сторону технологий из предметной области) — тем меньше специалисты разработчика показывают сообразительности и готовых наработок. \rС другой стороны, чем более мощные информационные технологии предлагаются Заказчику, тем меньше у него находится соответствующих задач и тем меньше сотрудников, способных разобраться как в самих задачах, так и в предлагаемых методах автоматизации их решения. \rДиалог между представителями Заказчика и Разработчика становится конструктивным только тогда, когда области их компетентности и состоятельности начинают пересекаться. \rДругими словами, информационное образование экспертов Заказчика должно позволять им формулировать свои требования пусть на ломаном, но все-таки \"человеческом\" языке, с одной стороны. А с другой — иметь элементарные представления об автоматизации для необходимой оценки и критики предлагаемых Разработчиком методов. \rВ свою очередь, опыт аналитиков Разработчика должен достичь такого уровня, чтобы они имели возможность разобраться в плохо структурированных лекциях экспертов Заказчика, состоящих на 80% из изложения частных случаев и исключений, каждый из которых просто \"вопиит гласом велиим\" о высочайшем уровне и исключительности данного эксперта в его области деятельности. \rНо серьезное сотрудничество начинается только тогда, когда на пересечении этих двух областей, которое можно назвать областью взаимопонимания, накапливается некая \"критическая масса\" требований. Именно эти требования и являются основным материалом для переговоров и обоснования целесообразности самых ранних этапов разработки проекта. \rЗамечательно, что этими требованиями, как правило, не может пренебречь даже высшее руководство — как с одной, так и с другой стороны. Как правило, эти требования в обязательном порядке попадают в официальные документы и именно на них \"высокие договаривающиеся стороны\" своими широкими руководящими жестами ставят две черты: порог рациональной автоматизации и порог рациональной формализации предметной области Заказчика. \rЭти две руководящие директивные черты отрезают две небольшие, но очень интересные области: \rизлишние требования к автоматизации от особо грамотных сотрудников Заказчика; \rизлишняя формализация предметной области от особо рьяных аналитиков Разработчика. \rПримером требования из первой области может служить пожелание системного администратора Заказчика: получить систему автоматического архивирования базы данных корпорации на какое-нибудь нестандартное устройство со своим специфическим программным обеспечением по его управлению (какой-нибудь древний стример или новейший CD-RW, оборудованный механическим чейнджером). \rПример для второй области — система автоматического ценообразования для работы дизайнеров или парикмахеров, основанная на эстетических признаках. \rКак всегда, сроки — сжаты, бюджет — ограничен. А потому от руководства дается однозначная установка: никаких новшеств, никаких изысканий, реализуем только четко очерченную область требований — просчитать сроки и бюджет. \rИтак, сроки и бюджет скрупулезно подсчитаны, скорректированы и утверждены на высшем уровне. \rПриступаем к воплощению… и с ужасом обнаруживаем: для реализации требования В необходима реализация требований, оставшихся за пределами внимания руководства,— А или C. \rВ экстренном порядке собирается совещание, на котором руководство Разработчика (наконец-то) хоть немного прислушивается к мнению непосредственных исполнителей и на котором за бурными дебатами прячется основная цель: решить, кто же будет расплачиваться за промах. Руководство ли, вынужденное оплатить реализацию одного из требований A или C, — или же непосредственные исполнители, вынужденные реализовать все те же требования A или C, но (!) без дополнительных финансовых и человеческих ресурсов (в лучшем случае будет дана отсрочка по времени, потому что, как правило, все делается за счет \"авралов\" и \"переработок\"). \rИтак, приходим к пониманию, что существует еще одна область (рис. 7). Область требований, удовлетворение которых обязательно для реализации проекта в целом и, в частности, для реализации задокументированных и утвержденных требований. Ограничение ресурсов на реализацию этих требований или попытка обойтись вообще без их реализации ведет прямиком к завалу проекта. \rКак только руководство принимает решение — требования из этой области не реализовывать — исполнители встают перед необходимостью делать это за свой счет. В результате наблюдается явление откачки средств и ресурсов из среды исполнителей. Это может выразиться в переработках, задействовании личных наработок или скрытого аутсорсинга исполнителей. \rВ любом случае результатом будут напряженные отношения между высшим руководством и исполнителями, грозящие перерасти сначала в скрытый, а потом и в явный конфликт. В случае если трудовые отношения построены по принципу \"от конечного результата\", пострадавшей стороной (то есть стороной, несущей потери) окажется непосредственный исполнитель. В случае же отношений с повременной оплатой все финансовые потери ложатся на плечи руководства Разработчика. \rИ в том, и в другом случае Заказчику извне ситуация с развитием проекта кажется неопределенной, но, тем не менее, не предвещающей больших тревог — хотя именно в это время закладывается мина замедленного действия под успех проекта в частности и сотрудничество вообще. Тогда как в случае проявления инициативы со стороны Заказчика в сторону переговоров с целью увеличения сметы проекта катастрофические процессы могут быть погашены. \rПроще говоря, рассчитывать на конструктивную деятельность со стороны своего руководства исполнителям Разработчика не приходится. Провести переговоры и добиться разумного и обоснованного увеличения бюджета — дело немыслимое, а проявление инициативы в этом направлении со стороны руководства Разработчика вообще принято считать дурным тоном. \rС другой стороны, предложение со стороны Заказчика — увеличить бюджет проекта — помимо того что дает возможность решить проблему, еще и работает в сторону повышения имиджа не только Заказчика, но и Разработчика. \rОднако на практике мы нередко наблюдаем весьма печальную и уродливую картину. Руководство Разработчика, зажатое реальными и весьма серьезными проблемами по реализации упущенных требований с одной стороны и мнимыми, но весьма болезненными проблемами по преодолению имиджевого стереотипа поведения с другой, все-таки вынуждено действовать. События развиваются по плану, который, может, и кажется счастливой находкой — но на деле лишь оттягивает момент кризиса, приводя к еще более тяжелой ситуации. \rНа переговорах Руководство разработчика подает сложившуюся ситуацию в очень выгодном (но только при поверхностном взгляде) свете: во время работы над проектом оказалось, что в общем ключе работ, не изменяя идеологии, возможно получить намного более привлекательный для Заказчика продукт, чем предполагалось изначально. Для этого необходимо всего лишь незначительно увеличить бюджет, но (!) прямо на текущей стадии разработки проекта. \rОчевидными плодами такого подхода будут: \rполучение дополнительного финансирования, едва достаточного для закрытия образовавшегося прорыва и относительно благополучного завершения проекта в его изначальной редакции; \rобнародование необходимых, но упущенных пунктов, под видом доработок, составляющих новизну и привлекательность проекта в его новой редакции; \rцелый пакет новых и весьма амбициозных требований, главными свойствами которых будут повышенная туманность формулировок и, как следствие, повышенные риски в реализации; \rфактические затраты на реализацию этих новых требований окажутся, в лучшем случае, большими не на порядок, а лишь в несколько раз. \rЕсть простой признак, позволяющий Заказчику распознать такую ситуацию. Предложения об улучшениях поступают от Разработчика в конце временной цепочки его состояний: спад активности — неопределенность — бурная внутренняя деятельность — предложение чего-то лучшего. Вот уж действительно, лучшее — враг хорошего. \rНапротив, если предложения об улучшении явились результатом ровной работы аналитиков Разработчика, да еще и при болезненном для Заказчика вскрытии его внутренних проблем,— тогда это может служить поводом к доверительной оценке таких предложений. \rСуществует еще одна область требований, реализация которых необходима для поддержания естественной и полноценной работы системы в соответствии со взаимно понятными и задокументированными требованиями (рис. 8). Изначально, требования из этой области не были замечены аналитиками Разработчика и считались в равной мере как очевидными, так и обязательными, с точки зрения экспертов Заказчика. \rЕсли проигнорировать реализацию этих Требований, то Заказчик получит Систему, в которой функционирование автоматической части должно поддерживаться большим объемом окружающего ручного труда. Грубо говоря, придется заводить штат сотрудников, специалистов Предметной Области, работающих на Систему. \rАвторам пришлось внедрять сторонний продукт, в котором был реализован автоматический выбор варианта делопроизводства в зависимости от текущего состояния счета клиента. При этом велся строгий учет самих платежных документов и даты их прихода. Главным упущением аналитиков Разработчика оказалась реализация системы как автомата, реагирующего на наличие определенного платежного документа, а не на общий баланс по счету. Надо было видеть мучения делопроизводителей, вынужденных в угоду системе редактировать пересчитанные вручную суммы по соответствующим документам, а то и вводить дополнительные фиктивные документы… \rДа простит меня читатель за случившееся отступление от темы статьи: формальная модель для классификации требований. Прорвались наболевшие наработки по родственному, но все-таки другому направлению — \"Как гарантированно завалить проект\" (конструктивное название должно быть таким \"Риски ошибок в руководстве проектом: какими они бывают и как их избежать\"). Возможно, это действительно станет названием следующей статьи, пока же приведенные язвительные примеры послужат лишь подтверждением тому, что за видимой сухостью и формальностью предлагаемой диаграммы кроются болезненные вопросы, сплошь и рядом возникающие в реальных, \"живых\" проектах. А для обсуждения подобных наболевших вопросов ой как нужна хорошая их визуализация! \rНо вернемся к нашей диаграмме и выделенной там области… и зададимся вопросом: \"А почему, собственно, область поддерживающих требований должна иметь именно такой вид?\" Почему не так, как на рис. 9? \rДругой интересный вопрос: а какой смысл в двух различных подобластях данной области? Чем, по сути, отличаются требования A и C? Но об этом чуть далее. \rА по перовому вопросу очевидно, что диаграмма на приведенном рисунке является просто проявлением более глубокого подхода и дает более интересные результаты, обсуждение которых следовало бы вынести за пределы данной ознакомительной статьи. Мы же ограничимся упрощенным вариантом (рис. 7) и пойдем далее. \rИтак, имеем две зеркальные — как по расположению на диаграмме, так и по своим проявлениям в процессе разработки,— области: \rобласть контекста реализации — область поддерживающих требований, необходимых для полноценной реализации Разработчиком задокументированной части проекта; \rобласть контекста использования — зеркальная предыдущей и включающая требования, которые остались за пределами документов, но обязательны для полноценной работы заказчика. \rТеперь настало время \"показать семантику второго измерения\". Проще говоря, ответить на поставленный ранее вопрос: а чем, собственно, отличается левая подобласть от симметричной ей правой? Если для полноценной работы Заказчика в соответствии с требованием E необходима реализация одного из поддерживающих требований D или F (рис. 9), то чем они между собой отличаются и что общего у них с зеркальными им требованиями A и C? \rВнимательный читатель уже заметил две стрелочки в верхней и нижней части рисунка, подписи которых имеют простой смысл: чем левее на рисунке расположена точка, обозначающая требования, тем больше это требование опирается на широко известные и общепринятые методы решения, стандартное и распространенное оборудование, соответствующее программное обеспечение и т.д. А чем правее — тем больше особенностей в методах решения (вплоть до ноу-хау и патентов), тем больше специального оборудования и\\или специального ПО. \rИ не случайно стрелочка, указывающая стремление использовать стандартные методы, расположена в верхней части, соответствующей стремлениям Разработчика. Именно от него зачастую звучат размашистые предложения в стиле: да, для решения задач такой серьезной и представительной организации, как Заказчик, ну просто необходимы: СУБД — не меньше и не дешевле Oracle 9, CRM-системы — не ниже самого \"Сибел-системз\", а для решения задач коммуникации без приобретения спутника с антеннами вообще не обойтись. \rВ ответ на такие предложения со стороны Заказчика активно выдвигаются возражения, что подобная мощь (читай — такие большие расходы) ему абсолютно ни к чему, что вполне достаточно существующей базы и что сотрудники Заказчика успешно справляются со своими задачами чуть ли не с калькулятором и на бумаге … \rСуществует лишь несколько задач, реально нуждающихся в автоматизации. Именно они являются особенностью деятельности Заказчика, их решение должно дать Заказчику конкурентные преимущества и т.д. \rИзюминкой оказывается комплекс из уникальности самих задач, методов их решения и бессмысленности автоматизации всего остального без автоматизации именно этого… \rВ данном случае особенно к месту оказывается следующий пример из области делопроизводства. Существует обязательное требование E: система должна автоматически реагировать на состояние счета клиента и конфигурацию платежных документов. Существуют особые случаи, в которых необходим перерасчет сумм по платежным документам и реализация требования E нуждается в удовлетворении одного из требований D или F. Пример для требования F — наличие какого-то удобного и логичного механизма для перерасчета. Требование D — ужесточение (стандартизация) требований на платежные документы, исключающие возникновение запутанных ситуаций. \rДля зеркальных требований A, B, C можно привести такой пример. B — набор отчетов, генерируемых из БД. Особенность — один или несколько из них не реализуются в виде единственного, пусть и сложного, SQL-запроса. Необходимы хранимые процедуры. Для реализации этого требования следует реализовать либо требование A — использовать Т-SQL с соответствующими механизмами MS-SQL Server (стандартное решение — и никакой головной боли Разработчику) либо требование С — использовать ODBC-интерфейс к файлу MS Access, на чем настаивает Заказчик. Но тогда Разработчику придется засучить рукава — и разрабатывать собственный эмулятор хранимых процедур. Вот вам и уникальность, и специфичность разработки. \rСобственно, на этом ознакомительную статью можно и закончить. Заинтересованный читатель уже в состоянии самостоятельно развивать далее предложенный подход, что нас только порадует.",
         "0",
         "[['требование', 'проект', 'введение', 'относительно', 'свободный', 'форма', 'изложение', 'принять', 'автор', 'допускать', 'введение', 'новый', 'термин', 'соответствующий', 'понятие', 'сказать', 'ход', 'изложение', 'материал', 'обременять', 'читатель', 'отдельно', 'вынести', 'определениями', 'описание'], ['автор', 'надеяться', 'опыт', 'интуиция', 'читатель'], ['использоваться', 'термин', 'требование', 'проект', 'коротко', 'требование', 'обозначать', 'понимать', 'компетентный', 'человек'], ['термин', 'вольность', 'недопустимый'], ['статья', 'вводиться', 'понятие', 'область', 'требование'], ['российский', 'стандарт', 'существовать', 'термин', 'предметный', 'область', 'украинских', 'предметный', 'сфера', 'область', 'требование', 'обозначать', 'принципиально'], ['область', 'класс', 'пример', 'группа'], ['два', 'причина', 'учитывать', 'актуально', 'существовать', 'требование', 'требование', 'потенциально', 'возникнуть'], ['принимать', 'внимание', 'факт', 'отсутствие', 'требование', 'обладать', 'определённый', 'свойство'], ['случай', 'термин', 'пустой', 'область', 'восприниматься', 'естественный', 'сказать', 'пустой', 'класс', 'пустой', 'группа'], ['визуализация', 'предлагаться', 'авторский', 'тип', 'диаграмма', 'каждый', 'область', 'требование', 'соответствовать', 'графический', 'область', 'диаграмма'], ['область', 'требование', 'частично', 'перекрываться', 'равно', 'полностью', 'содержать', 'другую', 'отражать', 'самым', 'какой', 'свойство', 'принадлежать', 'требование'], ['область', 'требование', 'похожий', 'диаграмма', 'венна', 'теория', 'множество'], ['больший', 'степень', 'отдельный', 'требование', 'обладать', 'свойство', 'атомарности', 'отличимость', 'обязательный', 'свойство', 'элемент', 'множество', 'математический', 'результат', 'теория', 'множество', 'применить'], ['предлагать', 'метод', 'построение', 'диаграмма', 'область', 'являться', 'инструмент', 'аналитик', 'процедура', 'начальный', 'классификация', 'требование'], ['процесс', 'выделение', 'существенный', 'конкретный', 'случай', 'область', 'определение', 'взаимосвязь', 'относительно', 'включение', 'пересечение', 'распределение', 'иметься', 'требование', 'соответствующий', 'область', 'аналитик', 'приходить', 'точный', 'глубокий', 'понимание', 'суть', 'требование'], ['ход', 'изложение', 'материал', 'диаграмма', 'эволюционировать', 'вспомогательный', 'обязательный', 'инструмент', 'визуализация', 'простой', 'очевидный', 'понятие', 'самостоятельный', 'мощный', 'механизм', 'нести', 'глубокий', 'семантика', 'являться', 'прочный', 'база', 'дальнейший', 'формализация', 'применение', 'математический', 'метод'], ['диаграмма', 'область', 'требование', 'простейший', 'случай', 'диаграмма', 'простой', 'случай', 'диаграмма', 'иметь', 'область', 'мыслимый', 'немыслимый', 'требование', 'аналог', 'универсальный', 'множество', 'математика'], ['рамка', 'универсальный', 'множество', 'требование', 'выделять', 'два', 'больший', 'область', 'область', 'компетенция', 'состоятельность', 'заказчик', 'область', 'компетенция', 'состоятельность', 'разработчик'], ['образ', 'заказчик', 'разработчик', 'каждый', 'область', 'компетенция', 'состоятельность'], ['сторона', 'информационный', 'технология', 'смещаемся', 'широкий', 'область', 'компетенция', 'состоятельность', 'разработчик'], ['соответственно', 'противоположный', 'сторона', 'сторона', 'технология', 'предметный', 'область', 'специалист', 'разработчик', 'показывать', 'сообразительность', 'готовый', 'наработка'], ['сторона', 'мощный', 'информационный', 'технология', 'предлагаться', 'заказчик', 'находиться', 'соответствующий', 'задача', 'сотрудник', 'способный', 'разобраться', 'задача', 'предлагать', 'метод', 'автоматизация', 'решение'], ['диалог', 'представитель', 'заказчик', 'разработчик', 'становиться', 'конструктивный', 'область', 'компетентность', 'состоятельность', 'начинать', 'пересекаться'], ['слово', 'информационный', 'образование', 'эксперт', 'заказчик', 'позволять', 'формулировать', 'требование', 'ломаный', 'человеческий', 'язык', 'сторона'], ['элементарный', 'представление', 'автоматизация', 'необходимый', 'оценка', 'критика', 'предлагать', 'разработчик', 'метод'], ['очередь', 'опыт', 'аналитик', 'разработчик', 'достигнуть', 'уровень', 'иметь', 'возможность', 'разобраться', 'плохо', 'структурировать', 'лекция', 'эксперт', 'заказчик', 'состоять', '80', 'изложение', 'частный', 'случай', 'исключение', 'вопиит', 'глас', 'велиим', 'высокий', 'уровень', 'исключительность', 'эксперт', 'область', 'деятельность'], ['серьёзный', 'сотрудничество', 'начинаться', 'пересечение', 'два', 'область', 'назвать', 'область', 'взаимопонимание', 'накапливаться', 'некий', 'критический', 'масса', 'требование'], ['требование', 'являться', 'основный', 'материал', 'переговоров', 'обоснование', 'целесообразность', 'ранний', 'этап', 'разработка', 'проект'], ['замечательный', 'требование', 'правило', 'пренебречь', 'высокий', 'руководство', 'сторона'], ['правило', 'требование', 'обязательный', 'порядок', 'попадать', 'официальный', 'документ', 'высокий', 'договаривающиеся', 'сторона', 'широкий', 'руководящий', 'жест', 'ставить', 'два', 'черта', 'порог', 'рациональный', 'автоматизация', 'порог', 'рациональный', 'формализация', 'предметный', 'область', 'заказчик'], ['два', 'руководить', 'директивный', 'черта', 'отрезать', 'два', 'небольшой', 'интересный', 'область', 'излишний', 'требование', 'автоматизация', 'грамотный', 'сотрудник', 'заказчик', 'излишний', 'формализация', 'предметный', 'область', 'рьяный', 'аналитик', 'разработчик'], ['пример', 'требование', 'первый', 'область', 'служить', 'пожелание', 'системный', 'администратор', 'заказчик', 'получить', 'система', 'автоматический', 'архивирование', 'база', 'корпорация', 'какой', 'нестандартный', 'устройство', 'специфический', 'программный', 'обеспечение', 'управление', 'древний', 'стример', 'новый', 'cd', 'rw', 'оборудовать', 'механический', 'чейнджером'], ['пример', 'второй', 'область', 'система', 'автоматический', 'ценообразование', 'работа', 'дизайнер', 'парикмахер', 'основать', 'эстетический', 'признак'], ['срок', 'сжать', 'бюджет', 'ограничить'], ['руководство', 'даваться', 'однозначный', 'установка', 'никакой', 'новшество', 'никакой', 'изыскание', 'реализовать', 'четко', 'очертить', 'область', 'требование', 'просчитать', 'срок', 'бюджет'], ['срок', 'бюджет', 'скрупулезно', 'подсчитать', 'скорректировать', 'утвердить', 'высокий', 'уровень'], ['приступать', 'воплощение'], ['ужас', 'обнаруживать', 'реализация', 'требование', 'необходимый', 'реализация', 'требование', 'остаться', 'предел', 'внимание', 'руководство', 'c.', 'экстренный', 'порядок', 'собираться', 'совещание', 'руководство', 'разработчик', 'прислушиваться', 'мнение', 'непосредственный', 'исполнитель', 'бурный', 'дебатами', 'прятаться', 'основный', 'цель', 'решить', 'расплачиваться', 'промах'], ['руководство', 'вынужденный', 'оплатить', 'реализация', 'требование', 'a', 'c', 'непосредственный', 'исполнитель', 'вынужденный', 'реализовать', 'требование', 'a', 'c', 'дополнительный', 'финансовый', 'человеческий', 'ресурс', 'хороший', 'случай', 'дать', 'отсрочка', 'время', 'правило', 'делаться', 'счёт', 'аврал', 'переработка'], ['приходить', 'понимание', 'существовать', 'область', 'рис'], ['7'], ['область', 'требование', 'удовлетворение', 'обязательно', 'реализация', 'проект', 'целое', 'частность', 'реализация', 'задокументированных', 'утвердить', 'требование'], ['ограничение', 'ресурс', 'реализация', 'требование', 'попытка', 'обойтись', 'реализация', 'вести', 'прямик', 'завал', 'проект'], ['руководство', 'принимать', 'решение', 'требование', 'область', 'реализовывать', 'исполнитель', 'вставать', 'необходимость', 'делать', 'счёт'], ['результат', 'наблюдаться', 'явление', 'откачка', 'средство', 'ресурс', 'среда', 'исполнитель'], ['выразиться', 'переработках', 'задействование', 'личный', 'наработка', 'скрыть', 'аутсорсинг', 'исполнитель'], ['случай', 'результат', 'напряжённый', 'отношение', 'высокий', 'руководство', 'исполнитель', 'грозить', 'перерасти', 'скрытый', 'явный', 'конфликт'], ['случай', 'трудовой', 'отношение', 'построить', 'принцип', 'конечный', 'результат', 'пострадать', 'сторона', 'сторона', 'нести', 'потеря', 'оказаться', 'непосредственный', 'исполнитель'], ['случай', 'отношение', 'повременный', 'оплата', 'финансовый', 'потеря', 'ложиться', 'плечо', 'руководство', 'разработчик'], ['другом', 'случай', 'заказчик', 'извне', 'ситуация', 'развитие', 'проект', 'неопределённый', 'предвещать', 'больший', 'тревога', 'время', 'закладываться', 'мина', 'замедленного', 'действие', 'успех', 'проект', 'частность', 'сотрудничество'], ['случай', 'проявление', 'инициатива', 'сторона', 'заказчик', 'сторона', 'переговоров', 'цель', 'увеличение', 'смета', 'проект', 'катастрофический', 'процесс', 'погасить'], ['говорить', 'рассчитывать', 'конструктивный', 'деятельность', 'сторона', 'руководство', 'исполнитель', 'разработчик', 'приходиться'], ['провести', 'переговоры', 'добиться', 'разумный', 'обоснованный', 'увеличение', 'бюджет', 'дело', 'немыслимый', 'проявление', 'инициатива', 'направление', 'сторона', 'руководство', 'разработчик', 'принять', 'считать', 'дурной', 'тон'], ['сторона', 'предложение', 'сторона', 'заказчик', 'увеличить', 'бюджет', 'проект', 'давать', 'возможность', 'решить', 'проблема', 'работать', 'сторона', 'повышение', 'имидж', 'заказчик', 'разработчик'], ['практика', 'наблюдать', 'весьма', 'печальный', 'уродливый', 'картина'], ['руководство', 'разработчик', 'зажать', 'реальный', 'весьма', 'серьёзный', 'проблема', 'реализация', 'упустить', 'требование', 'сторона', 'мнимый', 'весьма', 'болезненный', 'проблема', 'преодоление', 'имиджевый', 'стереотип', 'поведение', 'вынуждено', 'действовать'], ['событие', 'развиваться', 'план', 'счастливый', 'находка', 'дело', 'оттягивать', 'момент', 'кризис', 'приводить', 'тяжёлый', 'ситуация'], ['переговорах', 'руководство', 'разработчик', 'подавать', 'сложиться', 'ситуация', 'выгодный', 'поверхностный', 'взгляд', 'свет', 'время', 'работа', 'проект', 'оказаться', 'общий', 'ключ', 'работа', 'изменять', 'идеология', 'получить', 'намного', 'привлекательный', 'заказчик', 'продукт', 'предполагаться', 'изначально'], ['незначительно', 'увеличить', 'бюджет'], ['прямо', 'текущий', 'стадия', 'разработка', 'проект'], ['очевидный', 'плод', 'подход', 'получение', 'дополнительный', 'финансирование', 'достаточный', 'закрытие', 'образоваться', 'прорыв', 'относительно', 'благополучный', 'завершение', 'проект', 'изначальный', 'редакция', 'обнародование', 'необходимый', 'упустить', 'пункт', 'вид', 'доработка', 'составлять', 'новизна', 'привлекательность', 'проект', 'новый', 'редакция', 'целый', 'пакет', 'новый', 'весьма', 'амбициозный', 'требование', 'главный', 'свойство', 'повышенный', 'туманность', 'формулировка', 'следствие', 'повышенный', 'риск', 'реализация', 'фактический', 'затрата', 'реализация', 'новый', 'требование', 'оказаться', 'хороший', 'случай', 'больший', 'порядок', 'раз'], ['простой', 'признак', 'позволять', 'заказчик', 'распознать', 'ситуация'], ['предложение', 'улучшение', 'поступать', 'разработчик', 'конец', 'временной', 'цепочка', 'состояние', 'спад', 'активность', 'неопределённость', 'бурный', 'внутренний', 'деятельность', 'предложение', 'хороший'], ['хороший', 'враг', 'хороший'], ['предложение', 'улучшение', 'явиться', 'результат', 'ровный', 'работа', 'аналитик', 'разработчик', 'болезненный', 'заказчик', 'вскрытие', 'внутренний', 'проблема', 'служить', 'повод', 'доверительный', 'оценка', 'предложение'], ['существовать', 'область', 'требование', 'реализация', 'необходимый', 'поддержание', 'естественный', 'полноценный', 'работа', 'система', 'соответствие', 'понятный', 'задокументированными', 'требование', 'рис'], ['8)'], ['изначально', 'требование', 'область', 'заметить', 'аналитик', 'разработчик', 'считаться', 'равный', 'мера', 'очевидный', 'обязательный', 'точка', 'зрение', 'эксперт', 'заказчик'], ['проигнорировать', 'реализация', 'требование', 'заказчик', 'получить', 'система', 'функционирование', 'автоматический', 'часть', 'поддерживаться', 'больший', 'объём', 'окружать', 'ручной', 'труд'], ['грубо', 'говорить', 'прийтись', 'заводить', 'штат', 'сотрудник', 'специалист', 'предметный', 'область', 'работать', 'система'], ['автор', 'прийтись', 'внедрять', 'сторонний', 'продукт', 'реализовать', 'автоматический', 'выбор', 'вариант', 'делопроизводство', 'зависимость', 'текущий', 'состояние', 'счёт', 'клиент'], ['вестись', 'строгий', 'учёт', 'платёжный', 'документ', 'дата', 'приход'], ['главный', 'упущение', 'аналитик', 'разработчик', 'оказаться', 'реализация', 'система', 'автомат', 'реагировать', 'наличие', 'определённый', 'платёжный', 'документ', 'общий', 'баланс', 'счёт'], ['видеть', 'мучение', 'делопроизводитель', 'вынудить', 'угода', 'система', 'редактировать', 'пересчитать', 'вручную', 'сумма', 'соответствующий', 'документ', 'вводить', 'дополнительный', 'фиктивный', 'документ'], ['простить', 'читатель', 'случиться', 'отступление', 'тема', 'статья', 'формальный', 'модель', 'классификация', 'требование'], ['прорваться', 'наболеть', 'наработка', 'родственный', 'другому', 'направление', 'гарантированно', 'завалить', 'проект', 'конструктивный', 'название', 'риска', 'ошибка', 'руководство', 'проект', 'избежать'], ['стать', 'название', 'следующий', 'статья', 'привести', 'язвительный', 'пример', 'послужить', 'подтверждение', 'видимый', 'сухость', 'формальность', 'предлагать', 'диаграмма', 'крыться', 'болезненный', 'вопрос', 'сплошь', 'возникать', 'реальный', 'живой', 'проект'], ['обсуждение', 'наболеть', 'вопрос', 'нужный', 'хороший', 'визуализация'], ['вернуться', 'диаграмма', 'выделить', 'область', 'зададимся', 'вопрос', 'область', 'поддерживать', 'требование', 'вид'], ['рис'], ['9'], ['интересный', 'вопрос', 'смысл', 'два', 'различный', 'подобласть', 'область'], ['суть', 'отличаться', 'требование', 'a', 'c'], [], ['перовой', 'вопрос', 'диаграмма', 'привести', 'рисунок', 'являться', 'проявление', 'глубокий', 'подход', 'давать', 'интересный', 'результат', 'обсуждение', 'следовать', 'вынести', 'предел', 'ознакомительный', 'статья'], ['ограничимся', 'упрощённый', 'вариант', 'рис', '7', 'пойти'], ['иметь', 'два', 'зеркальный', 'расположение', 'диаграмма', 'проявление', 'процесс', 'разработка', 'область', 'область', 'контекст', 'реализация', 'область', 'поддерживать', 'требование', 'необходимый', 'полноценный', 'реализация', 'разработчик', 'задокументированной', 'часть', 'проект', 'область', 'контекст', 'использование', 'зеркальный', 'предыдущий', 'включать', 'требование', 'остаться', 'предел', 'документ', 'обязательный', 'полноценный', 'работа', 'заказчик'], ['настать', 'время', 'показать', 'семантика', 'второй', 'измерение'], ['говорить', 'ответить', 'поставить', 'вопрос', 'отличаться', 'левый', 'подобласть', 'симметричной', 'правый'], ['полноценный', 'работа', 'заказчик', 'соответствие', 'требование', 'e', 'необходимый', 'реализация', 'поддерживать', 'требование', 'd', 'f', 'рис'], ['9', 'отличаться', 'общий', 'зеркальный', 'требование', 'a', 'c'], ['внимательный', 'читатель', 'заметить', 'два', 'стрелочка', 'верхний', 'нижний', 'часть', 'рисунок', 'подпись', 'иметь', 'простой', 'смысл', 'левый', 'рисунок', 'расположена', 'точка', 'обозначать', 'требование', 'требование', 'опираться', 'широко', 'известный', 'общепринятый', 'метод', 'решение', 'стандартный', 'распространенное', 'оборудование', 'соответствующий', 'программный', 'обеспечение', 'т.д.'], ['правый', 'особенность', 'метод', 'решение', 'ноу', 'хау', 'патент', 'специальный', 'оборудование', 'и\\\\или', 'специальный'], ['случайно', 'стрелочка', 'указывать', 'стремление', 'использовать', 'стандартный', 'метод', 'расположена', 'верхний', 'часть', 'соответствовать', 'стремление', 'разработчик'], ['зачастую', 'звучать', 'размашистый', 'предложение', 'стиль', 'решение', 'задача', 'серьёзный', 'представительный', 'организация', 'заказчик', 'необходимый', 'субд', 'дешёвый', 'oracle', '9', 'crm', 'система', 'сибел', 'системз', 'решение', 'задача', 'коммуникация', 'приобретение', 'спутник', 'антеннами', 'обойтись'], ['ответ', 'предложение', 'сторона', 'заказчик', 'активно', 'выдвигаться', 'возражение', 'мощь', 'читать', 'больший', 'расход', 'абсолютно', 'ни', 'достаточно', 'существовать', 'база', 'сотрудник', 'заказчик', 'успешно', 'справляться', 'задача', 'калькулятор', 'бумага', 'существовать', 'задача', 'реально', 'нуждаться', 'автоматизация'], ['являться', 'особенность', 'деятельность', 'заказчик', 'решение', 'дать', 'заказчик', 'конкурентный', 'преимущество', 'т.д.'], ['изюминка', 'оказываться', 'комплекс', 'уникальность', 'задача', 'метод', 'решение', 'бессмысленность', 'автоматизация', 'остального', 'автоматизация'], ['случай', 'место', 'оказываться', 'следующий', 'пример', 'область', 'делопроизводство'], ['существовать', 'обязательный', 'требование', 'e', 'система', 'автоматически', 'реагировать', 'состояние', 'счёт', 'клиент', 'конфигурация', 'платёжный', 'документ'], ['существовать', 'случай', 'необходимый', 'перерасчёт', 'сумма', 'платёжный', 'документ', 'реализация', 'требование', 'e', 'нуждаться', 'удовлетворение', 'требование', 'd', 'f.', 'пример', 'требование', 'f', 'наличие', 'удобный', 'логичный', 'механизм', 'перерасчёт'], ['требование', 'd', 'ужесточение', 'стандартизация', 'требование', 'платёжный', 'документ', 'исключать', 'возникновение', 'запутанный', 'ситуация'], ['зеркальный', 'требование', 'a', 'b', 'c', 'привести', 'пример'], ['b', 'набор', 'отчёт', 'генерировать', 'бд'], ['особенность', 'реализоваться', 'вид', 'единственный', 'сложный', 'sql', 'запрос'], ['необходимый', 'хранить', 'процедура'], ['реализация', 'требование', 'реализовать', 'требование', 'a', 'использовать', 'т', 'sql', 'соответствующий', 'механизм', 'ms', 'sql', 'server', 'стандартный', 'решение', 'головной', 'боль', 'разработчик', 'требование', 'использовать', 'odbc', 'интерфейс', 'файл', 'ms', 'access', 'настаивать', 'заказчик'], ['разработчик', 'прийтись', 'засучить', 'рукав', 'разрабатывать', 'собственный', 'эмулятор', 'хранить', 'процедура'], ['уникальность', 'специфичность', 'разработка'], ['ознакомительный', 'статья', 'закончить'], ['заинтересованный', 'читатель', 'состояние', 'самостоятельно', 'развивать', 'предложить', 'подход', 'порадовать']]"
        ],
        [
         "33",
         "Условия целостности БД.doc",
         "2.1.1.3.1. Ограничительные условия, поддерживающие целостность базы данных\rКак следует из определения ссылочной целостности при наличии в ссылочных полях двух таблиц различного представления данных происходит нарушение ссылочной целостности, такое нарушение делает информацию в базе данных недостоверной. Чтобы предотвратить потерю ссылочной целостности, используется механизм каскадных изменений (который чаще врего реализуется специальными объектами СУБД - триггерами). Данный механизм состоит в следующей последовательсности действий: \rпри изменении поля связи в записи родительской таблицы следует синхронно изменить значения полей связи в соответствующих записях дочерней таблицы; \rпри удалении записи в родительской таблицы следует удалить соответствующие записи и в доцерней таблице. \r\r2.1.1.3.2 Поцесс нормализации\rНормализация - процесс приведения реляционных таблиц к стандартному виду. В базе данных могут присутствовать такие проблемы как: \rИзбыточность данных.Повторение данных в базе данных. \rАномалия обновления. Противоречивость данных, вызванная их избыточностью и частичным обновлением. \rАномалия удаления. Непреднамеренная потеря данных, вызванная удалением других данных. \rАномалия ввода. Невозможность ввести данные в таблицу, вызванная отсутствием других данных. \rДля решения этих проблем применяют разбиение таблиц - разделение таблицы на несколько таблиц. Для того чтобы это сделать пользуются нормальными формами или правилами структурирования таблиц. \r\rПервая нормальная форма \rРеляционная таблица находится в первой нормальной форме (1НФ), если значения в таблице являются атомарными для каждого атрибута таблицы, т.е. такими значениями, которые не являются множеством значений или повторяющейся группой. В определении Кодда реляционной модели уже заложено, что реляционные таблицы находились в 1НФ, \r\rВторая нормальная форма. \rРеляционная таблица находится во второй нормальной форме (2НФ), если никакие неключевые атрибуты не являются функционально зависимыми лишь от части ключа. Таким образом, 2НФ может оказаться нарушена только в том случае, когда ключ составной. \rФункциональная зависимость.Значение атрибута в кортеже однозначно определяет значение другого атрибута в кортеже. \rБолее формально можно определить функциональную зависимость следующим образом: если А и В - атрибуты в таблице В, то запись ФЗ (функциональную зависимость): А - \" В обозначает, что если два кортежа в таблице В имеют одно и то же значение атрибута А, то они имеют одно и то же значение атрибута В. Это определение такжеприменимо,если А и В - множества столбцов, а не просто отдельные столбцы. \rАтрибут в левой части ФЗ называется детерминантом, так как его значение определяет значение атрибута в правой части. Ключ таблицы является детерминантом, так как его значение однозначно определяет значение каждого атрибута таблицы. \rПроцесс разбиения на две 2НФ-таблицы состоит из следующих шагов: \rСоздается новая таблица, атрибутами которой будут атрибуты исходной таблицы, входящие в противоречащую правилу ФЗ. Детерминант ФЗ становится ключом новой таблицы. \rАтрибут, стоящий в правой части ФЗ, исключается из исходной таблицы. \rЕсли более одной ФЗ нарушают 2НФ, то шаги 1 и 2 повторяются для каждой такой ФЗ. \rЕсли один и тот же детерминант входит в несколько ФЗ, то все функционально зависящие от него атрибуты помещаются в качестве неключевых атрибутов в таблицу, ключом которой будет детерминант. \r\rТретья нормальная форма \rРеляционная таблица имеет третью нормальную форму (ЗНФ), если для любой ФЗ: Х - У Х является ключом. Заметим, что любая таблица, удовлетворяющая ЗНФ, также удовлетворяет и 2НФ. Однако обратное неверно. \rКритерийнормальной формы Бойса-Кодда (НФБК) утверждает, что таблица удовлетворяет ЗНФ, если в ней нет транзитивных зависимостей. Транзитивная зависимость возникает, если неключевой атрибут функционально зависит от одного или более неключевых атрибутов. То есть этот критерий учитывает следующие два случая: \rНеключевой атрибут зависит от ключевого атрибута, входящего в составной ключ (критерий нарушения 2НФ). \rКлючевой атрибут, входящий в составной ключ, зависит от неключевого атрибута. \rТаким образом, если таблица удовлетворяет НФБК, то она также удовлетворяет ЗНФ в смысле транзитивных зависимостей и 2НФ. \r\rЧетвертая нормальная форма \rТаблица имеет четвертую нормальную форму (4НФ), если она имеет ЗНФ и не содержит многозначных зависимостей. Поскольку проблема многозначных зависимостей возникает в связи с многозначными атрибутами, то мы можем решить проблему, поместив каждый многозначный атрибут в свою собственную таблицу вместе с ключом, от которого атрибут зависит. \r\rПятая нормальная форма. \rПятая нормальная форма (5НФ) была предложена для того, чтобы исключить аномалии, связанные с особым типом ограничительных условий, называемых совместными зависимостями. Эти зависимости имеют в основном теоретический интерес и сомнительную практическую ценность. Следовательно, пятая нормальная форма в действительности не имеет практического применения. \r\rНормальная форма область/ключ. \rТаблица имеет нормальную форму область/ключ (НФОК), если любое ограничительное условие в таблице является следствием определений областей и ключей. Однако не был дан общий метод приведения таблицы к НФОК. \rВ качестве примера, рассмотрим структуру реляционной базы данных, описывающей \"отношения\" пациентов и докторов в произвольной клинике (область приложения примера выбрана из-за того, что в сертификационных тестах Oracle аналогичные примеры встречаются очень часто). Пусть существует некая клиника, основные характеристики которой описываются в таблице CLINICS, в данной клинике работают доктора, основные характеристики которых описывает таблица DOCTORS. Данные пациентов клиники хранятся в таблице PATIENTS. Взаимосвязи между таблицами представлены на рис.10. (Для упрощения предполагается, что у доктора может быть несколько пациентов, которые не являются пациентами других докторов, для реализации реальной картины, когда один пациент может относиться к нескольким разным докторам, между таблицами DOCTORS и PATIENTS необходимо включить дополнительную связывающую таблицу). \r№\r\u0007Наименование столбца\r\u0007Описание\r\u0007\r\u0007Таблица CLINICS\r\u0007\r\u00071\r\u0007CS_NNN\r\u0007Индекс\r\u0007\r\u00072\r\u0007CS_REG_NUMBER\r\u0007Регистрационный номер\r\u0007\r\u00073\r\u0007CS_CITY_NNN\r\u0007Ссылка на справочник городов и регионов\r\u0007\r\u00074\r\u0007CS_NAME\r\u0007Наименование клиники\r\u0007\r\u00075\r\u0007CS_ADDRESS\r\u0007Адрес клиники\r\u0007\r\u00076\r\u0007CS_PHONE_NUMBER\r\u0007Номер телефона\r\u0007\r\u00077\r\u0007CS_TYPE\r\u0007Профиль клиники\r\u0007\r\u0007Таблица DOCTORS\r\u0007\r\u00071\r\u0007DC_NNN\r\u0007Индекс\r\u0007\r\u00072\r\u0007DC_NAME\r\u0007Ф.И.О. доктора\r\u0007\r\u00073\r\u0007DC_CS_NNN\r\u0007Ссылка на таблицу CLINICS\r\u0007\r\u00074\r\u0007DC_DIPLOM_NUMBER\r\u0007Номер диплома\r\u0007\r\u00075\r\u0007DC_SPECIALTY_NNN\r\u0007Ссылка на справочник специальностей\r\u0007\r\u00076\r\u0007DC_SHTAT_NNN\r\u0007Ссылка на штатное расписание\r\u0007\r\u00077\r\u0007DC_CALENDAR_NNN\r\u0007Ссылка на расписание приема\r\u0007\r\u0007Таблица PATIENTS\r\u0007\r\u00071\r\u0007PT_NNN\r\u0007Индекс\r\u0007\r\u00072\r\u0007PT_REG_NUMBER\r\u0007Регистрационный номер\r\u0007\r\u00073\r\u0007PT_NAME\r\u0007Ф.И.О. пациента\r\u0007\r\u00074\r\u0007PT_ADDRESS\r\u0007Адрес пациента\r\u0007\r\u00075\r\u0007PT_POLIS_NUMBER\r\u0007Номер полиса\r\u0007\r\u00076\r\u0007PT_PHONE_NUMBER\r\u0007Номер телефона\r\u0007\r\u00077\r\u0007PT_BIRTHDATE\r\u0007Дата рождения\r\u0007\r\u00078\r\u0007PT_FIRST_VISIT\r\u0007Дата первого визита\r\u0007\r\u00079\r\u0007PT_LAST_VISIT\r\u0007Дата последнего визита\r\u0007\r\u000710\r\u0007PL_PT_NNN\r\u0007Ссылка на таблицу платежей\r\u0007\r\u0007Таблица PAYMENTS\r\u0007\r\u0007 \r\u0007PL_NNN\r\u0007Индекс\r\u0007\r\u0007 \r\u0007PL_ACCOUNT_NUMBER\r\u0007Номер расчетного счета\r\u0007\r\u0007 \r\u0007PL_PAY_NNN\r\u0007Ссылка на таблицу расчетов\r\u0007\r\u0007Представленная структура, конечно, не обладает функциональной полнотой с точки зрения проектирования АИС клиники, с ее помощью мы лишь рассмотрим различные типы отношений в реляционных СУБД. \rПеред тем, как перейти к рассмотрению вопросов стандартизации и целостности данных в РСУБД несколько рекомендаций по выбору наименований таблиц и полей. Внимательно взглянув на описание таблиц можно заметить, что генерация наименований таблиц и столбцов подчиняется некоторой синтаксической конструкции, которая в общем виде может быть представлена следующим образом: \rДля таблиц: \r<Псевдоним АИС>_<Псевдоним модуля АИС>_:_<Псевдоним подмодуля>_<Имя таблицы>\rНапример, если бы мы разрабатывали АИС клиники c сокращенным названием CSL, то все таблицы входящие в данную систему было бы целесообразно называть \rCSL_<имя модуля>_<имя таблицы>.\rДля столбцов: \r<Псевдоним таблицы>_<имя столбца>.\rНапример, как показано на рис.10. Регистрационный номер пациента храниться в поле PT_REG_NUMBER, таблицы PATIENTS, имеющий псевдоним PT. \rКонечно, использование этих не хитрых правил не является обязательным, но позволяет значительно облегчить читаемость разработанной информационной структуру. Предположите, как было бы все, если бы поля таблиц назывались P111, P112 и т.п., а ведь такие вещи встречаются практически очень часто, например в FoxPro 2.6. \rПерейдем к рассмотрению вопросов стандартизации и обеспечения ссылочной целостности реляционных таблиц. \r\rПреобразование отношений \rПоля таблиц могут находиться между собой в одном из следующих отношений: \rодин-к-одному, один-ко-многим, многие-ко-многим и рекурсивных, определения которых приведены в табл.1. Рассмотрим преобразование отношений на примере АИС \"ДОКТОР-ПАЦИЕНТ\" (рис.10). \rОтношение один-к-одному представляет собой такое отношение, при котором каждой записи в таблице А соответствует единственная запись в таблице В (рис.11). Применение такого типа отношений встречается крайне редко и предназначено в основном для функционального разделения информации на несколько таблиц, т.е. когда не хотят, чтобы таблица БД \"распухала\" от второстепенной информации. На рис.10 представлено, как используя отношение один-к-одному таблица PATIENTS преобразована в две таблицы: PATIENTS_REG и PATIENTS_KART (на рисунке показаны только основные атрибуты таблиц). Также необходимо принимать во внимание, что БД использующие такие отношения не могут быть полностью нормализованы. \rОтношение один-ко-многим можно без преувеличения назвать основным типом отношений использующемся при проектировании современных БД, так как позволяет представлять иерархические структуры данных. Под данным отношение понимается такое отношение, когда одной записи в родительской таблице соответствуют записи в дочерней таблице (причем число соответствующих записей выражается рядом натуральных чисел 0,1,2,:N и т.п.) (рис.12). Отношения один-ко-многим могут быть жесткими и нежесткими. Для жестких отношений должно выполнять требование, что каждой записи в родительской таблице должна соответствовать хотя бы одна запись в дочерней таблице. \rОтношение многие-ко-многим представляет собой отношение при котором записям родительской таблицы соответствуют записи дочерней таблицы, а ряду записей дочерней таблицы соответствуют записи в родительской таблицы (рис.13). Использование такого типа отношений крайне ограничено, не только из-за того, что некоторые БД его вообще не поддерживают на уровне индексов и ссылочной целостности, но и потому, что практически любое отношение многие-ко-многим может быть заменено одним или более отношением один-ко-многим (посмотрите на пример на рис.13. и так не когда не делайте). \rДругим важным типом отношений - является рекурсивное отношение, т.е. такое отношение которое описывает связи между записями внутри одной таблицы БД, т.е. оно связывает объектное множество с ним самим. Пример рекурсивных отношений показан на рис.14., который иллюстрирует, что доктора Петров А.А. и Васин Н.Н. находятся в зависимости от доктора Сидорова В.Н.. В зависимости от функционального назначения этого отношения оно может иллюстрировать, например, что они являются пациентами доктора Сидорова В.Н., или Сидорова В.Н. является по отношению к ним начальником и т.п. Данный тип отношений позволят реализовать древовидную структуру функциональных отношений, например, структуру организации. \rУчитывая требования ссылочной целостности и нормализации на основе применения рассмотренных выше типов отношений осуществляется преобразование функциональной модели бизнес - процессов и реаляционную модель. Итогом этапа является диаграмма \"Сущность-связь\" (часто называемая CASE диаграмма, ER-диаграама, рис.10). \r\rЗамечания \rНапример: \r1)Что такое традиционная база данных ?\u000bБывают сетевые, иерархические и реляционные БД. Последние, в свою очередь делятся на СУБД для решения задач оперативного управления транзакциями (OLTP) и системы принятия решений (DSS).\u000bПочему \"традиционная база данных\"- это база в разделямых файлах? 2) \"Ведь в реляционной безе данных проблемы синхронизации данных не возникает вовсе\" - очень опасно так говорить. Если USER читает не с начала,- то он может спутать это с синхронизацией транзакций,- а это проблема ключевая в рел-ых СУБД.\u000b3)Подсистемы RDBMS очень схожи с соответствующими подсистемами ОС и сильно\u000bинтегрированы с предоставляемыми базовой ОС сервисными функциями - я бы так\u000bне говорил.\u000b4) , и администратор базы данных должен будет восстанавливать часть или всю\u000bБД, используя файлы резервных копий (если их сделали!) - кого-копии или\u000bадминистраторов, когда они не делают копии?\u000b5)SYS или SYSTEM, с парролем: master или manager - а также Amum13:). (на\u000bсамом деле - CHANGE_ON_INSTALL и MANAGER)\u000bЧто касаемо, сосбтвенно, описания конкретно Oracle, - то вроде ничего\u000bстранного я там не видел.\r\r2.1.1.3.3 Преобразование функциональной модели в реляционную.\rВ разделе 1.3. нами были рассмотрены основные этапы разработки автоматизированной информационной системы, в разделе 1.3.1 мы разработали функциональную модель АИС, теперь, после того как мы рассмотрели основные оложения терии баз данных, пришло время заняться непосредственно формализацией выделенных бизнес-процессов, операций и т.п. Результатом первого этапа проектирования АИС является функциональная модель системы содержащая множество объектов (процессов, операций), их атрибутов. \rОбъектное множество с атрибутами может быть преобразовано в реляционную таблицу с именем объектного множества в качестве имени таблицы и атрибутами объектного множества в качестве атрибутов таблицы. Если некоторый набор этих атрибутов может быть использован в качестве ключа таблицы, то он выбирается ключом таблицы. В противном случае мы добавляем к таблице атрибут, значения которого будут однозначно определять объекты-элементы исходного объектного множества, и который, таким образом, может служить ключом таблицы. \r\rПреобразование отношений \rПоля таблиц могут находиться между собой в обном из следующих отношений: один-к-одному, один-ко-многим, многие-ко-многим и рекурсивных, определения которых представлены в табл.1. Прежде чем рассмотреть реализацию и преобразование отношений более подробно, обсудим реторический вопрос о правилах именования таблиц и столбцов. Как мы уже ранее отмечали, что практически любая АИС имеет модульную структуру и соответствено, в каждый модель входит определенное число таблиц. Пусть имеется модуль \"Операционный День\", условно назовем его OPDAY, тогда удобно, что все таблицы данного модуля наименовались следующим образовам OPDAY_CUSTOMERS (ТАБЛИЦА КЛИЕНТОВ), OPDAY_ACCOUNT (таблица счетов) и т.п. При наменовании столбцов таблицы желательно придерживаться следующего подхода: <краткое наименование таблицы>_<наименование столбца>. Например, для таблицы OPDAY_CUSTOMERS наименование столбцов удобно реализовать следующим образом CUST_NNN (порядковый номер записи), CUST_FIO (фио клиента), CUST_ACCOUNT_NNN (ссылка на таблицу счетов) и т.п. Практически в каждой организации, занимающейся разработкой АИС существуют свои нормы к наименованию модулей, таблиц, столбцов и объектов базы данных, однако общие принципы во многом схожи с приведенным в данных примерах. Теперь рассмотрим основные принципы преобразования отношений: \r\rОтношение один-к-одному. \rРассмотрим пример установки отношений клиентов и счетов в АБС (см. рис.6). \rОтношение ИМЕЕТ ТЕКУЩИЙ СЧЕТ представляет собой связь один-к-одному. Это означает, что клиент имеет не более одного текущего счета и каждым текущим счетом пользуется только один клиент. Если мы решим, что ключами являются №-КЛИЕНТА для CUSTOMER (КЛИЕНТ) и №-ТЕКУЩЕГО-СЧЕТА для ACCOUNT_NUMBER (ТЕКУЩИЙ СЧЕТ), то мы получим две реляционные таблицы, каждая из которых состоит из одного столбца. \rCUSTOMER (CUST_NNN) \rACCOUNT (ACCOUNT_NUMBER) \rДля того чтобы показать связь между этими двумя таблицами, мы должны включить ссылку на ACCOUNT_NUMBER в таблицу CUSTOMER и и ссылку на СUST_NNN в таблицу ACCOUNT. Каждый из этих столбцов будет внешним ключом, указывающим на другую таблицу. \rCUSTOMER (CUST_NNN, CUST_ACCOUNT_NUMBER ) \rВнешний ключ: CUST_ACCOUNT_NUMBER ссылается на ACCOUNT_NUMBER. \rACCOUNT (ACCOUNT_NUMBER, ACCOUNT_CUST_NNN) \rВнешний ключ: ACCOUNT_CUST_NNN ссылается на CUST_NNN. \rРезюме: отношение один-к-одному преобразуется путем помещения одного из объектных множеств в качестве атрибута в таблицу второго объектного множества. Его выбор определяется потребностями конкретного приложения. Во многих случаях оба варианта приемлемы. \r\rОтношение один-ко-многим. \rПредположим, что отношение ИМЕЕТ-ТЕКУЩИЙ-СЧЕТ имеет мощность \"много\" со стороны ACCOUNT. \rЭто означает, что у клиента может быть несколько текущих счетов, но каждым текущим счетом по-прежнему пользуется только один клиент. Таким образом, в любом отношении один-ко-многим в. таблицу, описывающую объект, мощность со стороны которого равна \"многим\", включается столбец, являющийся внешним ключом, указывающим на другой объект. \r\rОтношение многие-ко-многим. \rОтношение ИМЕЕТ-ТЕКУЩИЙ-СЧЕТ имеет мощность многие-ко-многим. \rТаким образом, мы предполагаем, что у клиента может быть несколько текущих счетов, и что каждым текущим счетом могут пользоваться несколько клиентов. Для того чтобы преобразовать отношение многие-ко-многим целесообразно создать таблицу пересечения, представляющую элементы двух других таблиц, находящихся в отношении многие-ко-многим. \r\rРекурсивные отношения \r Объектное множество WORKER(РАБОЧИЙ), дважды встречающееся на диаграмме, и это одно и то же объектное множество в обоих случаях. Обе копии объектного множества WORKER(РАБОЧИЙ) имеют одни и те же атрибуты. В этой модели два экземпляра объектного множества WORKER(РАБОЧИЙ) использованы для удобства, чтобы показать отношение SUPERVISES(КОНТРОЛИРУЕТ), существующее между объектами WORKER(РАБОЧИЙ) и WORKER(РАБОЧИЙ). Это отношение называется рекурсивным, поскольку оно связывает объектное множество с ним самим. В данном случае отношение мощности один-ко-многим означает, что одному работнику подчиняются несколько других работников. \rWORKER (WORKER-ID, NAME, HOURLY-RATE, WORKER-ID) \rЧтобы преобразовать объектное множество WORKER вместе с его атрибутами и отношением SUPERVISES в реляционную таблицу нужно изменить имя второго атрибута WORKER-ID на имя, соответствующее отношению SUPERVISES, которое оно представляет. SUPV-ID. \rWORKER (WORKER-ID, NAME, HOURLY-RАТЕ, SUPV-ID) \rВнешний ключ: SUPV-ID ссылается на WORKER \rSUPV-ID - это рекурсивный внешний ключ, поскольку он ссылается на WORKER-ID, то есть ключ своей собственной таблицы. Таким образом, в результате преобразования рекурсивных отношений появляются рекурсивные внешние ключи. \rФункциональные зависимости, определенные для реляционной модели, являются атрибутами отношения один-к-одному или один-ко-многим. \rОписанный процесс преобразования каждой из этих конструкций в атрибуты реляционных таблиц гарантирует, что они будут зависеть только от ключевых атрибутов. Таким образом, каждая полученная реляционная таблица будет иметь ЗНФ. Многозначные атрибуты реляционной модели встречаются только в отношениях многие-ко-многим. Поскольку они преобразуются в реляционные таблицы, обладающие составными ключами из ключевых атрибутов отдельных объектных множеств, то они гарантированно имеют 4НФ. \r\r2.1.2. Понятие языка определения данных (ЯОД - DBTG)\rЯзык - средство, при помощи которого определяется структура данных или схема, а также происходит запоминание данных и манипуляция ими. Язык, которым определяется схема, называется языком определения данных (ЯОД),а язык, используемый для запоминания данных и манипуляции ими, называется языком манипуляции данными (ЯМД). \rПроцедура применения ЯОД и определения схемы такова: \rСоздается концептуальная модель данных. \rКонцептуальная модель данных преобразуется в диаграмму сетевой структуры данных. \rПроверяется, существуют ли между типами записей отношения один-ко-многим. Они могут быть непосредственно реализованы в виде наборов DBTG. \rЕсли есть отношения мощности многие-ко-многим, то каждое из них преобразуется в два набора путем создания записи связи. \rЕсли есть n-арные отношения, то они преобразуются в бинарные отношения. \rПрименяется ЯОД для реализации схемы.\rСхема состоит из следующих частей: \rРаздел схемы. Раздел схемы DBTG, задающий имя схемы. \rРаздел записей. Раздел схемы DBTG, определяющий каждую запись: ее элементы данных и ее адрес. \rРаздел наборов. Раздел схемы DBTG, определяющий наборы, включая типы записей владельцев и членов.\rПодсхемы - это в основном, подмножества схемы. В подсхеме могут быть сгруппированы элементы данных, которые не были сгруппированы в схеме; записи и наборы могут быть переименованы и порядок описаний может быть изменен. \rПринятого стандарта DBTG для подсхемы не существует; однако, обычно используются следующие отделы: \rОтдел заголовка, позволяющий присвоить имя подсхеме и указать связанную с ней схему. \rОтдел преобразования, в котором при желании производится замена имен из схемы на нужные в подсхеме. \rСтруктурный отдел, в котором задается, какие записи, элементы данных и наборы из схемы должны присутствовать в подсхеме. Этот отдел состоит из разделов записей и наборов. \rРаздел записей подсхемы. Раздел структурного отдела, в котором задаются записи, элементы данных и типы данных подсхемы. \rРаздел наборов подсхемы. Раздел структурного отдела, в котором задаются наборы, которые должны быть включены в подсхему. \rПодсхема позволяет пользователю строить из предопределенной схемы схему, соответствующую нуждам конкретного приложения.",
         "0",
         "[['2.1.1.3.1'], ['ограничительный', 'условие', 'поддерживать', 'целостность', 'база', 'определение', 'ссылочный_целостность', 'наличие', 'ссылочный', 'поле', 'два', 'таблица', 'различный', 'представление', 'происходить', 'нарушение', 'ссылочный_целостность', 'нарушение', 'делать', 'информация', 'база', 'недостоверный'], ['предотвратить', 'потеря', 'ссылочный_целостность', 'использоваться', 'механизм', 'каскадный', 'изменение', 'врего', 'реализоваться', 'специальный', 'объект', 'субд', 'триггер'], ['механизм', 'состоять', 'следующий', 'последовательсности', 'действие', 'изменение', 'поле', 'связь', 'запись_родительский', 'таблица', 'синхронно', 'изменить', 'значение', 'поле', 'связь', 'соответствующий', 'запись', 'дочерний', 'таблица', 'удаление', 'запись_родительский', 'таблицы', 'удалить', 'соответствующий', 'запись', 'доцерней', 'таблица'], ['2.1.1.3.2', 'поцесс', 'нормализация', 'нормализация', 'процесс', 'приведение', 'реляционный', 'таблица', 'стандартный', 'вид'], ['база', 'присутствовать', 'проблема', 'избыточность'], ['повторение', 'база'], ['аномалия', 'обновление'], ['противоречивость', 'вызвать', 'избыточность', 'частичный', 'обновление'], ['аномалия', 'удаление'], ['непреднамеренный', 'потеря', 'вызвать', 'удаление'], ['аномалия', 'ввод'], ['невозможность', 'ввести', 'таблица', 'вызвать', 'отсутствие'], ['решение', 'проблема', 'применять', 'разбиение', 'таблица', 'разделение', 'таблица', 'таблица'], ['сделать', 'пользоваться', 'нормальный_форма', 'правило', 'структурирование', 'таблица'], ['первый', 'нормальный_форма', 'реляционный', 'таблица', 'находиться', 'первый', 'нормальный_форма', '1нф', 'значение', 'таблица', 'являться', 'атомарный', 'каждый', 'атрибут', 'таблица', 'т.е.', 'значение', 'являться', 'множество', 'значение', 'повторяться', 'группа'], ['определение', 'кодда', 'реляционный', 'модель', 'заложить', 'реляционный', 'таблица', 'находиться', '1нф', 'второй', 'нормальный_форма'], ['реляционный', 'таблица', 'находиться', 'второй', 'нормальный_форма', '2нф', 'никакой', 'неключевой', 'атрибут', 'являться', 'функционально', 'зависимый', 'часть', 'ключ'], ['образ', '2нф', 'оказаться', 'нарушить', 'случай', 'ключ', 'составной'], ['функциональный', 'зависимость'], ['значение', 'атрибут', 'кортеж', 'однозначно', 'определять', 'значение', 'другого', 'атрибут', 'кортеж'], ['формально', 'определить', 'функциональный', 'зависимость', 'следующий', 'образ', 'атрибуты', 'таблица', 'запись', 'фз', 'функциональный', 'зависимость', 'обозначать', 'два', 'кортеж', 'таблица', 'иметь', 'значение', 'атрибут', 'иметь', 'значение', 'атрибут', 'в.', 'определение', 'такжеприменимо', 'множество', 'столбец', 'отдельный', 'столбец'], ['атрибут', 'левый', 'часть', 'фз', 'называться', 'детерминант', 'значение', 'определять', 'значение', 'атрибут', 'правый', 'часть'], ['ключ', 'таблица', 'являться', 'детерминант', 'значение', 'однозначно', 'определять', 'значение', 'каждый', 'атрибут', 'таблица'], ['процесс', 'разбиение', 'два', '2нф', 'таблица', 'состоять', 'следующий', 'шаг', 'создаваться', 'новый', 'таблица', 'атрибут', 'атрибут', 'исходный', 'таблица', 'входить', 'противоречить', 'правило', 'фз'], ['детерминант', 'фз', 'становиться', 'ключ', 'новый', 'таблица'], ['атрибут', 'стоить', 'правый', 'часть', 'фз', 'исключаться', 'исходный', 'таблица'], ['фз', 'нарушать', '2нф', 'шаг', '1', '2', 'повторяться', 'каждый', 'фз'], ['детерминант', 'входить', 'фз', 'функционально', 'зависеть', 'атрибут', 'помещаться', 'качество', 'неключевой', 'атрибут', 'таблица', 'ключ', 'детерминант'], ['третий', 'нормальный_форма', 'реляционный', 'таблица', 'третий', 'нормальный_форма', 'знф', 'фз', 'являться', 'ключ'], ['заметить', 'таблица', 'удовлетворять', 'знф', 'удовлетворять', '2нф'], ['обратный', 'неверный'], ['критерийнормальной', 'форма', 'бойса', 'кодда', 'нфбк', 'утверждать', 'таблица', 'удовлетворять', 'знф', 'транзитивный', 'зависимость'], ['транзитивный', 'зависимость', 'возникать', 'неключевой', 'атрибут', 'функционально', 'зависеть', 'неключевой', 'атрибут'], ['критерий', 'учитывать', 'следующий', 'два', 'случай', 'неключевой', 'атрибут', 'зависеть', 'ключевой', 'атрибут', 'входить', 'составной', 'ключ', 'критерий', 'нарушение', '2нф'], ['ключевой', 'атрибут', 'входить', 'составной', 'ключ', 'зависеть', 'неключевой', 'атрибут'], ['образ', 'таблица', 'удовлетворять', 'нфбк', 'удовлетворять', 'знф', 'смысл', 'транзитивный', 'зависимость', '2нф'], ['четвёртый', 'нормальный_форма', 'таблица', 'четвёртый', 'нормальный_форма', '4нф', 'знф', 'содержать', 'многозначный', 'зависимость'], ['проблема', 'многозначный', 'зависимость', 'возникать', 'связь', 'многозначный', 'атрибут', 'решить', 'проблема', 'поместить', 'многозначный', 'атрибут', 'собственный', 'таблица', 'вместе', 'ключ', 'атрибут', 'зависеть'], ['пятый', 'нормальный_форма'], ['пятый', 'нормальный_форма', '5нф', 'предложить', 'исключить', 'аномалия', 'связать', 'особый', 'тип', 'ограничительный', 'условие', 'называть', 'совместный', 'зависимостями'], ['зависимость', 'иметь', 'основный', 'теоретический', 'интерес', 'сомнительный', 'практический', 'ценность'], ['следовательно', 'пятый', 'нормальный_форма', 'действительность', 'практический', 'применение'], ['нормальный_форма', 'область', 'ключ'], ['таблица', 'нормальный_форма', 'область', 'ключ', 'нфок', 'ограничительное', 'условие', 'таблица', 'являться', 'следствие', 'определение', 'область', 'ключ'], ['дать', 'общий', 'метод', 'приведение', 'таблица', 'нфок'], ['качество', 'пример', 'рассмотреть', 'структура', 'реляционный', 'база', 'описывать', 'отношение', 'пациент', 'доктор', 'произвольный', 'клиника', 'область', 'приложение', 'пример', 'выбрать', 'сертификационный', 'тест', 'oracle', 'аналогичный', 'пример', 'встречаться'], ['существовать', 'некий', 'клиника', 'основной', 'характеристика', 'описываться', 'таблица', 'clinics', 'клиника', 'работать', 'доктор', 'основной', 'характеристика', 'описывать', 'таблица', 'doctors'], ['пациент', 'клиника', 'храниться', 'таблица', 'patients'], ['взаимосвязи', 'таблицами', 'представить', 'рис.10'], ['упрощение', 'предполагаться', 'доктор', 'пациент', 'являться', 'пациент', 'доктор', 'реализация', 'реальный', 'картина', 'пациент', 'относиться', 'несколько', 'разный', 'доктор', 'таблицами', 'doctors', 'patients', 'включить', 'дополнительный', 'связывать', 'таблица'], ['№', '\\x07наименование', 'столбца', '\\x07описание', '\\x07', '\\x07таблица', 'clinics', '\\x07', '\\x071', '\\x07cs_nnn', '\\x07индекс', '\\x07', '\\x072', '\\x07cs_reg_number', '\\x07регистрационный', 'номер', '\\x07', '\\x073', '\\x07cs_city_nnn', '\\x07ссылка', 'справочник', 'город', 'регион', '\\x07', '\\x074', '\\x07cs_name', '\\x07наименование', 'клиника', '\\x07', '\\x075', '\\x07cs_address', '\\x07адрес', 'клиника', '\\x07', '\\x076', '\\x07cs_phone_number', '\\x07номер', 'телефон', '\\x07', '\\x077', '\\x07cs_type', '\\x07профиль', 'клиника', '\\x07', '\\x07таблица', 'doctors', '\\x07', '\\x071', '\\x07dc_nnn', '\\x07индекс', '\\x07', '\\x072', '\\x07dc_name', '\\x07ф.и.о.', 'доктор', '\\x07', '\\x073', '\\x07dc_cs_nnn', '\\x07ссылка', 'таблица', 'clinics', '\\x07', '\\x074', '\\x07dc_diplom_number', '\\x07номер', 'диплом', '\\x07', '\\x075', '\\x07dc_specialty_nnn', '\\x07ссылка', 'справочник', 'специальность', '\\x07', '\\x076', '\\x07dc_shtat_nnn', '\\x07ссылка', 'штатный', 'расписание', '\\x07', '\\x077', '\\x07dc_calendar_nnn', '\\x07ссылка', 'расписание', 'приём', '\\x07', '\\x07таблица', 'patients', '\\x07', '\\x071', '\\x07pt_nnn', '\\x07индекс', '\\x07', '\\x072', '\\x07pt_reg_number', '\\x07регистрационный', 'номер', '\\x07', '\\x073', '\\x07pt_name', '\\x07ф.и.о.', 'пациент', '\\x07', '\\x074', '\\x07pt_address', '\\x07адрес', 'пациент', '\\x07', '\\x075', '\\x07pt_polis_number', '\\x07номер', 'полис', '\\x07', '\\x076', '\\x07pt_phone_number', '\\x07номер', 'телефон', '\\x07', '\\x077', '\\x07pt_birthdate', '\\x07дата', 'рождение', '\\x07', '\\x078', '\\x07pt_first_visit', '\\x07дата', 'первый', 'визит', '\\x07', '\\x079', '\\x07pt_last_visit', '\\x07дата', 'последний', 'визит', '\\x07', '\\x0710', '\\x07pl_pt_nnn', '\\x07ссылка', 'таблица', 'платёж', '\\x07', '\\x07таблица', 'payments', '\\x07', '\\x07', '\\x07pl_nnn', '\\x07индекс', '\\x07', '\\x07', '\\x07pl_account_number', '\\x07номер', 'расчётный', 'счёт', '\\x07', '\\x07', '\\x07pl_pay_nnn', '\\x07ссылка', 'таблица', 'расчёт', '\\x07', '\\x07представленная', 'структура', 'обладать', 'функциональный', 'полнота', 'точка', 'зрение', 'проектирование', 'аис', 'клиника', 'помощь', 'рассмотреть', 'различный', 'тип', 'отношение', 'реляционный', 'субд'], ['перейти', 'рассмотрение', 'вопрос', 'стандартизация', 'целостность', 'рсубд', 'рекомендация', 'выбор', 'наименование', 'таблица', 'поле'], ['внимательно', 'взглянуть', 'описание', 'таблица', 'заметить', 'генерация', 'наименование', 'таблица', 'столбец', 'подчиняться', 'некоторый', 'синтаксический', 'конструкция', 'общий', 'вид', 'представить', 'следующий', 'образ', 'таблица', '<', 'псевдоним', 'аис>_<псевдоним', 'модуль', 'аис>_:_<псевдоним', 'подмодуля>_<имя', 'таблица', '>', 'разрабатывать', 'аис', 'клиника', 'c', 'сокращенным', 'название', 'csl', 'таблица', 'входить', 'данную', 'система', 'целесообразный', 'называть', 'csl_<имя', 'модуля>_<имя', 'таблица', '>'], ['столбец', '<', 'псевдоним', 'таблицы>_<имя', 'столбца', '>'], ['показать', 'рис.10'], ['регистрационный', 'номер', 'пациент', 'храниться', 'поле', 'pt_reg_number', 'таблица', 'patients', 'иметь', 'псевдоним', 'pt'], ['использование', 'хитрый', 'правило', 'являться', 'обязательный', 'позволять', 'значительно', 'облегчить', 'читаемость', 'разработать', 'информационный', 'структура'], ['предположить', 'поле', 'таблица', 'называться', 'p111', 'p112', 'т.п.', 'вещь', 'встречаться', 'практически', 'foxpro', '2.6'], ['перейти', 'рассмотрение', 'вопрос', 'стандартизация', 'обеспечение', 'ссылочный_целостность', 'реляционный', 'таблица'], ['преобразование', 'отношение', 'поль', 'таблица', 'следующий', 'отношение_многим', 'многим', 'рекурсивный', 'определение', 'привести', 'табл.1'], ['рассмотрим', 'преобразование', 'отношение', 'пример', 'аис', 'доктор', 'пациент', 'рис.10'], ['отношение', 'представлять', 'отношение', 'каждый', 'запись', 'таблица', 'соответствовать', 'единственный', 'запись', 'таблица', 'рис.11'], ['применение', 'тип', 'отношение', 'встречаться', 'крайне', 'редко', 'предназначить', 'основный', 'функциональный', 'разделение', 'информация', 'таблица', 'т.е.', 'хотеть', 'таблица', 'бд', 'распухать', 'второстепенный', 'информация'], ['рис.10', 'представить', 'использовать', 'отношение', 'таблица', 'patients', 'преобразовать', 'два', 'таблица', 'patients_reg', 'patients_kart', 'рисунок', 'показать', 'основной', 'атрибут', 'таблица'], ['принимать', 'внимание', 'бд', 'использовать', 'отношение', 'полностью', 'нормализовать'], ['отношение_многим', 'преувеличение', 'назвать', 'основный', 'тип', 'отношение', 'использующемся', 'проектирование', 'современный', 'бд', 'позволять', 'представлять', 'иерархический', 'структура'], ['данным', 'отношение', 'пониматься', 'отношение', 'запись_родительский', 'таблица', 'соответствовать', 'запись', 'дочерний', 'таблица', 'число', 'соответствующий', 'запись', 'выражаться', 'натуральный', 'число', '0,1,2,:n', 'т.п.', 'рис.12'], ['отношение_многим', 'жёсткий', 'нежесткими'], ['жёсткий', 'отношение', 'выполнять', 'требование', 'каждый', 'запись_родительский', 'таблица', 'соответствовать', 'запись', 'дочерний', 'таблица'], ['отношение_многим', 'представлять', 'отношение', 'запись_родительский', 'таблица', 'соответствовать', 'запись', 'дочерний', 'таблица', 'ряд', 'запись', 'дочерний', 'таблица', 'соответствовать', 'запись_родительский', 'таблицы', 'рис.13'], ['использование', 'тип', 'отношение', 'крайне', 'ограничить', 'бд', 'поддерживать', 'уровень', 'индекс', 'ссылочный_целостность', 'практически', 'отношение_многим', 'заменить', 'отношение_многим', 'посмотреть', 'пример', 'рис.13'], ['делать'], ['важный', 'тип', 'отношение', 'являться', 'рекурсивный', 'отношение', 'т.е.', 'отношение', 'описывать', 'связь', 'запись', 'внутри', 'таблица', 'бд', 'т.е.', 'связывать', 'объектный_множество'], ['пример', 'рекурсивный', 'отношение', 'показать', 'рис.14', 'иллюстрировать', 'доктор', 'петров', 'а.а.', 'васин', 'н.н.', 'находиться', 'зависимость', 'доктор', 'сидоров', 'в.н'], ['зависимость', 'функциональный', 'назначение', 'отношение', 'иллюстрировать', 'являться', 'пациент', 'доктор', 'сидоров', 'в.н.', 'сидоров', 'в.н.', 'являться', 'отношение', 'начальник', 'т.п.', 'тип', 'отношение', 'позволить', 'реализовать', 'древовидный', 'структура', 'функциональный', 'отношение', 'структура', 'организация'], ['учитывать', 'требование', 'ссылочный_целостность', 'нормализация', 'основа', 'применение', 'рассмотреть', 'высоко', 'тип', 'отношение', 'осуществляться', 'преобразование', 'функциональный', 'модель', 'бизнес', 'процессов', 'реаляционную', 'модель'], ['итог', 'этап', 'являться', 'диаграмма', 'сущность', 'связь', 'называть', 'case', 'диаграмма', 'er', 'диаграама', 'рис.10'], ['замечание', '1)что', 'традиционный', 'база', 'сетевой', 'иерархический', 'реляционный', 'бд'], ['последний', 'очередь', 'делиться', 'субд', 'решение', 'задача', 'оперативный', 'управление', 'транзакция', 'oltp', 'система', 'принятие', 'решение', 'dss'], ['традиционный', 'база', 'данных\"-', 'база', 'разделямых', 'файл'], ['2', 'реляционной', 'безе', 'проблема', 'синхронизация', 'возникать', 'опасный', 'говорить'], ['user', 'читать', 'начала,-', 'спутать', 'синхронизация', 'транзакций,-', 'проблема', 'ключевой', 'рел', 'субд'], ['3)подсистемы', 'rdbms', 'схожий', 'соответствующий', 'подсистемами', 'ос', 'сильно', 'интегрировать', 'предоставлять', 'базовый', 'ос', 'сервисный', 'функция', 'говорить', '4', 'администратор', 'база', 'восстанавливать', 'часть', 'бд', 'использовать', 'файл', 'резервный', 'копия', 'сделать', 'копия', 'администратор', 'делать', 'копия', '5)sys', 'system', 'парролем', 'master', 'manager', 'amum13'], ['дело', 'change_on_install', 'manager', 'касаемо', 'сосбтвенно', 'описание', 'конкретно', 'oracle', 'странный', 'видеть'], ['2.1.1.3.3'], ['преобразование', 'функциональный', 'модель', 'реляционный', 'раздел', '1.3'], ['рассмотреть', 'основной', 'этап', 'разработка', 'автоматизированный', 'информационный', 'система', 'раздел', '1.3.1', 'разработать', 'функциональный', 'модель', 'аис', 'рассмотреть', 'основный', 'оложения', 'терии', 'база', 'прийти', 'время', 'заняться', 'непосредственно', 'формализация', 'выделить', 'бизнес', 'процессов', 'операция', 'т.п.', 'результат', 'первый', 'этап', 'проектирование', 'аис', 'являться', 'функциональный', 'модель', 'система', 'содержать', 'множество', 'объект', 'процесс', 'операция', 'атрибут'], ['объектный_множество', 'атрибут', 'преобразовать', 'реляционный', 'таблица', 'имя', 'объектный_множество', 'качество', 'имя', 'таблица', 'атрибут', 'объектный_множество', 'качество', 'атрибут', 'таблица'], ['набор', 'атрибут', 'использовать', 'качество', 'ключ', 'таблица', 'выбираться', 'ключ', 'таблица'], ['противный', 'случай', 'добавлять', 'таблица', 'атрибут', 'значение', 'однозначно', 'определять', 'объект', 'элемент', 'исходный', 'объектный_множество', 'образ', 'служить', 'ключ', 'таблица'], ['преобразование', 'отношение', 'поль', 'таблица', 'обном', 'следующий', 'отношение_многим', 'многим', 'рекурсивный', 'определение', 'представить', 'табл.1'], ['рассмотреть', 'реализация', 'преобразование', 'отношение', 'подробно', 'обсудить', 'реторический', 'вопрос', 'правило', 'именование', 'таблица', 'столбец'], ['отмечать', 'практически', 'аис', 'модульный', 'структура', 'соответствено', 'модель', 'входить', 'определённый', 'число', 'таблица'], ['иметься', 'модуль', 'операционный', 'день', 'условно', 'назвать', 'opday', 'удобный', 'таблица', 'модуль', 'наименовались', 'следующий', 'образовам', 'opday_customers', 'таблица', 'клиентов', 'opday_account', 'таблица', 'счёт', 'т.п.', 'наменовании', 'столбец', 'таблица', 'желательный', 'придерживаться', 'следующий', 'подход', '<', 'краткий', 'наименование', 'таблицы>_<наименование', 'столбец', '>'], ['таблица', 'opday_customers', 'наименование', 'столбец', 'удобный', 'реализовать', 'следующий', 'образ', 'cust_nnn', 'порядковый', 'номер', 'запись', 'cust_fio', 'фио', 'клиент', 'cust_account_nnn', 'ссылка', 'таблица', 'счёт', 'т.п.', 'практически', 'каждый', 'организация', 'заниматься', 'разработка', 'аис', 'существовать', 'норма', 'наименование', 'модуль', 'таблица', 'столбец', 'объект', 'база', 'общий', 'принцип', 'схожий', 'привести', 'пример'], ['рассмотреть', 'основный', 'принцип', 'преобразование', 'отношение', 'отношение'], ['рассмотреть', 'пример', 'установка', 'отношение', 'клиент', 'счёт', 'абс', 'см.', 'рис.6'], ['отношение', 'текущий_счёт', 'представлять', 'связь'], ['означать', 'клиент', 'текущий_счёт', 'каждый', 'текущий_счёт', 'пользоваться', 'клиент'], ['решить', 'ключ', 'являться', '№', '-клиента', 'customer', 'клиент', '№', '-текущего', 'счета', 'account_number', 'текущий_счёт', 'получить', 'два', 'реляционный', 'таблица', 'состоять', 'столбец'], ['customer', 'cust_nnn', 'account', 'account_number', 'показать', 'связь', 'два', 'таблицами', 'включить', 'ссылка', 'account_number', 'таблица', 'customer', 'ссылка', 'сust_nnn', 'таблица', 'account'], ['столбец', 'внешний_ключ', 'указывать', 'другую', 'таблица'], ['customer', 'cust_nnn', 'cust_account_number', 'внешний_ключ', 'cust_account_number', 'ссылаться', 'account_number'], ['account', 'account_number', 'account_cust_nnn', 'внешний_ключ', 'account_cust_nnn', 'ссылаться', 'cust_nnn'], ['резюме', 'отношение', 'преобразуется', 'путем', 'помещение', 'объектный_множество', 'качество', 'атрибут', 'таблица', 'второй', 'объектный_множество'], ['выбор', 'определяться', 'потребность', 'конкретный', 'приложение'], ['многих', 'случай', 'вариант', 'приемлемый'], ['отношение_многим'], ['предположить', 'отношение', 'текущий_счёт', 'мощность', 'сторона', 'account'], ['означать', 'клиент', 'текущий_счёт', 'каждый', 'текущий_счёт', 'прежний', 'пользоваться', 'клиент'], ['образ', 'отношение_многим'], ['таблица', 'описывать', 'объект', 'мощность', 'сторона', 'равный', 'многим', 'включаться', 'столбец', 'являться', 'внешний_ключ', 'указывать', 'объект'], ['отношение_многим'], ['отношение', 'текущий_счёт', 'мощность', 'многим'], ['образ', 'предполагать', 'клиент', 'текущий_счёт', 'каждый', 'текущий_счёт', 'пользоваться', 'клиент'], ['преобразовать', 'отношение_многим', 'целесообразный', 'создать', 'таблица', 'пересечение', 'представлять', 'элемент', 'два', 'таблица', 'находиться', 'отношение_многим'], ['рекурсивный', 'отношение', 'объектный_множество', 'worker(рабочий', 'дважды', 'встречаться', 'диаграмма', 'объектный_множество', 'оба', 'случай'], ['оба', 'копия', 'объектный_множество', 'worker(рабочий', 'иметь', 'атрибут'], ['модель', 'два', 'экземпляр', 'объектный_множество', 'worker(рабочий', 'использовать', 'удобство', 'показать', 'отношение', 'supervises(контролирует', 'существовать', 'объект', 'worker(рабочий', 'worker(рабочий'], ['отношение', 'называться', 'рекурсивный', 'связывать', 'объектный_множество'], ['случай', 'отношение', 'мощность', 'многим', 'означать', 'работник', 'подчиняться', 'работник'], ['worker', 'worker', 'id', 'name', 'hourly', 'rate', 'worker', 'id', 'преобразовать', 'объектный_множество', 'worker', 'вместе', 'атрибут', 'отношение', 'supervises', 'реляционный', 'таблица', 'изменить', 'имя', 'второй', 'атрибут', 'worker', 'id', 'имя', 'соответствующий', 'отношение', 'supervises', 'представлять'], ['supv'], ['id'], ['worker', 'worker', 'id', 'name', 'hourly', 'rате', 'supv', 'id', 'внешний_ключ', 'supv', 'id', 'ссылаться', 'worker', 'supv', 'id', 'рекурсивный', 'внешний_ключ', 'ссылаться', 'worker', 'id', 'ключ', 'собственный', 'таблица'], ['образ', 'результат', 'преобразование', 'рекурсивный', 'отношение', 'появляться', 'рекурсивный', 'внешний_ключ'], ['функциональный', 'зависимость', 'определённый', 'реляционный', 'модель', 'являться', 'атрибут', 'отношение_многим'], ['описанный', 'процесс', 'преобразование', 'каждый', 'конструкция', 'атрибут', 'реляционный', 'таблица', 'гарантировать', 'зависеть', 'ключевой', 'атрибут'], ['образ', 'получить', 'реляционная', 'таблица', 'знф'], ['многозначный', 'атрибут', 'реляционный', 'модель', 'встречаться', 'отношение_многим'], ['преобразуются', 'реляционный', 'таблица', 'обладать', 'составной', 'ключ', 'ключевой', 'атрибут', 'отдельный', 'объектный_множество', 'гарантированно', 'иметь', '4нф'], ['2.1.2'], ['понятие', 'язык', 'определение', 'яод', 'dbtg'], ['язык', 'средство', 'помощь', 'определяться', 'структура', 'схема', 'происходить', 'запоминание', 'манипуляция'], ['язык', 'определяться', 'схема', 'называться', 'язык', 'определение', 'яод),а', 'язык', 'использовать', 'запоминание', 'манипуляция', 'называться', 'язык', 'манипуляция', 'данными', 'ямд'], ['процедура', 'применение', 'яод', 'определение', 'схема', 'создаваться', 'концептуальный', 'модель'], ['концептуальный', 'модель', 'преобразуется', 'диаграмма', 'сетевой', 'структура'], ['проверяться', 'существовать', 'тип', 'запись', 'отношение_многим'], ['непосредственно', 'реализовать', 'вид', 'набор', 'dbtg'], ['отношение', 'мощность', 'многим', 'преобразуется', 'два', 'набор', 'путем', 'создание', 'запись', 'связь'], ['n', 'арные', 'отношение', 'преобразуются', 'бинарный', 'отношение'], ['применяться', 'яод', 'реализация', 'схема'], ['схема', 'состоять', 'следующий', 'часть', 'раздел', 'схема'], ['раздел', 'схема', 'dbtg', 'задавать', 'имя', 'схема'], ['раздел', 'запись'], ['раздел', 'схема', 'dbtg', 'определять', 'каждый', 'запись', 'элемент', 'адрес'], ['раздел', 'набор'], ['раздел', 'схема', 'dbtg', 'определять', 'набор', 'тип', 'запись', 'владелец', 'член'], ['подсхема', 'основный', 'подмножество', 'схема'], ['подсхема', 'сгруппировать', 'элемент', 'сгруппировать', 'схема', 'запись', 'набор', 'переименовать', 'порядок', 'описание', 'изменить'], ['принятый', 'стандарт', 'dbtg', 'подсхема', 'существовать', 'использоваться', 'следующий', 'отдел', 'отдел', 'заголовок', 'позволять', 'присвоить', 'имя', 'подсхема', 'указать', 'связать', 'схема'], ['отдел', 'преобразование', 'желание', 'производиться', 'замена', 'имя', 'схема', 'подсхема'], ['структурный', 'отдел', 'задаваться', 'запись', 'элемент', 'набор', 'схема', 'присутствовать', 'подсхема'], ['отдел', 'состоять', 'раздел', 'запись', 'набор'], ['раздел', 'запись', 'подсхема'], ['раздел', 'структурный', 'отдел', 'задаваться', 'запись', 'элемент', 'тип', 'подсхема'], ['раздел', 'набор', 'подсхема'], ['раздел', 'структурный', 'отдел', 'задаваться', 'набор', 'включить', 'подсхема'], ['подсхема', 'позволять', 'пользователь', 'строить', 'предопределить', 'схема', 'схема', 'соответствовать', 'нужда', 'конкретный', 'приложение']]"
        ],
        [
         "34",
         "Характеристики СУБД.doc",
         "2.2.2 Сравнительные характеристики SQL СУБД.\rКак было отмечено выше, выбор конкретной архитектуры построения информационной системы включает два основных компонента: выбор серверной платформы (выбор серверной ОС и СУБД) и выбор платформ для клиентских рабочих мест. В данном разделе более подробно остановимся на особенностях выбора конкретной СУБД. При выборе базы данных очень важно выбрать базу данных, которая в наибольшей степени соответствуют предъявляемым к информационной системе требованиям, т.е. необходимо определиться какая модель автоматизации реализуется (автоматизация документооборота или бизнес - процессов). В первую очередь при выборе СУБД необходимо принимать во внимание следующие факторы: \rмаксимальное число пользователей одновременно обращающихся к базе; \rхарактеристики клиентского ПО; \rаппаратные компоненты сервера; \rсерверную операционную систему; \rуровень квалификации персонала. \rНа сегодня известно большое число различных серверов баз данных SQL. Остановимся более подробнее на следующих четырех ведущих серверных СУБД - Oracle8i, IBM DB2, Microsoft SQL Server и Informix - и сравним их в работе на каждом из основных этапов функционирования: \rконфигурирование системы, \rмониторинг, \rнастройка, \rобработка запросов, \rразработка серверных и клиентских модулей. \rДанный анализ проведем с учетом того, что число клиентских мест составляет от 50 до 500, а управление СУБД должно быть максимально эффективно. Исследования проводились на серверной платформе на базе Pentium II с 128 Мбайт ОЗУ, укомплектованном 13-Гбайт диском с интерфейсом EIDE в конфигурации RAID уровня 0 (конечно лучше было бы использовать HDD с интерфейсом SCSI). Управление системами было возложено на ОС Windows NT Server 4.0. и Linux. \r\rOracle8i. \rПакет Oracle8i, наделенный самым развитым набором функций для работы с языком Java и доступа к данным через Интернет, системой оптимизации одновременного доступа. Единственным недостатком данной СУБД является сложность администрирования, однако все затраты на ее внедрение и освоение в последствии окупятся эффективной и надежной работой. В нашей стране на протяжении уже многих лет целым рядом специалистов культивируется негативное отношение к СУБД Oracle, как к дорогой и сложной СУБД. Оба эти тезиса являются спорными. Во-первых, уровень сложности понятие относительное. При использовании СУБД Oracle на платформе NT, она потребует практически тех же усилий, что и при использовании MS SQL. В случае же работы на UNIX-платформе, можно с уверенностью отметить, что для профессиональных юниксоидов среда Oracle является простой, понятной и доступной. Что касается дороговизны, то и тут наметились положительные сдвиги. Кроме того, что компания Oracle предлагает ряд различных масштабируемых решений в зависимости от числа обслуживаемых клиентов, она также следуя общемировым тенденциям разработала версию своей популярнейшей СУБД под LINUX и выложила ее на своем WEB сервере (www.oracle.com) для свободного использования. Среди основных свойств СУБД Oracle следует отметить такие, как: \rВысочайшая надежность. \rВозможность разбиения крупных баз данных на разделы (large-database partition), что дает возможность эффективно управлять гигантскими гигабайтными базами; \rНаличие универсальных средств защиты информации; \rЭффективные методы максимального повышения скорости обработки запросов; \rИндексация по битовому отображению; \rСвободные таблицы (в других СУБД все таблицы заполняются сразу при создании); \rРаспараллеливание операций в запросе. \rНаличие широкого спектра средств разработки, мониторинга и администрирования. \rОриентация на интернет технологии.\rРешения, не уступающие разработкам Oracle можно найти только в DB2 фирмы IBM. Ориентация на интернет технологии - основной девиз современных продуктов Oracle. В этой связи можно отметить пакеты interMedia, обеспечивающее обработку данных в мультимедийных форматах, и Jserver, встроенное средство для работы с языком Java, которое объединяет возможности языка Java с возможностями реляционных баз данных (возможность составлять на языке Java не только внутренние программы для баз данных (хранимые процедуры и триггеры), но и разрабатывать компоненты Enterprise JavaBeans и даже запустить их на сервере). Компоненты Enterprise JavaBeans представляют собой базовые модули из которых складываются Интернет-приложения на языке Java. \rФирма Oracle придерживается принципа, что всеми важными функциями необходимо управлять из единого центра, поэтому предлагаемый модуль interMedia предоставляет в распоряжение пользователей самые передовые возможности для работы с мультимедийными объектами: \rОчень развитые средства для обработки аудио клипов; \rНеподвижных изображений; \rВидеофрагментов; \rГеографических данных (с целым набором функций связанных с определением местонахождения входящих в состав модуля Locator ). \rВ Oracle8i реализуются лучшие на сегодняшний день средства для объектно-ориентированного конструирования баз данных, в том числе табличные структуры, допускающие наследование свойств и методов других табличных объектов БД, что позволят избежать ошибок при построении БД и облегчает их обслуживание. \rТакже необходимо отметить, что разработанная фирмой Oracle система оптимизации одновременного доступа (multiversioning concurrency) является одной из важнейших характеристик архитектуры Oracle (подобная функция есть лишь в СУБД InterBase компании InterBase компании Inprise). Данная функция позволяет исключить ситуацию, когда одному пользователю приходится ждать, пока другой завершит изменения в содержимое баз данных (т.е. в Oracle отсутствуют блокировки на чтение). Эта функция позволяет СУБД Oracle8i выполнять за секунду больше транзакций в расчете на одного пользователя, чем любая другая база данных. По уровню производительности при работе в WEB среде под LINUX Oracle занимает почетное второе место после СУБД MySQL, при этом значительно превосходя все другие СУБД по надежности и безопасности. \r\rСУБД Microsoft SQL Server \rВажнейшие характеристики данной СУБД - это: \rпростота администрирования, \rвозможность подключения к Web, \rбыстродействие и функциональные возможности механизма сервера СУБД, \rналичие средств удаленного доступа, \rВ комплект средств административного управления данной СУБД входит целый набор специальных мастеров и средств автоматической настройки параметров конфигурации. Также данная БД оснащена замечательными средствами тиражирования, позволяющими синхронизировать данные ПК с информацией БД и наоборот. Входящий в комплект поставки сервер OLAP дает возможность сохранять и анализировать все имеющиеся у пользователя данные. В принципе данная СУБД представляет собой современную полнофункциональную база данных, которая идеально подходит для малых и средних организаций. Необходимо заметить, что SQL Server уступает другим рассматриваемым СУБД по двум важным показателям: программируемость и средства работы. При разработке клиентских БД приложений на основе языков Java, HTML часто возникает проблема недостаточности программных средств SQL Server и пользоваться этой СУБД будет труднее, чем системами DB2, Informix, Oracle или Sybase. Общемировой тенденцией в XXI веке стал практически повсеместный переход на платформу LINUX, а SQL Server функционирует только в среде Windows. Поэтому использование SQL Server целесообразно, по нашему мнению, только если для доступа к содержимому БД используется исключительно стандарт ODBC, в противном случае лучше использовать другие СУБД. \r\rIBM DB2 \rСУБД IBM DB2 - результат почти 30-х опытно-конструкторских и исследовательских работ фирмы IBM. Последнюю на сегодня версию данной СУБД (6.х) отличает один из наиболее продуманных наборов средств управления и оптимизации и механизм БД, допускающий наращивание от портативного ПК с Windows 95 до целого кластера больших ЭВМ S/390, работающих под управлением OS/390. \rПакет DB2 выпускается в двух редакциях: DB2 Workgroup и DB2 Enterprise Edition. В данной СУБД реализованы все известные по предшествующим версиям DB2 новаторские технологии механизма БД, такие, как распараллеливание обработки запроса, полный набор средств тиражирования, сводные таблицы запросов для повышения производительности БД, возможности объектно-ориентированного конструирования баз данных и средства языка Java. К этому надо добавить, что система DB2 оснащена полым набором мультимедиа-расширений, позволяющих сохранять текст, звук и видео- фрагменты, изображения и географические данные и манипулировать ими. Можно говорить, что по возможностям масштабирования разработанная специалистами IBM технология кластеризации баз данных не имеет аналогов. Эти расширения существенно облегчают процесс разработки приложений для Web, а так же программ, содержащих фотоизображения и объемные текстовые отчеты. Система DB2 вполне конкурентоспособна и в качестве платформы для разработки приложжений т.к существует средство Stored Procedure Builder - автоматически преобразовывающее оператор SQL в соответствующий класс Java и включающее его в структуру базы данных. В версии DB2 6.1 значительно улучшена функциональная совместимость с другими СУБД: пакет позволяет использовать разработанную Microsoft спецификацию OLE DB, новый стандарт доступа к базам данных. Средства административного управления СУБД DB2, которые в новой версии переписаны на Java и могут быть получены из Web, заслуживают самой высокой оценки. \rОсновными недостатками данной СУБД является относительная сложность администрирования и отсутствие (пока) реализаций под популярные серверные ОС, например LINUX. \rВ данной СУБД благодаря Index Smart-Guide возможно осуществлять настройку, формируя оптимальные индексы для заданного числа обращений, характеризующего типичную нагрузку на БД. DB2- единственный пакет позволяющий генерировать сводные таблицы, что значительно эффективность работы СУБД в качестве хранилищ данных. Сводная таблица - это временная рабочая область, используемая базой данных для хранения ответов на часто поступающие запросы. Ну что ж, можно сказать, что оснащенная новыми функциональными возможностями, а также средствами распараллеливания и возможностями выбора практически любого типа соединения и индексов (кроме разве что растровых индексов), модель DB2 6.1 превращается в самую недорогую из высокопроизводительных систем. Средства административного управления этой СУБД вполне соответствуют уровню решаемых задач, кроме того, она предоставляет исключительно широкие возможности для работы с мультимедиа-данными и для программирования (чего явно недостает системе Microsoft SQL Server). \r\rСУБД от Informix. \rВ последнее время наметился переход от реляционных СУБД к объектно-ориентированным (что явно прослеживается на примере Oracle). Informix также следуя данной концепции анонсировала новое решение СУБД Centaur базирующуюся на реляционной БД Informix Dynamic Server 7.3 и объектно-реляционной БД Informix Universal Data Option и сочетающую в себе высокое быстродействие Dynamic Server при работе с данными с универсальностью и мультимедиа функциями Universal Data Option. Данная реализация предназначена для разработки интернет систем. Предположительно данная СУБД будет обладать гибкой средой разработки, обладающей наращиваемостью, соответствующей характерным для Интернета интенсивным нагрузкам, и средствами работы с новыми типами данных, которые с развитием Web стали использоваться повсеместно. Реализованные в новой системе средства Java позволят разработчикам создавать на этом языке хранимые процедуры, пользовательские программы и компоненты DataBlades, которые в Informix называют заказными расширениями базы данных. \rС точки зрения клиентов Inforix, это станет большим шагом вперед, поскольку до настоящего времени при работе с DataBlades они могли пользоваться только языком Си и SPL, внутренним языком фирмы Informix для написания хранимых процедур. Кроме того, пакет Centaur будет оснащен встроенными средствами обработки объектов ActiveX. Это даст возможность, к примеру, создавать хранимые процедуры БД на языке Visual Basic; правда, для этого нужно, чтобы пакет Centaur выполнялся в среде Windows NT. \rCentaur будет представлять собой надстройку Informix Dynamic Server и работать с традиционным для этого пакета форматом БД, так что в распоряжении пользователей останутся все прежние функции, а модернизация системы до уровня новой версии не будет сопряжена с большими сложностями. Кроме того, в пакете Centaur будут сохранены все возможности конструирования и программирования, благодаря которым система Informix Universal Server признана выдающимся техническим достижением. Новая система будет оснащена средствами объектно-ориентированного конструирования баз данных, создания специализированных таблиц и программ индексирования; в ее состав войдет позволит пользователям встраивать в запросы собственные функции и не полагаться исключительно на стандартные средства SQL. \r\rВыводы. \rРассмотрев основные характеристики архитектур построения АИС, серверных операционных систем и СУБД в дальнейшем в качестве архитектуры АИС мы выберем архитектуру интернет/интранет, в качестве серверной ОС Linux, в качестве СУБД Oracle 8i. В сводной таблице представлены сравнительные характеристики двух наиболее распространенных на сегодня решений на базе Microsoft SQL Server 7.0 (на NT) и Oracle8i (на Unix, Linux). \r \r\u0007Microsoft SQL Server 7.0\r\u0007Oracle8i\r\u0007\r\u0007Административное управление\r\u0007Хорошо\r\u0007Отлично\r\u0007\r\u0007Графические инструменты\r\u0007Отлично\r\u0007Хорошо\r\u0007\r\u0007Простота обслуживания\r\u0007Хорошо\r\u0007Отлично\r\u0007\r\u0007Механизм данных\r\u0007Хорошо\r\u0007Отлично\r\u0007\r\u0007Работа с несколькими ЦП\r\u0007Приемлемо\r\u0007Отлично\r\u0007\r\u0007Функция соединения и выбор индексов\r\u0007Отлично\r\u0007Отлично\r\u0007\r\u0007Одновременный доступ нескольких пользователей\r\u0007Хорошо\r\u0007Отлично\r\u0007\r\u0007Обработка мультимедиа-даных\r\u0007Плохо\r\u0007Отлично\r\u0007\r\u0007Подключение к Web\r\u0007Плохо\r\u0007Отлично\r\u0007\r\u0007Обработка аудио, видео, изображений\r\u0007Плохо\r\u0007Отлично\r\u0007\r\u0007Поиск по сему тексту\r\u0007Хорошо\r\u0007Отлично\r\u0007\r\u0007Функциональная совместимость\r\u0007Хорошо\r\u0007Приемлемо\r\u0007\r\u0007Сопряжение с другими БД\r\u0007Хорошо\r\u0007Плохо\r\u0007\r\u0007Единая регистрация\r\u0007Хорошо\r\u0007Хорошо\r\u0007\r\u0007Работа под управлением различных ОС\r\u0007Приемлемо\r\u0007Хорошо\r\u0007\r\u0007Возможности программирования\r\u0007Приемлемо\r\u0007Отлично\r\u0007\r\u0007Хранимые процедуры и триггеры\r\u0007Хорошо\r\u0007Отлично\r\u0007\r\u0007Внутренний язык программирования\r\u0007Плохо\r\u0007Отлично\r\u0007\r\u0007Построение баз данных\r\u0007Хорошо\r\u0007Отлично\r\u0007\r\u0007Язык SQL\r\u0007Отлично\r\u0007Отлично\r\u0007\r\u0007Объектно-ориентированные системы\r\u0007Плохо\r\u0007Отлично\r\u0007\r\u0007Работа с филиалами\r\u0007Отлично\r\u0007Отлично\r\u0007\r\u0007Тиражирование\r\u0007Отлично\r\u0007Отлично\r\u0007\r\u0007Распределенная обработка транзакций\r\u0007Отлично\r\u0007Отлично\r\u0007\r\u0007Дистанционное администрирование\r\u0007Хорошо\r\u0007Отлично\r\u0007\r\u0007Организация хранилищ данных и подготовка отчетов\r\u0007Отлично\r\u0007Хорошо\r\u0007\r\u0007Средства загрузки\r\u0007Отлично\r\u0007Отлично\r\u0007\r\u0007Средства анализа\r\u0007Отлично\r\u0007Хорошо\r\u0007\r\u0007Клиентские места при этом могут функционировать практически на любой платформе, средством доступа клиентов к СУБД является либо CGI (Perl) либо JAVA приложения. При этом к серверной части АИС предъявляются следующие требования: \r\r2.3. Реляционная модель, как платформа для разработки современных информационных систем на примере интерактивной системы патентного обеспечения технологического проектирования.\rИ так мы расссмотрели различные подходы к внутренней организации баз данных. И в результате пришли к выводу о необходимости использования реляционной модели, так как она решает одну из основных проблем - внесения изменений в базу данных в процессе ее использования. Ведь в реляционной безе данных проблемы синхронизации данных не возникает вовсе, так как данные хранятся в одном экземпляре. Для большей ясности этого вопроса приведем отличия традиционных и реляционных баз данных. \rВыполняемая операция\r\u0007Традиционные базы данных\r\u0007Реляционные базы данных\r\u0007\r\u0007Разработка приложений\r\u0007Необходимо определить, какая информация требуется различным приложениям и создать ряд общих файлов.\r\u0007Необходимо определить виды хранимых данных и взаимосвязи между ними\r\u0007\r\u0007Реализация приложений\r\u0007Поступающие данные записываются в основные файлы; в каждую информационную ячейку каждого основного файла записывается один элемент данных.\r\u0007Различные виды данных записываются в таблицы данных, соответствующие этим видам. В результате каждый элемент информации хранится в одном единственном месте\r\u0007\r\u0007Модификация приложений\r\u0007Требуется пересмотр структуры базы данных с последующей перезаписью основных файлов, которые затронуты вносимыми изменениями, и с переработкой всех приложений, использующих эти файлы\r\u0007Достаточно найти и модифицировать таблицу, в которой должно содержаться определение нового вида данных Сами данные хранятся в других таблицах, не затрагиваемых при подобных изменениях.\r\u0007\r\u0007Внесение частичных изменений в данные\r\u0007Необходимо прочитать каждый основной файл с начала до конца, модифицируя изменяемые ячейки данных и оставляя все остальные прочитанные ячейки без изменений.\r\u0007В соответствующих таблицах достаточно выделить множество строк, в которые необходимо внести изменения, и произвести эти изменения с помощью одного SQL- оператора.\r\u0007\r\u0007Итак, основные черты реляционных баз данных: \rСтруктура реляционной базы данных определяется хранящимися в них данными и не фиксируется в момент завершения разработки (т.е. является гибкой и масштабируемой). \rСтруктурам данных можно давать весьма информативные названия. \rДанные хранятся в единственном экземпляре; все опции чтения и модификации данных производятся только с этим экземпляром данных, что качественно облегчает синхронизацию данных между многими приложениями и пользователями. \rДанные хранятся в соответствии с четко определенными и строго соблюдаемыми правилами.",
         "0",
         "[['2.2.2', 'сравнительные', 'характеристика', 'sql', 'субд'], ['отметить', 'выше', 'выбор', 'конкретный', 'архитектура', 'построение', 'информационный', 'система', 'включать', 'два', 'основный', 'компонент', 'выбор', 'серверный', 'платформа', 'выбор', 'серверный', 'ос', 'субд', 'выбор', 'платформа', 'клиентский', 'рабочий', 'место'], ['раздел', 'подробно', 'остановиться', 'особенность', 'выбор', 'конкретный', 'субд'], ['выбор', 'база', 'важный', 'выбрать', 'база', 'больший', 'степень', 'соответствовать', 'предъявлять', 'информационный', 'система', 'требование', 'т.е.', 'определиться', 'модель', 'автоматизация', 'реализоваться', 'автоматизация', 'документооборот', 'бизнес', 'процессов'], ['первый', 'очередь', 'выбор', 'субд', 'принимать', 'внимание', 'следующий', 'фактор', 'максимальный', 'число', 'пользователь', 'одновременно', 'обращаться', 'база', 'характеристика', 'клиентский', 'аппаратный', 'компонент', 'сервер', 'серверный', 'операционный', 'система', 'уровень', 'квалификация', 'персонал'], ['сегодня', 'известный', 'большой', 'число', 'различный', 'сервер', 'база', 'sql'], ['остановиться', 'подробный', 'следующий', 'четыре', 'ведущий', 'серверный', 'субд', 'oracle8i', 'ibm', 'db2', 'microsoft', 'sql_server', 'informix', 'сравнить', 'работа', 'каждый', 'основный', 'этап', 'функционирование', 'конфигурирование', 'система', 'мониторинг', 'настройка', 'обработка', 'запрос', 'разработка', 'серверный', 'клиентский', 'модуль'], ['анализ', 'провести', 'учёт', 'число', 'клиентский', 'место', 'составлять', '50', '500', 'управление', 'субд', 'максимально', 'эффективно'], ['исследование', 'проводиться', 'серверный', 'платформа', 'база', 'pentium', 'ii', '128', 'мбайт', 'озу', 'укомплектовать', '13-гбайт', 'диск', 'интерфейс', 'eide', 'конфигурация', 'raid', 'уровень', '0', 'хороший', 'использовать', 'hdd', 'интерфейс', 'scsi'], ['управление', 'система', 'возложить', 'ос', 'windows', 'nt', 'server', '4.0'], ['linux'], ['oracle8i'], ['пакет', 'oracle8i', 'наделить', 'самым', 'развитой', 'набор', 'функция', 'работа', 'язык_java', 'доступ', 'данным', 'интернет', 'система', 'оптимизация', 'одновременный', 'доступ'], ['единственный', 'недостаток', 'субд', 'являться', 'сложность', 'администрирование', 'затрата', 'внедрение', 'освоение', 'последствие', 'окупиться', 'эффективный', 'надёжный', 'работа'], ['страна', 'протяжение', 'многих', 'год', 'целый', 'специалист', 'культивироваться', 'негативный', 'отношение', 'субд', 'oracle', 'дорогой', 'сложный', 'субд'], ['тезис', 'являться', 'спорный'], ['первых', 'уровень', 'сложность', 'понятие', 'относительный'], ['использование', 'субд', 'oracle', 'платформа', 'nt', 'потребовать', 'практически', 'усилие', 'использование', 'ms', 'sql'], ['случай', 'работа', 'unix', 'платформа', 'уверенность', 'отметить', 'профессиональный', 'юниксоидов', 'среда', 'oracle', 'являться', 'простой', 'понятный', 'доступный'], ['касаться', 'дороговизна', 'наметиться', 'положительный', 'сдвиг'], ['компания', 'oracle', 'предлагать', 'ряд', 'различный', 'масштабируемых', 'решение', 'зависимость', 'число', 'обслуживать', 'клиент', 'следовать', 'общемировой', 'тенденция', 'разработать', 'версия', 'популярный', 'субд', 'linux', 'выложить', 'web', 'сервер', 'www.oracle.com', 'свободный', 'использование'], ['основный', 'свойство', 'субд', 'oracle', 'отметить', 'высочайшая', 'надёжность'], ['возможность', 'разбиение', 'крупный', 'база', 'раздел', 'large', 'database', 'partition', 'давать', 'возможность', 'эффективно', 'управлять', 'гигантский', 'гигабайтный', 'база'], ['наличие', 'универсальный', 'средство', 'защита', 'информация', 'эффективный', 'метод', 'максимальный', 'повышение', 'скорость', 'обработка', 'запрос', 'индексация', 'битовый', 'отображение', 'свободный', 'таблица', 'субд', 'таблица', 'заполняться', 'создание', 'распараллеливание', 'операция', 'запрос'], ['наличие', 'широкий', 'спектр', 'средство', 'разработка', 'мониторинг', 'администрирование'], ['ориентация', 'интернет', 'технология'], ['решение', 'уступать', 'разработка', 'oracle', 'найти', 'db2', 'фирмы', 'ibm'], ['ориентация', 'интернет', 'технология', 'основной', 'девиз', 'современный', 'продукт', 'oracle'], ['связь', 'отметить', 'пакет', 'intermedia', 'обеспечивать', 'обработка', 'мультимедийный', 'формат', 'jserver', 'встроенное', 'средство', 'работа', 'язык_java', 'объединять', 'возможность', 'язык_java', 'возможность', 'реляционный', 'база', 'возможность', 'составлять', 'язык_java', 'внутренний', 'программа', 'база', 'хранить', 'процедура', 'триггеры', 'разрабатывать', 'компонент', 'enterprise', 'javabeans', 'запустить', 'сервер'], ['компонент', 'enterprise', 'javabeans', 'представлять', 'базовый', 'модуль', 'складываться', 'интернет', 'приложения', 'язык_java'], ['фирма', 'oracle', 'придерживаться', 'принцип', 'важный', 'функция', 'управлять', 'единый', 'центр', 'предлагать', 'модуль', 'intermedia', 'предоставлять', 'распоряжение', 'пользователь', 'самые', 'передовой', 'возможность', 'работа', 'мультимедийный', 'объект', 'развить', 'средство', 'обработка', 'аудио', 'клип', 'неподвижный', 'изображение', 'видеофрагментов', 'географический', 'целый', 'набор', 'функция', 'связать', 'определение', 'местонахождение', 'входить', 'состав', 'модуль', 'locator'], ['oracle8i', 'реализоваться', 'хороший', 'сегодняшний', 'день', 'средство', 'объектный', 'ориентированный', 'конструирование', 'база', 'число', 'табличный', 'структура', 'допускать', 'наследование', 'свойство', 'метод', 'табличный', 'объект', 'бд', 'позволить', 'избежать', 'ошибка', 'построение', 'бд', 'облегчать', 'обслуживание'], ['отметить', 'разработать', 'фирма', 'oracle', 'система', 'оптимизация', 'одновременный', 'доступ', 'multiversioning', 'concurrency', 'являться', 'важный', 'характеристика', 'архитектура', 'oracle', 'функция', 'субд', 'interbase', 'компания', 'interbase', 'компания', 'inprise'], ['функция', 'позволять', 'исключить', 'ситуация', 'пользователь', 'приходиться', 'ждать', 'завершить', 'изменение', 'содержимое', 'база', 'т.е.', 'oracle', 'отсутствовать', 'блокировка', 'чтение'], ['функция', 'позволять', 'субд', 'oracle8i', 'выполнять', 'секунда', 'транзакция', 'расчёт', 'пользователь', 'база'], ['уровень', 'производительность', 'работа', 'web', 'среда', 'linux', 'oracle', 'занимать', 'почётный', 'второй', 'место', 'субд', 'mysql', 'значительно', 'превосходить', 'субд', 'надёжность', 'безопасность'], ['субд', 'microsoft', 'sql_server', 'важнейшие', 'характеристика', 'субд', 'простота', 'администрирование', 'возможность', 'подключение', 'web', 'быстродействие', 'функциональный', 'возможность', 'механизм', 'сервер', 'субд', 'наличие', 'средство', 'удалить', 'доступ', 'комплект', 'средство', 'административный', 'управление', 'субд', 'входить', 'целый', 'набор', 'специальный', 'мастер', 'средство', 'автоматический', 'настройка', 'параметр', 'конфигурация'], ['бд', 'оснастить', 'замечательный', 'средство', 'тиражирование', 'позволять', 'синхронизировать', 'пк', 'информация', 'бд'], ['входить', 'комплект', 'поставка', 'сервер', 'olap', 'давать', 'возможность', 'сохранять', 'анализировать', 'иметься', 'пользователь'], ['принцип', 'субд', 'представлять', 'современный', 'полнофункциональную', 'база', 'идеально', 'подходить', 'малый', 'средний', 'организация'], ['заметить', 'sql_server', 'уступать', 'рассматривать', 'субд', 'два', 'важный', 'показатель', 'программируемость', 'средство', 'работа'], ['разработка', 'клиентский', 'бд', 'приложение', 'основа', 'язык_java', 'html', 'возникать', 'проблема', 'недостаточность', 'программный', 'средство', 'sql_server', 'пользоваться', 'субд', 'трудный', 'система', 'db2', 'informix', 'oracle', 'sybase'], ['общемировой', 'тенденция', 'xxi', 'век', 'практически', 'повсеместный', 'переход', 'платформа', 'linux', 'sql_server', 'функционировать', 'среда', 'windows'], ['использование', 'sql_server', 'целесообразный', 'мнение', 'доступ', 'содержимому', 'бд', 'использоваться', 'исключительно', 'стандарт', 'odbc', 'противный', 'случай', 'хороший', 'использовать', 'субд'], ['ibm', 'db2', 'субд', 'ibm', 'db2', 'результат', '30-й', 'опытно', 'конструкторский', 'исследовательский', 'работа', 'фирма', 'ibm'], ['последний', 'сегодня', 'версия', 'субд', '6.х', 'отличать', 'продумать', 'набор', 'средство', 'управление', 'оптимизация', 'механизм', 'бд', 'допускать', 'наращивание', 'портативный', 'пк', 'windows', '95', 'целый', 'кластер', 'больший', 'эвм', 's/390', 'работать', 'управление', 'os/390'], ['пакет', 'db2', 'выпускаться', 'два', 'редакция', 'db2', 'workgroup', 'db2', 'enterprise', 'edition'], ['субд', 'реализовать', 'известный', 'предшествовать', 'версия', 'db2', 'новаторский', 'технология', 'механизм', 'бд', 'распараллеливание', 'обработка', 'запрос', 'полный', 'набор', 'средство', 'тиражирование', 'сводный', 'таблица', 'запрос', 'повышение', 'производительность', 'бд', 'возможность', 'объектный', 'ориентированный', 'конструирование', 'база', 'средство', 'язык_java'], ['добавить', 'система', 'db2', 'оснастить', 'полый', 'набор', 'мультимедиа', 'расширение', 'позволять', 'сохранять', 'текст', 'звук', 'видео-', 'фрагмент', 'изображение', 'географический', 'манипулировать'], ['говорить', 'возможность', 'масштабирование', 'разработать', 'специалист', 'ibm', 'технология', 'кластеризация', 'база', 'аналог'], ['расширение', 'существенно', 'облегчать', 'процесс', 'разработка', 'приложение', 'web', 'программа', 'содержать', 'фотоизображения', 'объёмный', 'текстовый', 'отчёт'], ['система', 'db2', 'конкурентоспособный', 'качество', 'платформа', 'разработка', 'приложжений', 'т.к', 'существовать', 'средство', 'stored', 'procedure', 'builder', 'автоматически', 'преобразовывать', 'оператор', 'sql', 'соответствовать', 'класс', 'java', 'включать', 'структура', 'база'], ['версия', 'db2', '6.1', 'значительно', 'улучшить', 'функциональный', 'совместимость', 'субд', 'пакет', 'позволять', 'использовать', 'разработать', 'microsoft', 'спецификация', 'ole', 'db', 'новый', 'стандарт', 'доступ', 'база'], ['средство', 'административный', 'управление', 'субд', 'db2', 'новый', 'версия', 'переписать', 'java', 'получить', 'web', 'заслуживать', 'высокий', 'оценка'], ['основный', 'недостаток', 'субд', 'являться', 'относительный', 'сложность', 'администрирование', 'отсутствие', 'реализация', 'популярный', 'серверный', 'ос', 'linux'], ['субд', 'index', 'smart', 'guide', 'осуществлять', 'настройка', 'формировать', 'оптимальный', 'индекс', 'задать', 'число', 'обращение', 'характеризовать', 'типичный', 'нагрузка', 'бд'], ['db2-', 'единственный', 'пакет', 'позволять', 'генерировать', 'сводный', 'таблица', 'значительно', 'эффективность', 'работа', 'субд', 'качество', 'хранилище'], ['сводный', 'таблица', 'временной', 'рабочий', 'область', 'использовать', 'база', 'хранение', 'ответ', 'поступать', 'запрос'], ['сказать', 'оснастить', 'новый', 'функциональный', 'возможность', 'средство', 'распараллеливание', 'возможность', 'выбор', 'практически', 'тип', 'соединение', 'индекс', 'растровый', 'индекс', 'модель', 'db2', '6.1', 'превращаться', 'самую', 'недорогой', 'высокопроизводительный', 'система'], ['средство', 'административный', 'управление', 'субд', 'соответствовать', 'уровень', 'решать', 'задача', 'предоставлять', 'исключительно', 'широкий', 'возможность', 'работа', 'мультимедиа', 'данными', 'программирование', 'недоставать', 'система', 'microsoft', 'sql_server'], ['субд', 'informix'], ['последний', 'время', 'наметиться', 'переход', 'реляционный', 'субд', 'объектный', 'ориентированный', 'прослеживаться', 'пример', 'oracle'], ['informix', 'следовать', 'концепция', 'анонсировала', 'новый', 'решение', 'субд', 'centaur', 'базироваться', 'реляционный', 'бд', 'informix', 'dynamic', 'server', '7.3', 'объектный', 'реляционный', 'бд', 'informix', 'universal', 'data', 'option', 'сочетать', 'высокий', 'быстродействие', 'dynamic', 'server', 'работа', 'данными', 'универсальность', 'мультимедиа', 'функция', 'universal', 'data', 'option'], ['реализация', 'предназначить', 'разработка', 'интернет', 'система'], ['предположительно', 'субд', 'обладать', 'гибкий', 'среда', 'разработка', 'обладать', 'наращиваемостью', 'соответствовать', 'характерный', 'интернет', 'интенсивный', 'нагрузка', 'средство', 'работа', 'новый', 'тип', 'развитие', 'web', 'использоваться', 'повсеместно'], ['реализовать', 'новый', 'система', 'средство', 'java', 'позволить', 'разработчик', 'создавать', 'язык', 'хранить', 'процедура', 'пользовательский', 'программа', 'компонент', 'datablades', 'informix', 'называть', 'заказной', 'расширение', 'база'], ['точка', 'зрение', 'клиент', 'inforix', 'стать', 'больший', 'шаг', 'вперёд', 'настоящий', 'время', 'работа', 'datablades', 'пользоваться', 'язык', 'си', 'spl', 'внутренний', 'язык', 'фирма', 'informix', 'написание', 'хранить', 'процедура'], ['пакет', 'centaur', 'оснастить', 'встроенными', 'средство', 'обработка', 'объект', 'activex.'], ['дать', 'возможность', 'пример', 'создавать', 'хранить', 'процедура', 'бд', 'язык', 'visual', 'basic', 'правда', 'пакет', 'centaur', 'выполняться', 'среда', 'windows', 'nt'], ['centaur', 'представлять', 'надстройка', 'informix', 'dynamic', 'server', 'работать', 'традиционный', 'пакет', 'формат', 'бд', 'распоряжение', 'пользователь', 'остаться', 'прежний', 'функция', 'модернизация', 'система', 'уровень', 'новый', 'версия', 'сопрячь', 'больший', 'сложность'], ['пакет', 'centaur', 'сохранить', 'возможность', 'конструирование', 'программирование', 'система', 'informix', 'universal', 'server', 'признать', 'выдающийся', 'технический', 'достижение'], ['новый', 'система', 'оснастить', 'средство', 'объектный', 'ориентированный', 'конструирование', 'база', 'создание', 'специализированный', 'таблица', 'программа', 'индексирование', 'состав', 'войти', 'позволить', 'пользователь', 'встраивать', 'запрос', 'собственный', 'функция', 'полагаться', 'исключительно', 'стандартный', 'средство', 'sql'], ['вывод'], ['рассмотреть', 'основный', 'характеристика', 'архитектура', 'построение', 'аис', 'серверный', 'операционный', 'система', 'субд', 'дальнейший', 'качество', 'архитектура', 'аис', 'выбрать', 'архитектура', 'интернет', 'интранет', 'качество', 'серверный', 'ос', 'linux', 'качество', 'субд', 'oracle', '8i'], ['сводный', 'таблица', 'представить', 'сравнительный', 'характеристика', 'два', 'распространенных', 'сегодня', 'решение', 'база', 'microsoft', 'sql_server', '7.0', 'nt', 'oracle8i', 'unix', 'linux'], ['\\x07microsoft', 'sql_server', '7.0', '\\x07oracle8i', '\\x07', '\\x07административное', 'управление', '\\x07хорошо_\\x07отлично', '\\x07', '\\x07графический', 'инструмент', '\\x07отлично', '\\x07хорошо', '\\x07', '\\x07простота', 'обслуживание', '\\x07хорошо_\\x07отлично', '\\x07', '\\x07механизм', '\\x07хорошо_\\x07отлично', '\\x07', '\\x07работа', 'несколько', 'цп', '\\x07приемлемо', '\\x07отлично_\\x07', '\\x07функция', 'соединение', 'выбор', 'индекс', '\\x07отлично', '\\x07отлично_\\x07', '\\x07одновременный', 'доступ', 'несколько', 'пользователь', '\\x07хорошо_\\x07отлично', '\\x07', '\\x07обработка', 'мультимедиа', 'даных', '\\x07плохо', '\\x07отлично_\\x07', '\\x07подключение', 'web', '\\x07плохо', '\\x07отлично_\\x07', '\\x07обработка', 'аудио', 'видео', 'изображение', '\\x07плохо', '\\x07отлично_\\x07', '\\x07поиск', 'сей', 'текст', '\\x07хорошо_\\x07отлично', '\\x07', '\\x07функциональная', 'совместимость', '\\x07хорошо', '\\x07приемлемо', '\\x07', '\\x07сопряжение', 'бд', '\\x07хорошо', '\\x07плохо', '\\x07', '\\x07единый', 'регистрация', '\\x07хорошо', '\\x07хорошо', '\\x07', '\\x07работа', 'управление', 'различный', 'ос', '\\x07приемлемо', '\\x07хорошо', '\\x07', '\\x07возможности', 'программирование', '\\x07приемлемо', '\\x07отлично_\\x07', '\\x07хранимые', 'процедура', 'триггеры', '\\x07хорошо_\\x07отлично', '\\x07', '\\x07внутренний', 'язык', 'программирование', '\\x07плохо', '\\x07отлично_\\x07', '\\x07построение', 'база', '\\x07хорошо_\\x07отлично', '\\x07', '\\x07язык', 'sql', '\\x07отлично', '\\x07отлично_\\x07', '\\x07объектно', 'ориентированный', 'система', '\\x07плохо', '\\x07отлично_\\x07', '\\x07работа', 'филиал', '\\x07отлично', '\\x07отлично_\\x07', '\\x07тиражирование', '\\x07отлично', '\\x07отлично_\\x07', '\\x07распределенная', 'обработка', 'транзакция', '\\x07отлично', '\\x07отлично_\\x07', '\\x07дистанционное', 'администрирование', '\\x07хорошо_\\x07отлично', '\\x07', '\\x07организация', 'хранилище', 'подготовка', 'отчёт', '\\x07отлично', '\\x07хорошо', '\\x07', '\\x07средство', 'загрузка', '\\x07отлично', '\\x07отлично_\\x07', '\\x07средство', 'анализ', '\\x07отлично', '\\x07хорошо', '\\x07', '\\x07клиентский', 'место', 'функционировать', 'практически', 'платформа', 'средство', 'доступ', 'клиент', 'субд', 'являться', 'cgi', 'perl', 'java', 'приложение'], ['серверный', 'часть', 'аис', 'предъявляться', 'следующий', 'требование', '2.3'], ['реляционный', 'модель', 'платформа', 'разработка', 'современный', 'информационный', 'система', 'пример', 'интерактивный', 'система', 'патентный', 'обеспечение', 'технологический', 'проектирование'], ['расссмотрели', 'различный', 'подход', 'внутренний', 'организация', 'база'], ['результат', 'прийти', 'вывод', 'использование', 'реляционный', 'модель', 'решать', 'основный', 'проблема', 'внесение', 'изменение', 'база', 'процесс', 'использование'], ['реляционной', 'безе', 'проблема', 'синхронизация', 'возникать', 'храниться', 'экземпляр'], ['больший', 'ясность', 'вопрос', 'привести', 'отличие', 'традиционный', 'реляционный', 'база'], ['выполняемая', 'операция', '\\x07традиционные', 'база', '\\x07реляционные', 'база', '\\x07', '\\x07разработка', 'приложение', '\\x07необходимо', 'определить', 'информация', 'требоваться', 'различный', 'приложение', 'создать', 'ряд', 'общий', 'файл'], ['\\x07необходимо', 'определить', 'вид', 'хранить', 'взаимосвязь', '\\x07', '\\x07реализация', 'приложение', '\\x07поступающие', 'записываться', 'основный', 'файл', 'каждый', 'информационный', 'ячейка', 'каждый', 'основный', 'файл', 'записываться', 'элемент'], ['\\x07различные', 'вид', 'записываться', 'таблица', 'соответствовать', 'вид'], ['результат', 'элемент', 'информация', 'храниться', 'единственный', 'место', '\\x07', '\\x07модификация', 'приложение', '\\x07требуется', 'пересмотр', 'структура', 'база', 'последующий', 'перезапись', 'основный', 'файл', 'затронуть', 'вносимыми', 'изменение', 'переработка', 'приложение', 'использовать', 'файл', '\\x07достаточно', 'найти', 'модифицировать', 'таблица', 'содержаться', 'определение', 'новый', 'вид', 'храниться', 'таблица', 'затрагивать', 'изменение'], ['\\x07', '\\x07внесение', 'частичный', 'изменение', '\\x07необходимо', 'прочитать', 'основной', 'файл', 'конец', 'модифицировать', 'изменяемый', 'ячейка', 'оставлять', 'остальные', 'прочитать', 'ячейка', 'изменение'], ['\\x07в', 'соответствующий', 'таблица', 'достаточный', 'выделить', 'множество', 'строка', 'внести', 'изменение', 'произвести', 'изменение', 'помощь', 'sql-', 'оператор'], ['\\x07', '\\x07итак', 'основной', 'черта', 'реляционный', 'база', 'структура', 'реляционный', 'база', 'определяться', 'храниться', 'данными', 'фиксироваться', 'момент', 'завершение', 'разработка', 'т.е.', 'являться', 'гибкий', 'масштабируемой'], ['структурам', 'давать', 'весьма', 'информативный', 'название'], ['храниться', 'единственный', 'экземпляр', 'опция', 'чтение', 'модификация', 'производиться', 'экземпляр', 'качественно', 'облегчать', 'синхронизация', 'многими', 'приложение', 'пользователь'], ['храниться', 'соответствие', 'четко', 'определённый', 'строго', 'соблюдаемыми', 'правило']]"
        ],
        [
         "35",
         "Этапы разработки проекта1.doc",
         "Этапы разработки проекта: заключительные стадии проектирования, спецификации функций\rОбработка иерархии функций \rНа этапе анализа была создана иерархия функций, которая дополняется диаграммами потока данных и изменения состояний. Как проще всего проверить, является ли функция в иерархии атомарной? Ответьте на вопрос: имеет ли смысл выполнение только части этой функции. Поскольку мы имеем дело с иерархией, вероятно наличие одной и той же функции в нескольких местах иерархии. Здесь кроется ошибка анализа: аналитик перепутал функцию и механизм.\rХорошо, если при описании функции аналитик укажет в скобках тот объект в ER-модели (сущность и атрибут), о котором идет речь, например «выбрать товары в накладной из списка товаров (ITEMS), хранящихся на складе (STORE)». Если подобных указаний нет, это станет хорошим упражнением для приемки отчетов аналитиков; заодно и убедитесь, что вы правильно понимаете друг друга. Параллельно проверьте, есть ли сущности, которые не используются ни в одной функции, - это поможет сделать матрицу «функции-атрибуты», отражающую факт использования в функциях атрибутов сущностей.\rКак правило, не бывает взаимно однозначного отображения функций на модули. Если однозначных соответствий много, то вероятнее всего был выполнен не анализ, а собственно проектирование. Зачастую схожие по выполняемым действиям функции объединяют, даже если у них разный контекст. Некоторые сложные функции разбивают на более простые модули. Некоторые функции преобразуют в ограничения базы данных (constraints, или триггеры и хранимые процедуры). Каких-то общих способов отображения функций на модули не существует. Требуется время, терпение, опыт. Проектировщики часто меняют количество, состав модулей в течение процесса проектирования, и это правило, а не исключение.\rНекоторые группы модулей присутствуют в любом проекте:\rработа с базой данных: \rобработка кодов возврата СУБД; \rустановка соединения с СУБД и его параметры; \rвыполнение некурсорного запроса (DDL- и DML-операции); \rвыполнение выборки; \rвызов хранимой процедуры и обработка ее ответа; \rоперации начала и завершения транзакции; \rфункциональные модули: \rмодули, реализующие бизнес-процессы; \rмодули, изолирующие обработку запросов к базе данных и интерфейсы, предоставляемые пользователю; \rсистемные модули: \rсредства управления приложениями; \rсредства обмена данными с внешними системами; \rпланировщик пакетных заданий; \rменеджер печати документов; \rмодуль резервного копирования; \rмодуль архивирования; \rмодуль автоматического восстановления при сбоях; \rсредства администрирования пользователей системы (регистрация, назначение прав, внешняя аутентификация); \rсредства создания нерегламентированных запросов к базе данных. \rОдин из приемов построения расширяемых систем состоит в создании независимости двух слоев: обработки запросов и интерфейса, предоставляемого пользователю. Можно специально кодировать каждый запрос данных, например именем функции и номером или как-нибудь иначе. Текст SQL-запроса скрыт от разработчиков интерфейсов; они имеют доступ только к возвращаемому запросом множеству - коду ошибки или выборке. Формат кода ошибки и выборки фиксируется. Это позволяет проектировщикам схемы базы данных изменять как ее, так и сам SQL-запрос, однако эти изменения не отражаются на процессах создания интерфейсов. Аналогичная независимость реализуется для слоя функций, обеспечивающих вызовы интерфейса, предоставляемого СУБД для выполнения запросов. Этот слой функций может использовать вызовы как native-интерфейса СУБД, так и стандартных интерфейсов, например ODBC.\rОчень важен слой функций обработки ошибок. При выполнении запросов к базе данных всегда следует предусматривать обработку исключений, например нарушений ограничений целостности. Отдельно требуется предусмотреть обработку конфликтов транзакций и принудительный откат текущей транзакции вследствие разрешения конфликтов типа deadlock. Проектировщики должны хорошо понимать особенности многопользовательской работы, которые реализованы используемой в проекте СУБД. Проектирование потоков транзакций и снижение конфликтов между ними - одна из самых сложных задач проектирования.\rДля больших проектов важно наличие функций мониторинга работы приложений. Они служат в том числе и для оценки корректности работы самих приложений, а также для сбора статистики отказов системы и прогнозирования вероятных отказов. Такие функции отслеживают моменты перегрузки системы и автоматически разрешают их, уведомляя администратора о принятом решении. Подобные модули могут быть реализованы в виде локальных агентов, каждый из которых работает на одном сервере, а сами они обмениваются информацией друг с другом и центральной программой управления.\r\rУправление исходным кодом \rДля групповой разработки важны системы контроля исходного кода. Такие системы решают по крайней мере две задачи: хранение всех версий каждого экземпляра исходного кода (версии файлов) и разрешение конфликтов одновременного доступа разработчиков к одному экземпляру исходного кода (слияние исходных текстов, согласованность группы файлов проекта и т.п.)\rКонтролю подвергается не только собственно код модулей, но и код скриптов генерации схемы базы данных, а также собственно схема базы данных, которая может храниться в виде версий бинарных файлов, экспортированных во внутренний формат СУБД схем баз данных. Дело проектировщиков - предусмотреть наличие таких механизмов разработки, дело прикладных программистов - придерживаться установленных правил групповой разработки. Часто ведущие исполнители проектов не доверяют системам контроля исходного кода сливать правки в исходных текстах автоматически и частично или полностью контролируют этот процесс. Эта перестраховка во многих случаях себя оправдывает.\rПосле того как основной код модуля будет создан и зарегистрирован в системе контроля исходных текстов, каждая правка в нем должна быть помечена датой и именем автора правки. Правки должны сопровождаться ясными комментариями, которые располагаются в начале файла исходного кода. Также в начале исходного кода (в комментариях) описывается: для чего данный файл исходного кода создан, основные его функции, к какой части информационной системы он относится, кто автор. Формат комментария к правке может быть таким\r10.01.2000 Ivanov: authorization bug fixed (found by Petrov)\rЭто делается для того, чтобы через некоторое время можно было понять, кто и зачем внес данную правку. Также это помогает корректировать слияние исходного кода, если система контроля обнаружила несовместность правок и не может разрешить ее сама.\rФункции, структуры, наиболее важные переменные должны сопровождаться комментариями. Избегайте непонятных названий вида K1, Function10.\rДля крупных подсистем следует зафиксировать интерфейс обмена с другими подсистемами - формат данных, передаваемых подсистеме и получаемых из нее, а также формат вызовов функций и методов подсистемы. Это позволит добиться относительной независимости подсистем и снизить влияние изменений кода одной подсистемы на другую. Такой подход облегчает взаимодействие разработчиков разных модулей. Документировать придется только интерфейс обмена, а не весь код модуля целиком. Зачастую разработчику, вызывающему функцию модуля, требуется знать, что нужно передать и как обработать результат, а что происходит внутри - знать не обязательно. Единственное, что его интересует, - это правильная инициализация модуля, правильный прием результатов его работы и правильная выгрузка модуля. Взаимодействие компонентов не должно быть произвольным. Контролировать эти правила создания исходного кода в большинстве случаев приходится вручную.\rСледует отметить, что группа разработчиков должна иметь свой выделенный сервер баз данных, и, возможно, не один, а также выделенные рабочие места. Часто эти моменты далеко не очевидны руководству, и оно воспринимает это как совершенно ненужную трату средств. Сервер, обеспечивающий контроль исходного кода, также должен быть выделенным.\r\rРазмещение логики обработки \rВ отчетах аналитиков часто смешиваются три группы правил: правила для данных, процессов и интерфейса. На этапе проектирования эти правила предстоит выделить.\rВ правилах для данных формулируются условия, которым всегда должны удовлетворять данные. Такие правила безоговорочны; они могут быть неверными, но в этом случае они безоговорочно неверные. Правила данных определяются в схеме базы данных. Они могут контролироваться приложением только в том случае, когда мощности языка данных не хватает для их поддержки (например, поддержка сложных ограничений check, содержащих агрегатные функции, и т.п.).\rПравила для процессов определяют, что должно и что не должно делать приложение, и выводятся из модели функций, переданной аналитиками.\rВ правилах для интерфейсов устанавливается, что должен видеть конечный пользователь. Такие правила не касаются обработки данных, они выводятся из спецификации пользовательского интерфейса (например, к ним относится внешний вид экранных форм отчетов и документов).\rНиже приведем несколько правил, переданных аналитиками, и классифицируем их. Дело в том, что при проектировании группы правил не должны перемешиваться. Итак:\rТолько руководитель может санкционировать выплату вознаграждения. \rЭто правило только для процессов. В момент разрешения операции приложение должно проверить, есть ли у пользователя привилегии, разрешающие операцию, и нет ли привилегий, запрещающих операцию. Многие проектировщики пытаются реализовать такие правила, как правила данных. Но связь здесь зависит от времени, а не является постоянной (руководитель может быть смещен, подчиненный может стать руководителем, для временных групп работников это процесс постоянный).\rОбновление записей о платежах запрещено. \rЭто правило для данных. Оно не изменяется во времени. Такое правило можно реализовать с помощью триггера before update, он должен возвращать ошибку вызвавшему приложению. Откат транзакции внутри триггера в этом случае возможен только при отсутствии сложных транзакций, операции которых инициируют вызов данного триггера.\rВсе коды валют должны раскрываться; рядом с кодом указывается полное название валюты. \rЭто правило для интерфейса. На первый взгляд оно разумно, но практика показывает, что в большинстве случаев пользователи оперируют кодами, а не полными названиями валют. В большинстве организаций есть система сокращений, ставших частью языка и понятных всем. Такие сокращения не требуют раскрытия.\rВсе торговые операции, выполненные в воскресенье, учитываются в бухгалтерской книге за следующий понедельник. \rПодобные правила часто описываются аналитиками. На самом деле здесь два правила в одном, и их надо разделить. Первое гласит о том, что в бухгалтерских книгах не должно быть проводок, сделанных в воскресенье. Это правило данных. Оно может быть реализовано ограничением check. Второе правило - для процессов. Оно объясняет, как откорректировать дату: чтобы дата бухгалтерской проводки была правильной для «воскресенья», требуется прибавить один день. Это позволяет избежать случая, когда в приложении появляется оператор insert с заведомо отвергаемыми данными. Обработку такой ситуации можно предоставить хранимой процедуре, если ее язык достаточно мощный и допустимы вызовы внешних функций (в данном случае проверка дня недели) или имеется встроенная функция обработки календаря. Если же решение в виде хранимой процедуры невозможно, то это преобразование должно выполнить само приложение (вызов библиотечной функции или соответствующая организация объектов - как больше нравится). Другое решение подобной задачи - добавление производного атрибута. Вместо одного атрибута, хранящего дату, получаем два: один хранит реальную дату, второй - откорректированную для «воскресенья»; последний является производным. Это допустимо, если подобная денормализация не влечет за собой много аномалий модификации.\rПособие не должно выплачиваться лицу, если его доход превышает 300 руб. на человека. \rЭто правило для процессов. Здесь не говорится о том, какие данные образуют доход, в разные периоды времени источники дохода разные для одного и того же лица, состав семьи также меняется с течением времени.\rТочно такие же группы правил могут быть применены и для проектной документации. Эти группы могут отражать естественное разделение разработчиков на тех, кто реализует работу с базой данных, системные модули и интерфейсы пользователя.\rПолное описание интерфейсов на этапе проектирования возможно, если требования пользователя достаточно четко определены. На практике реализация интерфейса пользователя является наиболее часто изменяемой частью исходного кода. На этапе проектирования следует описать наиболее общие правила интерфейса, например горячие клавиши, используемые одинаково во всех программах.\rСледует отметить, что много проблем в интерфейсах пользователей создают сами проектировщики, если они неправильно выбирают макет и не учитывают разницы поведения системы на макете и на реальных данных. Наиболее частая ошибка проектирования интерфейса - отображение данных в форме для редактирования и блокирование их средствами СУБД до тех пор, пока пользователь не нажмет кнопку OK. Еще одна распространенная ошибка проектирования интерфейса - обработка длительных процессов, когда пользователь должен ждать ответа на запрос. Большинство проектировщиков не предусматривают единого вызова функции- обработчика события ожидания ответа. На макете запрос может проходить мгновенно, а в случае реальных данных это может составлять несколько минут. Если обработка ожидания ответа не предусмотрена (хотя бы в виде элементарного сообщения «подождите, идет обработка данных»), то пользователь думает, что приложение «зависло».\rС точки зрения логики расположения правил они должны быть реализованы так:\rправила интерфейса реализуются во внешней системе, например в Delphi, генераторах экранных форм и отчетов, поставляемых в составе средств разработки СУБД; \rправила для процессов могут быть реализованы как процедуры, вызываемые из внешней системы; \rправила данных следует реализовать средствами СУБД с помощью ограничений целостности. \rСледует отметить, что место правил интерфейса и правил данных всегда задано точно. Место правил процессов не всегда определено точно. Часть из них может быть реализована как вызовы утилит, поставляемых с СУБД или созданных другими группами разработчиков; часть может храниться в схеме как процедуры или пакеты; другие могут быть реализованы как библиотечные функции собственно информационной системы. Но любая процедура, реализующая правило процесса, должна быть отделена от кода, реализующего правила интерфейса, и не зависеть от него.\rВопросы проверки корректности ввода информации часто решаются проектировщиками неоднозначно. Как правило, пользователь настаивает на более детальном анализе ошибки ввода данных. Если вводимые значения выбираются из справочника, то здесь проблем меньше. Если они вводятся вручную, то возникает проблема предотвращения попадания в систему некорректных данных, например элементарных опечаток. Выбор значений из справочника - это форма реализации ограничений на уровне интерфейса. Проектировщики часто выбирают - делать проверку на уровне интерфейса или на уровне ограничений базы данных. Лучше реализовать оба правила: и интерфейсное - поскольку пользователь требует немедленной обратной связи, и правило данных - как дополнительную проверку корректности.\rПри проектировании интерфейсов старайтесь придерживаться стандартов де-факто. Ими могут быть приложения, часто используемые пользователем, например вызов контекстной подсказки по F1 и т.п.\rПри работе нескольких пользователей с одними и теми же объектами данных проектировщикам приходится решать задачи совместного редактирования документов, например оформление заказа. Клиент не всегда точно определяет список товаров и их количество, а потому оформление заказа может требовать некоторого времени (и оно больше, чем чистое время заполнения экранной формы оператором). Проектировщики допускают распространенную ошибку решения интерфейса пользователя для таких задач: в экранной форме отображается ввод позиций заказа, которые выбираются из справочников; выбранные данные блокируются до тех пор, пока оператор не нажмет OK. Это приводит к возникновению феномена «конвоя». А именно - несколько операторов после нажатия OK начинают ждать разрешения конфликтов средствами СУБД, в то время как большое количество конфликтов спровоцировал именно интерфейс. В самом деле время редактирования формы намного превосходит время обмена данными приложения пользователя и СУБД, соединение с СУБД простаивает до 99% времени - то есть ждет запроса, тогда как блокировка данных остается. Чем дольше время блокировки, тем больше вероятность конфликта. Здесь у некоторых проектировщиков возникает идея обвинить СУБД во всех грехах: она же блокирует, а мы вроде и ни при чем. Предположим, что СУБД не блокирует редактируемые данные, и они вступают в силу только по нажатию кнопки OK. Это, конечно, хорошо, но в течение времени редактирования другой пользователь мог изменить те же данные и зафиксировать свои изменения. СУБД транзакцию второго пользователя уже не пропустит - это типично для стратегии оптимистических блокировок. Возникает вопрос: если и так плохо, и так нехорошо, что делать? Проблема - в неверном взаимодействии интерфейса и обработки данных. Транзакция в любой СУБД начинается или явно, или по факту первого запроса данных. При описанном решении интерфейса транзакция оказывается слишком длинной. Ведь когда идет формирование списка заказываемых товаров, выполняются запросы к данным и транзакция уже начата. Можно принудительно разорвать операцию формирования заказа и его подтверждения. Здесь используют стандартные методы определения зон риска: так, в случае заказа товара это вход в зону потенциальной нехватки (например, заказали 90% товара, имеющегося на складе, - это следует отметить как сигнал потенциального риска продажи товара два раза). По кнопке OK выполняется подтверждение ранее зарезервированного товара и в результате вероятность конфликта снижается.\rАналогично решается задача одновременного редактирования двумя пользователями одного документа. Изменения пользователя (которые он сделал в экранной форме) запоминаются в специальном буфере данных; то, что он первоначально получил для редактирования, также запоминается в буфере начальных данных. По нажатию кнопки OK выполняется попытка зафиксировать изменения пользователя. На уровне правил данных (разрешение конфликтов транзакций) выполняется проверка отсутствия зафиксированных другим пользователем изменений. Если данные были кем-то изменены во время редактирования, то пользователь получает предупреждение об этом. Ему может быть предложено просмотреть изменения, которые находятся на данный момент в базе данных, и в зависимости от этого сохранить свои изменения поверх или отказаться от них. Естественно, это не требует от пользователя повторного заполнения всей формы (что очень раздражает пользователей).\r\rТрехуровневая архитектура \rПриложение разделяется на три части: 1) управление интерфейсом пользователя; 2) выполнение правил обработки данных; 3) выполнение функций сохранения и выборки данных.\rДанная архитектура позволяет четко разделить правила процессов и правила данных. Правила процессов реализуются исключительно на втором уровне. Этот уровень может представлять собой выделенный сервер приложений, который имеет право доступа к базе данных, а приложение пользователя обращается к базе данных только опосредовано. Одно из преимуществ такой архитектуры - использование нескольких СУБД в качестве хранилища данных. Все три части комплекса имеют фиксированные интерфейсы обмена данными, следовательно, имеет место изолированность уровня интерфейса пользователя от уровня базы данных за счет наличия ПО промежуточного слоя.\rСовременные СУБД позволяют реализовывать ПО промежуточного слоя как посредством мониторов транзакций (CICS, Enchina, Tuxedo и др.), так и на самом сервере баз данных в виде хранимых процедур и пакетов (частично или полностью). В этом случае код, реализующий интерфейс пользователя, не содержит вызовов предложений SQL, они «спрятаны» в код пакета или хранимой процедуры (здесь можно говорить об инкапсуляции, что некоторые авторы и делают). В таких случаях для решения пользовательского интерфейса применяют рекомендуемые, а не обязательные проверки правил. Данные при этом блокируются (они вообще не связаны с хранилищем данных) до тех пор, пока пользователь не захочет зафиксировать свои изменения (кнопка OK), а собственно изменения передаются атомарной транзакцией. Это позволяет эффективно использовать мониторы транзакций. Подобные решения рекомендованы для OLTP.\r\rМетрики генерации модулей \rОдна из задач проектирования кода - оценить, сколько времени на это нужно и какие средства будут при этом использоваться.\rВ большинстве проектов оценку времени разработки производят дважды:\rна основе аналитической документации. Здесь привлекаются разработчики, но не на уровне: «За сколько сделаешь? - А за сколько надо?». Следует учесть не только средства разработки, но и аппаратное обеспечение. Это наиболее оптимистические оценки; хорошо, если они будут превышены только на 50%; \rпосле выполнения большей части проектирования схемы данных и модулей. Этот набор оценок предполагает более глубокую детализацию. \rЕсли вы ни разу таких оценок не делали и вам непонятно, с чего начать, то разделите модули по группам: генерируется автоматически, простой, средней сложности, сложный, очень сложный.\rМетрика - это таблица плановой трудоемкости (столько-то дней и столько-то человек требуется). В метрике учитываются как минимум три составляющие: проектирование модуля, генерация его кода, тестирование модуля (в которое входит и тестирование связей модулей). В метрику лучше включить больше условий - это станет своеобразной страховкой от отставания от графика. Следует учитывать как минимум следующие факторы:\rстабильность модели данных и степень ее изменения в течение разработки; \rстабильность модели функций и степень ее изменения в течение разработки; \rуровень квалификации персонала; \rпригодность выбранных средств разработки; \rиспользование автоматических генераторов кода (например, экранных форм и отчетов); \rсоответствие среды требованиям средств разработки (станции разработчиков, серверы, сеть, операционные системы и т.п.). \rСледует с очень большой осторожностью относиться к модулям, которые отмечены как сложные и для которых выбрано относительно низкофункциональное средство. Учтите также зависимости модулей и возможности накопления отставания от графика.\r\rМегамодули \rЭто весьма распространенная особенность интерактивных систем. Создаются сложнейшие экранные формы с десятками страниц, один DML-запрос инициирует пару десятков триггеров и т.д. Задачу уменьшения сложности модулей сложно решить, если используются средства ускоренной разработки приложений. Решите, что вам нужно в этом модуле, а что - нет. И вряд ли мегамодуль - это то, о чем мечтал пользователь. Он вряд ли обрадуется, если будет листать страницы формы и уже на пятой забудет, что было в начале.\rМегамодули появляются и при пакетной обработке - они строят пакетные задания и отправляют их на обработку. Тестировать такие модули очень сложно. Возможно, что более простым решением окажется построение управляющей структуры для построения пакета.\rМегамодули в отчетах выглядят жутковато. Это происходит, когда проектировщики пытаются в одном отчете соединить несколько похожих отчетов. Пользователю совершенно все равно, каким количеством модулей обслуживается его отчет: чем меньше лишней информации он будет содержать, тем лучше.\rВ оперативных приложениях главная причина появления мегамодуля состоит в том, что аналитики указывают множество ненужных ограничений данных - например требования наличия в базе информации о покупателе только в том случае, если от его имени выполнен хотя бы один заказ товара. При обработке заказа это требование порождает проверку: «новый это покупатель или уже зарегистрированный в системе, и если новый, то когда его регистрировать». Можно разрешить покупателям «существовать» независимо от заказов, а если вам хочется, чтобы покупатели непременно были жестко связаны с заказами, - введите супертип «потенциальный клиент», и если такой клиент делает хотя бы один заказ, то он становится покупателем. Таким образом, вызовы двух экранных форм станут уже независимыми от реализации транзакций в базе данных.\r\rМакеты \rПри проектировании всегда возникает вопрос, стоит ли тратить драгоценное время на создание макетов. Это элементы (большие или маленькие) реализации реальных задач; они служат для демонстрации потенциальных функциональных возможностей, для изучения мнения пользователей. Макет - это средства представления идей в визуальной форме, поскольку, как говорят, лучше один раз увидеть.\rСколько функций выбрать для макетирования и каких, зависит от количества времени на выполнение этих работ и количества людей, которых можно к этому привлечь. Макет - это своего рода витрина для пользователей. Это означает, что большинство функций реализуют правила интерфейса. Успешная демонстрация может обеспечить заключение контракта на разработку, но есть и другая сторона вопроса: проследите, чтобы пользователь не принял внешнюю оболочку за готовую программу и не надеялся получить готовую систему через пару недель.\rДругое назначение макетов - проверить проектные решения. Для этого годятся выявленные на этапе анализа критические участки системы. Хорошими вариантами будут несколько сложных отчетов; часть OLTP, часть OLAP. Это позволит привлечь к процессу проектирования группы тестеров, для того чтобы они проверили производительность системы.\r\rОписание \rДля того чтобы разработчики могли правильно сгенерировать модуль, его техническая спецификация должна быть четкой и достаточно подробной.\rОписание экранных форм и отчетов должно содержать:\rописание назначения формы (что делает); \rданные навигации (откуда вызвана, что может вызвать сама); \rформат вызова формы; \rсписок входных параметров и параметров по умолчанию; \rсписок выходных параметров и правила их обработки; \rописание обработки (события внутри модуля и их обработка); \rсписок ошибок, которые генерируются в процессе обработки формы и реакция на них; \rограничения доступа к форме (каковы привилегии, разрешающие действия над формой и ее элементами, каковы привилегии, запрещающие эти действия). \rОписание пакетных процессов должно содержать:\rописание функции, выполняемой пакетом; \rданные навигации (откуда вызван пакет, что может вызвать сам); \rформат вызова пакета; \rсписок входных параметров и параметров по умолчанию; \rсписок выходных параметров и правила их обработки; \rописание обработки (события внутри пакета и их обработка); \rсписок ошибок, которые генерируются в процессе обработки пакета и реакция на них; \rвосстановление (обработка возникновения исключения в середине обработки пакета и реакция на него); \rвероятные блокировки (потенциальные конфликты и обработка ожидания); \rнесовместимость с другими пакетными заданиями, отчетами и т.п. (эта информация для планировщика задач); \rрегистрацию и аудит; \rожидаемое состояние базы данных после выполнения пакета и проверку целостности данных; \rограничения доступа (каковы привилегии, разрешающие вызов пакета, каковы привилегии, запрещающие этот вызов). \r\rОбработка ошибок \rОбработка ошибок - это одна из подсистем, которая часто портит жизнь проектировщикам. Пользователи требуют вразумительных сообщений об ошибках. Им не понравится, если при попытке удалить поставщика информационная система выдаст сообщение вида «SQL0532N a parent row cannot be deleted because the relationship CLIENT_ restricts deletion» вместо того, чтобы сообщить о невозможности удаления поставщика, если имеются факты поставки им товара на склад.\rРекомендуется сделать несколько уровней обработки ошибок. Первый уровень доступен в слое модулей, отвечающих непосредственно за вызовы SQL. Этот слой обрабатывает коды ошибок, передаваемые интерфейсом вызовов СУБД. Известно, что коды ошибок, детектирующие одно и то же нарушение ограничений данных, в разных СУБД разные. Поэтому, если ваше предложение имеет хотя бы вероятность работы с несколькими СУБД, вам придется интерпретировать коды возврата СУБД и построить матрицу соответствия кода возврата СУБД и кода ошибки, используемого в подсистеме обработки ошибок. Никакие модули, кроме интерпретатора кодов, не должны иметь доступа к кодам возврата СУБД. Вся обработка ошибок в информационной системе должна строиться на внутренних кодах возврата. Множество этих кодов может расширяться, но значения кодов изменять нельзя. Требуется проанализировать, в каком формате СУБД возвращает код. Это может быть:\rкод ошибки, код ошибки операционной системы; \rsqlca.sqlcode, sqlca.sqlstate; \rsqlca.sqlcode, sqlca.sqlstate, код ошибки операционной системы. \rВнутренняя ошибка может состоять из трех компонентов:\rsqlcode - собственно код ошибки; \rsqlstate - уточняющий код состояния и классификации ошибки; \roscode - сопровождающий код ошибки операционной системы. \rПервые два компонента обеспечивают поддержку стандарта, последний позволяет использовать эту же подсистему обработки ошибок для работы всех подсистем. Следует отметить, что некоторые СУБД возвращают код ошибки операционной системы в случае сбоев создания файлов, чтения страниц и т.п. Таким образом, подобная структура может обеспечить достаточную универсальность обработки ошибок. Тип ошибки - ошибка СУБД или ошибка определенного компонента информационной системы - будет контролироваться с помощью кода sqlstate. Как правило, sqlcode - это interger, sqlstate - это char(8) (длина выравнена на 4, что следует делать, например, для RS/6000, SUN SPARC, ALPHA, SGI), oscode - это integer. Например, код -532 интерпретируется в (-906, ’23001’, 0).\rВторой слой обработки ошибок - это контекстная интерпретация внутреннего кода возврата. С каждым интерфейсным модулем может быть сопоставлен некоторый набор параметров интерпретации кода возврата. Например, для модуля редактирования списка поставщиков код (-906, ’23001’, 0) соответствует строке сообщения «нельзя удалить поставщика, поскольку есть связанные с ним поставки товара». По контексту этого исключения можно по требованию пользователя показать список поставок данного поставщика.",
         "0",
         "[['этап', 'разработка', 'проект', 'заключительные', 'стадия', 'проектирование', 'спецификация', 'функция', 'обработка', 'иерархия', 'функция', 'этап', 'анализ', 'создать', 'иерархия', 'функция', 'дополняться', 'диаграммами', 'поток', 'изменение', 'состояние'], ['проверить', 'являться', 'функция', 'иерархия', 'атомарный'], ['ответить', 'вопрос', 'смысл', 'выполнение', 'часть', 'функция'], ['иметь', 'дело', 'иерархия', 'вероятно', 'наличие', 'функция', 'несколько', 'место', 'иерархия'], ['крыться', 'ошибка', 'анализ', 'аналитик', 'перепутать', 'функция', 'механизм'], ['описание', 'функция', 'аналитик', 'указать', 'скобках', 'объект', 'er', 'модель', 'сущность', 'атрибут', 'идти', 'речь', 'выбрать', 'товар', 'накладный', 'список', 'товар', 'items', 'храниться', 'склад', 'store'], ['указание', 'стать', 'хороший', 'упражнение', 'приёмка', 'отчёт', 'аналитик', 'заодно', 'убедиться', 'правильно', 'понимать', 'друг', 'друга'], ['параллельно', 'проверить', 'сущность', 'использоваться', 'ни', 'функция', 'помочь', 'сделать', 'матрица', 'функция', 'атрибуты', 'отражать', 'факт', 'использование', 'функция', 'атрибут', 'сущность'], ['правило', 'однозначный', 'отображение', 'функция', 'модуль'], ['однозначный', 'соответствие', 'вероятный', 'выполнить', 'анализ', 'проектирование'], ['зачастую', 'схожий', 'выполнять', 'действие', 'функция', 'объединять', 'разный', 'контекст'], ['сложный', 'функция', 'разбивать', 'простой', 'модуль'], ['функция', 'преобразуют', 'ограничение', 'база', 'constraints', 'триггеры', 'хранить', 'процедура'], ['какой', 'общий', 'способ', 'отображение', 'функция', 'модуль', 'существовать'], ['требоваться', 'время', 'терпение', 'опыт'], ['проектировщик', 'менять', 'количество', 'состав', 'модуль', 'течение', 'процесс', 'проектирование', 'правило', 'исключение'], ['группа', 'модуль', 'присутствовать', 'проект', 'работа', 'база', 'обработка', 'код_возврат', 'субд', 'установка', 'соединение', 'субд', 'параметр', 'выполнение', 'некурсорного', 'запрос', 'ddl-', 'dml', 'операция', 'выполнение', 'выборка', 'вызов', 'хранить', 'процедура', 'обработка', 'ответ', 'операция', 'завершение', 'транзакция', 'функциональный', 'модуль', 'модуль', 'реализовать', 'бизнес', 'процессы', 'модуль', 'изолировать', 'обработка', 'запрос', 'база', 'интерфейс', 'предоставлять', 'пользователь', 'системный', 'модуль', 'средство', 'управление', 'приложение', 'средство', 'обмен', 'данными', 'внешний', 'система', 'планировщик', 'пакетный', 'задание', 'менеджер', 'печать', 'документ', 'модуль', 'резервный', 'копирование', 'модуль', 'архивирование', 'модуль', 'автоматический', 'восстановление', 'сбой', 'средство', 'администрирование', 'пользователь', 'система', 'регистрация', 'назначение', 'право', 'внешний', 'аутентификация', 'средство', 'создание', 'нерегламентированный', 'запрос', 'база'], ['приём', 'построение', 'расширять', 'система', 'состоять', 'создание', 'независимость', 'два', 'слой', 'обработка', 'запрос', 'интерфейс', 'предоставляемого', 'пользователь'], ['специально', 'кодировать', 'запрос', 'имя', 'функция', 'номер'], ['текст', 'sql', 'запрос', 'скрыть', 'разработчик', 'интерфейс', 'иметь', 'доступ', 'возвращаемому', 'запрос', 'множество', 'код', 'ошибка', 'выборка'], ['формат', 'код', 'ошибка', 'выборка', 'фиксироваться'], ['позволять', 'проектировщик', 'схема', 'база', 'изменять', 'sql', 'запрос', 'изменение', 'отражаться', 'процесс', 'создание', 'интерфейс'], ['аналогичный', 'независимость', 'реализоваться', 'слой', 'функция', 'обеспечивать', 'вызов', 'интерфейс', 'предоставляемого', 'субд', 'выполнение', 'запрос'], ['слой', 'функция', 'использовать', 'вызов', 'native', 'интерфейса', 'субд', 'стандартный', 'интерфейс', 'odbc'], ['важный', 'слой', 'функция', 'обработка', 'ошибка'], ['выполнение', 'запрос', 'база', 'предусматривать', 'обработка', 'исключение', 'нарушение', 'ограничение', 'целостность'], ['отдельно', 'требоваться', 'предусмотреть', 'обработка', 'конфликт', 'транзакция', 'принудительный', 'откат', 'текущий', 'транзакция', 'вследствие', 'разрешение', 'конфликт', 'тип', 'deadlock'], ['проектировщик', 'понимать', 'особенность', 'многопользовательский', 'работа', 'реализовать', 'использовать', 'проект', 'субд'], ['проектирование', 'поток', 'транзакция', 'снижение', 'конфликт', 'сложный', 'задача', 'проектирование'], ['больший', 'проект', 'важный', 'наличие', 'функция', 'мониторинг', 'работа', 'приложение'], ['служить', 'число', 'оценка', 'корректность', 'работа', 'приложение', 'сбор', 'статистика', 'отказ', 'система', 'прогнозирование', 'вероятный', 'отказ'], ['функция', 'отслеживать', 'момент', 'перегрузка', 'система', 'автоматически', 'разрешать', 'уведомлять', 'администратор', 'принять', 'решение'], ['модуль', 'реализовать', 'вид', 'локальный', 'агент', 'работать', 'сервер', 'обмениваться', 'информация', 'друг', 'другом', 'центральный', 'программа', 'управление'], ['управление', 'исходный_код', 'групповой', 'разработка', 'важный', 'система', 'контроль', 'исходный_код'], ['система', 'решать', 'крайний', 'мера', 'два', 'задача', 'хранение', 'версия', 'каждый', 'экземпляр', 'исходный_код', 'версия', 'файл', 'разрешение', 'конфликт', 'одновременный', 'доступ', 'разработчик', 'экземпляр', 'исходный_код', 'слияние', 'исходный', 'текст', 'согласованность', 'группа', 'файл', 'проект', 'т.п.', 'контролю', 'подвергаться', 'код', 'модуль', 'код', 'скрипт', 'генерация', 'схема', 'база', 'схема', 'база', 'храниться', 'вид', 'версия', 'бинарный', 'файл', 'экспортировать', 'внутренний', 'формат', 'субд', 'схема', 'база'], ['дело', 'проектировщик', 'предусмотреть', 'наличие', 'механизм', 'разработка', 'дело', 'прикладной', 'программист', 'придерживаться', 'установить', 'правило', 'групповой', 'разработка'], ['ведущий', 'исполнитель', 'проект', 'доверять', 'система', 'контроль', 'исходный_код', 'сливать', 'правка', 'исходный', 'текст', 'автоматически', 'частично', 'полностью', 'контролировать', 'процесс'], ['перестраховка', 'многих', 'случай', 'оправдывать'], ['основной', 'код', 'модуль', 'создать', 'зарегистрировать', 'система', 'контроль', 'исходный', 'текст', 'правка', 'пометить', 'дата', 'имя', 'автор', 'правка'], ['правка', 'сопровождаться', 'ясный', 'комментариями', 'располагаться', 'файл', 'исходный_код'], ['исходный_код', 'комментарий', 'описываться', 'файл', 'исходный_код', 'создать', 'основной', 'функция', 'часть', 'информационный', 'система', 'относиться', 'автор'], ['формат', 'комментарий', 'правка', '10.01.2000', 'ivanov', 'authorization', 'bug', 'fixed', 'found', 'by', 'petrov', 'делаться', 'некоторый', 'время', 'понять', 'внести', 'данную', 'правка'], ['помогать', 'корректировать', 'слияние', 'исходный_код', 'система', 'контроль', 'обнаружить', 'несовместность', 'правка', 'разрешить'], ['функция', 'структура', 'важный', 'переменный', 'сопровождаться', 'комментариями'], ['избегать', 'непонятный', 'название', 'вид', 'k1', 'function10'], ['крупный', 'подсистема', 'зафиксировать', 'интерфейс', 'обмен', 'подсистемами', 'формат', 'передавать', 'подсистема', 'получать', 'формат', 'вызов', 'функция', 'метод', 'подсистема'], ['позволить', 'добиться', 'относительный', 'независимость', 'подсистема', 'снизить', 'влияние', 'изменение', 'код', 'подсистема', 'другую'], ['подход', 'облегчать', 'взаимодействие', 'разработчик', 'разный', 'модуль'], ['документировать', 'прийтись', 'интерфейс', 'обмен', 'код', 'модуль', 'целиком'], ['зачастую', 'разработчик', 'вызывать', 'функция', 'модуль', 'требоваться', 'знать', 'передать', 'обработать', 'результат', 'происходить', 'внутри', 'знать', 'обязательно'], ['единственный', 'интересовать', 'правильный', 'инициализация', 'модуль', 'правильный', 'приём', 'результат', 'работа', 'правильный', 'выгрузка', 'модуль'], ['взаимодействие', 'компонент', 'произвольный'], ['контролировать', 'правило', 'создание', 'исходный_код', 'большинство', 'случай', 'приходиться', 'вручную'], ['отметить', 'группа', 'разработчик', 'выделить', 'сервер', 'база', 'выделить', 'рабочий', 'место'], ['момент', 'очевидный', 'руководство', 'воспринимать', 'совершенно', 'ненужный', 'трата', 'средство'], ['сервер', 'обеспечивать', 'контроль', 'исходный_код', 'выделить'], ['размещение', 'логика', 'обработка', 'отчёт', 'аналитик', 'смешиваться', 'три', 'группа', 'правило', 'правило_процесс', 'интерфейс'], ['этап', 'проектирование', 'правило', 'предстоять', 'выделить'], ['правило', 'формулироваться', 'условие', 'удовлетворять'], ['правило', 'безоговорочный', 'неверный', 'случай', 'безоговорочно', 'неверный'], ['правило', 'определяться', 'схема', 'база'], ['контролироваться', 'приложение', 'случай', 'мощность', 'язык', 'хватать', 'поддержка', 'поддержка', 'сложный', 'ограничение', 'check', 'содержать', 'агрегатный', 'функция', 'т.п.'], ['правило_процесс', 'определять', 'делать', 'приложение', 'выводиться', 'модель', 'функция', 'передать', 'аналитик'], ['правило', 'интерфейс', 'устанавливаться', 'видеть', 'конечный', 'пользователь'], ['правило', 'касаться', 'обработка', 'выводиться', 'спецификация', 'пользовательский', 'интерфейс', 'относиться', 'внешний', 'вид', 'экранный_форма', 'отчёт', 'документ'], ['привести', 'правило', 'передать', 'аналитик', 'классифицировать'], ['дело', 'проектирование', 'группа', 'правило', 'перемешиваться'], ['руководитель', 'санкционировать', 'выплата', 'вознаграждение'], ['правило_процесс'], ['момент', 'разрешение', 'операция', 'приложение', 'проверить', 'пользователь', 'привилегия', 'разрешать', 'операция', 'привилегия', 'запрещать', 'операция'], ['проектировщик', 'пытаться', 'реализовать', 'правило', 'правило'], ['связь', 'зависеть', 'время', 'являться', 'постоянный', 'руководитель', 'сместить', 'подчиненный', 'руководитель', 'временной', 'группа', 'работник', 'процесс', 'постоянный'], ['обновление', 'запись', 'платёж', 'запретить'], ['правило'], ['изменяться', 'время'], ['правило', 'реализовать', 'помощь', 'триггер', 'before', 'update', 'возвращать', 'ошибка', 'вызвать', 'приложение'], ['откат', 'транзакция', 'внутри', 'триггер', 'случай', 'возможный', 'отсутствие', 'сложный', 'транзакция', 'операция', 'инициировать', 'вызов', 'триггер'], ['код', 'валюта', 'раскрываться', 'код', 'указываться', 'полный', 'название', 'валюта'], ['правило', 'интерфейс'], ['первый', 'взгляд', 'разумный', 'практика', 'показывать', 'большинство', 'случай', 'пользователь', 'оперировать', 'код', 'полный', 'название', 'валюта'], ['большинство', 'организация', 'система', 'сокращение', 'стать', 'часть', 'язык', 'понятный'], ['сокращение', 'требовать', 'раскрытие'], ['торговый', 'операция', 'выполнить', 'воскресение', 'учитываться', 'бухгалтерский', 'книга', 'следующий', 'понедельник'], ['правило', 'описываться', 'аналитик'], ['дело', 'два', 'правило', 'разделить'], ['первый', 'гласить', 'бухгалтерский', 'книга', 'проводок', 'сделать', 'воскресение'], ['правило'], ['реализовать', 'ограничение', 'check'], ['второй', 'правило_процесс'], ['объяснять', 'откорректировать', 'дата', 'дата', 'бухгалтерский', 'проводка', 'правильный', 'воскресение', 'требоваться', 'прибавить', 'день'], ['позволять', 'избежать', 'случай', 'приложение', 'появляться', 'оператор', 'insert', 'заведомо', 'отвергаемыми', 'данными'], ['обработка', 'ситуация', 'предоставить', 'хранимой', 'процедура', 'язык', 'достаточно', 'мощный', 'допустимый', 'вызов', 'внешний', 'функция', 'случай', 'проверка', 'день', 'неделя', 'иметься', 'встроенная', 'функция', 'обработка', 'календарь'], ['решение', 'вид', 'хранить', 'процедура', 'невозможный', 'преобразование', 'выполнить', 'приложение', 'вызов', 'библиотечный', 'функция', 'соответствующий', 'организация', 'объект', 'нравиться'], ['решение', 'подобный', 'задача', 'добавление', 'производный', 'атрибут'], ['атрибут', 'хранить', 'дата', 'получать', 'два', 'хранить', 'реальный', 'дата', 'второй', 'откорректированную', 'воскресение', 'последний', 'являться', 'производный'], ['допустимый', 'денормализация', 'влечь', 'аномалия', 'модификация'], ['пособие', 'выплачиваться', 'лицо', 'доход', 'превышать', '300', 'руб.', 'человек'], ['правило_процесс'], ['говориться', 'образовать', 'доход', 'разный', 'период', 'время', 'источник', 'доход', 'разный', 'лицо', 'состав', 'семья', 'меняться', 'течение', 'время'], ['группа', 'правило', 'применить', 'проектный', 'документация'], ['группа', 'отражать', 'естественный', 'разделение', 'разработчик', 'реализовать', 'работа', 'база', 'системный', 'модуль', 'интерфейс', 'пользователь'], ['полный', 'описание', 'интерфейс', 'этап', 'проектирование', 'требование', 'пользователь', 'достаточно', 'четко', 'определить'], ['практика', 'реализация', 'интерфейс', 'пользователь', 'являться', 'изменять', 'часть', 'исходный_код'], ['этап', 'проектирование', 'описать', 'общий', 'правило', 'интерфейс', 'горячий', 'клавиша', 'использовать', 'одинаково', 'программа'], ['отметить', 'проблема', 'интерфейс', 'пользователь', 'создавать', 'проектировщик', 'неправильно', 'выбирать', 'макет', 'учитывать', 'разница', 'поведение', 'система', 'макет', 'реальный'], ['частый', 'ошибка', 'проектирование', 'интерфейс', 'отображение', 'форма', 'редактирование', 'блокирование', 'средство', 'субд', 'пользователь', 'нажать', 'кнопка', 'ok'], ['распространенная', 'ошибка', 'проектирование', 'интерфейс', 'обработка', 'длительный', 'процесс', 'пользователь', 'ждать', 'ответ', 'запрос'], ['большинство', 'проектировщик', 'предусматривать', 'единый', 'вызов', 'функции-', 'обработчик', 'событие', 'ожидание', 'ответ'], ['макет', 'запрос', 'проходить', 'мгновенно', 'случай', 'реальный', 'составлять', 'минута'], ['обработка', 'ожидание', 'ответ', 'предусмотреть', 'вид', 'элементарный', 'сообщение', 'подождать', 'идти', 'обработка', 'пользователь', 'думать', 'приложение', 'зависло'], ['точка', 'зрение', 'логика', 'расположение', 'правило', 'реализовать', 'правило', 'интерфейс', 'реализоваться', 'внешний', 'система', 'delphi', 'генератор', 'экранный_форма', 'отчёт', 'поставлять', 'состав', 'средство', 'разработка', 'субд', 'правило_процесс', 'реализовать', 'процедура', 'вызывать', 'внешний', 'система', 'правило', 'реализовать', 'средство', 'субд', 'помощь', 'ограничение', 'целостность'], ['отметить', 'место', 'правило', 'интерфейс', 'правило', 'задать'], ['место', 'правило_процесс', 'определить'], ['часть', 'реализовать', 'вызов', 'утилита', 'поставлять', 'субд', 'создать', 'группа', 'разработчик', 'часть', 'храниться', 'схема', 'процедура', 'пакет', 'реализовать', 'библиотечный', 'функция', 'информационный', 'система'], ['процедура', 'реализовать', 'правило_процесс', 'отделить', 'код', 'реализовать', 'правило', 'интерфейс', 'зависеть'], ['вопрос', 'проверка', 'корректность', 'ввод', 'информация', 'решаться', 'проектировщик', 'неоднозначно'], ['правило', 'пользователь', 'настаивать', 'детальный', 'анализ', 'ошибка', 'ввод'], ['вводить', 'значение', 'выбираться', 'справочник', 'проблема'], ['вводиться', 'вручную', 'возникать', 'проблема', 'предотвращение', 'попадание', 'система', 'некорректный', 'элементарный', 'опечатка'], ['выбор', 'значение', 'справочник', 'форма', 'реализация', 'ограничение', 'уровень', 'интерфейс'], ['проектировщик', 'выбирать', 'делать', 'проверка', 'уровень', 'интерфейс', 'уровень', 'ограничение', 'база'], ['лучше', 'реализовать', 'правило', 'интерфейсный', 'пользователь', 'требовать', 'немедленный', 'обратный', 'связь', 'правило', 'дополнительный', 'проверка', 'корректность'], ['проектирование', 'интерфейс', 'стараться', 'придерживаться', 'стандарт', 'факто'], ['приложение', 'использовать', 'пользователь', 'вызов', 'контекстный', 'подсказка', 'f1', 'т.п.', 'работа', 'несколько', 'пользователь', 'объект', 'проектировщикам', 'приходиться', 'решать', 'задача', 'совместный', 'редактирование', 'документ', 'оформление', 'заказ'], ['клиент', 'определять', 'список', 'товар', 'количество', 'оформление', 'заказ', 'требовать', 'некоторый', 'время', 'чистый', 'время', 'заполнение', 'экранный_форма', 'оператор'], ['проектировщик', 'допускать', 'распространенную', 'ошибка', 'решение', 'интерфейс', 'пользователь', 'задача', 'экранный_форма', 'отображаться', 'ввод', 'позиция', 'заказ', 'выбираться', 'справочник', 'выбрать', 'блокироваться', 'оператор', 'нажать', 'ok'], ['приводить', 'возникновение', 'феномен', 'конвой'], ['оператор', 'нажатие', 'ok', 'начинать', 'ждать', 'разрешение', 'конфликт', 'средство', 'субд', 'время', 'большой', 'количество', 'конфликт', 'спровоцировать', 'интерфейс'], ['дело', 'время', 'редактирование', 'форма', 'намного', 'превосходить', 'время', 'обмен', 'данными', 'приложение', 'пользователь', 'субд', 'соединение', 'субд', 'простаивать', '99', 'время', 'ждать', 'запрос', 'блокировка', 'оставаться'], ['долгий', 'время', 'блокировка', 'вероятность', 'конфликт'], ['проектировщик', 'возникать', 'идея', 'обвинить', 'субд', 'грех', 'блокировать', 'ни'], ['предположить', 'субд', 'блокировать', 'редактировать', 'вступать', 'сила', 'нажатие', 'кнопка', 'ok'], ['течение', 'время', 'редактирование', 'пользователь', 'изменить', 'зафиксировать', 'изменение'], ['субд', 'транзакция', 'второй', 'пользователь', 'пропустить', 'типичный', 'стратегия', 'оптимистический', 'блокировка'], ['возникать', 'вопрос', 'плохой', 'нехороший', 'делать'], ['проблема', 'неверный', 'взаимодействие', 'интерфейс', 'обработка'], ['транзакция', 'субд', 'начинаться', 'факт', 'первый', 'запрос'], ['описать', 'решение', 'интерфейс', 'транзакция', 'оказываться', 'длинный'], ['идти', 'формирование', 'список', 'заказывать', 'товар', 'выполняться', 'запрос', 'данным', 'транзакция', 'начать'], ['принудительно', 'разорвать', 'операция', 'формирование', 'заказ', 'подтверждение'], ['использовать', 'стандартный', 'метод', 'определение', 'зона', 'риск', 'случай', 'заказ', 'товар', 'вход', 'зона', 'потенциальный', 'нехватка', 'заказать', '90', 'товар', 'иметься', 'склад', 'отметить', 'сигнал', 'потенциальный', 'риск', 'продажа', 'товар', 'два', 'раз'], ['кнопка', 'ok', 'выполняться', 'подтверждение', 'зарезервировать', 'товар', 'результат', 'вероятность', 'конфликт', 'снижаться'], ['аналогично', 'решаться', 'задача', 'одновременный', 'редактирование', 'два', 'пользователь', 'документ'], ['изменение', 'пользователь', 'сделать', 'экранный_форма', 'запоминаться', 'специальный', 'буфер', 'первоначально', 'получить', 'редактирование', 'запоминаться', 'буфер', 'начальный'], ['нажатие', 'кнопка', 'ok', 'выполняться', 'попытка', 'зафиксировать', 'изменение', 'пользователь'], ['уровень', 'правило', 'разрешение', 'конфликт', 'транзакция', 'выполняться', 'проверка', 'отсутствие', 'зафиксировать', 'пользователь', 'изменение'], ['изменить', 'время', 'редактирование', 'пользователь', 'получать', 'предупреждение'], ['предложить', 'просмотреть', 'изменение', 'находиться', 'момент', 'база', 'зависимость', 'сохранить', 'изменение', 'поверх', 'отказаться'], ['естественно', 'требовать', 'пользователь', 'повторный', 'заполнение', 'форма', 'раздражать', 'пользователь'], ['трехуровневая', 'архитектура', 'приложение', 'разделяться', 'три', 'часть', '1', 'управление', 'интерфейс', 'пользователь', '2'], ['выполнение', 'правило', 'обработка', '3'], ['выполнение', 'функция', 'сохранение', 'выборка'], ['архитектура', 'позволять', 'четко', 'разделить', 'правило_процесс', 'правило'], ['правило_процесс', 'реализоваться', 'исключительно', 'второй', 'уровень'], ['уровень', 'представлять', 'выделить', 'сервер', 'приложение', 'право', 'доступ', 'база', 'приложение', 'пользователь', 'обращаться', 'база', 'опосредовано'], ['преимущество', 'архитектура', 'использование', 'несколько', 'субд', 'качество', 'хранилище'], ['три', 'часть', 'комплекс', 'иметь', 'фиксированный', 'интерфейс', 'обмен', 'данными', 'следовательно', 'место', 'изолированность', 'уровень', 'интерфейс', 'пользователь', 'уровень', 'база', 'счёт', 'наличие', 'промежуточный', 'слой'], ['современный', 'субд', 'позволять', 'реализовывать', 'промежуточный', 'слой', 'монитор', 'транзакция', 'cics', 'enchina', 'tuxedo', 'и др.', 'сервер', 'база', 'вид', 'хранить', 'процедура', 'пакет', 'частично', 'полностью'], ['случай', 'код', 'реализовать', 'интерфейс', 'пользователь', 'содержать', 'вызов', 'предложение', 'sql', 'спрятать', 'код', 'пакет', 'хранить', 'процедура', 'говорить', 'инкапсуляция', 'автор', 'делать'], ['случай', 'решение', 'пользовательский', 'интерфейс', 'применять', 'рекомендовать', 'обязательный', 'проверка', 'правило'], ['блокироваться', 'связать', 'хранилище', 'пользователь', 'захотеть', 'зафиксировать', 'изменение', 'кнопка', 'ok', 'изменение', 'передаваться', 'атомарный', 'транзакция'], ['позволять', 'эффективно', 'использовать', 'монитор', 'транзакция'], ['решение', 'рекомендовать', 'oltp'], ['метрики', 'генерация', 'модуль', 'задача', 'проектирование', 'код', 'оценить', 'время', 'средство', 'использоваться'], ['большинство', 'проект', 'оценка', 'время', 'разработка', 'производить', 'дважды', 'основа', 'аналитический', 'документация'], ['привлекаться', 'разработчик', 'уровень', 'сделать'], [], ['учесть', 'средство', 'разработка', 'аппаратный', 'обеспечение'], ['оптимистический', 'оценка', 'превысить', '50', 'выполнение', 'больший', 'часть', 'проектирование', 'схема', 'модуль'], ['набор', 'оценка', 'предполагать', 'глубокий', 'детализация'], ['ни', 'разу', 'оценка', 'делать', 'непонятный', 'начать', 'разделить', 'модуль', 'группа', 'генерироваться', 'автоматически', 'простой', 'средний', 'сложность', 'сложный', 'сложный'], ['метрика', 'таблица', 'плановый', 'трудоёмкость', 'столько', 'день', 'столько', 'человек', 'требоваться'], ['метрика', 'учитываться', 'минимум', 'три', 'составляющие', 'проектирование', 'модуль', 'генерация', 'код', 'тестирование', 'модуль', 'входить', 'тестирование', 'связь', 'модуль'], ['метрика', 'лучше', 'включить', 'условие', 'стать', 'своеобразный', 'страховка', 'отставание', 'график'], ['учитывать', 'минимум', 'следующий', 'фактор', 'стабильность', 'модель', 'степень', 'изменение', 'течение', 'разработка', 'стабильность', 'модель', 'функция', 'степень', 'изменение', 'течение', 'разработка', 'уровень', 'квалификация', 'персонал', 'пригодность', 'выбрать', 'средство', 'разработка', 'использование', 'автоматический', 'генератор', 'код', 'экранный_форма', 'отчёт', 'соответствие', 'среда', 'требование', 'средство', 'разработка', 'станция', 'разработчик', 'сервер', 'сеть', 'операционный', 'система', 'т.п.'], ['большой', 'осторожность', 'относиться', 'модуль', 'отметить', 'сложный', 'выбрать', 'относительно', 'низкофункциональное', 'средство'], ['учесть', 'зависимость', 'модуль', 'возможность', 'накопление', 'отставание', 'график'], ['мегамодули', 'весьма', 'распространенная', 'особенность', 'интерактивный', 'система'], ['создаваться', 'сложный', 'экранный_форма', 'десяток', 'страница', 'dml', 'запрос', 'инициировать', 'пара', 'десяток', 'триггер', 'т.д.'], ['задача', 'уменьшение', 'сложность', 'модуль', 'сложный', 'решить', 'использоваться', 'средство', 'ускорить', 'разработка', 'приложение'], ['решить', 'модуль'], ['мегамодуль', 'мечтать', 'пользователь'], ['обрадоваться', 'листать', 'страница', 'форма', 'пятый', 'забыть'], ['мегамодули', 'появляться', 'пакетный', 'обработка', 'строить', 'пакетный', 'задание', 'отправлять', 'обработка'], ['тестировать', 'модуль', 'сложный'], ['простой', 'решение', 'оказаться', 'построение', 'управлять', 'структура', 'построение', 'пакет'], ['мегамодули', 'отчёт', 'выглядеть', 'жутковатый'], ['происходить', 'проектировщик', 'пытаться', 'отчёт', 'соединить', 'похожий', 'отчёт'], ['пользователь', 'совершенно', 'равный', 'количество', 'модуль', 'обслуживаться', 'отчёт', 'лишний', 'информация', 'содержать', 'хороший'], ['оперативный', 'приложение', 'главный', 'причина', 'появление', 'мегамодуля', 'состоять', 'аналитик', 'указывать', 'множество', 'ненужный', 'ограничение', 'требование', 'наличие', 'база', 'информация', 'покупатель', 'случай', 'имя', 'выполнить', 'заказ', 'товар'], ['обработка', 'заказ', 'требование', 'порождать', 'проверка', 'новый', 'покупатель', 'зарегистрировать', 'система', 'новый', 'регистрировать'], ['разрешить', 'покупатель', 'существовать', 'независимо', 'заказ', 'хотеться', 'покупатель', 'непременно', 'жестко', 'связать', 'заказ', 'введите', 'супертип', 'потенциальный', 'клиент', 'клиент', 'делать', 'заказ', 'становиться', 'покупатель'], ['образ', 'вызов', 'два', 'экранный_форма', 'стать', 'независимый', 'реализация', 'транзакция', 'база'], ['макет', 'проектирование', 'возникать', 'вопрос', 'стоить', 'тратить', 'драгоценный', 'время', 'создание', 'макет'], ['элемент', 'больший', 'маленький', 'реализация', 'реальный', 'задача', 'служить', 'демонстрация', 'потенциальный', 'функциональный', 'возможность', 'изучение', 'мнение', 'пользователь'], ['макет', 'средство', 'представление', 'идея', 'визуальный', 'форма', 'говорить', 'лучше', 'раз', 'увидеть'], ['функция', 'выбрать', 'макетирование', 'какой', 'зависеть', 'количество', 'время', 'выполнение', 'работа', 'количество', 'человек', 'привлечь'], ['макет', 'род', 'витрина', 'пользователь'], ['означать', 'большинство', 'функция', 'реализовать', 'правило', 'интерфейс'], ['успешный', 'демонстрация', 'обеспечить', 'заключение', 'контракт', 'разработка', 'сторона', 'вопрос', 'проследить', 'пользователь', 'принять', 'внешний', 'оболочка', 'готовый', 'программа', 'надеяться', 'получить', 'готовый', 'система', 'пара', 'неделя'], ['назначение', 'макет', 'проверить', 'проектный', 'решение'], ['годиться', 'выявить', 'этап', 'анализ', 'критический', 'участок', 'система'], ['хороший', 'вариант', 'сложный', 'отчёт', 'часть', 'oltp', 'часть', 'olap'], ['позволить', 'привлечь', 'процесс', 'проектирование', 'группа', 'тестер', 'проверить', 'производительность', 'система'], ['описание', 'разработчик', 'правильно', 'сгенерировать', 'модуль', 'технический', 'спецификация', 'чёткий', 'достаточно', 'подробный'], ['описание', 'экранный_форма', 'отчёт', 'содержать', 'описание', 'назначение', 'форма', 'делать', 'навигация', 'вызвать', 'вызвать', 'формат', 'вызов', 'форма', 'список', 'входной', 'параметр', 'параметр', 'умолчание', 'список', 'выходной', 'параметр', 'правило', 'обработка', 'описание', 'обработка', 'событие', 'внутри', 'модуль', 'обработка', 'список', 'ошибка', 'генерироваться', 'процесс', 'обработка', 'форма', 'реакция', 'ограничение', 'доступ', 'форма', 'каковы', 'привилегия', 'разрешать', 'действие', 'форма', 'элемент', 'каковы', 'привилегия', 'запрещать', 'действие'], ['описание', 'пакетный', 'процесс', 'содержать', 'описание', 'функция', 'выполнять', 'пакет', 'навигация', 'вызвать', 'пакет', 'вызвать', 'формат', 'вызов', 'пакет', 'список', 'входной', 'параметр', 'параметр', 'умолчание', 'список', 'выходной', 'параметр', 'правило', 'обработка', 'описание', 'обработка', 'событие', 'внутри', 'пакет', 'обработка', 'список', 'ошибка', 'генерироваться', 'процесс', 'обработка', 'пакет', 'реакция', 'восстановление', 'обработка', 'возникновение', 'исключение', 'середина', 'обработка', 'пакет', 'реакция', 'вероятный', 'блокировка', 'потенциальный', 'конфликт', 'обработка', 'ожидание', 'несовместимость', 'пакетный', 'задание', 'отчёт', 'т.п.', 'информация', 'планировщик', 'задача', 'регистрация', 'аудит', 'ожидать', 'состояние', 'база', 'выполнение', 'пакет', 'проверка', 'целостность', 'ограничение', 'доступ', 'каковы', 'привилегия', 'разрешать', 'вызов', 'пакет', 'каковы', 'привилегия', 'запрещать', 'вызов'], ['обработка', 'ошибка', 'обработка', 'ошибка', 'подсистема', 'портить', 'жизнь', 'проектировщик'], ['пользователь', 'требовать', 'вразумительный', 'сообщение', 'ошибка'], ['понравиться', 'попытка', 'удалить', 'поставщик', 'информационный', 'система', 'выдать', 'сообщение', 'вид', 'sql0532n', 'a', 'parent', 'row', 'cannot', 'be', 'deleted', 'because', 'the', 'relationship', 'client', 'restricts', 'deletion', 'сообщить', 'невозможность', 'удаление', 'поставщик', 'иметься', 'факт', 'поставка', 'товар', 'склад'], ['рекомендоваться', 'сделать', 'уровень', 'обработка', 'ошибка'], ['первый', 'уровень', 'доступный', 'слой', 'модуль', 'отвечать', 'непосредственно', 'вызов', 'sql'], ['слой', 'обрабатывать', 'код', 'ошибка', 'передавать', 'интерфейс', 'вызов', 'субд'], ['известный', 'код', 'ошибка', 'детектирующие', 'нарушение', 'ограничение', 'разный', 'субд', 'разный'], ['предложение', 'вероятность', 'работа', 'несколько', 'субд', 'прийтись', 'интерпретировать', 'код_возврат', 'субд', 'построить', 'матрица', 'соответствие', 'код_возврат', 'субд', 'код', 'ошибка', 'использовать', 'подсистема', 'обработка', 'ошибка'], ['никакой', 'модуль', 'интерпретатор', 'код', 'доступ', 'код_возврат', 'субд'], ['обработка', 'ошибка', 'информационный', 'система', 'строиться', 'внутренний', 'код_возврат'], ['множество', 'код', 'расширяться', 'значение', 'код', 'изменять'], ['требоваться', 'проанализировать', 'какой', 'формат', 'субд', 'возвращать', 'код'], ['код', 'ошибка', 'код', 'ошибка', 'операционный', 'система', 'sqlca.sqlcode', 'sqlca.sqlstate', 'sqlca.sqlcode', 'sqlca.sqlstate', 'код', 'ошибка', 'операционный', 'система'], ['внутренний', 'ошибка', 'состоять', 'три', 'компонент', 'sqlcode', 'код', 'ошибка', 'sqlstate', 'уточнять', 'код', 'состояние', 'классификация', 'ошибка', 'oscode', 'сопровождать', 'код', 'ошибка', 'операционный', 'система'], ['первый', 'два', 'компонент', 'обеспечивать', 'поддержка', 'стандарт', 'последний', 'позволять', 'использовать', 'подсистема', 'обработка', 'ошибка', 'работа', 'подсистема'], ['отметить', 'субд', 'возвращать', 'код', 'ошибка', 'операционный', 'система', 'случай', 'сбой', 'создание', 'файл', 'чтение', 'страница', 'т.п.', 'образ', 'структура', 'обеспечить', 'достаточный', 'универсальность', 'обработка', 'ошибка'], ['тип', 'ошибка', 'ошибка', 'субд', 'ошибка', 'определённый', 'компонент', 'информационный', 'система', 'контролироваться', 'помощь', 'код', 'sqlstate'], ['правило', 'sqlcode', 'interger', 'sqlstate', 'char(8', 'длина', 'выравнена', '4', 'делать', 'rs/6000', 'sun', 'sparc', 'alpha', 'sgi', 'oscode', 'integer'], ['код', '-532', 'интерпретироваться', '-906', '23001', '0'], ['второй', 'слой', 'обработка', 'ошибка', 'контекстный', 'интерпретация', 'внутренний', 'код_возврат'], ['каждый', 'интерфейсный', 'модуль', 'сопоставить', 'набор', 'параметр', 'интерпретация', 'код_возврат'], ['модуль', 'редактирование', 'список', 'поставщик', 'код', '-906', '23001', '0', 'соответствовать', 'строка', 'сообщение', 'удалить', 'поставщик', 'связать', 'поставка', 'товар'], ['контекст', 'исключение', 'требование', 'пользователь', 'показать', 'список', 'поставка', 'поставщик']]"
        ],
        [
         "36",
         "Этапы разработки проекта2.doc",
         "Этапы разработки проекта: заключительные стадии проектирования, схема базы данных\rЗаключительные стадии проектирования \rПроектирование процесса тестирования \rПроектирование процесса тестирования, как правило, следует за процессом функционального проектирования и проектирования схемы базы данных. На этом этапе можно использовать сложные схемы тестирования, а можно ограничиться и простыми. Здесь мы приведем некоторые принципы, которых  нужно придерживаться  при проектировании любой информационной системы.\rКогда генерация модуля завершена, выполняют автономный тест, который преследует две основные цели:\rобнаружение отказов модуля (жестких сбоев); \rсоответствие модуля спецификации (наличие всех необходимых функций, отсутствие лишних функций). \rПосле того как автономный тест прошел успешно, группа сгенерированных модулей проходит тесты связей, которые должны отследить взаимное влияние модулей.\rДалее группа модулей тестируется на надежность работы, то есть проходят, во-первых, тесты имитации отказов системы, а во-вторых, тесты наработки на отказ. Первая группа тестов показывает, насколько хорошо система восстанавливается после сбоев программного обеспечения, отказов аппаратного обеспечения. Вторая группа тестов определяет степень устойчивости системы при штатной работе и позволяет оценить время безотказной работы системы. В комплект тестов устойчивости должны входить тесты, имитирующие пиковую нагрузку на систему.\rЗатем весь комплект модулей проходит системный тест - тест внутренней приемки продукта, показывающий уровень его качества. Сюда входят тесты функциональности и тесты надежности системы.\rПоследний тест информационной системы - приемо-сдаточные испытания. Такой тест предусматривает показ информационной системы заказчику и должен содержать группу тестов, моделирующих реальные бизнес-процессы, чтобы показать соответствие реализации требованиям заказчика.\r\rТребования к безопасности, доступу, обслуживанию системы \rКаждая информационная система содержит определенные требования к защите от несанкционированного доступа, к регистрации событий системы, аудиту, резервному копированию, восстановлению информации, которые в начале проектирования должны быть формализованы аналитиками. Проектировщики строят стратегию безопасности системы. В частности, ими должны быть определены категории пользователей системы, которые имеют доступ к тем или иным данным посредством соответствующих компонентов. Кроме того, определяются объекты и субъекты защиты. Следует отметить, что стратегия безопасности не ограничивается только ПО - это должен быть целый комплекс мер и правил ведения бизнеса. Нужно четко определить, какой уровень защиты данных необходим для каждого из компонентов информационной системы, и выделить критичные данные, доступ к которым строго ограничен. Пользователи информационной системы регистрируются, поэтому проектируются модули, отвечающие за идентификацию и аутентификацию пользователя. В большинстве СУБД реализована дискреционная защита данных, то есть регламентирован доступ к объектам данных (например, к таблицам, представлениям). Если же требуется ограничение доступа собственно к данным (к отдельным записям в таблице, к отдельным полям записи в таблице и т.п.), то следует реализовать мандатную защиту. Проектировщики должны иметь четкое представление о том, какой уровень защиты той или иной единицы информации является необходимым, а какой достаточным.\rВопросы восстановления, хранения резервных копий базы данных, архивов базы данных относятся к мероприятиям поддержки бесперебойного функционирования информационной системы. Необходимо внимательно изучить возможности, предоставляемые СУБД, а затем проанализировать, как следует использовать возможности СУБД для обеспечения требуемого уровня бесперебойной работы системы.\r\rСоставление спецификаций \rРезультаты проектирования отражаются в документе - функциональной спецификации. Этот документ пишется для заказчика, чтобы получить его санкцию на завершение проектирования и начало разработки, и обычно не содержит большого количества технических деталей. Второй документ - техническая спецификация, являющаяся основным документом для разработчиков моделей и групп тестирования, и здесь описаны детали проекта. Если использовались CASE-средства, то техническая спецификация обязательно содержит ряд отчетов из репозитария.\r\rПолнота проектирования \rПеред началом разработки модулей нужно еще раз проверить полноту проектирования. Один из полезных инструментов - матрица использования таблиц схемы базы данных по модулям.\r\rПереход к реализации \rИтак, начата реализация модулей. Означает ли это, что работа проектировщиков на этом завершена полностью? На практике это далеко не так. Довольно часто разработчик сталкивается с медленно работающими или не реализуемыми в данной схеме запросами. Подобные ситуации инициируют изменение модели данных, а значит, и информационной модели. Однако изменение информационной модели производится не только по этой причине. Хорошему проектировщику необходим практический опыт работы с аппаратным и программным обеспечением - вот одна из причин участия проектировщиков в составе групп разработчиков. Нередко ведущие сотрудники групп разработчиков одновременно являются проектировщиками.\rКак можно использовать проектировщиков на этапе разработки? Приведем некоторые примеры:\rПроектировщик, написавший спецификацию модуля, проводит семинар с разработчиками и демонстрирует необходимые прототипы (семинар предполагает диалог двух сторон). \rКогда модуль передан разработчику, проектировщик может участвовать в его пересмотре, а также выполнять контрольные функции по реализации проектных решений. \rДля крупных проектов характерно поэтапное выполнение работ, так что вполне вероятно, что после завершения реализации группы модулей и сдачи очередного этапа процесс проектирования будет продолжен для новой группы модулей. \rПроектировщики должны обеспечить быстрое реагирование на возможные изменения требований заказчика, поскольку своевременная обработка такой информации является их обязанностью. Кроме того, необходимо и участие системных аналитиков, так как именно они общаются с заказчиком проекта.\r\rСхема базы данных\rСхема базы данных содержит описание всех объектов базы данных: пользователей, их привилегий, таблиц, представлений, индексов, кластеров, ограничений, пакетов, хранимых процедур, триггеров и т.п. При этом создаются не только определения этих объектов, но и сами объекты, с которыми потом работают разработчики.\r\rER-модель и ее отображение на схему данных \rРезультат этапа анализа - построение информационной модели. Казалось бы, дело это простое: сущности становятся таблицами, а атрибуты сущностей - столбцами таблиц; ключи становятся первичными ключами, для возможных ключей определяется ограничение unique, внешние ключи становятся декларациями ссылочной целостности. Аналитики, как правило, не вникают в особенности реализации той или иной СУБД, поэтому при проектировании схемы базы данных проектировщик сталкивается с конструкциями в информационной модели, которые не реализуемы или трудно реализуемы в выбранной СУБД.\rПриведем несколько примеров ограничений реализации СУБД:\rВ информационной модели описаны три сущности - A, B, C. Сущности B и C содержат внешние ключи, ссылающиеся на сущность A. В СУБД поддерживается возможность определения внешнего ключа только для первичного ключа, а для возможного ключа определить декларативную ссылочную целостность нельзя. В этом случае отображение ER-модели на физическую модель данных невозможно без изменения информационной модели. \rВ информационной модели описан внешний ключ с каскадным удалением и модификацией. В СУБД поддерживаются внешние ключи только для варианта действия no action (то есть каскадные изменения в явном виде не поддерживаются). Реализация ссылочной целостности посредством триггеров ограничена уровнем каскадирования триггеров (например, 32 вызовами триггера). В этом случае потребуется также изменение информационной модели. \rВ информационной модели определен атрибут, представляющий собой строку длиной в 500 символов. По этому атрибуту часто осуществляется поиск в информационной системе; объем данных велик. В СУБД можно индексировать строки символов не длиннее чем 128 или 256 символов. Если осуществлять поиск без индекса, то время ответа информационной системы существенно превышает допустимое, вследствие чего придется изменить описание сущности. \rВ информационной модели описана сущность A, которая содержит по крайней мере два атрибута BLOB (например, требуется отдельно хранить и звук и изображение). В СУБД невозможно создать таблицу с двумя атрибутами BLOB и в этом случае нужно изменить описание сущности. Из отношения A исключаются два атрибута BLOB, и добавляется один атрибут AK типа integer. Добавляются две дополнительные сущности -  и  . Каждая из них будет содержать один атрибут BLOB и один ключевой атрибут K типа integer, который станет внешним ключом у каждого из новых отношений и будет ссылаться на атрибут AK в отношении A (тип внешнего ключа - on delete cascade, on update cascade). \rЖизненный цикл сущности определен в информационной модели соответствующей диаграммой. В описании сущности отсутствует атрибут, который отражает изменение состояния сущности. В этой ситуации проектировщики добавляют атрибут status, для которого определяется ограничение допустимых значений (из списка допустимых состояний), а изменение состояния сущности описывается триггером, проверяющим допустимость сочетания нового и старого значения атрибута. \rДве диаграммы потока данных описывают различные бизнес-процессы, работающие над одними и теми же данными. Допустим, первая диаграмма описывает выписку товара со склада, а вторая -  сложный отчет, отражающий состояние склада. Один процесс интенсивно модифицирует данные, второй работает в режиме чтения данных, но требует согласованности данных в течение длительного времени. Каждый из процессов описывается транзакцией над данными. В СУБД уровни изолированности транзакций реализованы так, что читающие транзакции конфликтуют с модифицирующими транзакциями. Это приводит к остановке выписки товаров со склада на время выполнения отчета, что неприемлемо для заказчика. Здесь может потребоваться очень серьезное изменение информационной модели. \rПодобных примеров, когда не только ER-модель, но и другие продукты анализа не могут быть перенесены автоматически на модель данных, можно привести множество. Каждый такой случай инициирует изменение информационной модели. Решение проблемы определяется возможностями СУБД, выбранной для реализации проекта. Если проблем, не разрешаемых в рамках данной СУБД, накапливается очень много, то проектировщики могут поставить вопрос о смене СУБД. Такой вопрос поднимается именно на стадии проектирования, поскольку если уже разработчики столкнутся с подобными проблемами, то цена смены СУБД будет выше. Ясно, что одинаковых СУБД не бывает: то, что хорошо работает в одной, может плохо работать или вообще не работать в другой, несмотря на уверения производителей СУБД в поддержке стандартов SQL. Что касается хранимых процедур и триггеров, то здесь вообще трудно говорить о поддержке SQL92/PSM.\rВопросы производительности информационной системы также влияют на отображение ER-модели на модель данных. За счет мощного сервера баз данных можно добиться большей скорости реакции системы, но мощность аппаратного комплекса ограниченна. Производительность системы в целом зависит в том числе и от нормализации. Часто до 80% запросов к базе данных являются выборками данных, а соединение по тому или иному атрибуту относится к затратным операциям, в первую очередь соединение по нечисловым атрибутам. Увеличить производительность системы можно посредством введения избыточной информации - денормализации. Следует отметить, что решение об этом не принимается на основе одной ER-модели - требуется внимательно проанализировать потоки данных. Критичные процессы являются хорошими кандидатами для денормализации: по времени выполнения, по частоте выполнения, по большому объему обрабатываемых данных, по частоте изменения обрабатываемой информации, по явному приоритету. Часто к денормализации прибегают в целях ускорения выполнения отчетов. Для проверки эффективности той или иной денормализации привлекаются тестеры.\r\rТипы данных \rКак правило, СУБД поддерживают небольшой набор базовых типов данных: числовые типы (целые, вещественные с плавающей и фиксированной точкой), строки (символов и байт), дата и время (или комбинированный тип datetime), BLOB (и его разновидности, например BLOB-поля для хранения только текста). В информационной модели каждому атрибуту соответствует домен. Поскольку не все реализации СУБД поддерживают домены, то в этом случае при определении модели данных ограничения домена описывают как ограничения столбца таблицы (если такое возможно); в частности используют check constraints, триггеры. Следует отметить, что при определении типов столбцов таблиц нужно учитывать, какие типы данных поддерживаются в словаре данных СУБД. Например, в Oracle ключевые слова integer, smallint, real поддерживаются транслятором SQL, но в словаре данных им соответствуют number(38), number(38), float(63), так как Oracle хранит данные в двоично-десятичном формате с плавающей точкой, а не в двоичном формате с плавающей точкой, и  38-восьмизначное число никак нельзя назвать словом smallint.\rСУБД поддерживают два вида строковых типов: с фиксированной длиной (например, char), когда хранится ровно столько символов, сколько указано в описании атрибута, и с переменной длиной (например, varchar), когда хранится реальная длина значения атрибута, а концевые пробелы строки усекаются. Семантика сравнения строк в СУБД также различная, и если ваше мнение о сравнении строк расходится с тем, как это реализовано в СУБД, то придется смириться с этим как с особенностью СУБД. Например (описано поведение Oracle 7.x), если сравниваются значения A равное ‘ab’ и B равное ‘ab’ двух атрибутов типа varchar разной длины, то sql сообщит, что  . Чтобы избежать подобных «фокусов», нужно, в частности, следить за тем, чтобы приложение не вставляло незначащие концевые пробелы в значения атрибутов этих типов.\r\rИндексы, кластеры \rВ правильно спроектированной базе данных каждая таблица содержит первичный ключ, что означает наличие индекса. В большинстве СУБД используются индексы . Отметим, что если используется составной индекс, то поиск по всем атрибутам, входящим в индекс, начиная со второго, будет медленным. Допустим, определен индекс index1(id1, id2), в этом случае поиск значений, удовлетворяющих условию id2=1, будет медленным (не исключено, что оптимизатор вообще не будет использовать этот индекс для обработки данного условия и будет принято решение о полном сканировании данных), а поиск значений, удовлетворяющих условию id1=1 and id2=1, будет быстрым. Данные особенности следует учитывать при определении индексов в схеме базы данных, а именно:\rиндексировать нужно атрибуты, по которым наиболее часто осуществляется поиск или соединение. Наличие индекса замедляет операции модификации, но ускоряет поиск; \rналичие индекса обязательно, если для атрибута или набора атрибутов указано ограничение unique. Такие индексы СУБД создает автоматически, если в описании таблицы указаны ограничения unique; \rиндекс может быть использован для выборки данных в заданном порядке. В этом случае не вызывается процесс сортировки ответа, а используется уже готовый индекс; \rатрибуты, входящие во внешний ключ, также следует индексировать, если СУБД не делает эту операцию автоматически при декларации внешнего ключа; \rв некоторых СУБД поддерживаются bitmap-индексы, которые очень эффективны при поиске на равенство, но для поиска на   этот тип индексов не годится; \rв некоторых СУБД поддерживаются хеш-индексы, например для кластеров. Такие индексы эффективно используются при поиске на равенство. \rКластеризация - это попытка разместить рядом в одном физическом блоке данных те строки, доступ к которым осуществляется при помощи одинаковых значений ключа. Индексные кластеры, например, удобно использовать для хранения родительской и дочерних строк таблиц, связанных ссылочной целостностью. Кластеры удобно определять для тех наборов атрибутов, соединение по которым проводится наиболее часто, поскольку это увеличивает скорость поиска. Следует отметить, что в реализациях СУБД существуют жесткие ограничения на количество кластеров для таблицы, как правило, это один кластер. Особенности реализации кластеров в СУБД необходимо учитывать при проектировании критичных по времени выполнения модулей. Нужно обратить внимание, насколько сильно влияет наличие кластера на производительность DML-операций. Чаще всего это оказывает отрицательное влияние, которое в некоторых реализациях распространяется на DML-операции над любой таблицей базы данных, а не только над той, для которой определен кластер. Эти особенности СУБД также следует учитывать при проектировании.\rДля того чтобы выбрать тот или иной тип индекса, требуется внимательно изучить руководство администратора СУБД. Оптимизатор SQL использует различные типы доступа к данным при обработке запросов, и индексирование существенно влияет на выбор оптимизатора.\rПриведем некоторые способы доступа к данным на примере выборки select id, name from xtable where id=10:\rТаблица не индексирована. В этом случае применяется полное сканирование, которое не является эффективным, если объем данных большой, в таблице много данных, не удовлетворяющих условию, размер кортежа существенно превосходит размер атрибута id. \rАтрибут id индексирован; тип индекса - . Тогда применяется индексное сканирование; полное сканирование может быть выбрано только в случае, если объем данных, удовлетворяющих данному условию, является большим (эта информация анализируется статистическим оптимизатором) и сравним с количеством записей в таблице. Индексное сканирование применяется лишь тогда, когда размер индексированных атрибутов меньше размера кортежа и все необходимые для обработки запроса данные могут быть получены из индекса; в остальных случаях может быть применено полное сканирование. \rАтрибут id входит в составной индекс, и является первым (лидирующим) атрибутом индекса, при этом тип индекса - . Аналогично предыдущему примеру,  применяется индексное сканирование. \rАтрибут id входит в составной индекс, он не первый атрибут индекса; тип индекса - . Индексное сканирование применяется лишь тогда, когда размер индексированных атрибутов меньше размера кортежа и все необходимые для обработки запроса данные могут быть получены из индекса; в остальных случаях применяется полное сканирование. \rАтрибут id индексирован; тип индекса - хеш. Здесь применяется индексное сканирование для поиска на =; если бы условие было id <=10, то применение хеш-индекса для такого поиска не эффективно. \rАтрибут id индексирован; тип индекса - bitmap. Здесь применяется индексное сканирование для поиска на =; если бы условие было id <=10, то применение bitmap-индекса для такого поиска не эффективно. \rАтрибут id является ключом хеш-кластера. В этом случае применяется алгоритм хеширования при поиске блока данных для чтения. При хорошем алгоритме и правильном размере кластера поиск может быть осуществлен за одно чтение; при ошибках в выборе алгоритма и блока кластера это может составить до нескольких тысяч операций чтения блоков. \rАтрибут id является ключом индексного кластера. Здесь применяется индексное сканирование, почти аналогично случаю с индексом . \rТаблица кластеризована, id не является ни кластерным ключом, ни лидирующим в составном индексе . В этой ситуации для кластера применяется полное сканирование. \rМы привели только некоторые правила выполнения операции поиска в зависимости от наличия и типа индекса. В реализации используемой вами СУБД могут быть приняты иные принципы. Подробности использования типов сканирования при поиске данных даются в руководстве по настройке СУБД и в руководстве администратора СУБД.\rА почему бы не проиндексировать все, если индексный поиск быстрее полного сканирования? Очевидно, что индекс занимает место на диске, вопрос в том - сколько. Например, индексируется атрибут integer - это 4 байта. Но в   кроме собственно значения ключа в индексе хранятся и внутренний идентификатор кортежа, и некоторая служебная информация, так что все вместе может составлять 4-8 байт. Чтобы точно посчитать эту величину для используемой вами СУБД, следует обратиться к руководству администратора: посмотрите размер идентификаторов ROWID (Oracle), RID (DB2) и т.д., а также размер страницы индекса (как правило, это 4 Кбайт).\rПри выборе стратегии индексации следует придерживаться двух простых принципов:\rчем больше индексов, тем выше затраты на выполнение DML-операций. По грубым оценкам затрат: если принять за 1 работу по вставке строки в таблицу, то работа по вставке той же записи в один индекс равна 2 или 3 (для разных СУБД); \rв  любое значение может быть найдено за такое количество операций чтения, сколько уровней у дерева (дерево трех уровней для значений integer, например, содержит порядка 533 731 324 ключей, если страница дерева 4 Кбайт). Такие индексы отлично используются при поиске на =, <, >, <=, >=, between, и достаточно хорошо модифицируются. В bitmap-индексах содержатся готовые битовые векторы, отражающие вхождение или невхождение значения в ответ при поиске на равенство, но такие индексы плохо модифицируются и больше подходят для хранилищ данных, например для индексирования вхождения слов в текстовый документ. Хеш-индексы позволяют осуществлять поиск на равенство, хеш-функция используется для поиска блока кластеризованных данных, содержащего нужные значения. Если алгоритм хеш-функции хорош и размер кластера указан верно, то поиск может быть осуществлен за одно чтение. Эти индексы, как правило, используют для создания кластеров. \rОбратите внимание, хранит ли СУБД в индексах NULL. Если NULL в индексе не хранится, то вероятность использования полного сканирования для атрибутов без декларации not NULL резко повышается. Если NULL хранится в индексе (обычно его считают самым большим или самым маленьким при построении   и специальным значением при построении bitmap и хеш-индексов), то выясните, для каких операций поиска индексы будут использованы оптимизатором SQL. Эта информация, как правило, содержится в руководстве администратора. Можно проверить и экспериментально, создав тестовую таблицу с объемом данных примерно 20 тыс. записей (чтобы оптимизатор не выбирал полное сканирование по причине малого объема) и выполнив исследуемый запрос, а затем произвести explain плана запроса (если подобный сервис предоставляется СУБД).\r\rВременные данные \rВременными данными, или временными рядами, называют данные, содержащие дату и время. Неправильная обработка таких данных в некоторых СУБД может служить одной из основных причин низкой функциональности и производительности информационной системы. Временные ряды не очень хорошо вписываются в двухмерную реляционную модель. SQL поддерживает соединения, не основанные на равенстве, но большинство разработчиков СУБД ограничиваются эквисоединением. Для временных данных часто приходится соединять таблицы на основе перекрытия одного диапазона дат другим. В SQL не существуют операции, которая позволяла бы задать такое соединение непосредственно.\rРяд атрибутов, например курс валюты или цена товара, изменяются во времени. Такие атрибуты действительны по дате, то есть актуальны только в течение определенного интервала времени, например дня для курса валюты.\rЕсли СУБД позволяет обрабатывать многомерные данные, то обработка временных рядов может использовать эти механизмы и тогда время будет являться одним из измерений. Подобные многомерные процессоры применяются для обработки геофизических и географических данных. В таких системах используются индексы  ,   и их клоны.\rПриведем пример обработки цены товара (код товара, начальная дата, конечная дата, цена):\rcreate table prices   \r(id integer, date_from date not null,   \rdate_to date, price decimal not null,   \rconstraint p_range check date_from < date_to);  \rОтметим, что здесь в отношении не задан первичный ключ, а сама задача определения ключа в таких отношениях отличается сложностью. Известно, что момент изменения цены заранее не известен, этим и объясняется отсутствие ограничения not null для атрибута date_to:\rselect price from prices   \rwhere id = :PRODUCT_CODE  \rand date_from < :WHEN_DATE  \rand date_to >=   \rnvl(:WHEN_DATE, to_date(’01/12/4721’, ’DD/MM/YYYY’);  \rЗдесь :PRODUCT_CODE и :WHEN_DATE обозначают переменные включающего языка, дата ’01/12/4721’ является самой большой из поддерживаемых СУБД (эта дата  может быть и другой). Подобные операции лучше оформлять в виде хранимых процедур, функций или претранслированных запросов. В хранилищах данных часто обрабатываются архивные данные, для которых обработка временных рядов также актуальна.\rВозникают также вопросы по поводу точности дат, например: они актуальны для курсов валют, биржевых сделок. Следует определить, достаточна ли точность даты до секунды или нет. Существует проблема и с тем, как зарегистрировать сделку, если цена акции постоянно меняется. Некоторые проектировщики в этом случае обрабатывают временной ряд, но есть и более простое решение -  отследить цену акции на момент прохождения биржевой транзакции и сохранить эту цену как часть информации, которую модифицировала транзакция. Поэтому сначала следует рассмотреть простые варианты решения задач, и если ни один из них не подходит, то использовать временные ряды.\rА также как нужно показывать не известную на текущий момент дату, например момент, когда цена товара перестанет быть актуальной? Сделайте это значение равным NULL или самым большим значением (определите его как default-значение для атрибута). Следует отметить, что значения default в большинстве реализаций СУБД работают только при вставке новых записей. Можно, конечно, создать триггер, который срабатывает после выполнения операции insert или update и преобразует null в наибольшее из допустимых значений даты. Но в этом случае, когда пользователь будет работать с подобной информацией, то может забыть, откуда взялась та или иная дата. Если вы спроектировали схему базы данных и запросы таким образом, то все приложения, работающие с выборками данных, должны отвечать следующим требованиям:\rпринудительно конвертировать в null такие даты и не показывать их пользователю; \rиспользовать соответствующие представления, содержащие decode (или иное средство конвертации «больших» дат); \rвызывать хранимую процедуру, которая выполнит все нужные преобразования. \rВыше только что были перечислены возможные проектные решения. Отметим, что для эффективного поиска следует создать составной индекс с атрибутами (date_from, date_to), но не все СУБД будут использовать такой составной индекс, если для одного из атрибутов допустимы значения null. Поэтому довольно простая для аналитиков задача представления временных рядов может повлечь за собой множество неприятных моментов при проектировании.\rТеперь рассмотрим проблему поиска первичного ключа для подобных отношений. Оказывается, что единственный разумный вариант предотвращения дубликатов таков: каждому единичному интервалу соответствует отдельная строка. Для биржевых операций этот интервал может быть равен, например, одной секунде, а в некоторых системах он еще меньше. У таких таблиц только одно преимущество -  результат из них можно выбирать при помощи эквисоединения, однако объемы обрабатываемых данных велики.\rИспользование временных рядов, как правило, является одной из наиболее актуальных тем в разговоре с аналитиками. Какое решение будет лучшим - зависит от используемой СУБД и от ее особенностей, а именно: оптимизатора запросов, особенностей использования индексов, мощности SQL, хранимых процедур и триггеров.\r\rХранение объектов данных \rЭто одна из самых сложных задач проектирования схемы базы данных, для решения которой привлекаются администраторы баз данных. Универсальных решений, которые подошли бы для любой СУБД, не существует, так каждый производитель СУБД создает свой способ хранения и доступа к данным, считает его лучшим и очень им гордится. На проектирование схемы базы данных влияют следующие параметры, общие для большинства СУБД:\rразмер табличных пространств для хранения таблиц; \rразмер табличных пространств для хранения индексов; \rразмер табличных пространств для хранения BLOB; \rкластеры и их параметры; \rразмер словаря данных, включая код всех хранимых процедур, функций, триггеров, пакетов, статического SQL (реализован только в DB2); \rуправляющие файлы; \rфайлы журнала; \rинтенсивность потока запросов, модифицирующих данные и индексы; \rфалы временных табличных пространств (для хранения временных таблиц, которые строятся, например, при выполнении group by, а также других временных объектов); \rинтенсивность потока запросов, инициирующих создание временных таблиц; \rпотоки транзакций read-write, read-only, объем модифицируемых и считываемых ими данных, характеристики параллельной работы транзакций (какие и сколько их); \rколичество приложений, работающих параллельно с базой данных; \rколичество соединений с базой данных для каждого приложения; \rфайлы параметров старта ядра СУБД; \rзагрузочные модули ядра СУБД и утилиты СУБД; \rвходные и выходные данные, генерируемые пользовательскими программами; \rскрипты управления СУБД. \rПостарайтесь описать эти параметры хотя бы в общем виде, обсудите все вопросы с администратором баз данных и внимательно выслушайте его рекомендации. Если же его мнение может расходится с вашим представлением о том, как должна работать СУБД, попытайтесь понять его аргументы и запомните, с какими особенностями СУБД это связано. Все данные следует отразить в журнале проектирования. Следует иметь в виду, что многие нюансы размещения объектов данных и конфигурации сервера баз данных не могут быть учтены на этапе проектирования, так как требует полномасштабного тестирования. Конечно, избежать некоторых ошибок проектирования можно, но приготовьтесь к тому, что схема базы данных будет меняться и на этапе реализации, причем  неоднократно.\r\rЗащита данных\rСтратегия защиты определяется на этапе анализа, а на этапе проектирования предстоит реализовать эту стратегию, спроектировав соответствующие структуры в схеме базы данных и модули. Большинство СУБД имеют развитые средства дискреционной защиты, а ряд СУБД имеют встроенные подсистемы аудита, что освобождает от необходимости создания собственных средств защиты.\rОбычно СУБД предоставляют набор пакетированных привилегий для управления данными, например: connect, которая разрешает соединение с базой данных; resource, которая дополнительно разрешает создание собственных объектов базы данных, dba, которая позволяет выполнять функции администратора конкретной базы данных, и др. Дискреционная защита предполагает разграничение доступа к объектам данных (таблиц, представлений, и т.п.), а не собственно к данным, которые хранятся в этих объектах. Дискреционная защита также обеспечивает создание пользовательских пакетированных привилегий - ролей или групп привилегий. В этом случае набор привилегий на те или иные объекты данных назначается группе или роли, а затем эта группа или роль назначается пользователю; таким образом пользователь получает привилегии на выполнение тех или иных операций над объектами данных косвенно - через группу или роль.\rВ некоторых реализациях допускается выполнение определенного набора операций от имени другого пользователя и с его привилегиями - в частности вызовы пакетов и хранимых процедур. Пользователь, вызывающий такой объект, не может ни изменить пакет или хранимую процедуру, ни получить доступ к ее коду, но операции над данными, которые выполняются в хранимой процедуре или пакете, будут выполнены от имени владельца хранимой процедуры или пакета. То же самое относится и к триггерам.\rНекоторые проектировщики очень любят использовать описанный выше метод защиты данных - это похоже на инкапсуляцию. Иногда проектировщики строят на каскадирующих вызовах хранимых процедур весьма сложные протоколы доступа к данным, имитируя мандатную защиту. Такой подход имеет свои преимущества и недостатки. С одной стороны, любой доступ к данным скрыт хранимой процедурой или пакетом, но с другой - в этом случае словарь данных сильно перегружен. Однако далеко не все реализации СУБД хорошо работают с курсорами в хранимых процедурах и пакетах, поскольку это вызывает  чрезмерную загрузку процессора. Кроме того, в большинстве реализаций СУБД предложения SQL, выполняемые из хранимой процедуры или пакета, имеют более высокий приоритет, чем операции SQL, выполняемые из приложения пользователя. В связи с этим большое количество вызовов хранимых процедур может существенно замедлить выполнение запросов непосредственно из приложений пользователя. В любом случае, чтобы сделать защиту данных, «закрывая» любой запрос хранимой процедурой, требуется, чтобы СУБД имела достаточно развитый язык и позволяла, например, выполнять синтаксический разбор и чтобы внутри самой хранимой процедуры можно было строить как статические, так и динамические предложения SQL.\rК сфере защиты данных относятся также сохранность данных и восстановление их после сбоя системы. Для обеспечения бесперебойной работы часто применяют архивирование (в том числе инкрементное) базы данных и журнала транзакций, а в случае отказа системы при следующем старте операции над данными восстанавливают по журналу транзакций (например, производят их откат до определенного момента времени). Применяют также методы горячего резервирования, когда работают два сервера: основной, обрабатывающий запросы пользователей, и резервный, который продолжает работу основного сервера в случае его отказа. Состояние хранилищ данных на основном и резервном серверах согласовано и поддерживается СУБД автоматически, что позволяет проектировщикам не разрабатывать собственные механизмы репликации данных.\rРабота серверов в режиме горячего резервирования не избавляет от необходимости хранения резервных копий данных, это может быть и не очевидно для аналитиков и не предусмотрено ими. Некоторые бизнес-процессы по своей природе требуют от информационной системы работы в режиме 24x7, и любой простой стоит очень дорого. В этих случаях работают две или три параллельные системы, и при отказе одного из серверов резервные серверы немедленно принимают управление на себя. Эффективным, но дорогостоящим способом реализации таких задач являются предоставляемые СУБД технологии симметричной репликации. Еще один вариант - архивирование журналов транзакций на резервном узле на специальное устройство и немедленный докат по этому журналу резервного узла в случае отказа основного. Разные СУБД предлагают разные механизмы реализации подобной бесперебойной работы, и для принятия верного проектного решения необходимы консультации проектировщиков с администраторами баз данных.\rВ простых ситуациях, когда информационная система используется в основном для операций чтения данных, а сами данные меняются редко, резервное копирование может вообще не требоваться, если данные одной такой системы могут быть легко восстановлены из данных других работающих систем. Достаточно будет обеспечить наличие образа базы данных (архив всех файлов базы данных, а также управляющих файлов - это должен быть снимок базы данных на определенный момент времени; проще всего такой снимок получить, остановив СУБД и сделав резервную копию всех указанных файлов).\rВ большинстве информационных систем необходимо обеспечение безотказной работы системы в ситуации, представляющей собой нечто среднее между описанными выше двумя крайними случаями. Проектировщики должны пересмотреть результаты анализа, исходя из ответов на следующие вопросы:\rкаков график необходимой доступности системы для запросов пользователя (то есть когда система обязательно должна работать); \rдопустимы ли вообще и когда допустимы периоды профилактического простоя системы; \rдопустимы ли и когда допустимы периоды ограничения доступа к системе; \rкакие данные после отказа системы нельзя получить из других источников (часто это ввод новых документов, например накладных, операции со счетами, заказы на телефонные переговоры, информация с автоматизированных датчиков и т.п.); \rесли данные можно получить, то каков объем повторно вводимой информации; \rкаково допустимое время восстановления системы после сбоя; \rимеется ли график пакетных суточных заданий; \rкакие еще приложения, кроме информационной системы, работают на данном оборудовании; \rимеются ли резервные аппаратные средства на случай отказа основных; \rимеется ли запас мощности оборудования, на котором функционирует информационная система; \rкакова скорость передачи данных при резервном копировании; \rимеются ли специальные отказоустойчивые носители для хранения резервных копий; \rимеется ли правило циклического использования резервных носителей; \rимеется ли специальное защищенное место для хранения резервных носителей. \rОтветы на эти вопросы позволят более реально оценить ситуацию и уточнить требования заказчика, формализованные аналитики. Бывает, что заказ работоспособности системы в режиме 24х7 вовсе не является обоснованным и система простаивает, например, 50% времени. Если же требование 24х7 действительно отражает особенности данного бизнеса, то эти вопросы помогут построить соответствующую стратегию защиты данных от сбоев. Качество построенной при проектировании стратегии защиты должно быть проверено тестерами, причем их работа по генерации и проведению тестов, имитирующих отказы оборудования, должна проводиться как на этапе проектирования, так и в течение всего этапа разработки - в целях раннего обнаружения дефектов стратегии защиты данных от сбоев.\r\rОбмен данными с внешними системами \rБольшинство аналитиков считают задачи обмена с внешними системами чисто физическими, решенными априори и, как следствие, не уделяют этим вопросам внимания при анализе. Поэтому зачастую проектировщики вынуждены нести на себе всю нагрузку по созданию таких систем обмена.\rИмпорт и экспорт данных во внешние системы могут обеспечиваться как утилитами, поставляемыми в составе СУБД, так и специальными средствами обмена данными проектируемой информационной системы. Прежде чем писать код собственно системы обмена данными, внимательно изучите сервис, который предоставляет СУБД, и используйте его полностью. Если обмен данными идет между двумя однородными базами данных (одного производителя и одной версии), то средства импорта и экспорта данных во внутреннем формате данной СУБД могут быть использованы без ограничений. Если же обмен данными осуществляется между СУБД разных производителей, то для импорта и экспорта собственно данных можно использовать текстовые файлы. Следует при этом обратить особое внимание на особенности представления null, пустых строк символов и BLOB, так как здесь потенциально присутствует расхождение интерпретации содержимого файлов загрузчиками данных.\rИмпорт и экспорт схем может оказаться более сложным делом. Производители СУБД часто заявляют о поддержке стандартов ANSI, но на практике большинство баз данных не удовлетворяют им полностью. Синтаксисы операций создания таблиц существенно различаются, а синтаксисы определения хранимых процедур и триггеров большинства СУБД вообще несовместимы. Информация о схеме базы данных может быть получена из системного каталога посредством анализа данных в системных представлениях, но и здесь нет полной поддержки стандарта. Когда информационной системе требуется обмен данными между СУБД разных производителей, то, как правило, проектировщики принимают решение о создании специализированного средства. Даже если оно не будет полнофункциональным и не может быть применено для решения задачи конвертации данных между любыми СУБД, то решить локальную задачу оно способно.\rИнтерфейсы обмена с внешними системами можно разбить на следующие категории:\rодноразовый импорт данных, унаследованных, как правило, из старой системы; \rпериодический обмен данными между узлами информационной системы (внутренний обмен); \rпериодический обмен данных с другими информационными системами (внешний обмен). \rЕсли обмен данными должен осуществляться в режиме, близком к реальному времени, то это будет задача о распределенной базе данных, а не о простой передаче данных.\rПри анализе задач загрузки и выгрузки данных проектировщик должен рассмотреть:\rкаким подсистемам нужен интерфейс выгрузки данных и каков должен быть интерфейс загрузки данных из внешней системы; \rкаковы периодичность обмена данными и объем передаваемых данных; \rкакая требуется степень синхронизации двух систем; \rкаковы возможные методы транспортировки данных; \rа также:\rсогласовать формат данных для обмена; \rопределить зависимости загрузки и выгрузки, например порядок выполнения операций; \rопределить мероприятия, которые необходимо выполнить при сбое во время загрузки и выгрузки данных; \rсформулировать правила определения ошибочных записей (при загрузке); \rопределить правила регистрации операций передачи и приема данных; \rопределить график передачи данных (в большинстве информационных систем эти операции выполняются в ночное время); \rсоставить график разработки и тестирования собственных утилит или скриптов обмена данными; \rсоставить график разовой загрузки данных, наследуемых из старой системы, и подготовить методику проверки корректности этой операции. \rСледует отметить, что при наследовании данных из старой системы проектировщикам не приходится надеяться на то, что кто-то создаст утилиту, позволяющую достать данные из старой системы, - обычно это становится задачей самих проектировщиков новой системы. Может случиться так, что вам придется работать в жестких условиях, когда не будет возможности выделить время для тестирования новой программы извлечения данных. В этом случае нужно разработать набор тестовых данных. Если в старой системе имеется какое-то средство извлечения данных - используйте его; часто это самый разумный выход.\rПри загрузке данных из старой системы проектировщики могут столкнуться с большим объемом неочищенных данных - с нарушениями целостности данных, возникшими из-за сбоев системы, «заплаток» разработчиков, иных неприятностей. Возможно, что на вас будет оказано давление с тем, чтобы допустить наличие неочищенных данных в новой системе. Если не принять мер по очистке данных, то, вероятно, большинство спроектированных ограничений целостности нужно будет ослабить, чтобы загрузить хоть какую-то часть данных. Цена такой уступки достаточно высока: данные вы приняли, но ослабленные ранее ограничения уже нельзя восстановить, так как они уже нарушены (это отслеживается СУБД автоматически). Отсюда следует вывод: поддаваться давлению нельзя, так как несколько дней, потраченных на очистку данных, стоят так мало по сравнению с наличием в информационной системе данных, не обладающих элементарной целостностью.\rЧто делать с данными, которые содержат ошибки или не согласованы? Самое простое решение -  пропускать такие данные, собирать их отдельно и анализировать. Здесь вас могут ждать некоторые проблемы: не все СУБД при загрузке данных их собственными утилитами позволяют в случае  возврата кода ошибки указать запись, на которой произошел сбой. Если это так, то данные следует загружать небольшими порциями, чтобы можно было легче найти запись, которая повлекла сбой. Можно разместить данные с нарушениями целостности в отдельных таблицах, а потом обработать их. Подобную операцию (которую аналитики, как правило, не предусматривают) лучше автоматизировать посредством отдельного компонента. Проектировщикам придется либо озадачить аналитиков исследованием правил корректности данных, либо выполнить эту работу самим, причем необходима помощь опытных пользователей старой информационной системы. Здесь крайне важно найти данные, которые являются надежными, то есть те, которые с большой вероятностью указаны правильно. От таких данных и надо отталкиваться при создании программ проверки корректности данных.\rДалеко не все СУБД предоставляют средства, позволяющие выгрузить схему данных, хранимые процедуры и триггеры, но имеется достаточное количество ПО сторонних фирм, способного на это. Самым привлекательным будет ПО, осуществляющее выгрузку указанных объектов в виде скриптов, описывающих их создание. Если ПО позволяет сначала создать объекты данных без ограничений ссылочной целостности, а потом изменить их, добавив эти ограничения, то такой опцией рекомендуется пользоваться всегда. Дело в том, что большинство утилит выгрузки схемы опрашивают системный каталог и генерируют скрипт создания таблиц в том порядке, в котором имена таблиц встречаются в системном каталоге. Но вы не застрахованы от того, что имя таблицы-потомка будет считано раньше имени таблицы-предка. От исправления операций создания объектов данных вы также не застрахованы, так как у большинства СУБД разный синтаксис определения ограничений ссылочной целостности, серверных ограничений, индексов. Например, перечисленные ниже определения ссылочной целостности для таблицы tx:\rcreate table t(id int primary key, name char(10);  \rcreate table tx(i int, j int references t(id));  \rcreate table tx(i int, j int references t(id) on delete no action on update no action);  \rcreate table tx(i int, j int, foreign key j references t(id) on delete no action on update no action);  \rcreate table tx(i int, j int, foreign key j references t on delete no action on update no action);  \rcreate table tx(i int, j int, constraint t_ref_cascade foreign key j references t(id) on delete no action on update no action);  \rвсе означают в точности одно и то же, но синтаксис у них разный. Для преобразования предложений SQL в требуемый формат могут быть созданы специальные утилиты. Поскольку в этом случае требуется разбор текста, то весьма нецелесообразно применение инструмента Perl. К сожалению, операция переноса хранимых процедур и триггеров не может быть в такой же степени автоматизирована вследствие существенных различий в языках их написания в разных СУБД. Некоторые СУБД совместимы по синтаксису хотя бы частично, но если этого нет, то большой доли ручной работы не избежать.",
         "0",
         "[['этап', 'разработка', 'проект', 'заключительные', 'стадия', 'проектирование', 'схема_база', 'заключительный', 'стадия', 'проектирование', 'проектирование', 'процесс', 'тестирование', 'проектирование', 'процесс', 'тестирование', 'правило', 'процесс', 'функциональный', 'проектирование', 'проектирование', 'схема_база'], ['этап', 'использовать', 'сложный', 'схема', 'тестирование', 'ограничиться', 'простой'], ['привести', 'принцип', 'придерживаться', 'проектирование', 'информационный_система'], ['генерация', 'модуль', 'завершить', 'выполнять', 'автономный', 'тест', 'преследовать', 'два', 'основный', 'цель', 'обнаружение', 'отказ', 'модуль', 'жёсткий', 'сбой', 'соответствие', 'модуль', 'спецификация', 'наличие', 'необходимый', 'функция', 'отсутствие', 'лишний', 'функция'], ['автономный', 'тест', 'пройти', 'успешно', 'группа', 'сгенерированных', 'модуль', 'проходить', 'тест', 'связь', 'отследить', 'взаимный', 'влияние', 'модуль'], ['группа', 'модуль', 'тестироваться', 'надёжность', 'работа', 'проходить', 'первых', 'тест', 'имитация', 'отказ', 'система', 'вторых', 'тест', 'наработка', 'отказ'], ['первый', 'группа', 'тест', 'показывать', 'насколько', 'система', 'восстанавливаться', 'сбой', 'программный', 'обеспечение', 'отказ', 'аппаратный', 'обеспечение'], ['второй', 'группа', 'тест', 'определять', 'степень', 'устойчивость', 'система', 'штатный', 'работа', 'позволять', 'оценить', 'время', 'безотказный', 'работа', 'система'], ['комплект', 'тест', 'устойчивость', 'входить', 'тест', 'имитировать', 'пиковый', 'нагрузка', 'система'], ['комплект', 'модуль', 'проходить', 'системный', 'тест', 'тест', 'внутренний', 'приёмка', 'продукт', 'показывать', 'уровень', 'качество'], ['сюда', 'входить', 'тест', 'функциональность', 'тест', 'надёжность', 'система'], ['последний', 'тест', 'информационный_система', 'приемо', 'сдаточный', 'испытание'], ['тест', 'предусматривать', 'показ', 'информационный_система', 'заказчик', 'содержать', 'группа', 'тест', 'моделировать', 'реальный', 'бизнес', 'процессы', 'показать', 'соответствие', 'реализация', 'требование', 'заказчик'], ['требование', 'безопасность', 'доступ', 'обслуживание', 'система', 'информационный_система', 'содержать', 'определённый', 'требование', 'защита', 'несанкционированный', 'доступ', 'регистрация', 'событие', 'система', 'аудит', 'резервный', 'копирование', 'восстановление', 'информация', 'проектирование', 'формализовать', 'аналитик'], ['проектировщик', 'строить', 'стратегия', 'безопасность', 'система'], ['частность', 'определить', 'категория', 'пользователь', 'система', 'иметь', 'доступ_данным', 'соответствующий', 'компонент'], ['определяться', 'объект', 'субъект', 'защита'], ['отметить', 'стратегия', 'безопасность', 'ограничиваться', 'целый', 'комплекс', 'мера', 'правило', 'ведение', 'бизнес'], ['четко', 'определить', 'уровень', 'защита', 'необходимый', 'каждый', 'компонент', 'информационный_система', 'выделить', 'критичный', 'доступ', 'строго', 'ограничить'], ['пользователь', 'информационный_система', 'регистрироваться', 'проектироваться', 'модуль', 'отвечать', 'идентификация', 'аутентификация', 'пользователь'], ['большинство', 'субд', 'реализовать', 'дискреционный', 'защита', 'регламентировать', 'доступ', 'объект', 'таблица', 'представление'], ['требоваться', 'ограничение', 'доступ_данным', 'отдельный', 'запись', 'таблица', 'отдельный', 'поле', 'запись', 'таблица', 'т.п.', 'реализовать', 'мандатный', 'защита'], ['проектировщик', 'чёткий', 'представление', 'уровень', 'защита', 'иной', 'единица', 'информация', 'являться', 'достаточный'], ['вопрос', 'восстановление', 'хранение', 'резервный', 'копия', 'база', 'архив', 'база', 'относиться', 'мероприятие', 'поддержка', 'бесперебойный', 'функционирование', 'информационный_система'], ['внимательно', 'изучить', 'возможность', 'предоставлять', 'субд', 'проанализировать', 'использовать', 'возможность', 'субд', 'обеспечение', 'требуемого', 'уровень', 'бесперебойный', 'работа', 'система'], ['составление', 'спецификация', 'результат', 'проектирование', 'отражаться', 'документ', 'функциональный', 'спецификация'], ['документ', 'писаться', 'заказчик', 'получить', 'санкция', 'завершение', 'проектирование', 'начало', 'разработка', 'содержать', 'большой', 'количество', 'технический', 'деталь'], ['второй', 'документ', 'технический', 'спецификация', 'являться', 'основный', 'документ', 'разработчик', 'модель', 'группа', 'тестирование', 'описать', 'деталь', 'проект'], ['использоваться', 'case', 'средство', 'технический', 'спецификация', 'обязательно', 'содержать', 'ряд', 'отчёт', 'репозитария'], ['полнота', 'проектирование', 'начало', 'разработка', 'модуль', 'раз', 'проверить', 'полнота', 'проектирование'], ['полезный', 'инструмент', 'матрица', 'использование', 'таблица', 'схема_база', 'модулям'], ['переход', 'реализация', 'начать', 'реализация', 'модуль'], ['означать', 'работа', 'проектировщик', 'завершить', 'полностью'], ['практика'], ['разработчик', 'сталкиваться', 'медленно', 'работать', 'реализуемыми', 'схема', 'запрос'], ['ситуация', 'инициировать', 'изменение', 'модель', 'информационный_модель'], ['изменение', 'информационный_модель', 'производиться', 'причина'], ['хороший', 'проектировщик', 'необходимый', 'практический', 'опыт', 'работа', 'аппаратный', 'программный', 'обеспечение', 'причина', 'участие', 'проектировщик', 'состав', 'группа', 'разработчик'], ['ведущий', 'сотрудник', 'группа', 'разработчик', 'одновременно', 'являться', 'проектировщик'], ['использовать', 'проектировщик', 'этап', 'разработка'], ['привести', 'пример', 'проектировщик', 'написать', 'спецификация', 'модуль', 'проводить', 'семинар', 'разработчик', 'демонстрировать', 'прототип', 'семинар', 'предполагать', 'диалог', 'два', 'сторона'], ['модуль', 'передать', 'разработчик', 'проектировщик', 'участвовать', 'пересмотр', 'выполнять', 'контрольный', 'функция', 'реализация', 'проектный', 'решение'], ['крупный', 'проект', 'характерный', 'поэтапный', 'выполнение', 'работа', 'вероятный', 'завершение', 'реализация', 'группа', 'модуль', 'сдача', 'очередной', 'этап', 'процесс', 'проектирование', 'продолжить', 'новый', 'группа', 'модуль'], ['проектировщик', 'обеспечить', 'быстрый', 'реагирование', 'возможный', 'изменение', 'требование', 'заказчик', 'своевременный', 'обработка', 'информация', 'являться', 'обязанность'], ['участие', 'системный', 'аналитик', 'общаться', 'заказчик', 'проект'], ['схема_база', 'схема_база', 'содержать', 'описание', 'объект', 'база', 'пользователь', 'привилегия', 'таблица', 'представление', 'индекс', 'кластер', 'ограничение', 'пакет', 'хранить_процедура', 'триггер', 'т.п.', 'создаваться', 'определение', 'объект', 'объект', 'работать', 'разработчик'], ['er'], ['модель', 'отображение', 'схема', 'результат', 'этап', 'анализ', 'построение', 'информационный_модель'], ['дело', 'простой', 'сущность', 'становиться', 'таблицами', 'атрибут', 'сущность', 'столбец', 'таблица', 'ключ', 'становиться', 'первичный', 'ключ', 'возможный', 'ключ', 'определяться', 'ограничение', 'unique', 'внешний_ключ', 'становиться', 'декларация', 'ссылочный_целостность'], ['аналитик', 'правило', 'вникать', 'особенность', 'реализация', 'иной', 'субд', 'проектирование', 'схема_база', 'проектировщик', 'сталкиваться', 'конструкция', 'информационный_модель', 'реализуемы', 'трудный', 'реализуемы', 'выбрать', 'субд'], ['привести', 'пример', 'ограничение', 'реализация', 'субд', 'информационный_модель', 'описать', 'три', 'сущность', 'a', 'b', 'c.', 'сущность', 'b', 'c', 'содержать', 'внешний_ключ', 'ссылающиеся', 'сущность', 'a.', 'субд', 'поддерживаться', 'возможность', 'определение', 'внешний_ключ', 'первичный', 'ключ', 'возможный', 'ключ', 'определить', 'декларативный', 'ссылочный_целостность'], ['случай', 'отображение', 'er', 'модель', 'физический', 'модель', 'невозможный', 'изменение', 'информационный_модель'], ['информационный_модель', 'описать', 'внешний_ключ', 'каскадный', 'удаление', 'модификация'], ['субд', 'поддерживаться', 'внешний_ключ', 'вариант', 'действие', 'no_action', 'каскадный', 'изменение', 'явный', 'вид', 'поддерживаться'], ['реализация', 'ссылочный_целостность', 'триггер', 'ограничить', 'уровень', 'каскадирования', 'триггер', '32', 'вызов', 'триггер'], ['случай', 'потребоваться', 'изменение', 'информационный_модель'], ['информационный_модель', 'определить', 'атрибут', 'представлять', 'строка', 'длина', '500', 'символ'], ['атрибут', 'осуществляться', 'поиск', 'информационный_система', 'объём', 'большой'], ['субд', 'индексировать', 'строка', 'символ', 'длинный', '128', '256', 'символ'], ['осуществлять', 'поиск', 'индекс', 'время', 'ответ', 'информационный_система', 'существенно', 'превышать', 'допустимый', 'вследствие', 'прийтись', 'изменить', 'описание', 'сущность'], ['информационный_модель', 'описать', 'сущность', 'a', 'содержать', 'крайний', 'мера', 'два', 'атрибут', 'blob', 'требоваться', 'отдельно', 'хранить', 'звук', 'изображение'], ['субд', 'невозможный', 'создать', 'таблица', 'два', 'атрибут', 'blob', 'случай', 'изменить', 'описание', 'сущность'], ['отношение', 'a', 'исключаться', 'два', 'атрибут', 'blob', 'добавляться', 'атрибут', 'ak', 'тип', 'integer'], ['добавляются', 'два', 'дополнительный', 'сущность'], ['содержать', 'атрибут', 'blob', 'ключевой', 'атрибут', 'k', 'тип', 'integer', 'стать', 'внешний_ключ', 'каждый', 'новый', 'отношение', 'ссылаться', 'атрибут', 'ak', 'отношение', 'a', 'тип', 'внешний_ключ', 'on', 'delete', 'cascade', 'on', 'update', 'cascade'], ['жизненный', 'цикл', 'сущность', 'определить', 'информационный_модель', 'соответствующий', 'диаграмма'], ['описание', 'сущность', 'отсутствовать', 'атрибут', 'отражать', 'изменение', 'состояние', 'сущность'], ['ситуация', 'проектировщик', 'добавлять', 'атрибут', 'status', 'определяться', 'ограничение', 'допустимый', 'значение', 'список', 'допустимый', 'состояние', 'изменение', 'состояние', 'сущность', 'описываться', 'триггер', 'проверять', 'допустимость', 'сочетание', 'новый', 'старый', 'значение', 'атрибут'], ['два', 'диаграмма', 'поток', 'описывать', 'различный', 'бизнес', 'процессы', 'работать', 'данными'], ['допустить', 'первый', 'диаграмма', 'описывать', 'выписка', 'товар', 'склад', 'второй', 'сложный', 'отчёт', 'отражать', 'состояние', 'склад'], ['процесс', 'интенсивно', 'модифицировать', 'второй', 'работать', 'режим', 'чтение', 'требовать', 'согласованность', 'течение', 'длительный', 'время'], ['процесс', 'описываться', 'транзакция', 'данными'], ['субд', 'уровень', 'изолированность', 'транзакция', 'реализовать', 'читать', 'транзакция', 'конфликтовать', 'модифицирующими', 'транзакция'], ['приводить', 'остановка', 'выписка', 'товар', 'склад', 'время', 'выполнение', 'отчёт', 'неприемлемый', 'заказчик'], ['потребоваться', 'серьёзный', 'изменение', 'информационный_модель'], ['пример', 'er', 'модель', 'продукт', 'анализ', 'перенести', 'автоматически', 'модель', 'привести', 'множество'], ['случай', 'инициировать', 'изменение', 'информационный_модель'], ['решение', 'проблема', 'определяться', 'возможность', 'субд', 'выбрать', 'реализация', 'проект'], ['проблема', 'разрешать', 'рамка', 'субд', 'накапливаться', 'проектировщик', 'поставить', 'вопрос', 'смена', 'субд'], ['вопрос', 'подниматься', 'стадия', 'проектирование', 'разработчик', 'столкнуться', 'подобный', 'проблема', 'цена', 'смена', 'субд', 'высоко'], ['ясный', 'одинаковый', 'субд', 'работать', 'плохо', 'работать', 'работать', 'несмотря', 'уверение', 'производитель', 'субд', 'поддержка', 'стандарт', 'sql'], ['касаться', 'хранить_процедура', 'триггер', 'трудный', 'говорить', 'поддержка', 'sql92', 'psm'], ['вопрос', 'производительность', 'информационный_система', 'влиять', 'отображение', 'er', 'модель', 'модель'], ['счёт', 'мощный', 'сервер', 'база', 'добиться', 'больший', 'скорость', 'реакция', 'система', 'мощность', 'аппаратный', 'комплекс', 'ограниченный'], ['производительность', 'система', 'целое', 'зависеть', 'число', 'нормализация'], ['80', 'запрос', 'база', 'являться', 'выборками', 'соединение', 'иному', 'атрибут', 'относиться', 'затратный', 'операция', 'первый', 'очередь', 'соединение', 'нечисловой', 'атрибут'], ['увеличить', 'производительность', 'система', 'введение', 'избыточный', 'информация', 'денормализации'], ['отметить', 'решение', 'приниматься', 'основа', 'er', 'модель', 'требоваться', 'внимательно', 'проанализировать', 'поток'], ['критичный', 'процесс', 'являться', 'хороший', 'кандидат', 'денормализации', 'время', 'выполнение', 'частота', 'выполнение', 'большой', 'объём', 'обрабатывать', 'частота', 'изменение', 'обрабатывать', 'информация', 'явный', 'приоритет'], ['денормализации', 'прибегать', 'цель', 'ускорение', 'выполнение', 'отчёт'], ['проверка', 'эффективность', 'иной', 'денормализации', 'привлекаться', 'тестер'], ['тип', 'правило', 'субд', 'поддерживать', 'небольшой', 'набор', 'базовый', 'тип', 'числовой', 'тип', 'целый', 'вещественный', 'плавать', 'фиксированный', 'точка', 'строка', 'символ', 'байт', 'дата', 'время', 'комбинированный', 'тип', 'datetime', 'blob', 'разновидность', 'blob', 'поле', 'хранение', 'текст'], ['информационный_модель', 'каждый', 'атрибут', 'соответствовать', 'домен'], ['реализация', 'субд', 'поддерживать', 'домен', 'случай', 'определение', 'модель', 'ограничение', 'домен', 'описывать', 'ограничение', 'столбец', 'таблица', 'частность', 'использовать', 'check', 'constraints', 'триггеры'], ['отметить', 'определение', 'тип', 'столбец', 'таблица', 'учитывать', 'тип', 'поддерживаться', 'словарь', 'субд'], ['oracle', 'ключевой', 'слово', 'integer', 'smallint', 'real', 'поддерживаться', 'транслятор', 'sql', 'словарь', 'соответствовать', 'number(38', 'number(38', 'float(63', 'oracle', 'хранить', 'двоичный', 'десятичный', 'формат', 'плавать', 'точка', 'двоичный', 'формат', 'плавать', 'точка', '38-восьмизначное', 'число', 'назвать', 'слово', 'smallint'], ['субд', 'поддерживать', 'два', 'вид', 'строковый', 'тип', 'фиксированный', 'длина', 'char', 'храниться', 'ровно', 'столько', 'символ', 'указать', 'описание', 'атрибут', 'переменный', 'длина', 'varchar', 'храниться', 'реальный', 'длина', 'значение', 'атрибут', 'концевой', 'пробел', 'строка', 'усекаются'], ['семантика', 'сравнение', 'строка', 'субд', 'различный', 'мнение', 'сравнение', 'строка', 'расходиться', 'реализовать', 'субд', 'прийтись', 'смириться', 'особенность', 'субд'], ['описать', 'поведение', 'oracle', '7.x', 'сравниваться', 'значение', 'a', 'равный', 'ab', 'b', 'равный', 'ab', 'два', 'атрибут', 'тип', 'varchar', 'разный', 'длина', 'sql', 'сообщить'], ['избежать', 'фокус', 'частность', 'следить', 'приложение', 'вставляло', 'незначащие', 'концевой', 'пробел', 'значение', 'атрибут', 'тип'], ['индекс', 'кластер', 'правильно', 'спроектировать', 'база', 'таблица', 'содержать', 'первичный', 'ключ', 'означать', 'наличие', 'индекс'], ['большинство', 'субд', 'использоваться', 'индекс'], ['отметить', 'использоваться', 'составной_индекс', 'поиск', 'атрибут', 'входить', 'индекс', 'начинать', 'второй', 'медленный'], ['допустить', 'определить', 'индекс', 'index1(id1', 'id2', 'случай', 'поиск', 'значение', 'удовлетворять', 'условие', 'id2=1', 'медленный', 'исключить', 'оптимизатор', 'использовать', 'индекс', 'обработка', 'условие', 'принять', 'решение', 'полный_сканирование', 'поиск', 'значение', 'удовлетворять', 'условие', 'id1=1', 'and', 'id2=1', 'быстрый'], ['особенность', 'учитывать', 'определение', 'индекс', 'схема_база', 'индексировать', 'атрибут', 'осуществляться', 'поиск', 'соединение'], ['наличие', 'индекс', 'замедлять', 'операция', 'модификация', 'ускорять', 'поиск', 'наличие', 'индекс', 'обязательно', 'атрибут', 'набор', 'атрибут', 'указать', 'ограничение', 'unique'], ['индекс', 'субд', 'создавать', 'автоматически', 'описание', 'таблица', 'указать', 'ограничение', 'unique'], ['индекс', 'использовать', 'выборка', 'заданный', 'порядок'], ['случай', 'вызываться', 'процесс', 'сортировка', 'ответ', 'использоваться', 'готовый', 'индекс', 'атрибут', 'входить', 'внешний_ключ', 'индексировать', 'субд', 'делать', 'операция', 'автоматически', 'декларация', 'внешний_ключ', 'субд', 'поддерживаться', 'bitmap', 'индекс', 'эффективный', 'поиск', 'равенство', 'поиск', 'тип', 'индекс', 'годиться', 'субд', 'поддерживаться', 'хеш', 'индекс', 'кластер'], ['индекс', 'эффективно', 'использоваться', 'поиск', 'равенство'], ['кластеризация', 'попытка', 'разместить', 'физический', 'блок', 'строка', 'доступ', 'осуществляться', 'помощь', 'одинаковый', 'значение', 'ключ'], ['индексный', 'кластер', 'удобный', 'использовать', 'хранение', 'родительский', 'дочерний', 'строка', 'таблица', 'связать', 'ссылочный_целостность'], ['кластер', 'удобный', 'определять', 'набор', 'атрибут', 'соединение', 'проводиться', 'увеличивать', 'скорость', 'поиск'], ['отметить', 'реализация', 'субд', 'существовать', 'жёсткий', 'ограничение', 'количество', 'кластер', 'таблица', 'правило', 'кластер'], ['особенность', 'реализация', 'кластер', 'субд', 'учитывать', 'проектирование', 'критичный', 'время', 'выполнение', 'модуль'], ['обратить', 'внимание', 'насколько', 'сильно', 'влиять', 'наличие', 'кластер', 'производительность', 'dml', 'операция'], ['оказывать', 'отрицательный', 'влияние', 'реализация', 'распространяться', 'dml', 'операция', 'таблица', 'база', 'определить', 'кластер'], ['особенность', 'субд', 'учитывать', 'проектирование'], ['выбрать', 'иной', 'тип', 'индекс', 'требоваться', 'внимательно', 'изучить', 'руководство', 'администратор', 'субд'], ['оптимизатор', 'sql', 'использовать', 'различный', 'тип', 'доступ_данным', 'обработка', 'запрос', 'индексирование', 'существенно', 'влиять', 'выбор', 'оптимизатор'], ['привести', 'способ', 'доступ_данным', 'пример', 'выборка', 'select', 'id', 'name', 'from', 'xtable', 'where', 'id=10', 'таблица', 'индексировать'], ['случай', 'применяться', 'полный_сканирование', 'являться', 'эффективный', 'объём', 'большой', 'таблица', 'удовлетворять', 'условие', 'размер', 'кортеж', 'существенно', 'превосходить', 'размер', 'атрибут_id'], ['атрибут_id', 'индексировать', 'тип', 'индекс'], ['применяться', 'индексный_сканирование', 'полный_сканирование', 'выбрать', 'случай', 'объём', 'удовлетворять', 'условие', 'являться', 'больший', 'информация', 'анализироваться', 'статистический', 'оптимизатор', 'сравнимый', 'количество', 'запись', 'таблица'], ['индексный_сканирование', 'применяться', 'размер', 'индексированных', 'атрибут', 'размер', 'кортеж', 'обработка', 'запрос', 'получить', 'индекс', 'остальных', 'случай', 'применить', 'полный_сканирование'], ['атрибут_id', 'входить', 'составной_индекс', 'являться', 'первый', 'лидировать', 'атрибут', 'индекс', 'тип', 'индекс'], ['аналогично', 'предыдущий', 'пример', 'применяться', 'индексный_сканирование'], ['атрибут_id', 'входить', 'составной_индекс', 'первый', 'атрибут', 'индекс', 'тип', 'индекс'], ['индексный_сканирование', 'применяться', 'размер', 'индексированных', 'атрибут', 'размер', 'кортеж', 'обработка', 'запрос', 'получить', 'индекс', 'остальных', 'случай', 'применяться', 'полный_сканирование'], ['атрибут_id', 'индексировать', 'тип', 'индекс', 'хеш'], ['применяться', 'индексный_сканирование', 'поиск', '=', 'условие', 'id', '<', '=', '10', 'применение', 'хеш', 'индекс', 'поиск', 'эффективно'], ['атрибут_id', 'индексировать', 'тип', 'индекс', 'bitmap'], ['применяться', 'индексный_сканирование', 'поиск', '=', 'условие', 'id', '<', '=', '10', 'применение', 'bitmap', 'индекс', 'поиск', 'эффективно'], ['атрибут_id', 'являться', 'ключ', 'хеш', 'кластер'], ['случай', 'применяться', 'алгоритм', 'хеширование', 'поиск', 'блок', 'чтение'], ['хороший', 'алгоритм', 'правильный', 'размер', 'кластер', 'поиск', 'осуществить', 'чтение', 'ошибка', 'выбор', 'алгоритм', 'блок', 'кластер', 'составить', 'несколько', 'тысяча', 'операция', 'чтение', 'блок'], ['атрибут_id', 'являться', 'ключ', 'индексный', 'кластер'], ['применяться', 'индексный_сканирование', 'аналогично', 'случай', 'индекс'], ['таблица', 'кластеризована', 'id', 'являться', 'ни', 'кластерный', 'ключ', 'ни', 'лидировать', 'составной_индекс'], ['ситуация', 'кластер', 'применяться', 'полный_сканирование'], ['привести', 'правило', 'выполнение', 'операция', 'поиск', 'зависимость', 'наличие', 'тип', 'индекс'], ['реализация', 'использовать', 'субд', 'принять', 'иные', 'принцип'], ['подробность', 'использование', 'тип', 'сканирование', 'поиск', 'даваться', 'руководство', 'настройка', 'субд', 'руководство', 'администратор', 'субд'], ['проиндексировать', 'индексный', 'поиск', 'быстрый', 'полный_сканирование'], ['индекс', 'занимать', 'место', 'диск', 'вопрос'], ['индексироваться', 'атрибут', 'integer', '4', 'байт'], ['значение', 'ключ', 'индекс', 'храниться', 'внутренний', 'идентификатор', 'кортеж', 'служебный', 'информация', 'вместе', 'составлять', '4', '8', 'байт'], ['посчитать', 'величина', 'использовать', 'субд', 'обратиться', 'руководство', 'администратор', 'посмотреть', 'размер', 'идентификатор', 'rowid', 'oracle', 'rid', 'db2', 'т.д.', 'размер', 'страница', 'индекс', 'правило', '4', 'кбайт'], ['выбор', 'стратегия', 'индексация', 'придерживаться', 'два', 'простой', 'принцип', 'индекс', 'высоко', 'затрата', 'выполнение', 'dml', 'операция'], ['грубый', 'оценка', 'затрата', 'принять', '1', 'работа', 'вставка', 'строка', 'таблица', 'работа', 'вставка', 'запись', 'индекс', 'равный', '2', '3', 'разный', 'субд', 'значение', 'найти', 'количество', 'операция', 'чтение', 'уровень', 'дерево', 'дерево', 'три', 'уровень', 'значение', 'integer', 'содержать', 'порядок', '533', '731', '324', 'ключ', 'страница', 'дерево', '4', 'кбайт'], ['индекс', 'отлично', 'использоваться', 'поиск', '=', '<', '>', '<', '=', '>', '=', 'between', 'достаточно', 'модифицируются'], ['bitmap', 'индекс', 'содержаться', 'готовый', 'битовый', 'вектор', 'отражать', 'вхождение', 'невхождение', 'значение', 'ответ', 'поиск', 'равенство', 'индекс', 'плохо', 'модифицируются', 'подходить', 'хранилище', 'индексирование', 'вхождение', 'слово', 'текстовый', 'документ'], ['хеш', 'индекс', 'позволять', 'осуществлять', 'поиск', 'равенство', 'хеш', 'функция', 'использоваться', 'поиск', 'блок', 'кластеризованных', 'содержать', 'значение'], ['алгоритм', 'хеш', 'функции', 'хороший', 'размер', 'кластер', 'указать', 'верно', 'поиск', 'осуществить', 'чтение'], ['индекс', 'правило', 'использовать', 'создание', 'кластер'], ['обратить', 'внимание', 'хранить', 'субд', 'индекс', 'null'], ['null', 'индекс', 'храниться', 'вероятность', 'использование', 'полный_сканирование', 'атрибут', 'декларация', 'not', 'null', 'резко', 'повышаться'], ['null', 'храниться', 'индекс', 'считать', 'самым', 'больший', 'самым', 'маленький', 'построение', 'специальный', 'значение', 'построение', 'bitmap', 'хеш', 'индекс', 'выяснить', 'какой', 'операция', 'поиск', 'индекс', 'использовать', 'оптимизатор', 'sql'], ['информация', 'правило', 'содержаться', 'руководство', 'администратор'], ['проверить', 'экспериментально', 'создать', 'тестовый', 'таблица', 'объём', 'примерно', '20', 'тыс.', 'запись', 'оптимизатор', 'выбирать', 'полный_сканирование', 'причина', 'малый', 'объём', 'выполнить', 'исследовать', 'запрос', 'произвести', 'explain', 'план', 'запрос', 'сервис', 'предоставляться', 'субд'], ['временной', 'временной', 'данными', 'временной_ряд', 'называть', 'содержать', 'дата', 'время'], ['неправильный', 'обработка', 'субд', 'служить', 'основный', 'причина', 'низкий', 'функциональность', 'производительность', 'информационный_система'], ['временной_ряд', 'вписываться', 'двухмерный', 'реляционный', 'модель'], ['sql', 'поддерживать', 'соединение', 'основать', 'равенство', 'большинство', 'разработчик', 'субд', 'ограничиваться', 'эквисоединением'], ['временной', 'приходиться', 'соединять', 'таблица', 'основа', 'перекрытие', 'диапазон', 'дата'], ['sql', 'существовать', 'операция', 'позволять', 'задать', 'соединение', 'непосредственно'], ['ряд', 'атрибут', 'курс', 'валюта', 'цена', 'товар', 'изменяться', 'время'], ['атрибут', 'действительный', 'дата', 'актуальный', 'течение', 'определённый', 'интервал', 'время', 'день', 'курс', 'валюта'], ['субд', 'позволять', 'обрабатывать', 'многомерный', 'обработка', 'временной_ряд', 'использовать', 'механизм', 'время', 'являться', 'измерение'], ['многомерный', 'процессор', 'применяться', 'обработка', 'геофизический', 'географический'], ['система', 'использоваться', 'индекс', 'клон'], ['привести', 'пример', 'обработка', 'цена', 'товар', 'код', 'товар', 'начальный', 'дата', 'конечный', 'дата', 'цена', 'create_table', 'prices', 'id', 'integer', 'date_from', 'date', 'not', 'null', 'date_to', 'date', 'price', 'decimal', 'not', 'null', 'constraint', 'p_range', 'check', 'date_from', '<', 'date_to', 'отметить', 'отношение', 'задать', 'первичный', 'ключ', 'задача', 'определение', 'ключ', 'отношение', 'отличаться', 'сложность'], ['известный', 'момент', 'изменение', 'цена', 'заранее', 'известный', 'объясняться', 'отсутствие', 'ограничение', 'not', 'null', 'атрибут', 'date_to', 'select', 'price', 'from', 'prices', 'where', 'id', '=', 'product_code', 'and', 'date_from', '<', 'when_date', 'and', 'date_to', '>', '=', 'nvl(:when_date', 'to_date(’01/12/4721', 'dd', 'mm', 'yyyy', 'product_code', 'when_date', 'обозначать', 'переменный', 'включающего', 'язык', 'дата', '01/12/4721', 'являться', 'большой', 'поддерживать', 'субд', 'дата'], ['операция', 'лучше', 'оформлять', 'вид', 'хранить_процедура', 'функция', 'претранслированных', 'запрос'], ['хранилище', 'обрабатываться', 'архивный', 'обработка', 'временной_ряд', 'актуальный'], ['возникать', 'вопрос', 'повод', 'точность', 'дата', 'актуальный', 'курс', 'валюта', 'биржевой', 'сделка'], ['определить', 'достаточный', 'точность', 'дата', 'секунда'], ['существовать', 'проблема', 'зарегистрировать', 'сделка', 'цена', 'акция', 'постоянно', 'меняться'], ['проектировщик', 'случай', 'обрабатывать', 'временной_ряд', 'простой', 'решение', 'отследить', 'цена', 'акция', 'момент', 'прохождение', 'биржевой', 'транзакция', 'сохранить', 'цена', 'часть', 'информация', 'модифицировать', 'транзакция'], ['рассмотреть', 'простой', 'вариант', 'решение', 'задача', 'ни', 'подходить', 'использовать', 'временной_ряд'], ['показывать', 'известный', 'текущий', 'момент', 'дата', 'момент', 'цена', 'товар', 'перестать', 'актуальный'], ['сделать', 'значение', 'равный', 'null', 'самым', 'больший', 'значение', 'определить', 'default', 'значение', 'атрибут'], ['отметить', 'значение', 'default', 'большинство', 'реализация', 'субд', 'работать', 'вставка', 'новый', 'запись'], ['создать', 'триггер', 'срабатывать', 'выполнение', 'операция', 'insert', 'update', 'преобразует', 'null', 'больший', 'допустимый', 'значение', 'дата'], ['случай', 'пользователь', 'работать', 'подобный', 'информация', 'забыть', 'взяться', 'иная', 'дата'], ['спроектировать', 'схема_база', 'запрос', 'образ', 'приложение', 'работать', 'выборками', 'отвечать', 'следующий', 'требование', 'принудительно', 'конвертировать', 'null', 'дата', 'показывать', 'пользователь', 'использовать', 'соответствующий', 'представление', 'содержать', 'decode', 'иное', 'средство', 'конвертация', 'больший', 'дата', 'вызывать', 'хранимую', 'процедура', 'выполнить', 'преобразование'], ['высоко', 'перечислить', 'возможный', 'проектный', 'решение'], ['отметить', 'эффективный', 'поиск', 'создать', 'составной_индекс', 'атрибут', 'date_from', 'date_to', 'субд', 'использовать', 'составной_индекс', 'атрибут', 'допустимый', 'значение', 'null'], ['простой', 'аналитик', 'задача', 'представление', 'временной_ряд', 'повлечь', 'множество', 'неприятный', 'момент', 'проектирование'], ['рассмотреть', 'проблема', 'поиск', 'первичный', 'ключ', 'отношение'], ['оказываться', 'единственный', 'разумный', 'вариант', 'предотвращение', 'дубликат', 'каждый', 'единичный', 'интервал', 'соответствовать', 'отдельный', 'строка'], ['биржевой', 'операция', 'интервал', 'равный', 'секунда', 'система'], ['таблица', 'преимущество', 'результат', 'выбирать', 'помощь', 'эквисоединения', 'объём', 'обрабатывать', 'большой'], ['использование', 'временной_ряд', 'правило', 'являться', 'актуальный', 'разговор', 'аналитик'], ['какой', 'решение', 'хороший', 'зависеть', 'использовать', 'субд', 'особенность', 'оптимизатор', 'запрос', 'особенность', 'использование', 'индекс', 'мощность', 'sql', 'хранить_процедура', 'триггер'], ['хранение', 'объект', 'сложный', 'задача', 'проектирование', 'схема_база', 'решение', 'привлекаться', 'администратор', 'база'], ['универсальный', 'решение', 'подойти', 'субд', 'существовать', 'производитель', 'субд', 'создавать', 'способ', 'хранение', 'доступ_данным', 'считать', 'хороший', 'гордиться'], ['проектирование', 'схема_база', 'влиять', 'следующий', 'параметр', 'общий', 'большинство', 'субд', 'размер', 'табличный', 'пространство', 'хранение', 'таблица', 'размер', 'табличный', 'пространство', 'хранение', 'индекс', 'размер', 'табличный', 'пространство', 'хранение', 'blob', 'кластер', 'параметр', 'размер', 'словарь', 'код', 'хранить_процедура', 'функция', 'триггер', 'пакет', 'статический', 'sql', 'реализовать', 'db2', 'управлять', 'файл', 'файл', 'журнал', 'интенсивность', 'поток', 'запрос', 'модифицировать', 'индекс', 'фал', 'временной', 'табличный', 'пространство', 'хранение', 'временной', 'таблица', 'строиться', 'выполнение', 'group', 'by', 'временной', 'объект', 'интенсивность', 'поток', 'запрос', 'инициировать', 'создание', 'временной', 'таблица', 'поток', 'транзакция', 'read', 'write', 'read', 'only', 'объём', 'модифицировать', 'считывать', 'характеристика', 'параллельный', 'работа', 'транзакция', 'количество', 'приложение', 'работать', 'параллельно', 'база', 'количество', 'соединение', 'база', 'каждый', 'приложение', 'файл', 'параметр', 'старт', 'ядро', 'субд', 'загрузочный', 'модуль', 'ядро', 'субд', 'утилит', 'субд', 'входной', 'выходной', 'генерировать', 'пользовательский', 'программа', 'скрипт', 'управление', 'субд'], ['постарайтесь', 'описать', 'параметр', 'общий', 'вид', 'обсудить', 'вопрос', 'администратор', 'база', 'внимательно', 'выслушайте', 'рекомендация'], ['мнение', 'расходиться', 'ваш', 'представление', 'работать', 'субд', 'попытаться', 'понять', 'аргумент', 'запомнить', 'особенность', 'субд', 'связать'], ['отразить', 'журнал', 'проектирование'], ['вид', 'нюанс', 'размещение', 'объект', 'конфигурация', 'сервер', 'база', 'учесть', 'этап', 'проектирование', 'требовать', 'полномасштабный', 'тестирование'], ['избежать', 'ошибка', 'проектирование', 'приготовиться', 'схема_база', 'меняться', 'этап', 'реализация', 'неоднократно'], ['защита', 'стратегия', 'защита', 'определяться', 'этап', 'анализ', 'этап', 'проектирование', 'предстоять', 'реализовать', 'стратегия', 'спроектировав', 'соответствующий', 'структура', 'схема_база', 'модуль'], ['большинство', 'субд', 'иметь', 'развитой', 'средство', 'дискреционный', 'защита', 'ряд', 'субд', 'иметь', 'встроенные', 'подсистема', 'аудит', 'освобождать', 'создание', 'собственный', 'средство', 'защита'], ['субд', 'предоставлять', 'набор', 'пакетированных', 'привилегия', 'управление', 'данными', 'connect', 'разрешать', 'соединение', 'база', 'resource', 'разрешать', 'создание', 'собственный', 'объект', 'база', 'dba', 'позволять', 'выполнять', 'функция', 'администратор', 'конкретный', 'база', 'и др.'], ['дискреционный', 'защита', 'предполагать', 'разграничение', 'доступ', 'объект', 'таблица', 'представление', 'т.п.', 'данным', 'храниться', 'объект'], ['дискреционный', 'защита', 'обеспечивать', 'создание', 'пользовательский', 'пакетированных', 'привилегия', 'роль', 'группа', 'привилегия'], ['случай', 'набор', 'привилегия', 'иные', 'объект', 'назначаться', 'группа', 'роль', 'группа', 'роль', 'назначаться', 'пользователь', 'образ', 'пользователь', 'получать', 'привилегия', 'выполнение', 'иных', 'операция', 'объект', 'косвенно', 'группа', 'роль'], ['реализация', 'допускаться', 'выполнение', 'определённый', 'набор', 'операция', 'имя', 'другого', 'пользователь', 'привилегия', 'частность', 'вызов', 'пакет', 'хранить_процедура'], ['пользователь', 'вызывать', 'объект', 'ни', 'изменить', 'пакет', 'хранимую', 'процедура', 'ни', 'получить', 'доступ', 'код', 'операция', 'данными', 'выполняться', 'хранить_процедура', 'пакет', 'выполнить', 'имя', 'владелец', 'хранить_процедура', 'пакет'], ['относиться', 'триггер'], ['проектировщик', 'любить', 'использовать', 'описать', 'выше', 'метод', 'защита', 'похожий', 'инкапсуляция'], ['проектировщик', 'строить', 'каскадировать', 'вызов', 'хранить_процедура', 'весьма', 'сложный', 'протокол', 'доступ_данным', 'имитировать', 'мандатный', 'защита'], ['подход', 'преимущество', 'недостаток'], ['сторона', 'доступ_данным', 'скрыть', 'хранить_процедура', 'пакет', 'случай', 'словарь', 'сильно', 'перегрузить'], ['реализация', 'субд', 'работать', 'курсор', 'хранить', 'процедурах', 'пакет', 'вызывать', 'чрезмерный', 'загрузка', 'процессор'], ['большинство', 'реализация', 'субд', 'предложение', 'sql', 'выполнять', 'хранить_процедура', 'пакет', 'иметь', 'высокий', 'приоритет', 'операция', 'sql', 'выполнять', 'приложение', 'пользователь'], ['связь', 'большой', 'количество', 'вызов', 'хранить_процедура', 'существенно', 'замедлить', 'выполнение', 'запрос', 'непосредственно', 'приложение', 'пользователь'], ['случай', 'сделать', 'защита', 'закрывать', 'запрос', 'хранить_процедура', 'требоваться', 'субд', 'достаточно', 'развить', 'язык', 'позволять', 'выполнять', 'синтаксический', 'разбор', 'внутри', 'хранить_процедура', 'строить', 'статический', 'динамический', 'предложение', 'sql'], ['сфера', 'защита', 'относиться', 'сохранность', 'восстановление', 'сбой', 'система'], ['обеспечение', 'бесперебойный', 'работа', 'применять', 'архивирование', 'число', 'инкрементный', 'база', 'журнал', 'транзакция', 'случай', 'отказ', 'система', 'следующий', 'старт', 'операция', 'данными', 'восстанавливать', 'журналу', 'транзакция', 'производить', 'откат', 'определённый', 'момент', 'время'], ['применять', 'метод', 'горячий', 'резервирование', 'работать', 'два', 'сервер', 'основной', 'обрабатывать', 'запрос', 'пользователь', 'резервный', 'продолжать', 'работа', 'основный', 'сервер', 'случай', 'отказ'], ['состояние', 'хранилище', 'основный', 'резервный', 'сервер', 'согласовать', 'поддерживаться', 'субд', 'автоматически', 'позволять', 'проектировщик', 'разрабатывать', 'собственный', 'механизм', 'репликация'], ['работа', 'сервер', 'режим', 'горячий', 'резервирование', 'избавлять', 'хранение', 'резервный', 'копия', 'аналитик', 'предусмотреть'], ['бизнес', 'процессы', 'природа', 'требовать', 'информационный_система', 'работа', 'режим', '24x7', 'простой', 'стоить', 'дорого'], ['случай', 'работать', 'два', 'три', 'параллельный', 'система', 'отказ', 'сервер', 'резервный', 'сервер', 'немедленно', 'принимать', 'управление'], ['эффективный', 'дорогостоящий', 'способ', 'реализация', 'задача', 'являться', 'предоставлять', 'субд', 'технология', 'симметричный', 'репликация'], ['вариант', 'архивирование', 'журнал', 'транзакция', 'резервный', 'узел', 'специальный', 'устройство', 'немедленный', 'докат', 'журнал', 'резервный', 'узел', 'случай', 'отказ', 'основный'], ['разные', 'субд', 'предлагать', 'разный', 'механизм', 'реализация', 'подобный', 'бесперебойный', 'работа', 'принятие', 'верный', 'проектный', 'решение', 'необходимый', 'консультация', 'проектировщик', 'администратор', 'база'], ['простой', 'ситуация', 'информационный_система', 'использоваться', 'основный', 'операция', 'чтение', 'меняться', 'редко', 'резервный', 'копирование', 'требоваться', 'система', 'легко', 'восстановить', 'работать', 'система'], ['достаточный', 'обеспечить', 'наличие', 'образ', 'база', 'архив', 'файл', 'база', 'управлять', 'файл', 'снимок', 'база', 'определённый', 'момент', 'время', 'снимок', 'получить', 'остановить', 'субд', 'сделать', 'резервный', 'копия', 'указать', 'файл'], ['большинство', 'информационный_система', 'обеспечение', 'безотказный', 'работа', 'система', 'ситуация', 'представлять', 'средний', 'описать', 'выше', 'два', 'крайний', 'случай'], ['проектировщик', 'пересмотреть', 'результат', 'анализ', 'исходить', 'ответ', 'следующий', 'вопрос', 'график', 'необходимый', 'доступность', 'система', 'запрос', 'пользователь', 'система', 'обязательно', 'работать', 'допустимый', 'допустимый', 'период', 'профилактический', 'простой', 'система', 'допустимый', 'допустимый', 'период', 'ограничение', 'доступ', 'система', 'отказ', 'система', 'получить', 'источник', 'ввод', 'новый', 'документ', 'накладный', 'операция', 'счёт', 'заказ', 'телефонный', 'переговоры', 'информация', 'автоматизированный', 'датчик', 'т.п.', 'получить', 'объём', 'повторно', 'вводить', 'информация', 'каково', 'допустимый', 'время', 'восстановление', 'система', 'сбой', 'иметься', 'график', 'пакетный', 'суточный', 'задание', 'приложение', 'информационный_система', 'работать', 'оборудование', 'иметься', 'резервный', 'аппаратный', 'средство', 'случай', 'отказ', 'основный', 'иметься', 'запас', 'мощность', 'оборудование', 'функционировать', 'информационный_система', 'какова', 'скорость', 'передача', 'резервный', 'копирование', 'иметься', 'специальный', 'отказоустойчивый', 'носитель', 'хранение', 'резервный', 'копия', 'иметься', 'правило', 'циклический', 'использование', 'резервный', 'носитель', 'иметься', 'специальный', 'защитить', 'место', 'хранение', 'резервный', 'носитель'], ['ответ', 'вопрос', 'позволить', 'реально', 'оценить', 'ситуация', 'уточнить', 'требование', 'заказчик', 'формализованный', 'аналитик'], ['заказ', 'работоспособность', 'система', 'режим', '24х7', 'являться', 'обоснованный', 'система', 'простаивать', '50', 'время'], ['требование', '24х7', 'отражать', 'особенность', 'бизнес', 'вопрос', 'помочь', 'построить', 'соответствующий', 'стратегия', 'защита', 'сбой'], ['качество', 'построить', 'проектирование', 'стратегия', 'защита', 'проверить', 'тестер', 'работа', 'генерация', 'проведение', 'тест', 'имитировать', 'отказ', 'оборудование', 'проводиться', 'этап', 'проектирование', 'течение', 'этап', 'разработка', 'цель', 'ранний', 'обнаружение', 'дефект', 'стратегия', 'защита', 'сбой'], ['обмен_данными', 'внешний', 'система', 'большинство', 'аналитик', 'считать', 'задача', 'обмен', 'внешний', 'система', 'чисто', 'физический', 'решить', 'априори', 'следствие', 'уделять', 'вопрос', 'внимание', 'анализ'], ['зачастую', 'проектировщик', 'вынуждены', 'нести', 'нагрузка', 'создание', 'система', 'обмен'], ['импорт', 'экспорт', 'внешний', 'система', 'обеспечиваться', 'утилит', 'поставляемыми', 'состав', 'субд', 'специальный', 'средство', 'обмен_данными', 'проектируемой', 'информационный_система'], ['писать', 'код', 'система', 'обмен_данными', 'внимательно', 'изучить', 'сервис', 'предоставлять', 'субд', 'использовать', 'полностью'], ['обмен_данными', 'идти', 'два', 'однородный', 'база', 'производитель', 'версия', 'средство', 'импорт', 'экспорт', 'внутренний', 'формат', 'субд', 'использовать', 'ограничение'], ['обмен_данными', 'осуществляться', 'субд', 'разный', 'производитель', 'импорт', 'экспорт', 'использовать', 'текстовый', 'файл'], ['обратить', 'особый', 'внимание', 'особенность', 'представление', 'null', 'пустой', 'строка', 'символ', 'blob', 'потенциально', 'присутствовать', 'расхождение', 'интерпретация', 'содержимого', 'файл', 'загрузчик'], ['импорт', 'экспорт', 'схема', 'оказаться', 'сложный', 'дело'], ['производитель', 'субд', 'заявлять', 'поддержка', 'стандарт', 'ansi', 'практика', 'большинство', 'база', 'удовлетворять', 'полностью'], ['синтаксис', 'операция', 'создание', 'таблица', 'существенно', 'различаться', 'синтаксис', 'определение', 'хранить_процедура', 'триггер', 'большинство', 'субд', 'несовместимый'], ['информация', 'схема_база', 'получить', 'системный', 'каталог', 'анализ', 'системный', 'представление', 'полный', 'поддержка', 'стандарт'], ['информационный_система', 'требоваться', 'обмен_данными', 'субд', 'разный', 'производитель', 'правило', 'проектировщик', 'принимать', 'решение', 'создание', 'специализированный', 'средство'], ['полнофункциональным', 'применить', 'решение', 'задача', 'конвертация', 'субд', 'решить', 'локальный', 'задача', 'способный'], ['интерфейсы', 'обмен', 'внешний', 'система', 'разбить', 'следующий', 'категория', 'одноразовый', 'импорт', 'унаследовать', 'правило', 'старый', 'система', 'периодический', 'обмен_данными', 'узел', 'информационный_система', 'внутренний', 'обмен', 'периодический', 'обмен', 'информационный_система', 'внешний', 'обмен'], ['обмен_данными', 'осуществляться', 'режим', 'близкий', 'реальный', 'время', 'задача', 'распределить', 'база', 'простой', 'передача'], ['анализ', 'задача', 'загрузка', 'выгрузка', 'проектировщик', 'рассмотреть', 'подсистемам', 'нужный', 'интерфейс', 'выгрузка', 'интерфейс', 'загрузка', 'внешний', 'система', 'каковы', 'периодичность', 'обмен_данными', 'объём', 'передавать', 'требоваться', 'степень', 'синхронизация', 'два', 'система', 'каковы', 'возможный', 'метод', 'транспортировка', 'согласовать', 'формат', 'обмен', 'определить', 'зависимость', 'загрузка', 'выгрузка', 'порядок', 'выполнение', 'операция', 'определить', 'мероприятие', 'выполнить', 'сбой', 'время', 'загрузка', 'выгрузка', 'сформулировать', 'правило', 'определение', 'ошибочный', 'запись', 'загрузка', 'определить', 'правило', 'регистрация', 'операция', 'передача', 'приём', 'определить', 'график', 'передача', 'большинство', 'информационный_система', 'операция', 'выполняться', 'ночной', 'время', 'составить', 'график', 'разработка', 'тестирование', 'собственный', 'утилита', 'скрипт', 'обмен_данными', 'составить', 'график', 'разовый', 'загрузка', 'наследовать', 'старый', 'система', 'подготовить', 'методика', 'проверка', 'корректность', 'операция'], ['отметить', 'наследование', 'старый', 'система', 'проектировщик', 'приходиться', 'надеяться', 'создать', 'утилита', 'позволять', 'достать', 'старый', 'система', 'становиться', 'задача', 'проектировщик', 'новый', 'система'], ['случиться', 'прийтись', 'работать', 'жёсткий', 'условие', 'возможность', 'выделить', 'время', 'тестирование', 'новый', 'программа', 'извлечение'], ['случай', 'разработать', 'набор', 'тестовый'], ['старый', 'система', 'иметься', 'какой', 'средство', 'извлечение', 'использовать', 'разумный', 'выход'], ['загрузка', 'старый', 'система', 'проектировщик', 'столкнуться', 'больший', 'объём', 'неочищенный', 'нарушение', 'целостность', 'возникнуть', 'сбой', 'система', 'заплатка', 'разработчик', 'иных', 'неприятность'], ['оказать', 'давление', 'допустить', 'наличие', 'неочищенный', 'новый', 'система'], ['принять', 'мера', 'очистка', 'вероятно', 'большинство', 'спроектировать', 'ограничение', 'целостность', 'ослабить', 'загрузить', 'какой', 'часть'], ['цена', 'уступка', 'достаточно', 'высокий', 'принять', 'ослабить', 'ограничение', 'восстановить', 'нарушить', 'отслеживаться', 'субд', 'автоматически'], ['вывод', 'поддаваться', 'давление', 'день', 'потратить', 'очистка', 'стоять', 'сравнение', 'наличие', 'информационный_система', 'обладать', 'элементарный', 'целостность'], ['делать', 'данными', 'содержать', 'ошибка', 'согласовать'], ['простой', 'решение', 'пропускать', 'собирать', 'отдельно', 'анализировать'], ['ждать', 'проблема', 'субд', 'загрузка', 'собственный', 'утилит', 'позволять', 'случай', 'возврат', 'код', 'ошибка', 'указать', 'запись', 'произойти', 'сбой'], ['загружать', 'небольшой', 'порция', 'лёгкий', 'найти', 'запись', 'повлечь', 'сбой'], ['разместить', 'нарушение', 'целостность', 'отдельный', 'таблица', 'обработать'], ['подобный', 'операция', 'аналитик', 'правило', 'предусматривать', 'лучше', 'автоматизировать', 'отдельный', 'компонент'], ['проектировщик', 'прийтись', 'озадачить', 'аналитик', 'исследование', 'правило', 'корректность', 'выполнить', 'работа', 'необходимый', 'помощь', 'опытный', 'пользователь', 'старый', 'информационный_система'], ['крайне', 'важный', 'найти', 'являться', 'надёжный', 'большой', 'вероятность', 'указать', 'правильно'], ['отталкиваться', 'создание', 'программа', 'проверка', 'корректность'], ['субд', 'предоставлять', 'средство', 'позволять', 'выгрузить', 'схема', 'хранить_процедура', 'триггеры', 'иметься', 'достаточный', 'количество', 'сторонний', 'фирма', 'способный'], ['самым', 'привлекательный', 'осуществлять', 'выгрузка', 'указать', 'объект', 'вид', 'скрипт', 'описывать', 'создание'], ['позволять', 'создать', 'объект', 'ограничение', 'ссылочный_целостность', 'изменить', 'добавить', 'ограничение', 'опция', 'рекомендоваться', 'пользоваться'], ['дело', 'большинство', 'утилита', 'выгрузка', 'схема', 'опрашивать', 'системный', 'каталог', 'генерировать', 'скрипт', 'создание', 'таблица', 'порядок', 'имя', 'таблица', 'встречаться', 'системный', 'каталог'], ['застраховать', 'имя', 'таблица', 'потомка', 'считать', 'имя', 'таблица', 'предок'], ['исправление', 'операция', 'создание', 'объект', 'застраховать', 'большинство', 'субд', 'разный', 'синтаксис', 'определение', 'ограничение', 'ссылочный_целостность', 'серверный', 'ограничение', 'индекс'], ['перечислить', 'определение', 'ссылочный_целостность', 'таблица', 'tx', 'create_table', 't(id', 'int', 'primary', 'key', 'name', 'char(10', 'create_table', 'tx(i', 'int', 'j', 'int', 'references', 't(id'], ['create_table', 'tx(i', 'int', 'j', 'int', 'references', 't(id', 'on', 'delete', 'no_action', 'on', 'update', 'no_action'], ['create_table', 'tx(i', 'int', 'j', 'int', 'foreign', 'key', 'j', 'references', 't(id', 'on', 'delete', 'no_action', 'on', 'update', 'no_action'], ['create_table', 'tx(i', 'int', 'j', 'int', 'foreign', 'key', 'j', 'references', 't', 'on', 'delete', 'no_action', 'on', 'update', 'no_action'], ['create_table', 'tx(i', 'int', 'j', 'int', 'constraint', 't_ref_cascade', 'foreign', 'key', 'j', 'references', 't(id', 'on', 'delete', 'no_action', 'on', 'update', 'no_action', 'означать', 'точность', 'синтаксис', 'разный'], ['преобразование', 'предложение', 'sql', 'требуемый', 'формат', 'создать', 'специальный', 'утилит'], ['случай', 'требоваться', 'разбор', 'текст', 'весьма', 'нецелесообразный', 'применение', 'инструмент', 'perl'], ['сожаление', 'операция', 'перенос', 'хранить_процедура', 'триггер', 'степень', 'автоматизировать', 'вследствие', 'существенный', 'различие', 'язык', 'написание', 'разный', 'субд'], ['субд', 'совместимый', 'синтаксис', 'частично', 'большой', 'доля', 'ручной', 'работа', 'избежать']]"
        ],
        [
         "37",
         "Этапы разработки проекта3.doc",
         "Этапы разработки проекта: определение стратегии тестирования и проектирование\rОпределение стратегии тестирования\rКак отмечалось ранее, на этапе анализа привлекаются группы тестирования, например для получения сравнительных характеристик предполагаемых к использованию аппаратных платформ, операционных систем, СУБД, иного окружения. Кроме того, на данном этапе определяется план работ по обеспечению надежности информационной системы и ее тестирования. Для любых проектов целесообразным является привлечение тестеров на ранних этапах разработки, в частности на этапе анализа и проектирования. Если проектное решение оказалось неудачным и это обнаружено слишком поздно - на этапе разработки или, что еще хуже, на этапе внедрения в эксплуатацию, - то исправление ошибки проектирования может обойтись очень дорого. Чем раньше группы тестирования выявляют ошибки в информационной системе, тем ниже стоимость сопровождения системы. Время на тестирование системы и на исправление обнаруженных ошибок следует предусматривать не только на этапе разработки, но и на этапе проектирования.\rДля автоматизации тестирования следует использовать системы отслеживания ошибок (bug tracking). Это позволяет иметь единое хранилище ошибок, отслеживать их повторное появление, контролировать скорость и эффективность исправления ошибок, видеть наиболее нестабильные компоненты системы, а также поддерживать связь между группой разработчиков и группой тестирования (уведомления об изменениях по e-mail и т.п.). Чем больше проект, тем сильнее потребность в bug tracking.\r\rПроектирование\rНа этапе проектирования формируется модель данных. Проектировщики в качестве исходной информации получают результаты анализа. Конечным продуктом этапа проектирования являются:\rсхема базы данных (на основании ER-модели, разработанной на этапе анализа); \rнабор спецификаций модулей системы (они строятся на базе моделей функций). \rЕсли проект небольшой, то в качестве аналитиков, проектировщиков и разработчиков могут выступать одни и те же люди. Возникает вопрос: насколько вообще актуальна передача результатов самому себе? Думаем, что актуальна. Представьте себе, что вы передаете данные кому-либо, кто мало знает о системе. Зачастую это помогает, например, найти не описанные вообще, нечетко описанные, противоречиво описанные компоненты системы.\rВсе спецификации должны быть точными. План тестирования системы дорабатывается также на этом этапе разработки. Во многих проектах результаты этапа проектирования оформляются единым документом, который называют технической спецификацией. В нем также описывают принятый подход к решению каких-либо сложных технических вопросов.\r\rЖурнал проектирования\rПри проектировании возникает необходимость регистрировать все обсуждаемые варианты и окончательные решения. Не секрет, что проектировщики порой меняют первоначальные решения. Это может происходить потому, что со временем участники проекта забывают аргументы в пользу принятого решения. Подобную информацию можно хранить в репозитарии используемого CASE-средства, в текстовых файлах, просто на бумаге. Журнал проектирования является полезным материалом для новых членов групп проектировщиков, а также для разработчиков и тестировщиков.\rТакой журнал может вестись как на этапе анализа, так и на этапе разработки и тестирования.\r\rПланирование этапа проектирования\rТщательное планирование важно для любого проекта. Это входит в обязанности руководителя проекта и руководителя группы проектирования (консультации с аналитиками в этом случае будут обязательными). Это позволяет:\rРазбить глобальную задачу на небольшие, независимые задачи. Такими задачами легче управлять, такие задачи легче реализовывать. \rОпределить контрольные даты (этапы сдачи), которые позволят определить, насколько успешно продвигается проект, какие направления отстают, какие недогружены, какие работают успешно. Это позволяет обнаружить отставание от сроков сдачи и вовремя предотвратить авралы. \rОпределить зависимости между задачами, а также последовательность завершения задач. \rПрогнозировать загрузку персонала, наем временных работников, привлечение других групп разработчиков, привлечение консультантов (если это необходимо). \rПолучить четкое представление о том, когда можно начать этап реализации. \rПолучить четкое представление о том, когда можно начать этап опытной эксплуатации. \r\rПерепланирование\rЗаказчики всегда хотят, чтобы план выполнения работ оставался неизменным. На практике этого редко удается достичь в полном объеме. Определенным компромиссом здесь может стать неизменность установленных сроков сдачи компонентов системы в эксплуатацию.\rЗадачи проектирования.\r\rРанние стадии\rРассмотрение результатов анализа\rЭто собственно процесс передачи информации от аналитиков проектировщикам. На практике это итерактивный процесс. У проектировщиков неизбежно будут возникать вопросы к аналитикам, и наоборот. Информация о системе будет постоянно уточняться. При разработке схемы базы данных может измениться информационная модель, полученная на этапе анализа, например потому, что имеющееся проектное решение нестабильно либо медленно работает при реализации его посредством выбранной СУБД или в силу иных причин. Проверить, охватывает ли анализ все бизнес-процессы системы (то есть осуществить проверку на полноту), проектировщики не в состоянии, но проверку информационной модели на непротиворечивость и корректность проектировщики провести могут. Это позволяет отследить ошибки в информационной модели и не повторить их в модели данных. Если результаты хранятся в репозитарии CASE-средства, то такая проверка на корректность может быть произведена автоматически.\r\rСеминары\rРанние стадии проектирования сопряжены с нудной и утомительной работой. Проектировщики и аналитики должны достигнуть полного понимания требований заказчика. Семинары являются быстрым и эффективным способом обмена информацией. Хороший способ убедиться в том, правильно ли проектировщики понимают назначение той или иной подсистемы, - взять один или несколько сценариев бизнес-процессов и проиграть их. Это можно сделать в форме простой диаграммы потока данных, причем необходимо указать не только автоматизированные, но и ручные функции.\r\rКритические участки\rКритические участки системы изучаются при первом обследовании системы и уточняются на этапе анализа. Термин «критические» может означать жизненно важные как для нормального функционирования информационной системы с точки зрения бизнеса (например, время простоя автоматизированной линии изготовления материала X не должно превышать одной минуты), так и для успешной реализации и приемки проекта. Критические с точки зрения бизнеса участки информационной системы хорошо подходят для макетирования. На основе этих макетов (работы макетирования выполняют проектировщики и группы тестирования) тестеры дают оценку качества как информационной модели, так и модели данных. Также макетирование позволяет показать, какие требования и какими средствами могут быть выполнены, а какие требования - не могут.\rЧасто на этапе проектирования выявляются критические участки, которые не были очевидными на этапе анализа. Это влечет за собой необходимость уточнения информационной модели. Часто это связано с особенностями реализации тех или иных возможностей в выбранной СУБД. Некоторые функции, которые на этапе анализа выглядят простыми, могут стать очень сложными, когда дело дойдет до физической реализации. Например:\rВ выбранной СУБД отсутствует эффективный механизм сканирования деревьев, а при анализе выявлено большое количество справочников и выбраны интерфейсы представления в виде деревьев, кроме того это понравилось заказчику, а СУБД при большом справочнике работает слишком медленно. \rДругая распространенная неприятность - неполно реализованная ссылочная целостность. В СУБД не реализованы каскадные модификации, в информационной модели нормализованные отношения предполагают наличие каскадных удалений и обновлений. Реализация же таких механизмов посредством триггеров оказалась слишком медленной, и уровень каскадирования триггеров ниже, чем уровень каскадных операций, определенных в информационной модели. \rТакие моменты могут инициировать не только изменение информационной модели, но и смену СУБД.\rМежду критическими участками проекта и его рисками существует тесная связь. Критический участок разработки (например, срыв сроков первого этапа сдачи проекта заказчику) может стоить целого проекта. Причинами срыва могут быть как ошибки проектирования, так и нехватка персонала.\r\rОценка ограничений\rОграничениями, известными с момента обследования бизнес-процессов, являются смета затрат и сроки внедрения. Могут быть и другие ограничения, например допуск персонала к той или иной информации (группы аналитиков к информации о бизнес-процессах в фирме, ограничения доступа к секретной информации и т.п.).\rРешения относительно выбора аппаратной платформы, как правило, необратимы, поскольку тесно связаны со сметой затрат и наличием обслуживающего персонала. Например, решения на платформе RS/6000 и Intel с точки зрения сметы затрат выглядят одинаково, но персонала, способного квалифицированно обслуживать RS/6000, нет, и руководство не согласно оплатить обучение сотрудников, хотя решение на основе RS/6000 обладает более высокой масштабируемостью. Это может послужить причиной выбора платформы Intel. Аналогичные причины могут влиять и на выбор операционной системы.\rЕсли проект является расширением или модернизацией существующей информационной системы, то число унаследованных ограничений также может быть большим. На этапе проектирования осуществляется обязательная проверка требований к информационной системе в свете выявленных ограничений. Менять платформу, операционную систему или СУБД на этапе реализации сложно, а на этапе опытной эксплуатации практически невозможно (на это просто не хватит времени, если не произойдет чудо). Чем большее количество компонентов системы уже реализовано, тем сложнее произвести подобную замену. Большинство СУБД сейчас работают на нескольких аппаратных платформах и нескольких операционных системах, но если есть участки кода проекта, зависимые от операционной системы или аппаратной платформы, то их изменение может обойтись очень дорого. В данной статье мы не будем обсуждать вопросы переносимости кода, поскольку они выходят за рамки этого цикла.\rЕсли какие-либо требования не могут быть удовлетворены в принципе, принимается решение о доведении этого факта до сведения спонсоров проекта (руководства фирмы). Обнаружение неработоспособности системы в процессе эксплуатации ничем хорошим обернуться не может, особенно если до руководства фирмы дойдет информация о том, что невыполнимость требований была известна заранее.\r\rОпределение целевой архитектуры\rПод выбором архитектуры мы понимаем и выбор платформы (платформ), и выбор операционной системы (операционных систем). В  системе могут работать несколько компьютеров на разных аппаратных платформах и под управлением различных операционных систем. Если к автоматизации того или иного бизнеса до вас уже приложили руки, причем неоднократно, вы можете обнаружить настоящий «зверинец» платформ и операционных систем. Перенос ПО на ту или иную платформу - процесс не безболезненный, да и управление разнородной сетью может также стать делом проблемным. Если же обстоятельства таковы, что ПО на рабочих местах конечных пользователей должно работать под управлением нескольких операционных систем (ОС), то следует обязательно выделить зависимые от ОС участки кода и жестко описать интерфейсы обмена компонентов информационной системы, сделав их независимыми от ОС. При написании кода модулей, работающих под управлением нескольких ОС, следует ориентироваться на ту из них, которая обладает наиболее жесткими требованиями.\rКроме определения платформы следует выяснить следующее:\rБудет ли это архитектура «файл-сервер» или «клиент-сервер». \rБудет ли это 3-уровневая архитектура со следующими слоями: сервер, ПО промежуточного слоя (сервер приложений), клиентское ПО. \rБудет ли база данных централизованной или распределенной. Если база данных будет распределенной, то какие механизмы поддержки согласованности и актуальности данных будут использоваться. \rБудет ли база данных однородной, то есть будут ли все серверы баз данных продуктами одного и того же производителя (например, все серверы только Oracle или все серверы только DB2 UDB). Если база данных небудет однородной, то какое ПО будет использовано для обмена данными между СУБД разных производителей (уже существующее или разработанное специально как часть проекта). \rБудут ли для достижения должной производительности использоваться параллельные серверы баз данных (например, Oracle Parallel Server, DB2 UDB и т.п.). \rЭти решения часто принимаются до начала этапа проектирования (на этапе анализа). На этапе проектирования полезно еще раз рассмотреть все причины выбора той или иной архитектуры, провести тесты производительности и надежности критических участков информационной системы. Это позволит избежать тяжело устраняемых ошибок проектирования. Довольно часто на этапе проектирования возникают непредвиденные технические проблемы, например аналитики не учитывают группу пользователей, имеющих доступ к информационной системе посредством текстовых терминалов. Это ошибка анализа, но выявляется она только на этапе проектирования. Такие проблемы должны решаться вместе с аналитиками, которые инициируют изменение информационной модели.\rЕсли в среде используется сеть, то на этапе проектирования необходимо определить требуемые уровни сервиса сети и спроектировать ее топологию. Необходимо также провести тесты сети, чтобы увидеть, обеспечивает ли существующая сеть должную пропускную способность и имеется ли резерв пропускной способности сети. Если результат отрицательный, то следует четко описать необходимые изменения аппаратного обеспечения и топологии сети.\r\rВыделение потенциальных узких мест в информационной системе\rЕсли заказчик заявит, что производительность системы не имеет никакого значения, примите это замечание с юмором. Это означает лишь то, что время ответа системы на запрос не является (или не кажется заказчику в данный момент) критическим. Попробуйте спросить, приемлемо ли время ответа системы, равное одному часу или одному дню. Вряд ли ответ на этот вопрос будет положительным.\rПроизводительность важна для любой информационной системы. Узким местом называют момент падения производительности системы. Конкретный ответ на вопрос, где узкие места данной системы, может дать лишь специальное направленное тестирование. Но это не означает, что оценка потенциальных узких мест невозможна. Одним из хороших методов является график нагрузки на систему в течение дня, недели, месяца и т.п. Можно построить диаграмму, на которой будет отражено время работы тех или иных бизнес-процессов, а также требуемое для данного бизнес-процесса время ответа системы. Такие диаграммы помогают выявить момент, когда нагрузка будет наиболее интенсивной. Количество пользователей, одновременно работающих с тем или иным компонентом, отражается на диаграмме посредством весового коэффициента (рис. 1).\rВ приведенном примере явно видны 3 пика активности системы, максимальный из которых приходится на 11 часов. Использован тип диаграммы с накоплением.\rА в диаграмме, представленной на рис. 2, видна активность касс в течение рабочего дня и повышение активности загрузки данных в нерабочее время. В такие диаграммы следует также добавлять вес, отражающий сложность бизнес-процесса, например в данном примере самый высокий весовой коэффициент будут иметь отчеты. Оценка весов определяется особенностями каждого конкретного бизнеса - где-то она может быть высокой, где-то низкой.\rОтвет на вопрос, насколько потенциальные узкие места являются реальными, может дать только тестирование. Здесь оправданно применение специальных средств моделирования сценариев приложений. Следует отметить, что оценка точности детектирования узкого места в системе очень зависит от объема обрабатываемых данных. Следует уделить внимание генерации тестовых данных и проверке узких мест уже на этих данных. Часто информационная система не сразу выходит на проектную мощность, как правило, она работает некоторое время в режиме первоначального накопления информации, которое может продолжаться и несколько дней, и несколько месяцев. Как правило, предполагаемый порог объема обрабатываемых данных известен на этапе анализа, но реальный объем физических данных можно точно оценить только на этапе проектирования. Если сгенерировать предполагаемый объем тестовых данных нельзя (не хватает мощности техники или есть иные причины), то тесты проводят на меньшем объеме данных и пытаются построить оценки поведения системы на реальном объеме данных.\rБолее точно узкие места системы оцениваются на этапе разработки. Здесь уже есть реализованные компоненты системы. Средства автоматизации тестирования (например, LoadRunner, WinRunner и др.) позволяют отследить операции, которые выполняет то или иное приложение (но данные средства могут отследить далеко не все возможные типы приложений и то, насколько они подходят для тестирования вашего проекта, - это решение такого же порядка, что и выбор средства разработки приложения), автоматически сгенерировать сценарий запуска имитаторов работы реальных приложений и построить оценки узких мест системы.\r\rПродукты третьих фирм\rНа этапе проектирования оценивают возможность и эффективность использования продуктов третьих форм в разработке данной информационной системы. Например, существует задача выполнения некоторого набора работ (определенных пакетных заданий и т.п.) по заданному графику. Далеко не всегда целесообразно включать в проект создание утилиты контроля запуска приложений, поскольку есть масса утилит, выполняющих эти операции, в том числе и свободно распространяемых. Существует и другая причина, по которой с ПО третьих фирм следует хотя бы ознакомиться. Не факт, что в мировой практике решения задач, подобных вашей, не встречаются. Если реализации третьих фирм известны, то следует с ними ознакомиться хотя бы для того, чтобы не повторять неудачные решения и взять на заметку удачные. Вероятно, какой-либо из существующих продуктов может быть интегрирован в создаваемую вами информационную систему. Для этого, возможно, потребуется создать интерфейс обмена данными между ПО третьей фирмы и вашим. Следует оценить целесообразность как разработки собственного компонента, так и интеграции уже готового аналогичного компонента.\r\rИспользование CASE-средств\rCASE-средства предоставляют много преимуществ. На одной чаше весов будет автоматизация работы, предоставляемая CASE, а на другой - ненавистная задача преобразования результатов анализа в формат этого CASE (если для формализации результатов анализа использовался другой CASE-инструмент или не использовался никакой). Некоторые CASE-средства позволяют непосредственно перейти к проектированию, а к анализу можно вернуться путем обратного проектирования. К сожалению, при использовании обратного проектирования в CASE-средстве создается весьма вредная иллюзия того, что данные анализа регистрируются, хотя на самом деле этого практически никогда не происходит, поскольку информация, содержащаяся в спроектированной структуре, отличается от результатов анализа. Некоторые полезные данные получить можно, но построить полную картину вряд ли удастся.\r\rИнфраструктура\rДля проектирования и реализации необходимы аппаратные ресурсы и специальное программное обеспечение. Кроме того, требуется механизм, позволяющий контролировать создаваемую документацию и код. Эти вопросы лучше решать на ранних стадиях проектирования, а не на стадии разработки. Мы поговорим об этом ниже, в разделе «Проектирование процессов и кода». При групповой разработке вам понадобятся средства контроля согласованности кода. Если разработка идет под разными платформами (аппаратная платформа и ОС), то хорошим решением может оказаться PVCS. Для платформ Windows 98, NT, 2000 может оказаться приемлемым решение, предлагаемое Microsoft - MS Source Save. Кроме того, многие средства разработки также предоставляют возможности контроля исходного кода.\r\rПроектирование базы данных\rЗдесь мы изложим задачи, касающиеся проектирования реальной базы данных.\r\rПостроение модели данных\rРабота проектировщиков базы данных в значительной степени зависит от качества информационной модели. Информационная модель не должна содержать никаких непонятных конструкций, которые нельзя реализовать в рамках выбранной СУБД. Следует отметить, что информационная модель создается для того, чтобы на ее основе можно было построить модель данных, то есть должна учитывать особенности реализации выбранной СУБД. Если те или иные особенности СУБД не позволяют отразить в модели данных то, что описывает информационная модель, значит, надо менять информационную модель, так как производитель СУБД вряд ли будет оперативно менять собственно СУБД ради вашего конкретного проекта (хотя и такие, правда единичные, случаи имели место).\rПостроение логической и физической моделей данных является основной частью проектирования базы данных. Полученная в процессе анализа информационная модель сначала преобразуется в логическую, а затем в физическую модель данных. После этого для разработчиков информационной системы создается пробная база данных. С ней начинают работать разработчики кода. В идеале к моменту начала разработки модель данных должна быть устойчива. Проектирование базы данных не может быть оторвано от проектирования модулей и приложений, поскольку бизнес-правила могут создавать объекты в базе данных, например серверные ограничения (constraints), а также хранимые процедуры и триггеры, - в этом случае часто говорят, что часть бизнес-логики переносится в базу данных. Проектирование модели данных для каждой СУБД содержит свои особенности, проектные решения, которые дают хороший результат для одной СУБД, но могут оказаться совершенно неприемлемыми для другой. Ниже перечислим задачи, которые являются общими для проектирования моделей данных:\rвыявление нереализуемых или необычных конструкций в ER-модели и в определениях сущностей; \rразрешение всех дуг, подтипов и супертипов; \rизучение возможных, первичных, внешних ключей, описание ссылочной целостности (в зависимости от реализации декларативно или с использованием триггеров); \rпроектирование и реализация денормализации базы данных в целях повышения производительности; \rопределение части бизнес-логики, которую следует реализовать в базе данных (пакеты, хранимые процедуры); \rреализация ограничений (ограничений и триггеров), отражающих все централизованно определенные бизнес-правила, генерация ограничений и триггеров; \rопределение набора бизнес-правил, которые не могут быть заданы как ограничения в базе данных; \rопределение необходимых индексов, кластеров (если таковые реализованы в СУБД), определение горизонтальной фрагментации таблиц (если это реализовано в СУБД); \rоценка размеров всех таблиц, индексов, кластеров; \rопределение размеров табличных пространств и особенностей их размещения на носителях информации, определение спецификации носителей информации для промышленной системы (например, тип raid-массивов, их количество, какие табличные пространства на них размещаются), определение размеров необходимых системных табличных пространств (например, системного каталога, журнала транзакций, временного табличного пространства и т.п.); \rопределение пользователей базы данных, их уровней доступа, разработка и внедрение правил безопасности доступа, аудита (если это необходимо), создание пакетированных привилегий (в зависимости от реализации СУБД это роли или группы), синонимов; \rразработка топологии базы данных в случае распределенной базы данных, определение механизмов доступа к удаленным данным. \rПодробнее на каждом из перечисленных пунктов мы остановимся в части «Схема базы данных».\r\rСоздание базы данных для разработчика\rЧаще всего базу данных создает администратор баз данных - если он есть; в противном случае это приходится делать проектировщикам. Физическая база данных нужна разработчикам информационной системы для разработки кода, а проектировщикам для проверки их идей. Проектировщики и разработчики могут работать как с одной и той же схемой, так и с разными схемами. В процессе разработки проекта, как правило, создается несколько версий схемы базы данных. Следует обязательно вести журнал изменений схемы (вручную или в репозитарии case) и жестко контролировать версии схемы.\r\rПроектирование процессов и кода\rПараллельно с проектированием схемы базы данных требуется выполнить проектирование процессов, чтобы получить спецификации всех модулей. Если часть бизнес-логики хранится в базе данных (ограничения, триггеры, хранимые процедуры), то оба эти процесса проектирования тесно связаны. Главная цель проектирования заключается в отображении функций, полученных на этапе анализа, в модули информационной системы. Определения модулей раскрываются в технической спецификации программ. Возможно, что некоторые атомарные функции, полученные на этапе анализа, вообще не будут отображены в какие-либо модули, а будут преобразованы в ручные процедуры или принципы работы.\r\rВыбор средств разработки\rНе следует откладывать выбор средств разработки на самый последний момент. Если проектировщик не слишком хорошо представляет себе набор средств, которые будут использованы для разработки проекта, то следует для начала составить перечень возможных средств, затем провести консультации с техническими специалистами (хорошо знающими средства-кандидаты), оценить, с какими средствами персонал уже работал, а какие являются для них абсолютно новыми. Часто выбор средств разработки определяет именно фактор квалификации персонала.\rОтображение функций на модули\rНа этапе анализа уже разработан перечень функций, которые будут реализованы. На этапе проектирования этот перечень еще раз анализируется и корректируется. Однозначное соответствие между функцией и модулем вряд ли возможно. Дело в том, что на этапе анализа функции организованы по бизнес-категориям, а на этапе проектирования их придется реорганизовывать для упрощения разработки. Проектировщики могут принять решение объединить несколько функций, обладающих общими свойствами, или выделить какое-то общее свойство (или их набор) в отдельный модуль, а также разбить сложную функцию на несколько модулей. Подробнее эти вопросы рассматриваются в разделе «Спецификации функций».\r\rИнтерфейсы программ\rПри проектировании модулей определяют разметку меню, вид окон, горячие клавиши и связанные с ними вызовы. Существуют два вида перемещения по программам:\rс контекстом, когда целевая экранная форма частично или полностью заполняется автоматически данными, связанными с теми, что находятся в исходной экранной форме; \rбез контекста, когда целевая экранная форма не заполняется вовсе или частично заполняется автоматически данными, не связанными с теми, что находятся в исходной экранной форме. \rЧасто автоматически заполняемые данные экранной формы группируют (располагают рядом), а перемещение по заполняемым пользователем полям организуют так, как это делал бы сам пользователь, работая с реальным бумажным документом. Такие интерфейсы воспринимаются пользователем легче, и он намного быстрее осваивает новое ПО.\r\rИнтегрирование и наследование механизмов обмена данными\rИнформационная система редко разрабатывается с нуля. Чаще проектировщики сталкиваются с задачами наследования данных из старых систем, которые уже выполняют какие-либо задачи автоматизации бизнеса. Такие системы могут на начальном этапе быть интегрированы в новую систему и постепенно заменяться новыми, более современными модулями. Этот подход может навязываться руководством фирмы для того, чтобы ускорить ввод новой информационной системы. Следует рассмотреть все плюсы и минусы такой постепенной интеграции (минусов, как правило, оказывается больше). Одну операцию придется делать в любом случае: переносить ценные данные, хранящиеся в старой информационной системе, в новую, то есть проектировать механизмы конвертации данных. Возможно, что придется делать конвертацию данных не только из старой системы в новую, но и обратно (полную или частичную), поскольку возможен вариант развития событий, при котором старая и новая информационные системы будут работать параллельно - хотя бы в период опытной эксплуатации новой системы.\rКроме вопросов наследования собственно данных из старых информационных систем, возможно, вам придется также решать задачи взаимодействия вашего ПО с продуктами третьих фирм. В этом случае вам следует изучить интерфейсы обмена данными ПО других разработчиков и обеспечить должный уровень поддержки этих интерфейсов в разрабатываемой информационной системе.\r\rОпределение спецификаций модулей\rЭто основная часть функционального проектирования. Здесь решаются следующие задачи:\rпреобразование функциональных определений анализа в реализуемые модули; \rспецификации, которые выражают функциональные возможности каждого модуля в физических категориях; \rопределение средств разработки для каждого модуля (или выделенных групп модулей), если используются несколько средств разработки в одном проекте; \rопределение последовательности реализации модулей и зависимостей модулей. \rСпецификации модулей различают по степени детализации и содержанию даже в рамках одного проекта. Определяют, сколько времени требуется для того, чтобы сгенерировать тот или иной модуль, сколько необходимо на тестирование того или иного модуля, а также на тестирование совокупности сгенерированных модулей. Кроме того, следует разработать специальные метрики - шаблоны, которые позволяют оценить, сколько времени потребуется на создание исходного кода модуля. Для ускорения процесса разработки следует рассмотреть возможность использования генераторов исходного кода - это целесообразно, если вам предстоит разработать большое количество несложных модулей, а время разработки ограничено. Следует использовать шаблоны кода для устранения рутинных операций. Подробнее эти вопросы рассматриваются в разделе, посвященном спецификациям функций, - вы найдете его в одной из следующих статей данного цикла.",
         "0",
         "[['этап', 'разработка', 'проект', 'определение', 'стратегия', 'тестирование', 'проектирование', 'определение', 'стратегия', 'тестирование', 'отмечаться', 'этап_анализ', 'привлекаться', 'группа', 'тестирование', 'получение', 'сравнительный', 'характеристика', 'предполагать', 'использование', 'аппаратный_платформа', 'операционный_система', 'субд', 'иного', 'окружение'], ['этап', 'определяться', 'план', 'работа', 'обеспечение', 'надёжность', 'информационный_система', 'тестирование'], ['проект', 'целесообразный', 'являться', 'привлечение', 'тестер', 'ранний', 'этап', 'разработка', 'частность', 'этап_анализ', 'проектирование'], ['проектный', 'решение', 'оказаться', 'неудачный', 'обнаружить', 'поздно', 'этап', 'разработка', 'этап', 'внедрение', 'эксплуатация', 'исправление', 'ошибка', 'проектирование', 'обойтись', 'дорогой'], ['группа', 'тестирование', 'выявлять', 'ошибка', 'информационный_система', 'стоимость', 'сопровождение', 'система'], ['время', 'тестирование', 'система', 'исправление', 'обнаружить', 'ошибка', 'предусматривать', 'этап', 'разработка', 'этап_проектирование'], ['автоматизация', 'тестирование', 'использовать', 'система', 'отслеживание', 'ошибка', 'bug', 'tracking'], ['позволять', 'единый', 'хранилище', 'ошибка', 'отслеживать', 'повторный', 'появление', 'контролировать', 'скорость', 'эффективность', 'исправление', 'ошибка', 'видеть', 'нестабильный', 'компонент', 'система', 'поддерживать', 'связь', 'группа', 'разработчик', 'группа', 'тестирование', 'уведомление', 'изменение', 'e', 'mail', 'т.п.'], ['проект', 'сильный', 'потребность', 'bug', 'tracking'], ['проектирование', 'этап_проектирование', 'формироваться', 'модель'], ['проектировщик', 'качество', 'исходный', 'информация', 'получать', 'результат', 'анализ'], ['конечный', 'продукт', 'этап_проектирование', 'являться', 'схема', 'база', 'основание', 'er', 'модель', 'разработать', 'этап_анализ', 'набор', 'спецификация', 'модуль', 'система', 'строиться', 'база', 'модель', 'функция'], ['проект', 'небольшой', 'качество', 'аналитик', 'проектировщик', 'разработчик', 'выступать', 'человек'], ['возникать', 'вопрос', 'насколько', 'актуальный', 'передача', 'результат'], ['думать', 'актуальный'], ['представить', 'передавать', 'знать', 'система'], ['зачастую', 'помогать', 'найти', 'описать', 'нечетко', 'описать', 'противоречивый', 'описать', 'компонент', 'система'], ['спецификация', 'точный'], ['план', 'тестирование', 'система', 'дорабатывается', 'этап', 'разработка'], ['многих', 'проект', 'результат', 'этап_проектирование', 'оформляться', 'единый', 'документ', 'называть', 'технический', 'спецификация'], ['описывать', 'принять', 'подход', 'решение', 'какой', 'сложный', 'технический', 'вопрос'], ['журнал', 'проектирование', 'проектирование', 'возникать', 'необходимость', 'регистрировать', 'обсуждать', 'вариант', 'окончательный', 'решение'], ['секрет', 'проектировщик', 'порой', 'менять', 'первоначальный', 'решение'], ['происходить', 'время', 'участник', 'проект', 'забывать', 'аргумент', 'польза', 'принять', 'решение'], ['подобный', 'информация', 'хранить', 'репозитарии', 'использовать', 'case_средство', 'текстовый', 'файл', 'бумага'], ['журнал', 'проектирование', 'являться', 'полезный', 'материал', 'новый', 'член', 'группа', 'проектировщик', 'разработчик', 'тестировщиков'], ['журнал', 'вестись', 'этап_анализ', 'этап', 'разработка', 'тестирование'], ['планирование', 'этап_проектирование', 'тщательный', 'планирование', 'важный', 'проект'], ['входить', 'обязанность', 'руководитель', 'проект', 'руководитель', 'группа', 'проектирование', 'консультация', 'аналитик', 'случай', 'обязательный'], ['позволять', 'разбить', 'глобальный', 'задача', 'небольшой', 'независимый', 'задача'], ['задача', 'лёгкий', 'управлять', 'задача', 'лёгкий', 'реализовывать'], ['определить', 'контрольный', 'дата', 'этап', 'сдача', 'позволить', 'определить', 'насколько', 'успешно', 'продвигаться', 'проект', 'направление', 'отставать', 'недогрузить', 'работать', 'успешно'], ['позволять', 'обнаружить', 'отставание', 'срок', 'сдача', 'вовремя', 'предотвратить', 'аврал'], ['определить', 'зависимость', 'задача', 'последовательность', 'завершение', 'задача'], ['прогнозировать', 'загрузка', 'персонал', 'наём', 'временной', 'работник', 'привлечение', 'группа', 'разработчик', 'привлечение', 'консультант'], ['получить', 'чёткий', 'представление', 'начать', 'этап', 'реализация'], ['получить', 'чёткий', 'представление', 'начать', 'этап', 'опытный', 'эксплуатация'], ['перепланирование', 'заказчик', 'хотеть', 'план', 'выполнение', 'работа', 'оставаться', 'неизменный'], ['практика', 'редко', 'удаваться', 'достигнуть', 'полный', 'объём'], ['определённый', 'компромисс', 'неизменность', 'установить', 'срок', 'сдача', 'компонент', 'система', 'эксплуатация'], ['задача', 'проектирование'], ['ранние', 'стадия', 'рассмотрение', 'результат', 'анализ', 'процесс', 'передача', 'информация', 'аналитик', 'проектировщик'], ['практика', 'итерактивный', 'процесс'], ['проектировщик', 'неизбежно', 'возникать', 'вопрос', 'аналитик'], ['информация', 'система', 'постоянно', 'уточняться'], ['разработка', 'схема', 'база', 'измениться', 'информационный_модель', 'получить', 'этап_анализ', 'иметься', 'проектный', 'решение', 'нестабильный', 'медленно', 'работать', 'реализация', 'выбрать', 'субд', 'сила', 'иных', 'причина'], ['проверить', 'охватывать', 'анализ', 'бизнес', 'процессы', 'система', 'осуществить', 'проверка', 'полнота', 'проектировщик', 'состояние', 'проверка', 'информационный_модель', 'непротиворечивость', 'корректность', 'проектировщик', 'провести'], ['позволять', 'отследить', 'ошибка', 'информационный_модель', 'повторить', 'модель'], ['результат', 'храниться', 'репозитарии', 'case_средство', 'проверка', 'корректность', 'произвести', 'автоматически'], ['семинар', 'ранние', 'стадия', 'проектирование', 'сопрячь', 'нудный', 'утомительный', 'работа'], ['проектировщик', 'аналитик', 'достигнуть', 'полный', 'понимание', 'требование', 'заказчик'], ['семинар', 'являться', 'быстрый', 'эффективный', 'способ', 'обмен', 'информация'], ['хороший', 'способ', 'убедиться', 'правильно', 'проектировщик', 'понимать', 'назначение', 'иной', 'подсистема', 'взять', 'сценарий', 'бизнес', 'процессов', 'проиграть'], ['сделать', 'форма', 'простой', 'диаграмма', 'поток', 'указать', 'автоматизированный', 'ручной', 'функция'], ['критический_участок', 'критический_участок', 'система', 'изучаться', 'первый', 'обследование', 'система', 'уточняться', 'этап_анализ'], ['термин', 'критический', 'означать', 'жизненно', 'важный', 'нормальный', 'функционирование', 'информационный_система', 'точка', 'зрение', 'бизнес', 'время', 'простой', 'автоматизировать', 'линия', 'изготовление', 'материал', 'x', 'превышать', 'минута', 'успешный', 'реализация', 'приёмка', 'проект'], ['критический', 'точка', 'зрение', 'бизнес', 'участок', 'информационный_система', 'подходить', 'макетирование'], ['основа', 'макет', 'работа', 'макетирование', 'выполнять', 'проектировщик', 'группа', 'тестирование', 'тестер', 'давать', 'оценка', 'качество', 'информационный_модель', 'модель'], ['макетирование', 'позволять', 'показать', 'требование', 'средство', 'выполнить', 'требование'], ['этап_проектирование', 'выявляться', 'критический_участок', 'очевидный', 'этап_анализ'], ['влечь', 'необходимость', 'уточнение', 'информационный_модель'], ['связать', 'особенность', 'реализация', 'иных', 'возможность', 'выбрать', 'субд'], ['функция', 'этап_анализ', 'выглядеть', 'простой', 'сложный', 'дело', 'дойти', 'физический', 'реализация'], ['выбрать', 'субд', 'отсутствовать', 'эффективный', 'механизм', 'сканирование', 'дерево', 'анализ', 'выявить', 'большой', 'количество', 'справочник', 'выбрать', 'интерфейс', 'представление', 'вид', 'дерево', 'понравиться', 'заказчик', 'субд', 'большой', 'справочник', 'работать', 'медленно'], ['распространенная', 'неприятность', 'неполно', 'реализовать', 'ссылочный', 'целостность'], ['субд', 'реализовать', 'каскадный', 'модификация', 'информационный_модель', 'нормализованные', 'отношение', 'предполагать', 'наличие', 'каскадный', 'удаление', 'обновление'], ['реализация', 'механизм', 'триггер', 'оказаться', 'медленный', 'уровень', 'каскадирования', 'триггер', 'уровень', 'каскадный', 'операция', 'определить', 'информационный_модель'], ['момент', 'инициировать', 'изменение', 'информационный_модель', 'смена', 'субд'], ['критический_участок', 'проект', 'риск', 'существовать', 'тесный', 'связь'], ['критический_участок', 'разработка', 'срыв', 'срок', 'первый', 'этап', 'сдача', 'проект', 'заказчик', 'стоить', 'целый', 'проект'], ['причина', 'срыв', 'ошибка', 'проектирование', 'нехватка', 'персонал'], ['оценка', 'ограничение', 'ограничение', 'известный', 'момент', 'обследование', 'бизнес', 'процессов', 'являться', 'смета', 'затрата', 'срок', 'внедрение'], ['ограничение', 'допуск', 'персонал', 'иной', 'информация', 'группа', 'аналитик', 'информация', 'бизнес', 'процессах', 'фирма', 'ограничение', 'доступ', 'секретный', 'информация', 'т.п.'], ['решение', 'относительно', 'выбор', 'аппаратный_платформа', 'правило', 'необратимый', 'тесно', 'связать', 'смета', 'затрата', 'наличие', 'обслуживать', 'персонал'], ['решение', 'платформа', 'rs/6000', 'intel', 'точка', 'зрение', 'смета', 'затрата', 'выглядеть', 'одинаково', 'персонал', 'способный', 'квалифицированно', 'обслуживать', 'rs/6000', 'руководство', 'согласно', 'оплатить', 'обучение', 'сотрудник', 'решение', 'основа', 'rs/6000', 'обладать', 'высокий', 'масштабируемость'], ['послужить', 'причина', 'выбор', 'платформа', 'intel'], ['аналогичный', 'причина', 'влиять', 'выбор', 'операционный_система'], ['проект', 'являться', 'расширение', 'модернизация', 'существовать', 'информационный_система', 'число', 'унаследовать', 'ограничение', 'больший'], ['этап_проектирование', 'осуществляться', 'обязательный', 'проверка', 'требование', 'информационный_система', 'свет', 'выявить', 'ограничение'], ['менять', 'платформа', 'операционный_система', 'субд', 'этап', 'реализация', 'сложный', 'этап', 'опытный', 'эксплуатация', 'практически', 'невозможный', 'хватить', 'время', 'произойти', 'чудо'], ['больший', 'количество', 'компонент', 'система', 'реализовать', 'сложный', 'произвести', 'подобный', 'замена'], ['большинство', 'субд', 'работать', 'несколько', 'аппаратный_платформа', 'несколько', 'операционный_система', 'участок', 'код', 'проект', 'зависимый', 'операционный_система', 'аппаратный_платформа', 'изменение', 'обойтись', 'дорого'], ['статья', 'обсуждать', 'вопрос', 'переносимость', 'код', 'выходить', 'рамка', 'цикл'], ['требование', 'удовлетворить', 'принцип', 'приниматься', 'решение', 'доведение', 'факт', 'сведение', 'спонсор', 'проект', 'руководство', 'фирма'], ['обнаружение', 'неработоспособность', 'система', 'процесс', 'эксплуатация', 'хороший', 'обернуться', 'руководство', 'фирма', 'дойти', 'информация', 'невыполнимость', 'требование', 'известный', 'заранее'], ['определение', 'целевой', 'архитектура', 'выбор', 'архитектура', 'понимать', 'выбор', 'платформа', 'платформа', 'выбор', 'операционный_система', 'операционный_система'], ['система', 'работать', 'компьютер', 'разный', 'аппаратный_платформа', 'управление', 'различный', 'операционный_система'], ['автоматизация', 'иного', 'бизнес', 'приложить', 'рука', 'неоднократно', 'обнаружить', 'зверинец', 'платформа', 'операционный_система'], ['перенос', 'иную', 'платформа', 'процесс', 'безболезненный', 'управление', 'разнородный', 'сеть', 'дело', 'проблемный'], ['обстоятельство', 'таковы', 'рабочий', 'место', 'конечный', 'пользователь', 'работать', 'управление', 'несколько', 'операционный_система', 'ос', 'обязательно', 'выделить', 'зависимый', 'ос', 'участок', 'код', 'жестко', 'описать', 'интерфейс', 'обмен', 'компонент', 'информационный_система', 'сделать', 'независимый', 'ос'], ['написание', 'код', 'модуль', 'работать', 'управление', 'несколько', 'ос', 'ориентироваться', 'обладать', 'жёсткий', 'требование'], ['определение', 'платформа', 'выяснить', 'следующий', 'архитектура', 'файл', 'сервер', 'клиент', 'сервер'], ['3-уровневая', 'архитектура', 'следующий', 'слой', 'сервер', 'промежуточный', 'слой', 'сервер', 'приложение', 'клиентский'], ['база', 'централизовать', 'распределить'], ['база', 'распределить', 'механизм', 'поддержка', 'согласованность', 'актуальность', 'использоваться'], ['база', 'однородный', 'сервер', 'база', 'продукт', 'производитель', 'сервер', 'oracle', 'сервер', 'db2', 'udb'], ['база', 'небудет', 'однородный', 'какой', 'использовать', 'обмен', 'данными', 'субд', 'разный', 'производитель', 'существовать', 'разработать', 'специально', 'часть', 'проект'], ['достижение', 'должный', 'производительность', 'использоваться', 'параллельный', 'сервер', 'база', 'oracle', 'parallel', 'server', 'db2', 'udb', 'т.п.'], ['решение', 'приниматься', 'этап_проектирование', 'этап_анализ'], ['этап_проектирование', 'полезный', 'раз', 'рассмотреть', 'причина', 'выбор', 'иной', 'архитектура', 'провести', 'тест', 'производительность', 'надёжность', 'критический_участок', 'информационный_система'], ['позволить', 'избежать', 'тяжело', 'устранять', 'ошибка', 'проектирование'], ['этап_проектирование', 'возникать', 'непредвиденный', 'технический', 'проблема', 'аналитик', 'учитывать', 'группа', 'пользователь', 'иметь', 'доступ', 'информационный_система', 'текстовый', 'терминал'], ['ошибка', 'анализ', 'выявляться', 'этап_проектирование'], ['проблема', 'решаться', 'вместе', 'аналитик', 'инициировать', 'изменение', 'информационный_модель'], ['среда', 'использоваться', 'сеть', 'этап_проектирование', 'определить', 'требуемые', 'уровень', 'сервис', 'сеть', 'спроектировать', 'топология'], ['провести', 'тест', 'сеть', 'увидеть', 'обеспечивать', 'существовать', 'сеть', 'должный', 'пропускной', 'способность', 'иметься', 'резерв', 'пропускной', 'способность', 'сеть'], ['результат', 'отрицательный', 'четко', 'описать', 'изменение', 'аппаратный', 'обеспечение', 'топология', 'сеть'], ['выделение', 'потенциальный', 'узкий_место', 'информационный_система', 'заказчик', 'заявить', 'производительность', 'система', 'никакой', 'значение', 'принять', 'замечание', 'юмор'], ['означать', 'время', 'ответ', 'система', 'запрос', 'являться', 'заказчик', 'момент', 'критический'], ['попробуйте', 'спросить', 'приемлемый', 'время', 'ответ', 'система', 'равный', 'час', 'день'], ['ответ', 'вопрос', 'положительный'], ['производительность', 'важный', 'информационный_система'], ['узкий_место', 'называть', 'момент', 'падение', 'производительность', 'система'], ['конкретный', 'ответ', 'вопрос', 'узкий_место', 'система', 'дать', 'специальный', 'направленное', 'тестирование'], ['означать', 'оценка', 'потенциальный', 'узкий_место', 'невозможный'], ['хороший', 'метод', 'являться', 'график', 'нагрузка', 'система', 'течение', 'день', 'неделя', 'месяц', 'т.п.', 'построить', 'диаграмма', 'отразить', 'время', 'работа', 'иных', 'бизнес', 'процессов', 'требуемое', 'бизнес', 'процесса', 'время', 'ответ', 'система'], ['диаграмма', 'помогать', 'выявить', 'момент', 'нагрузка', 'интенсивный'], ['количество', 'пользователь', 'одновременно', 'работать', 'компонент', 'отражаться', 'диаграмма', 'весовой', 'коэффициент', 'рис'], ['1'], ['привести', 'пример', 'видный', '3', 'пик', 'активность', 'система', 'максимальный', 'приходиться', '11', 'час'], ['использовать', 'тип', 'диаграмма', 'накопление'], ['диаграмма', 'представить', 'рис'], ['2', 'видный', 'активность', 'касса', 'течение', 'рабочий', 'день', 'повышение', 'активность', 'загрузка', 'нерабочий', 'время'], ['диаграмма', 'добавлять', 'вес', 'отражать', 'сложность', 'бизнес', 'процесса', 'пример', 'высокий', 'весовой', 'коэффициент', 'отчёт'], ['оценка', 'вес', 'определяться', 'особенность', 'каждый', 'конкретный', 'бизнес', 'высокий', 'низкий'], ['ответ', 'вопрос', 'насколько', 'потенциальный', 'узкий_место', 'являться', 'реальный', 'дать', 'тестирование'], ['оправданный', 'применение', 'специальный', 'средство', 'моделирование', 'сценарий', 'приложение'], ['отметить', 'оценка', 'точность', 'детектирование', 'узкий_место', 'система', 'зависеть', 'объём', 'обрабатывать'], ['уделить', 'внимание', 'генерация', 'тестовый', 'проверка', 'узкий_место'], ['информационный_система', 'выходить', 'проектный', 'мощность', 'правило', 'работать', 'некоторый', 'время', 'режим', 'первоначальный', 'накопление', 'информация', 'продолжаться', 'день', 'месяц'], ['правило', 'предполагать', 'порог', 'объём', 'обрабатывать', 'известный', 'этап_анализ', 'реальный', 'объём', 'физический', 'оценить', 'этап_проектирование'], ['сгенерировать', 'предполагать', 'объём', 'тестовый', 'хватать', 'мощность', 'техника', 'иные', 'причина', 'тест', 'проводить', 'малый', 'объём', 'пытаться', 'построить', 'оценка', 'поведение', 'система', 'реальный', 'объём'], ['узкий_место', 'система', 'оцениваться', 'этап', 'разработка'], ['реализовать', 'компонент', 'система'], ['средство', 'автоматизация', 'тестирование', 'loadrunner', 'winrunner', 'и др.', 'позволять', 'отследить', 'операция', 'выполнять', 'иное', 'приложение', 'средство', 'отследить', 'возможный', 'тип', 'приложение', 'насколько', 'подходить', 'тестирование', 'ваш', 'проект', 'решение', 'порядок', 'выбор', 'средство', 'разработка', 'приложение', 'автоматически', 'сгенерировать', 'сценарий', 'запуск', 'имитатор', 'работа', 'реальный', 'приложение', 'построить', 'оценка', 'узкий_место', 'система'], ['продукт', 'третий', 'фирма', 'этап_проектирование', 'оценивать', 'возможность', 'эффективность', 'использование', 'продукт', 'третий', 'форма', 'разработка', 'информационный_система'], ['существовать', 'задача', 'выполнение', 'некоторый', 'набор', 'работа', 'определённый', 'пакетный', 'задание', 'т.п.', 'задать', 'график'], ['целесообразный', 'включать', 'проект', 'создание', 'утилита', 'контроль', 'запуск', 'приложение', 'масса', 'утилита', 'выполнять', 'операция', 'число', 'свободно', 'распространять'], ['существовать', 'причина', 'третий', 'фирма', 'ознакомиться'], ['факт', 'мировой', 'практика', 'решение', 'задача', 'ваш', 'встречаться'], ['реализация', 'третий', 'фирма', 'известный', 'ознакомиться', 'повторять', 'неудачный', 'решение', 'взять', 'заметка', 'удачный'], ['вероятно', 'существовать', 'продукт', 'интегрировать', 'создавать', 'информационный_система'], ['потребоваться', 'создать', 'интерфейс', 'обмен', 'данными', 'третий', 'фирма', 'ваш'], ['оценить', 'целесообразность', 'разработка', 'собственный', 'компонент', 'интеграция', 'готовый', 'аналогичный', 'компонент'], ['использование', 'case_средство', 'case_средство', 'предоставлять', 'преимущество'], ['чаша', 'вес', 'автоматизация', 'работа', 'предоставлять', 'case', 'ненавистный', 'задача', 'преобразование', 'результат', 'анализ', 'формат', 'case', 'формализация', 'результат', 'анализ', 'использоваться', 'case', 'инструмент', 'использоваться'], ['case_средство', 'позволять', 'непосредственно', 'перейти', 'проектирование', 'анализ', 'вернуться', 'путем', 'обратный', 'проектирование'], ['сожаление', 'использование', 'обратный', 'проектирование', 'case_средство', 'создаваться', 'весьма', 'вредный', 'иллюзия', 'анализ', 'регистрироваться', 'дело', 'практически', 'происходить', 'информация', 'содержаться', 'спроектировать', 'структура', 'отличаться', 'результат', 'анализ'], ['полезный', 'получить', 'построить', 'полный', 'картина', 'удаться'], ['инфраструктура', 'проектирование', 'реализация', 'необходимый', 'аппаратный', 'ресурс', 'специальный', 'программный', 'обеспечение'], ['требоваться', 'механизм', 'позволять', 'контролировать', 'создавать', 'документация', 'код'], ['вопрос', 'лучше', 'решать', 'ранний', 'стадия', 'проектирование', 'стадия', 'разработка'], ['поговорить', 'раздел', 'проектирование', 'процесс', 'код'], ['групповой', 'разработка', 'понадобиться', 'средство', 'контроль', 'согласованность', 'код'], ['разработка', 'идти', 'разный', 'платформа', 'аппаратный_платформа', 'ос', 'хороший', 'решение', 'оказаться', 'pvcs'], ['платформа', 'windows', '98', 'nt', '2000', 'оказаться', 'приемлемый', 'решение', 'предлагать', 'microsoft', 'ms', 'source', 'save'], ['средство', 'разработка', 'предоставлять', 'возможность', 'контроль', 'исходный', 'код'], ['проектирование', 'база', 'изложить', 'задача', 'касаться', 'проектирование', 'реальный', 'база'], ['построение', 'модель', 'работа', 'проектировщик', 'база', 'значительный', 'степень', 'зависеть', 'качество', 'информационный_модель'], ['информационный_модель', 'содержать', 'никакой', 'непонятный', 'конструкция', 'реализовать', 'рамка', 'выбрать', 'субд'], ['отметить', 'информационный_модель', 'создаваться', 'основа', 'построить', 'модель', 'учитывать', 'особенность', 'реализация', 'выбрать', 'субд'], ['иные', 'особенность', 'субд', 'позволять', 'отразить', 'модель', 'описывать', 'информационный_модель', 'менять', 'информационный_модель', 'производитель', 'субд', 'оперативно', 'менять', 'субд', 'ваш', 'конкретный', 'проект', 'правда', 'единичный', 'случай', 'иметь', 'место'], ['построение', 'логический', 'физический', 'модель', 'являться', 'основный', 'часть', 'проектирование', 'база'], ['получить', 'процесс', 'анализ', 'информационный_модель', 'преобразуется', 'логический', 'физический', 'модель'], ['разработчик', 'информационный_система', 'создаваться', 'пробный', 'база'], ['начинать', 'работать', 'разработчик', 'код'], ['идеал', 'момент', 'разработка', 'модель', 'устойчивый'], ['проектирование', 'база', 'оторвать', 'проектирование', 'модуль', 'приложение', 'бизнес', 'правила', 'создавать', 'объект', 'база', 'серверный', 'ограничение', 'constraints', 'хранить', 'процедура', 'триггеры', 'случай', 'говорить', 'часть', 'бизнес', 'логики', 'переноситься', 'база'], ['проектирование', 'модель', 'каждый', 'субд', 'содержать', 'особенность', 'проектный', 'решение', 'давать', 'хороший', 'результат', 'субд', 'оказаться', 'совершенно', 'неприемлемый'], ['перечислим', 'задача', 'являться', 'общий', 'проектирование', 'модель', 'выявление', 'нереализуемый', 'необычный', 'конструкция', 'er', 'модель', 'определение', 'сущность', 'разрешение', 'дуга', 'подтип', 'супертипов', 'изучение', 'возможный', 'первичный', 'внешний', 'ключ', 'описание', 'ссылочный', 'целостность', 'зависимость', 'реализация', 'декларативный', 'использование', 'триггер', 'проектирование', 'реализация', 'денормализации', 'база', 'цель', 'повышение', 'производительность', 'определение', 'часть', 'бизнес', 'логики', 'реализовать', 'база', 'пакет', 'хранить', 'процедура', 'реализация', 'ограничение', 'ограничение', 'триггер', 'отражать', 'централизованно', 'определённый', 'бизнес', 'правила', 'генерация', 'ограничение', 'триггер', 'определение', 'набор', 'бизнес', 'правил', 'задать', 'ограничение', 'база', 'определение', 'необходимый', 'индекс', 'кластер', 'таковые', 'реализовать', 'субд', 'определение', 'горизонтальный', 'фрагментация', 'таблица', 'реализовать', 'субд', 'оценка', 'размер', 'таблица', 'индекс', 'кластер', 'определение', 'размер', 'табличный', 'пространство', 'особенность', 'размещение', 'носитель', 'информация', 'определение', 'спецификация', 'носитель', 'информация', 'промышленный', 'система', 'тип', 'raid', 'массив', 'количество', 'табличный', 'пространство', 'размещаться', 'определение', 'размер', 'необходимый', 'системный', 'табличный', 'пространство', 'системный', 'каталог', 'журнал', 'транзакция', 'временной', 'табличный', 'пространство', 'т.п.', 'определение', 'пользователь', 'база', 'уровень', 'доступ', 'разработка', 'внедрение', 'правило', 'безопасность', 'доступ', 'аудит', 'создание', 'пакетированных', 'привилегия', 'зависимость', 'реализация', 'субд', 'роль', 'группа', 'синоним', 'разработка', 'топология', 'база', 'случай', 'распределить', 'база', 'определение', 'механизм', 'доступ', 'удалить', 'данным'], ['подробный', 'каждый', 'перечислить', 'пункт', 'остановиться', 'часть', 'схема', 'база'], ['создание', 'база', 'разработчик', 'база', 'создавать', 'администратор', 'база', 'противный', 'случай', 'приходиться', 'делать', 'проектировщик'], ['физический', 'база', 'нужный', 'разработчик', 'информационный_система', 'разработка', 'код', 'проектировщик', 'проверка', 'идея'], ['проектировщик', 'разработчик', 'работать', 'схема', 'разный', 'схема'], ['процесс', 'разработка', 'проект', 'правило', 'создаваться', 'версия', 'схема', 'база'], ['обязательно', 'вести', 'журнал', 'изменение', 'схема', 'вручную', 'репозитарии', 'case', 'жестко', 'контролировать', 'версия', 'схема'], ['проектирование', 'процесс', 'код', 'параллельно', 'проектирование', 'схема', 'база', 'требоваться', 'выполнить', 'проектирование', 'процесс', 'получить', 'спецификация', 'модуль'], ['часть', 'бизнес', 'логики', 'храниться', 'база', 'ограничение', 'триггеры', 'хранить', 'процедура', 'процесс', 'проектирование', 'тесно', 'связать'], ['главный', 'цель', 'проектирование', 'заключаться', 'отображение', 'функция', 'получить', 'этап_анализ', 'модуль', 'информационный_система'], ['определение', 'модуль', 'раскрываться', 'технический', 'спецификация', 'программа'], ['атомарный', 'функция', 'получить', 'этап_анализ', 'отобразить', 'модуль', 'преобразовать', 'ручной', 'процедура', 'принцип', 'работа'], ['выбор', 'средство', 'разработка', 'откладывать', 'выбор', 'средство', 'разработка', 'последний', 'момент'], ['проектировщик', 'представлять', 'набор', 'средство', 'использовать', 'разработка', 'проект', 'составить', 'перечень', 'возможный', 'средство', 'провести', 'консультация', 'технический', 'специалист', 'знать', 'средство', 'кандидаты', 'оценить', 'средство', 'персонал', 'работать', 'являться', 'абсолютно', 'новый'], ['выбор', 'средство', 'разработка', 'определять', 'фактор', 'квалификация', 'персонал'], ['отображение', 'функция', 'модуль', 'этап_анализ', 'разработать', 'перечень', 'функция', 'реализовать'], ['этап_проектирование', 'перечень', 'раз', 'анализироваться', 'корректироваться'], ['однозначный', 'соответствие', 'функция', 'модуль'], ['дело', 'этап_анализ', 'функция', 'организовать', 'бизнес', 'категориям', 'этап_проектирование', 'прийтись', 'реорганизовывать', 'упрощение', 'разработка'], ['проектировщик', 'принять', 'решение', 'объединить', 'функция', 'обладать', 'общий', 'свойство', 'выделить', 'какой', 'общий', 'свойство', 'набор', 'отдельный', 'модуль', 'разбить', 'сложный', 'функция', 'модуль'], ['подробный', 'вопрос', 'рассматриваться', 'раздел', 'спецификация', 'функция'], ['интерфейсы', 'программа', 'проектирование', 'модуль', 'определять', 'разметка', 'меню', 'вид', 'окно', 'горячий', 'клавиша', 'связать', 'вызов'], ['существовать', 'два', 'вид', 'перемещение', 'программа', 'контекст', 'целевой', 'экранный', 'форма', 'частично', 'полностью', 'заполняться', 'автоматически', 'данными', 'связать', 'находиться', 'исходный', 'экранный', 'форма', 'контекст', 'целевой', 'экранный', 'форма', 'заполняться', 'частично', 'заполняться', 'автоматически', 'данными', 'связать', 'находиться', 'исходный', 'экранный', 'форма'], ['автоматически', 'заполнять', 'экранный', 'форма', 'группировать', 'располагать', 'перемещение', 'заполнять', 'пользователь', 'поле', 'организовать', 'делать', 'пользователь', 'работать', 'реальный', 'бумажный', 'документ'], ['интерфейс', 'восприниматься', 'пользователь', 'лёгкий', 'намного', 'быстрый', 'осваивать', 'новый'], ['интегрирование', 'наследование', 'механизм', 'обмен', 'данными', 'информационный_система', 'редко', 'разрабатываться', 'нуль'], ['проектировщик', 'сталкиваться', 'задача', 'наследование', 'старый', 'система', 'выполнять', 'задача', 'автоматизация', 'бизнес'], ['система', 'начальный', 'этап', 'интегрировать', 'новый', 'система', 'постепенно', 'заменяться', 'новый', 'современный', 'модуль'], ['подход', 'навязываться', 'руководство', 'фирма', 'ускорить', 'ввод', 'новый', 'информационный_система'], ['рассмотреть', 'плюс', 'минус', 'постепенный', 'интеграция', 'минус', 'правило', 'оказываться'], ['операция', 'прийтись', 'делать', 'случай', 'переносить', 'ценный', 'храниться', 'старый', 'информационный_система', 'новый', 'проектировать', 'механизм', 'конвертация'], ['прийтись', 'делать', 'конвертация', 'старый', 'система', 'новый', 'обратно', 'полный', 'частичный', 'возможный', 'вариант', 'развитие', 'событие', 'старый', 'новый', 'информационный_система', 'работать', 'параллельно', 'период', 'опытный', 'эксплуатация', 'новый', 'система'], ['вопрос', 'наследование', 'старый', 'информационный_система', 'прийтись', 'решать', 'задача', 'взаимодействие', 'ваш', 'продукт', 'третий', 'фирма'], ['случай', 'изучить', 'интерфейс', 'обмен', 'данными', 'разработчик', 'обеспечить', 'уровень', 'поддержка', 'интерфейс', 'разрабатывать', 'информационный_система'], ['определение', 'спецификация', 'модуль', 'основный', 'часть', 'функциональный', 'проектирование'], ['решаться', 'следующий', 'задача', 'преобразование', 'функциональный', 'определение', 'анализ', 'реализовать', 'модуль', 'спецификация', 'выражать', 'функциональный', 'возможность', 'каждый', 'модуль', 'физический', 'категория', 'определение', 'средство', 'разработка', 'каждый', 'модуль', 'выделить', 'группа', 'модуль', 'использоваться', 'средство', 'разработка', 'проект', 'определение', 'последовательность', 'реализация', 'модуль', 'зависимость', 'модуль'], ['спецификация', 'модуль', 'различать', 'степень', 'детализация', 'содержание', 'рамка', 'проект'], ['определять', 'время', 'требоваться', 'сгенерировать', 'иной', 'модуль', 'тестирование', 'иного', 'модуль', 'тестирование', 'совокупность', 'сгенерированных', 'модуль'], ['разработать', 'специальный', 'метрики', 'шаблон', 'позволять', 'оценить', 'время', 'потребоваться', 'создание', 'исходный', 'код', 'модуль'], ['ускорение', 'процесс', 'разработка', 'рассмотреть', 'возможность', 'использование', 'генератор', 'исходный', 'код', 'целесообразный', 'предстоять', 'разработать', 'большой', 'количество', 'несложный', 'модуль', 'время', 'разработка', 'ограничить'], ['использовать', 'шаблон', 'код', 'устранение', 'рутинный', 'операция'], ['подробный', 'вопрос', 'рассматриваться', 'раздел', 'посвятить', 'спецификация', 'функция', 'найти', 'следующий', 'стать', 'цикл']]"
        ],
        [
         "38",
         "Этапы разработки проекта4.doc",
         "Этапы разработки проекта: реализация, тестирование, эксплуатация и сопровождение\rРеализация\rТрудно давать советы по реализации кода модулей, так как каждый разработчик имеет какие-то привычки и свой стиль разработки кода. При реализации проекта важно координировать группу (группы) разработчиков. Все разработчики должны подчиняться жестким правилам контроля исходных тестов. Группа разработчиков, получив технический проект, начинает писать код модулей, и в этом случае основная задача состоит в том, чтобы уяснить спецификацию. Проектировщик указал, что необходимо сделать, а разработчик определяет способы выполнения.\rНа этапе разработки осуществляется тесное взаимодействие проектировщиков, разработчиков и групп тестеров. В случае интенсивной разработки тестер буквально «пристегивается» к разработчику, фактически являясь членом группы разработки.\rПроектировщик на данном этапе выполняет функции «ходячего справочника», поскольку постоянно отвечает на вопросы разработчиков, касающиеся технической спецификации.\rЧаще всего на этапе разработки меняются интерфейсы пользователя. Это обусловлено в том числе и тем, что модули периодически демонстрируются заказчику. Существенно могут меняться и запросы к данным.\rСледует отметить, что для сборки всего проекта должно быть выделенное рабочее место. Именно эти модули передаются на тестирование. Взаимодействие тестера и разработчика без централизованной передачи частей проекта допустимо, но только в случае, если необходимо срочно проверить какую-то правку. Очень часто этап разработки и этап тестирования взаимосвязаны и идут параллельно. Синхронизирует действия тестеров и разработчиков система bug tracking.\rПри разработке должны быть организованы постоянно обновляемые хранилища готовых модулей проекта и библиотек, которые используются при сборке модулей. Желательно, чтобы процесс обновления хранилищ контролировал один человек. Одно из хранилищ должно быть предназначено для модулей, прошедших функциональное тестирование,  а другое - для модулей, прошедших тестирование связей. Первое из них - это черновики. Второе - то, из чего уже можно собирать дистрибутив системы и демонстрировать его заказчику для проведения контрольных испытаний или сдачи каких-либо этапов работ.\rДокументация создается в течение всего процесса разработки. Как только модуль прошел тестирование связей, его можно описывать в документации. В случае если модули изменяются часто, к описанию приступают только тогда, когда модуль становится более или менее стабильным.\r\rОбработка результатов проектирования\rНа этапе разработки, как правило, еще раз проверяется атомарность функций, а также отсутствие их дублирования.\rЖелательно, чтобы на этапе проектирования уже была построена матрица «функции-сущности». Это фактически формализованное представление того, что фирма пытается сделать (функции) и какую информацию требуется обработать для достижения результата (сущности). Подобная матрица позволяет проверить следующие моменты:\rимеет ли каждая сущность конструктор - функцию, создающую экземпляры сущности (create); \rесть ли ссылки на данную сущность, то есть используется ли где-либо данная сущность (references); \rимеют ли место изменения данной сущности (update); \rимеет ли каждая сущность деструктор - функцию, которая удаляет экземпляры сущности (delete). \rЧасто роль деструктора выполняет комплект программ архивирования данных. Нередко в информационных системах информацию просто накапливают. Это допустимо лишь в том случае, если в течение всего периода накопления информации (а фактически в течение всей жизнедеятельности информационной системы) характеристики ее производительности удовлетворяют требованиям заказчика. На практике это чрезвычайно редкое стечение обстоятельств. Связано это в основном с ростом обрабатываемых объемов информации. Следует отметить, что надеяться в этом случае только на мощность СУБД или аппаратного обеспечения нельзя, так как подобные экстенсивные методы повышения производительности дают низкий расчетный прирост скорости. Фактически задача реагирования системы или отдельных ее частей на рост объема обрабатываемых данных является наиболее вероятной задачей тестирования. В таком случае группа тестирования создает модуль генерации (пусть даже абстрактных) данных, выбирается набор запросов, для которых скоростные характеристики критичны, далее производятся замеры и строится зависимость скорости выполнения от объема данных для каждого из запросов. Такое простое действие позволит избежать серьезных ошибок и в проектировании, и в реализации информационной системы.\rСпецификация модулей должна быть выполнена еще на этапе проектирования, чему в реальных проектах зачастую просто не придают значения. И напрасно - ведь из-за непродуманной реализации модулей любые достоинства схемы базы данных могут быть утрачены. Так, пренебрегая спецификациями модулей, вы рискуете заложить в информационную систему:\rнеконтролируемый рост объемов данных; \rпотоки запросов с изначально высокой вероятностью конфликта или потоки запросов, которые будут выполняться «вечно» (попытка выполнить поток, обнаружение конфликта и откат всех действий, новая попытка и т.д.) из-за конфликтующих с ними потоков; \rсмешивание системных и интерфейсных модулей; \rдублирование модулей; \rошибки в размещении бизнес-логики; \rотсутствие реализации или неполная реализация требуемых заказчиком функций системы. \rЭто далеко не полный список проблем, которые будут обнаружены или на этапе комплексного тестирования, или при вводе системы в эксплуатацию, а может быть, даже в процессе эксплуатации системы (когда начнут реально использоваться модули).\rКроме того, отсутствие спецификаций модулей не позволит точно оценить сложность каждого модуля и, как следствие, определить последовательность создания модулей и правильно распределить нагрузку персонала. Обычная ситуация в подобном случае  -  «кто-то кого-то ждет», при этом процесс создания информационной системы стоит на месте.\r\rСистемные модули \rЧасто приходится рассматривать большое количество обслуживающих или вспомогательных процессов, которые непосредственно не связаны со сформулированной бизнес-функцией. Как правило, это системные функции, имеющиеся в любой информационной системе, такие как:\rдиспетчер очередей или планировщик заданий; \rдиспетчер печати; \rсредства доступа к данным и создания нерегламентированных запросов (часто это генераторы отчетов); \rуправление каталогами и иными ресурсами файловой системы; \rавтоматическое резервное копирование; \rавтоматическое восстановление после сбоя системы; \rсредства регламентирования доступа пользователей к системе (состоящие из средства создания пользователей и средства назначения им привилегий); \rсредство настройки среды для пользователя информационной системы; \rсредство изменения пользователем своих настроек (в том числе и пароля); \rсредство управления приложениями; \rсреда администратора информационной системы. \rЧасть этих функций должна выполнять операционная система, но если она будет работать в неоднородной среде, то нет гарантии, что пользователям придется по вкусу наличие различных интерфейсов в разных операционных системах. В идеале все приложения-клиенты должны работать в одной операционной системе, однако на практике разработчикам часто приходится сталкиваться с целым «зоопарком» различных рабочих станций у заказчика - итогом нескольких попыток автоматизировать бизнес. Цель разработчика - довести систему до максимально однородного состояния либо сделать похожими хотя бы рабочие места конечных пользователей.\rЗадача создания информационной системы в разнородной среде существенно повышает требования к разработчикам кода и к выбираемому средству разработки. Особенно это касается разработки системных модулей. Следует уделить внимание модулям, реализация кода которых зависит от операционной системы. Подобные модули должны быть выделены отдельно для каждой из операционных систем в группы, например Win98, WinNT и т.д. Модули каждой из групп должны иметь строгие интерфейсы обмена - данные, которые они передают и получают, строго определены, любое отклонение от спецификации наказуемо. Ни один из модулей вне этой группы не может использовать никаких других вызовов, кроме интерфейсов обмена. Таким образом модули, зависящие от операционнй системы, изолируются от других модулей.\rВообще говоря, практика изолирования системных модулей посредством строгой регламентации их интерфейсов обмена существенно минимизирует затраты по исправлению ошибок и поддержке системы. Кроме того, это облегчает и тестирование, а именно детектирование ошибок и их отладку. Другая сторона вопроса - требования к коду интерфейса обмена системных модулей резко повышаются. Это то, что отлаживается в первую очередь и должно работать очень четко.\r\rСредства мониторинга информационной системы \rЕсли информационная система велика, то следует рассмотреть задачу ее администрирования с одной рабочей станции. Необходимо заботиться не только о конечном пользователе информационной системы, но и о персонале, который будет ее обслуживать. Особое внимание следует уделить мониторингу критических участков информационной системы, поскольку сбой зачастую проще предотвратить, чем исправлять его последствия. Мониторинг относится к тем задачам, о необходимости решения которых заказчик, как правило, не задумывается и которые обычно отсутствуют и в аналитическом исследовании, и даже при проектировании. Потребность в средствах мониторинга становится очевидной лишь на этапе ввода системы в эксплуатацию, причем потребность эта тем выше, чем сложнее система и чем больше в ней критических участков.\rРазработчикам и проектироващикам следует проводить оценку сложности системы. Если принимается решение о написании комплексного средства администрирования и мониторинга, не предусмотренного техническим заданием, то в этом случае следует менять техническое задание, а не идти на поводу у заказчика. В сложной системе отслеживать критические процессы все равно придется. Внедрять подобные средства в уже готовую систему очень сложно, поскольку исходные данные мониторы часто получают от системных модулей достаточно низкого уровня. Без изменений схемы базы данных здесь тоже вряд ли можно будет обойтись, и нет никакой гарантии, что подобное изменение не ухудшит производительность системы.\rРазработка мониторов - это довольно специфический класс задач: с одной стороны, они должны обрабатывать достаточный объем информации, с другой - не должны существенно влиять на работу других компонентов информационной системы. Это заставляет разработчиков с особой тщательностью подходить к проектированию мониторов и очень аккуратно писать код их модулей.\r\rИнтерфейсы \rИнтерфейсы конечного пользователя - это то, что заказчик критикует в наибольшей степени, в силу того что именно эти части информационной системы он может более или менее квалифицированно оценить - обычно только их он и видит. Это означает, что интерфейсы являются наиболее часто изменяемым элементом информационной системы именно на этапе реализации.\rЧасто изменяемый компонент (компоненты) информационной системы следует изолировать от редко изменяемых компонентов,  чтобы одни изменения не влекли за собой другие. Один из приемов подобной изоляции - изоляция запросов  к данным от интерфейса следующим образом:\rкаждый из запросов кодируется идентификатором или «закрывается» определенной системной функцией; \rразработчик интерфейса не знает о запросе к данным ничего, кроме параметров атрибутов выборки - их типа и, возможно, количества строк в выборке; \rобработка ошибок в запросах данных представляет собой отдельный модуль; \rобработка ошибок в интерпретации результата запроса также представляет собой отдельный модуль. \rПри обработке результатов запросов данных следует также особое внимание уделить вопросам соответствия типов включающего языка и СУБД, в том числе вопросам точности числовых типов, так как представление их у разных СУБД существенно различается. Кроме того, обратите внимание на запросы к данным, которые используют функции, зависящие от операционной системы, например функции работы с  байтами и словами значения атрибута (например, на Intel и SUN SPARC эти функции будут работать по-разному). Типы данных могут быть приведены или явно в запросе функциями приведения cast и встроенными в СУБД функциями, или в функции прикладной программы. Не для всех СУБД неявное преобразование типов дает один и тот же результат, поэтому если информационая система использует данные из нескольких баз данных под управлением разных СУБД, то неявных преобразований типов лучше избегать.\rСледует также установить достаточно жесткие правила для внешнего вида интерфейсов пользователя. Должно создаваться впечатление единого стиля для всех компонентов информационной системы.\r\rВерсии базы данных \rПервую версию базы данных проекта в большинстве случаев создают достаточно быстро - это реализация полностью нормализованной структуры, которую получают на этапе анализа. Основным назначением этой базы данных является обеспечение макетирования, демонстрационных показов, некоторых экспериментов разработчиков и проектировщиков.\rСкрипты создания базы данных и заполнения ее стартовыми данными - это тоже исходный код информационной системы, и на него распространяются правила контроля версий. Следует отметить, что поддерживать версии базы даных на уровне скриптов все же проще, чем на уровне средств выгрузки и загрузки данных, предоставляемых самой СУБД, так как в подавляющем большинстве случаев подобные средства не могут предоставить несколько простых, но необходимых функций:\rпроконтролировать, какие объекты данных и данные имеют место в объектах загрузки A и B, и загрузить в базу данных только «разницу» A и B (произвести обновление версии); \rпроконтролировать, не конфликтуют ли изменения, имеющие место в объектах выгрузки C и D, по сравнению с объектом выгрузки A (произвести слияние версий). \rCASE-инструменты имеют средства контроля версий схемы базы данных, некоторые имеют настройки, позволяющие также контролировать и стартовые данные. Это дает возможность использовать указанные средства для обеспечения контроля версий базы данных.\rКонтроль версий исходного кода триггеров, хранимых процедур надежнее осуществлять путем использования той же системы контроля версий, что принята для хранения исходных текстов самого проекта.\r\rРазмещение логики обработки \rОдим из важных вопросов проектирования является способ размещения бизнес-логики обработки данных: размещать ее (и какую часть) либо на сервере в виде хранимых процедур, пакетов, триггеров, иных ограничений целостности непосредственно на сервере баз данных, либо в виде функций на клиенте (в составе ПО клиента). Местонахождение правил интерфейса и правил данных задано точно: первые всегда размещены на клиенте, вторые - на сервере. Правила бизнес-логики в современных СУБД могут быть размещены как на клиенте, так и на сервере. Рассмотрим один из примеров простейшего бизнес-правила:\rЗначение в поле экранной формы вводится пользователем, а не выбирается из списка, но набор допустимых значений строго ограничен (например, два или три различных значения). \rС одной стороны, пользователь требует немедленной реакции системы на ошибку ввода данных, с другой - недопустимы значения в поле базы данных, отличные от заданных (двух или трех). На самом деле в этой ситуации  должны быть реализованы два правила. Правило данных в этом случае будет организовано в виде ограничения check, а правило интерфейса, запрещающее вводить значения, отличные от заданных, будет в точности повторять правило даных, но будет реализовано на уровне интерфейса пользователя. Казалось бы, реализация формы со списком в этом случае является идеальным решением, но большинство операторов предпочитают именно набор в форме, особенно если длина вводимого значения невелика. Формы с большим количеством списков достаточно трудны для обработки конечными пользователями. В случае набора значений в форме следует также позаботиться о приведении регистров строк символов (там, где регистр не существенен) к верхнему или нижнему регистру, на уровне интерфейса прикладной программы.\r\rШаблоны \rИспользование шаблонов и библиотек для построения «похожих» модулей - достаточно распространенная практика. Что использовать в этом случае - объекты и классы или библиотеки - решает конкретная группа разработчиков. Диктовать способ разработки в большинстве случаев бессмысленно, потому что разработчик пишет код так, как умеет или как привык. Эти моменты обычно контролирует руководитель проекта.\rВ любом проекте запрещается копирование кода, поскольку это ведет к возникновению различных версий одного и того же кода в разных фрагментах  прикладной программы и, как следствие, к сложно детектируемым и исправляемым ошибкам. Следует установить жесткое правило: используется вызов функции, а не его копия в коде; любое отклонение от данного правила наказуемо.\r\rТестирование \rКак было сказано выше, группы тестирования могут привлекаться уже на ранних стадиях разработки проекта. Собственно комплексное тестирование действительно следует выделять в отдельный этап разработки. В зависимости от сложности проекта тестирование и исправление ошибок могут занимать треть, половину и больше времени разработки всего проекта.\rЧем сложнее проект, тем больше будет потребность в автоматизации системы хранения ошибок - bug tracking. Подобная система обеспечивает следующие функции:\rхранение сообщения об ошибке (с обязательной информацией о том, к какому компоненту системы относится ошибка, кто ее нашел, как ее воспроизвести, кто отвечает за ее исправление и когда она должна быть исправлена); \rсистема уведомления о появлении новых ошибок, об изменении статуса известных в системе ошибок (как правило, это уведомления по электронной почте); \rотчеты об актуальных ошибках по компонентам системы, по интервалам времени, по группам разработчиков и разработчикам; \rинформация об истории ошибки (в том числе отслеживание похожих ошибок, отслеживание повторного возникновения ошибки); \rправила доступа к ошибкам тех или иных категорий; \rинтерфейс ограниченного доступа к системе bug tracking для конечного пользователя информационной системы, который используется как интерфейс обмена информацией между пользователем и службой технической поддержки системы. \rПодобные системы снимают множество организационных проблем, в частности вопросы автоматического уведомления об ошибках.\rСобственно тесты систем можно разделить на несколько категорий:\rавтономные тесты модулей - используются уже на этапе разработки компонентов системы и позволяют отслеживать ошибки отдельных компонентов; \rтесты связей компонентов системы - используются и на этапе разработки, и на этапе тестирования и позволяют отслеживать правильность взаимодействия и обмена информацией компонентов системы; \rсистемный тест - является основным критерием приемки системы. Как правило, это группа тестов, включающая в себя и автономные тесты, и тесты связей и модели. Данный тест должен воспроизводить работу всех компонентов и функций системы, его основная цель - внутренняя приемка системы и оценка ее качества; \rприемо-сдаточный тест - используется при сдаче системы заказчику. Здесь разработчики часто занижают требования к системе по сравнению с системным тестом, и в общем-то понятно, почему это оправданно; \rтесты производительности и нагрузки - входят в системный тест, но достойны отдельного упоминания, так как именно эта группа тестов является основной для оценки надежности системы. \rВ тесты каждой группы обязательно входят тесты моделирования отказов. Здесь проверяется реакция компонента, группы компонентов, системы в целом на отказы следующего типа:\rотказ отдельного компонента информационной системы; \rотказ группы компонентов информационной системы; \rотказ основных модулей информационной системы; \rотказ операционной системы; \r«жесткий» сбой (отказ питания, жестких дисков). \rЭти тесты позволяют оценить качество подсистемы восстановления корректного состояния информационной системы и служат основным источником информации для разработки стратегий предотвращения негативных последствий сбоев при промышленной эксплуатации. Как правило, это тот класс тестов, которым разработчики пренебрегают, а затем борются с последствиями сбоев на промышленной системе.\rЕще одним важным моментом программы тестирования информационных систем является наличие генераторов тестовых данных. Они используются для проведения как тестов функциональности системы, так и тестов надежности системы, а также тестов производительности системы. Задача оценки характеристик зависимости производительности информационной системы от роста объемов обрабатываемой информации не может быть решена без генераторов данных.\r\rЭксплуатация и сопровождение \rОпытная эксплуатация перекрывает процесс тестирования. Как правило, система вводится в эксплуатацию не полностью, постепенно.\rВвод в эксплуатацию проходит по крайней мере три фазы:\rпервоначальная загрузка информации; \rнакопление информации; \rвыход на проектную мощность. \rПервоначальная загрузка информации инициирует довольно узкий круг ошибок - в основном это проблемы рассогласования данных при загрузке и собственные ошибки загрузчиков, то есть то, что не было отслежено на тестовых данных. Подобные ошибки должны быть исправлены как можно быстрее. Не поленитесь поставить отладочную версию системы (если, конечно, вам позволят развернуть весь комплекс сопровождающего отладку информационной системы ПО на месте). Если отладку «на живых» данных производить невозможно, то придется моделировать ситуацию, причем быстро. Здесь требуются очень квалифицированные тестеры.\rВ период накопления информации  проявится наибольшее количество ошибок, допущенных при создании информационной системы.   Как правило, это ошибки, связанные с многопользовательским доступом. Часто на этапе тестирования таким ошибкам не уделяется должного внимания - видимо, из-за сложности моделирования и дороговизны средств автоматизации процесса тестирования информационной системы в условиях многопользовательского доступа . Некоторые ошибки исправить будет довольно сложно, так как они являются ошибками проектирования. Ни один самый хороший проект от них не застрахован. Это значит, что на всякий случай надо резервировать время на локализацию и исправление таких ошибок.\rВторая категория исправлений связана с тем, что пользователя не устраивает интерфейс. Здесь не всегда нужно выполнять абсолютно все пожелания пользователя, иначе процесс ввода в эксплуатацию не кончится никогда.\rВ период накопления информации можно столкнуться со знаменитым «упала база». При самом плохом раскладе окажется, что СУБД не выдерживает потока информации. При хорошем - просто параметры конфигурации неверны. Первый случай опасен, так как повлиять на производителя СУБД довольно сложно, а заказчик очень не любит ссылок на службу технической поддержки СУБД. Решать проблему отказа СУБД придется не производителю, а вам - менять схему, снижать поток запросов, менять сами запросы; в общем - вариантов много. Хорошо, если время восстановления базы вписывается в запланированное.\rВыход системы на проектную мощность при удачном стечении обстоятельств - это исправление ряда мелких ошибок, и изредка - ошибок серьезных.\r\rДругие подходы к разработке приложений \rКак правило, конечные пользователи и руководство полагают, что процесс проектирования не дал никаких результатов, поскольку  отсутствуют готовые компоненты, которые можно было бы «пощупать». Зачастую заказчик настаивает на досрочном проведении этапа реализации проекта, для того чтобы как можно быстрее получить какой-то результат и продемонстрировать его. В таком случае существует большой соблазн выбрать ускоренную разработку приложений (УРП) или совместную разработку приложений (СРП). Подобные методы предусматривают разработку рабочего прототипа с последующей демонстрацией его пользователям. Пользователи отмечают, что им нравится, а что - нет. Проектировщик дорабатывает прототип с учетом сделанных замечаний, после чего снова демонстрирует то, что получилось. И так далее. Процесс повторяется до тех пор, пока пользователям не понравится то, что они видят, а прототип не станет рабочим приложением. Обычно устанавливается лимит времени и количество итераций, иначе пользователи будут совершенствовать прототип вечно. Теоретически это позволяет получить ту систему, которая требуется пользователям. На практике подобный подход к разработке приложений сопряжен с серьезными проблемами.\rВсе внимание сконцентрировано на экранных формах, а то, что касается правил обработки данных и системных функций, остается за кадром. Есть соблазн начать работу с отчетов, в то время как отчет является не стартовым, а производным продуктом информационной системы. \rПользователи полагают, что если вариант прототипа согласован, то модуль готов. На самом деле это может быть всего лишь картинка с набором «заглушек» для вызовов системных функций и взаимодействия с другими модулями. \rМодули проектируются изолированно друг от друга (наверное, большинство из вас сталкивались с бухгалтерскими программами, где каждый АРМ является автономным и функции часто дублируются). Следствием этого являются противоречия модулей, дублирование функций и данных, что может быть выявлено только при тестировании комплекса модулей. \rФункциональные возможности наращиваются параллельно в нескольких направлениях, значит, структура базы данных должна контролироваться жестко. При УРП схема базы данных превращается в свалку, где таблицы «лепятся» наскоро, в результате чего имеет место набор противоречивых и дублирующихся данных. \rДокументация при использовании метода УРП, как правило, отсутствует, а вернее, о необходимости документировать систему забывают, поскольку создается иллюзия, что пользователь и без того понимает, что происходит. Когда же приложение начинает работать не так, как предполагает пользователь, возникает масса проблем. \rОбработка исключительных ситуаций для каждого модуля производится своя. \rЦелостная система, как правило, не получается, скорее всего, это будет некий набор автоматизированных рабочих мест, наскоро связанных между собой. \rМетоды УРП и СРП можно использовать далеко не всегда, а лишь в том случае, если:\rобъем проекта и требования бизнеса четко определены, не изменяются, а сам проект невелик; \rпроект не зависит от других средств автоматизации бизнеса, количество внешних интерфейсов, с которыми придется иметь дело, ограниченно; \rсистема ориентирована на экранные формы, обработка данных и системные функции составляют незначительную часть, удобство экранных форм входит в пятерку важнейших факторов успеха проекта; \rпользователи имеют высокую квалификацию и априори положительно оценивают идею создания нового ПО. \rТем не менее методом УРП лучше разрабатывать небольшие и, желательно, автономные части проекта.\rВ настоящее время предпринята попытка представить еще один способ быстрого написания проекта - метод экстремального программирования.  Ниже будут рассмотрены принципы данного подхода.\rЭтап планирования (planning game). На основании оценок, сделанных программистами, заказчик определяет функциональные возможности и срок реализации версий системы. Программисты реализуют только те функции, которые необходимы для возможностей, выбранных на данной итерации.\rВ результате такого решения «за кадром» остается развитие системы, вследствие чего при разработке возникает необходимость строить «заглушки» и переписывать код. Непонятно, почему срок реализации определяет заказчик, ведь на самом деле это прямая обязанность группы проектировщиков. Заказчик, вообще говоря, может лишь выразить свои пожелания по поводу сроков («хочу, чтобы к такому-то числу»), но определить срок может только проектировщик («выполнимо не меньше чем за такое-то время»).\rЧастая смена версий (small releases). Систему запускают в эксплуатацию уже через несколько месяцев после начала реализации, не дожидаясь окончательного разрешения всех поставленных проблем. Выпуск новых версий может происходить с периодичностью от ежедневного до ежемесячного.\rВсе хорошо, кроме одного: протестировать за такой срок более или менее сложный компонент невозможно. Заказчик фактически выступает в роли бета-тестера. В этом случае он может видеть, что разработчики трудятся и даже ошибки исправляют. Однако возникают резонные вопросы: стоит ли посвящать заказчика в рабочий процесс и нужно ли ставить эксперименты на рабочей системе? В дополнение к сказанному необходимо отметить, что подобный принцип вряд ли может быть реализован для частей проекта, которые требуют работы в режиме 24x7.\rМетафора (metaphor). Общий вид системы определяется при помощи метафоры или набора метафор, над которыми совместно работают заказчик и программисты.\rС одной стороны, этот постулат кажется неплохим, а с другой - имеет ли смысл посвящать заказчика во внутренние дела группы разработчиков? То, что касается общего вида (интерфейсы, отчеты и т.п.), действительно может находиться в компетенции заказчика,  но когда речь идет об особенностях реализации тех или иных компонентов, заказчик вряд ли может быть полезен из-за отсутствия у него необходимых знаний.\rПростой проект (simple design). В каждый момент времени разрабатываемая система выполняет все тесты и поддерживает все взаимосвязи, определяемые программистом, не имеет дубликатов кода и содержит минимально возможное количество классов и методов. Это правило кратко можно выразить так: «Каждую мысль формулируй один и только один раз».\rЭта мысль тоже хороша, но она не вполне согласуется с принципом быстрого написания кода. Может быть, стоит все-таки сначала подумать, как делать тот или иной модуль, группу модулей, и лишь потом заняться написанием кода?\rТесты (tests). Программисты постоянно пишут тесты для модулей (unit tests). Собранные вместе, эти тесты должны работать корректно. Для этапов в итерации заказчики пишут функциональные тесты (functional tests),  которые также должны работать правильно. Однако на практике это не всегда достижимо. Чтобы принять правильное решение, необходимо понять, во сколько обойдется сдача системы с заранее известным дефектом, и сравнить это с ценой задержки на исправление дефекта.\rПри написании тестов самими программистами (особенно в условиях сверхурочных работ) эти тесты не полнофункциональны, и уж тем более не учитывают особенностей многопользовательской работы. На более продвинутые тесты у разработчиков обычно не хватает времени. Можно, конечно, построить систему разработки так, что всем будут заниматься одни и те же люди, но все-таки не стоит превращать проект в аналог телепередачи «Сам себе режиссер». К сказанному необходимо добавить, что тестирование системы вовсе не исчерпывается тестами компонентов (units); не менее важны тесты взаимодействия между ними, это же относится и к тестам надежности работы. И тем не менее метод экстремального программирования не предусматривает создания тестов данного класса. Это объясняется тем, что сами такие тесты могут представлять достаточно сложный код (особенно это касается тестов-имитаторов реальной работы системы). В данной технологии также никак не учитывается еще один важный класс тестов - тесты поведения системы при росте объемов обрабатываемой информации. При высокой скорости изменения версий выполнить такой тест технологически невозможно, поскольку его проведение требует стабильного и неизменного кода проекта, например, в течение недели. Подобные сроки, вообще говоря, не гарантируются из-за частой смены версий. В таком случае придется или приостанавливать разработку компонентов, или на время проведения теста создавать параллельную версию проекта, которая будет сохраняться неизменной, тогда как вторая при этом будет изменяться. Потом нужно будет выполнять процесс слияния кода. Но в этом случае тест придется создавать снова, так как методы экстремального программирования просто не предусматривают разработку средств, позволяющих прогнозировать поведение системы при тех или иных изменениях.\rПереработка системы (refactoring). Архитектура системы постоянно эволюционирует. Текущий проект трансформируется, при этом гарантируется правильное выполнение всех тестов.\rВот тут-то и начинается самое интересное. Экстремальное программирование исходит из того, что переделать всегда можно, причем без особых затрат. Однако практика свидетельствует об обратном.\rПрограммирование в паре (pair programming). Весь код проекта пишут два человека, которые используют одну настольную систему.\rВозникает вопрос: кто-нибудь видел двух  совершенно одинаковых программистов, каждый из которых к тому же в конце рабочего дня успевал бы писать документацию для напарника?  Можно ли найти таких программистов-близнецов, согласных во всем?\rА главное, зачем нужна такая пара программистов? Причина, в общем-то, простая: не все выдерживают навязываемый при экстремальном программировании высокий темп работ, неизбежен отток персонала. Подобная пара может дать некую страховку - если уволится один, то, может быть, второй доведет дело до конца. Правда, оставшийся попадет в еще более жесткие временные рамки - ведь объем работ останется прежним же, а дублера уже не будет, по крайней мере какое-то время. Далее следует естественный процесс передачи информации новому дублеру, что опять-таки требует времени. И так без конца.\rНепрерывная интеграция (continuous integration). Новый код интегрируется в существующую систему не позднее, чем через несколько часов. После этого система вновь собирается в единое целое и прогоняются все тесты. Если хотя бы один из них не выполняется корректно, внесенные изменения отменяются.\rЭтот постулат предоставляется по меньшей мере спорным, поскольку непонятно, кто будет исправлять ошибки, причем не только локальные, но и наведенные неправильным кодом. Ведь проведение комплексных тестов не предполагается на данном этапе, кроме того, изменения остаются даже в том случае, когда ошибка детектирована. В то же самое время метод экстремального программирования не предусматривает наличия системы отслеживания ошибок.\rКоллективное владение (collective ownership). Каждый программист имеет возможность в любое время усовершенствовать любую часть кода в системе, если сочтет это необходимым.\rВам это анархию не напоминает? Как в этом случае искать автора изменений? Встречал ли кто-либо при разработке большого проекта такого «на все руки доку»  и сколько подобный «умелец»  сумел бы продержаться на своем рабочем месте? Правильно, не слишком долго.\rЗаказчик с постоянным участием (on-site customer). Заказчик, который в период работы над системой находится в команде разработчиков.\rЭто, конечно, хорошо, но непонятна цель: то ли посвятить заказчика в суть дела, то ли сделать его соавтором? Вряд ли только у заказчика найдется столь высококвалифицированный специалист.\r40-часовая неделя (40-hour weeks). Объем сверхурочных работ не может превышать по длительности одну рабочую неделю. Даже отдельные случаи сверхурочных работ, повторяющиеся слишком часто, являются сигналом серьезных проблем, которые требуют безотлагательного решения.\rКак показывает практика применения экстремального программирования (несмотря на целый ряд положительных примеров, приводимых сторонниками данного метода), сверхурочные при таком подходе - это правило, а не исключение, и борьба с проблемами в данном случае - явление постоянное. Усиливается она в период замены текущей сырой версии продукта очередной, опять же сырой, версией. Заказчик, посвященный в процесс, испытывает все прелести проявления ошибок работы системы на себе. Как вы думаете, надолго ли хватит у заказчика терпения при таком положении дел? Ему ведь надо, чтобы система работала...\rОткрытое рабочее пространство (open workspace). Команда разработчиков располагается в большом помещении, окруженном комнатами меньшей площади. В центре рабочего пространства устанавливаются компьютеры, на которых работают пары программистов.\rПричем все это, судя по предыдущим принципам, должно располагаться на территории заказчика, раз он весьма активно привлекается к процессу разработки. Возникает вопрос: реально ли столь удачное стечение обстоятельств?\rНе более чем правила (just rules). Члены коллектива, работающего по технологии экстремального программирования, обязуются выполнять изложенные правила. Однако это не более чем правила и команда может в любой момент поменять их, если ее члены достигли принципиального соглашения по поводу внесенных изменений.\rМожет быть, в конце концов и будет выработано одно полезное правило: «сначала подумай, потом сделай». В этом случае мы будем иметь схему, весьма похожую на «водопад». Почему-то сторонники экстремального программирования убеждены, что при использовании «водопада» и его клонов цикл разработки обязательно должен быть длинным. Непонятно, чем обусловлена такая уверенность. Ведь не запрещено дробить проект на этапы. Почему-то считается, что планирование обязательно будет одноразовым и неизменным, хотя на самом деле это не соответствует истине, в том числе и в случае «водопада».\rВ итоге мы получаем метод, потенциально обладающий высокой адаптируемостью к сильно изменяющимся требованиям к проекту, но в то же время не свободный от ряда серьезных недостатков. Последнее обстоятельство не позволяет рекомендовать данный метод к применению для проектов, требующих высокой или как минимум достаточной надежности работы.",
         "0",
         "[['этап_разработка', 'проект', 'реализация', 'тестирование', 'эксплуатация', 'сопровождение', 'реализация', 'трудный', 'давать', 'совет', 'реализация', 'код', 'модуль', 'разработчик', 'привычка', 'стиль', 'разработка', 'код'], ['реализация', 'проект', 'важный', 'координировать', 'группа', 'группа', 'разработчик'], ['разработчик', 'подчиняться', 'жёсткий', 'правило', 'контроль', 'исходный', 'тест'], ['группа', 'разработчик', 'получить', 'технический', 'проект', 'начинать', 'писать', 'код', 'модуль', 'случай', 'основный', 'задача', 'состоять', 'уяснить', 'спецификация'], ['проектировщик', 'указать', 'сделать', 'разработчик', 'определять', 'способ', 'выполнение'], ['этап_разработка', 'осуществляться', 'тесный', 'взаимодействие', 'проектировщик', 'разработчик', 'группа', 'тестер'], ['случай', 'интенсивный', 'разработка', 'тестер', 'буквально', 'пристёгиваться', 'разработчик', 'фактически', 'являться', 'член', 'группа', 'разработка'], ['проектировщик', 'этап', 'выполнять', 'функция', 'ходячий', 'справочник', 'постоянно', 'отвечать', 'вопрос', 'разработчик', 'касаться', 'технический', 'спецификация'], ['этап_разработка', 'меняться', 'интерфейс', 'пользователь'], ['обусловить', 'число', 'модуль', 'периодически', 'демонстрироваться', 'заказчик'], ['существенно', 'меняться', 'запрос', 'данным'], ['отметить', 'сборка', 'проект', 'выделить', 'рабочий', 'место'], ['модуль', 'передаваться', 'тестирование'], ['взаимодействие', 'тестер', 'разработчик', 'централизовать', 'передача', 'часть', 'проект', 'допустимый', 'случай', 'срочно', 'проверить', 'какой', 'правка'], ['этап_разработка', 'этап', 'тестирование', 'взаимосвязаны', 'идти', 'параллельно'], ['синхронизировать', 'действие', 'тестер', 'разработчик', 'система', 'bug', 'tracking'], ['разработка', 'организовать', 'постоянно', 'обновлять', 'хранилище', 'готовый', 'модуль', 'проект', 'библиотека', 'использоваться', 'сборка', 'модуль'], ['желательный', 'процесс', 'обновление', 'хранилище', 'контролировать', 'человек'], ['хранилище', 'предназначить', 'модуль', 'пройти', 'функциональный', 'тестирование', 'модуль', 'пройти', 'тестирование', 'связь'], ['первый', 'черновик'], ['второй', 'собирать', 'дистрибутив', 'система', 'демонстрировать', 'заказчик', 'проведение', 'контрольный', 'испытание', 'сдача', 'какой', 'этап', 'работа'], ['документация', 'создаваться', 'течение', 'процесс', 'разработка'], ['модуль', 'пройти', 'тестирование', 'связь', 'описывать', 'документация'], ['случай', 'модуль', 'изменяться', 'описание', 'приступать', 'модуль', 'становиться', 'стабильный'], ['обработка', 'результат', 'проектирование', 'этап_разработка', 'правило', 'раз', 'проверяться', 'атомарность', 'функция', 'отсутствие', 'дублирование'], ['желательный', 'этап', 'проектирование', 'построить', 'матрица', 'функция', 'сущность'], ['фактически', 'формализованный', 'представление', 'фирма', 'пытаться', 'сделать', 'функция', 'какой', 'информация', 'требоваться', 'обработать', 'достижение', 'результат', 'сущность'], ['матрица', 'позволять', 'проверить', 'следующий', 'момент', 'сущность', 'конструктор', 'функция', 'создавать', 'экземпляр', 'сущность', 'create', 'ссылка', 'данную', 'сущность', 'использоваться', 'сущность', 'references', 'иметь', 'место', 'изменение', 'сущность', 'update', 'сущность', 'деструктор', 'функция', 'удалять', 'экземпляр', 'сущность', 'delete'], ['роль', 'деструктор', 'выполнять', 'комплект', 'программа', 'архивирование'], ['информационный_система', 'информация', 'накапливать'], ['допустимый', 'случай', 'течение', 'период', 'накопление', 'информация', 'фактически', 'течение', 'жизнедеятельность', 'информационный_система', 'характеристика', 'производительность', 'удовлетворять', 'требование', 'заказчик'], ['практика', 'чрезвычайно', 'редкий', 'стечение', 'обстоятельство'], ['связать', 'основный', 'рост', 'обрабатывать', 'объём', 'информация'], ['отметить', 'надеяться', 'случай', 'мощность', 'субд', 'аппаратный', 'обеспечение', 'экстенсивный', 'метод', 'повышение', 'производительность', 'давать', 'низкий', 'расчётный', 'прирост', 'скорость'], ['фактически', 'задача', 'реагирование', 'система', 'отдельный', 'часть', 'рост', 'объём', 'обрабатывать', 'являться', 'вероятный', 'задача', 'тестирование'], ['случай', 'группа', 'тестирование', 'создавать', 'модуль', 'генерация', 'абстрактный', 'выбираться', 'набор', 'запрос', 'скоростной', 'характеристика', 'критичный', 'производиться', 'замер', 'строиться', 'зависимость', 'скорость', 'выполнение', 'объём', 'каждый', 'запрос'], ['простой', 'действие', 'позволить', 'избежать', 'серьёзный', 'ошибка', 'проектирование', 'реализация', 'информационный_система'], ['спецификация', 'модуль', 'выполнить', 'этап', 'проектирование', 'реальный', 'проект', 'зачастую', 'придавать', 'значение'], ['напрасно', 'непродуманный', 'реализация', 'модуль', 'любой', 'достоинство', 'схема', 'база', 'утратить'], ['пренебрегать', 'спецификациями', 'модуль', 'рисковать', 'заложить', 'информационный_система', 'неконтролируемый', 'рост', 'объём', 'поток', 'запрос', 'изначально', 'высокий', 'вероятность', 'конфликт', 'поток', 'запрос', 'выполняться', 'вечно', 'попытка', 'выполнить', 'поток', 'обнаружение', 'конфликт', 'откат', 'действие', 'новый', 'попытка', 'т.д.', 'конфликтовать', 'поток', 'смешивание', 'системный', 'интерфейсный', 'модуль', 'дублирование', 'модуль', 'ошибка', 'размещение', 'бизнес', 'логики', 'отсутствие', 'реализация', 'неполный', 'реализация', 'требовать', 'заказчик', 'функция', 'система'], ['полный', 'список', 'проблема', 'обнаружить', 'этап', 'комплексный', 'тестирование', 'ввод', 'система', 'эксплуатация', 'процесс', 'эксплуатация', 'система', 'начать', 'реально', 'использоваться', 'модуль'], ['отсутствие', 'спецификация', 'модуль', 'позволить', 'оценить', 'сложность', 'каждый', 'модуль', 'следствие', 'определить', 'последовательность', 'создание', 'модуль', 'правильно', 'распределить', 'нагрузка', 'персонал'], ['обычный', 'ситуация', 'подобный', 'случай', 'ждать', 'процесс', 'создание', 'информационный_система', 'стоить', 'место'], ['системный', 'модуль', 'приходиться', 'рассматривать', 'большой', 'количество', 'обслуживать', 'вспомогательный', 'процесс', 'непосредственно', 'связать', 'сформулировать', 'бизнес', 'функцией'], ['правило', 'системный', 'функция', 'иметься', 'информационный_система', 'диспетчер', 'очередь', 'планировщик', 'задание', 'диспетчер', 'печать'], ['средство', 'доступ', 'данным', 'создание', 'нерегламентированный', 'запрос', 'генератор', 'отчёт', 'управление', 'каталогами', 'ресурс', 'файловый', 'система', 'автоматический', 'резервный', 'копирование', 'автоматический', 'восстановление', 'сбой', 'система', 'средство', 'регламентирование', 'доступ', 'пользователь', 'система', 'состоять', 'средство', 'создание', 'пользователь', 'средство', 'назначение', 'привилегия', 'средство', 'настройка', 'среда', 'пользователь', 'информационный_система', 'средство', 'изменение', 'пользователь', 'настройка', 'число', 'пароль', 'средство', 'управление', 'приложение', 'среда', 'администратор', 'информационный_система'], ['часть', 'функция', 'выполнять', 'операционный', 'система', 'работать', 'неоднородный', 'среда', 'гарантия', 'пользователь', 'прийтись', 'вкус', 'наличие', 'различный', 'интерфейс', 'разный', 'операционный', 'система'], ['идеал', 'приложение', 'клиент', 'работать', 'операционный', 'система', 'практика', 'разработчик', 'приходиться', 'сталкиваться', 'целый', 'зоопарк', 'различный', 'рабочий', 'станция', 'заказчик', 'итог', 'несколько', 'попытка', 'автоматизировать', 'бизнес'], ['цель', 'разработчик', 'довести', 'система', 'максимально', 'однородный', 'состояние', 'сделать', 'похожий', 'рабочий', 'место', 'конечный_пользователь'], ['задача', 'создание', 'информационный_система', 'разнородный', 'среда', 'существенно', 'повышать', 'требование', 'разработчик', 'код', 'выбираемому', 'средство', 'разработка'], ['касаться', 'разработка', 'системный', 'модуль'], ['уделить', 'внимание', 'модуль', 'реализация', 'код', 'зависеть', 'операционный', 'система'], ['модуль', 'выделить', 'отдельно', 'каждый', 'операционный', 'система', 'группы', 'win98', 'winnt', 'т.д.'], ['модуль', 'каждый', 'группа', 'строгий', 'интерфейс', 'обмен', 'передавать', 'получать', 'строго', 'определить', 'отклонение', 'спецификация', 'наказуемый'], ['ни', 'модуль', 'группа', 'использовать', 'никакой', 'вызов', 'интерфейс', 'обмен'], ['образ', 'модуль', 'зависеть', 'операционнй', 'система', 'изолироваться', 'модуль'], ['говорить', 'практика', 'изолирование', 'системный', 'модуль', 'строгий', 'регламентация', 'интерфейс', 'обмен', 'существенно', 'минимизировать', 'затрата', 'исправление', 'ошибка', 'поддержка', 'система'], ['облегчать', 'тестирование', 'детектирование', 'ошибка', 'отладка'], ['сторона', 'вопрос', 'требование', 'код', 'интерфейс', 'обмен', 'системный', 'модуль', 'резко', 'повышаться'], ['отлаживается', 'первый', 'очередь', 'работать', 'четко'], ['средство', 'мониторинг', 'информационный_система', 'информационный_система', 'большой', 'рассмотреть', 'задача', 'администрирование', 'рабочий', 'станция'], ['заботиться', 'конечный_пользователь', 'информационный_система', 'персонал', 'обслуживать'], ['особый', 'внимание', 'уделить', 'мониторинг', 'критический', 'участок', 'информационный_система', 'сбой', 'зачастую', 'предотвратить', 'исправлять', 'последствие'], ['мониторинг', 'относиться', 'задача', 'решение', 'заказчик', 'правило', 'задумываться', 'отсутствовать', 'аналитический', 'исследование', 'проектирование'], ['потребность', 'средство', 'мониторинг', 'становиться', 'очевидный', 'этап', 'ввод', 'система', 'эксплуатация', 'потребность', 'высоко', 'сложный', 'система', 'критический', 'участок'], ['разработчик', 'проектироващикам', 'проводить', 'оценка', 'сложность', 'система'], ['приниматься', 'решение', 'написание', 'комплексный', 'средство', 'администрирование', 'мониторинг', 'предусмотреть', 'технический', 'задание', 'случай', 'менять', 'технический', 'задание', 'идти', 'повод', 'заказчик'], ['сложный', 'система', 'отслеживать', 'критический', 'процесс', 'равный', 'прийтись'], ['внедрять', 'средство', 'готовый', 'система', 'сложный', 'исходный', 'монитор', 'получать', 'системный', 'модуль', 'достаточно', 'низкий', 'уровень'], ['изменение', 'схема', 'база', 'обойтись', 'гарантия', 'подобный', 'изменение', 'ухудшить', 'производительность', 'система'], ['разработка', 'монитор', 'специфический', 'класс', 'задача', 'сторона', 'обрабатывать', 'достаточный', 'объём', 'информация', 'существенно', 'влиять', 'работа', 'компонент', 'информационный_система'], ['заставлять', 'разработчик', 'особый', 'тщательность', 'подходить', 'проектирование', 'монитор', 'аккуратно', 'писать', 'код', 'модуль'], ['интерфейсы', 'интерфейсы', 'конечный_пользователь', 'заказчик', 'критиковать', 'больший', 'степень', 'сила', 'часть', 'информационный_система', 'квалифицированно', 'оценить', 'видеть'], ['означать', 'интерфейс', 'являться', 'изменять', 'элемент', 'информационный_система', 'этап', 'реализация'], ['изменять', 'компонент', 'компонент', 'информационный_система', 'изолировать', 'редко', 'изменять', 'компонент', 'изменение', 'влечь'], ['приём', 'подобный', 'изоляция', 'изоляция', 'запрос', 'данным', 'интерфейс', 'следующий', 'образ', 'запрос', 'кодироваться', 'идентификатор', 'закрываться', 'определённый', 'системный', 'функция', 'разработчик', 'интерфейс', 'знать', 'запрос', 'данным', 'параметр', 'атрибут', 'выборка', 'тип', 'количество', 'строка', 'выборка', 'обработка', 'ошибка', 'запрос', 'представлять', 'отдельный', 'модуль', 'обработка', 'ошибка', 'интерпретация', 'результат', 'запрос', 'представлять', 'отдельный', 'модуль'], ['обработка', 'результат', 'запрос', 'особый', 'внимание', 'уделить', 'вопрос', 'соответствие', 'тип', 'включать', 'язык', 'субд', 'число', 'вопрос', 'точность', 'числовой', 'тип', 'представление', 'разный', 'субд', 'существенно', 'различаться'], ['обратить', 'внимание', 'запрос', 'данным', 'использовать', 'функция', 'зависеть', 'операционный', 'система', 'функция', 'работа', 'байт', 'слово', 'значение', 'атрибут', 'intel', 'sun', 'sparc', 'функция', 'работать', 'разный'], ['тип', 'привести', 'запрос', 'функция', 'приведение', 'cast', 'встроить', 'субд', 'функция', 'функция', 'прикладной', 'программа'], ['субд', 'неявный', 'преобразование', 'тип', 'давать', 'результат', 'информационая', 'система', 'использовать', 'несколько', 'база', 'управление', 'разный', 'субд', 'неявный', 'преобразование', 'тип', 'лучше', 'избегать'], ['установить', 'достаточно', 'жёсткий', 'правило', 'внешний', 'вид', 'интерфейс', 'пользователь'], ['создаваться', 'впечатление', 'единый', 'стиль', 'компонент', 'информационный_система'], ['версия', 'база', 'первый', 'версия', 'база', 'проект', 'большинство', 'случай', 'создавать', 'достаточно', 'быстро', 'реализация', 'полностью', 'нормализованной', 'структура', 'получать', 'этап', 'анализ'], ['основный', 'назначение', 'база', 'являться', 'обеспечение', 'макетирование', 'демонстрационный', 'показ', 'эксперимент', 'разработчик', 'проектировщик'], ['скрипты', 'создание', 'база', 'заполнение', 'стартовый', 'данными', 'исходный', 'код', 'информационный_система', 'распространяться', 'правило', 'контроль', 'версия'], ['отметить', 'поддерживать', 'версия', 'база', 'даных', 'уровень', 'скрипт', 'уровень', 'средство', 'выгрузка', 'загрузка', 'предоставлять', 'субд', 'подавляющем', 'большинство', 'случай', 'средство', 'предоставить', 'простой', 'необходимый', 'функция', 'проконтролировать', 'объект', 'иметь', 'место', 'объект', 'загрузка', 'a', 'b', 'загрузить', 'база', 'разница', 'a', 'b', 'произвести', 'обновление', 'версия', 'проконтролировать', 'конфликтовать', 'изменение', 'иметь', 'место', 'объект', 'выгрузка', 'c', 'd', 'сравнение', 'объект', 'выгрузка', 'a', 'произвести', 'слияние', 'версия'], ['case', 'инструмент', 'иметь', 'средство', 'контроль', 'версия', 'схема', 'база', 'иметь', 'настройка', 'позволять', 'контролировать', 'стартовый'], ['давать', 'возможность', 'использовать', 'указать', 'средство', 'обеспечение', 'контроль', 'версия', 'база'], ['контроль', 'версия', 'исходный', 'код', 'триггер', 'хранить', 'процедура', 'надёжный', 'осуществлять', 'путем', 'использование', 'система', 'контроль', 'версия', 'принять', 'хранение', 'исходный', 'текст', 'проект'], ['размещение', 'логика', 'обработка', 'одим', 'важный', 'вопрос', 'проектирование', 'являться', 'способ', 'размещение', 'бизнес', 'логики', 'обработка', 'размещать', 'какой', 'часть', 'сервер', 'вид', 'хранить', 'процедура', 'пакет', 'триггер', 'иных', 'ограничение', 'целостность', 'непосредственно', 'сервер', 'база', 'вид', 'функция', 'клиент', 'состав', 'клиент'], ['местонахождение', 'правило', 'интерфейс', 'правило', 'задать', 'первый', 'разместить', 'клиент', 'второй', 'сервер'], ['правило', 'бизнес', 'логики', 'современный', 'субд', 'разместить', 'клиент', 'сервер'], ['рассмотреть', 'пример', 'простой', 'бизнес', 'правила', 'значение', 'поле', 'экранный', 'форма', 'вводиться', 'пользователь', 'выбираться', 'список', 'набор', 'допустимый', 'значение', 'строго', 'ограничить', 'два', 'три', 'различный', 'значение'], ['сторона', 'пользователь', 'требовать', 'немедленный', 'реакция', 'система', 'ошибка', 'ввод', 'недопустимый', 'значение', 'поле', 'база', 'отличный', 'задать', 'два', 'три'], ['дело', 'ситуация', 'реализовать', 'два', 'правило'], ['правило', 'случай', 'организовать', 'вид', 'ограничение', 'check', 'правило', 'интерфейс', 'запрещать', 'вводить', 'значение', 'отличный', 'задать', 'точность', 'повторять', 'правило', 'даных', 'реализовать', 'уровень', 'интерфейс', 'пользователь'], ['реализация', 'форма', 'список', 'случай', 'являться', 'идеальный', 'решение', 'большинство', 'оператор', 'предпочитать', 'набор', 'форма', 'длина', 'вводимого', 'значение', 'небольшой'], ['формы', 'больший', 'количество', 'список', 'достаточно', 'трудный', 'обработка', 'конечный_пользователь'], ['случай', 'набор', 'значение', 'форма', 'позаботиться', 'приведение', 'регистр', 'строка', 'символ', 'регистр', 'существенный', 'верхний', 'нижний', 'регистр', 'уровень', 'интерфейс', 'прикладной', 'программа'], ['шаблон', 'использование', 'шаблон', 'библиотека', 'построение', 'похожий', 'модуль', 'достаточно', 'распространенная', 'практика'], ['использовать', 'случай', 'объект', 'класс', 'библиотека', 'решать', 'конкретный', 'группа', 'разработчик'], ['диктовать', 'способ', 'разработка', 'большинство', 'случай', 'бессмысленный', 'разработчик', 'писать', 'код', 'уметь', 'привыкнуть'], ['момент', 'контролировать', 'руководитель', 'проект'], ['проект', 'запрещаться', 'копирование', 'код', 'вести', 'возникновение', 'различный', 'версия', 'код', 'разный', 'фрагмент', 'прикладной', 'программа', 'следствие', 'сложный', 'детектируемым', 'исправляемым', 'ошибка'], ['установить', 'жёсткий', 'правило', 'использоваться', 'вызов', 'функция', 'копия', 'код', 'отклонение', 'правило', 'наказуемый'], ['тестирование', 'сказать', 'выше', 'группа', 'тестирование', 'привлекаться', 'ранний', 'стадия', 'разработка', 'проект'], ['комплексный', 'тестирование', 'выделять', 'отдельный', 'этап_разработка'], ['зависимость', 'сложность', 'проект', 'тестирование', 'исправление', 'ошибка', 'занимать', 'треть', 'половина', 'время', 'разработка', 'проект'], ['сложный', 'проект', 'потребность', 'автоматизация', 'система', 'хранение', 'ошибка', 'bug', 'tracking'], ['система', 'обеспечивать', 'следующий', 'функция', 'хранение', 'сообщение', 'ошибка', 'обязательный', 'информация', 'компонент', 'система', 'относиться', 'ошибка', 'найти', 'воспроизвести', 'отвечать', 'исправление', 'исправить'], ['система', 'уведомление', 'появление', 'новый', 'ошибка', 'изменение', 'статус', 'известный', 'система', 'ошибка', 'правило', 'уведомление', 'электронный', 'почта', 'отчёт', 'актуальный', 'ошибка', 'компонент', 'система', 'интервал', 'время', 'группа', 'разработчик', 'разработчик', 'информация', 'история', 'ошибка', 'число', 'отслеживание', 'похожий', 'ошибка', 'отслеживание', 'повторный', 'возникновение', 'ошибка', 'правило', 'доступ', 'ошибка', 'иных', 'категория', 'интерфейс', 'ограничить', 'доступ', 'система', 'bug', 'tracking', 'конечный_пользователь', 'информационный_система', 'использоваться', 'интерфейс', 'обмен', 'информация', 'пользователь', 'служба', 'технический', 'поддержка', 'система'], ['система', 'снимать', 'множество', 'организационный', 'проблема', 'частность', 'вопрос', 'автоматический', 'уведомление', 'ошибка'], ['тест', 'система', 'разделить', 'категория', 'автономный', 'тест', 'модуль', 'использоваться', 'этап_разработка', 'компонент', 'система', 'позволять', 'отслеживать', 'ошибка', 'отдельный', 'компонент', 'тест', 'связь', 'компонент', 'система', 'использоваться', 'этап_разработка', 'этап', 'тестирование', 'позволять', 'отслеживать', 'правильность', 'взаимодействие', 'обмен', 'информация', 'компонент', 'система', 'системный', 'тест', 'являться', 'основный', 'критерий', 'приёмка', 'система'], ['правило', 'группа', 'тест', 'включать', 'автономный', 'тест', 'тест', 'связь', 'модель'], ['тест', 'воспроизводить', 'работа', 'компонент', 'функция', 'система', 'основный', 'цель', 'внутренний', 'приёмка', 'система', 'оценка', 'качество', 'приемо', 'сдаточный', 'тест', 'использоваться', 'сдача', 'система', 'заказчик'], ['разработчик', 'занижать', 'требование', 'система', 'сравнение', 'системный', 'тест', 'общий', 'понятный', 'оправданный', 'тест', 'производительность', 'нагрузка', 'входить', 'системный', 'тест', 'достойный', 'отдельный', 'упоминание', 'группа', 'тест', 'являться', 'основный', 'оценка', 'надёжность', 'система'], ['тест', 'каждый', 'группа', 'обязательно', 'входить', 'тест', 'моделирование', 'отказ'], ['проверяться', 'реакция', 'компонент', 'группа', 'компонент', 'система', 'целое', 'отказ', 'следующий', 'тип', 'отказ', 'отдельный', 'компонент', 'информационный_система', 'отказ', 'группа', 'компонент', 'информационный_система', 'отказ', 'основный', 'модуль', 'информационный_система', 'отказ', 'операционный', 'система', 'жёсткий', 'сбой', 'отказ', 'питание', 'жёсткий', 'диск'], ['тест', 'позволять', 'оценить', 'качество', 'подсистема', 'восстановление', 'корректный', 'состояние', 'информационный_система', 'служить', 'основный', 'источник', 'информация', 'разработка', 'стратегия', 'предотвращение', 'негативный', 'последствие', 'сбой', 'промышленный', 'эксплуатация'], ['правило', 'класс', 'тест', 'разработчик', 'пренебрегать', 'бороться', 'последствие', 'сбой', 'промышленный', 'система'], ['важный', 'момент', 'программа', 'тестирование', 'информационный_система', 'являться', 'наличие', 'генератор', 'тестовый'], ['использоваться', 'проведение', 'тест', 'функциональность', 'система', 'тест', 'надёжность', 'система', 'тест', 'производительность', 'система'], ['задача', 'оценка', 'характеристика', 'зависимость', 'производительность', 'информационный_система', 'рост', 'объём', 'обрабатывать', 'информация', 'решить', 'генератор'], ['эксплуатация', 'сопровождение', 'опытный', 'эксплуатация', 'перекрывать', 'процесс', 'тестирование'], ['правило', 'система', 'вводиться', 'эксплуатация', 'полностью', 'постепенно'], ['ввод', 'эксплуатация', 'проходить', 'крайний', 'мера', 'три', 'фаза', 'первоначальный', 'загрузка', 'информация', 'накопление', 'информация', 'выход', 'проектный', 'мощность'], ['первоначальный', 'загрузка', 'информация', 'инициировать', 'узкий', 'круг', 'ошибка', 'основный', 'проблема', 'рассогласование', 'загрузка', 'собственный', 'ошибка', 'загрузчик', 'отследить', 'тестовый'], ['ошибка', 'исправить', 'быстрый'], ['поленитесь', 'поставить', 'отладочный', 'версия', 'система', 'позволить', 'развернуть', 'комплекс', 'сопровождать', 'отладка', 'информационный_система', 'место'], ['отладка', 'живой', 'производить', 'невозможный', 'прийтись', 'моделировать', 'ситуация', 'быстро'], ['требоваться', 'квалифицированный', 'тестер'], ['период', 'накопление', 'информация', 'проявиться', 'больший', 'количество', 'ошибка', 'допустить', 'создание', 'информационный_система'], ['правило', 'ошибка', 'связать', 'многопользовательский', 'доступ'], ['этап', 'тестирование', 'ошибка', 'уделяться', 'должный', 'внимание', 'видимо', 'сложность', 'моделирование', 'дороговизна', 'средство', 'автоматизация', 'процесс', 'тестирование', 'информационный_система', 'условие', 'многопользовательский', 'доступ'], ['ошибка', 'исправить', 'сложный', 'являться', 'ошибка', 'проектирование'], ['ни', 'хороший', 'проект', 'застраховать'], ['случай', 'резервировать', 'время', 'локализация', 'исправление', 'ошибка'], ['второй', 'категория', 'исправление', 'связать', 'пользователь', 'устраивать', 'интерфейс'], ['выполнять', 'абсолютно', 'пожелание', 'пользователь', 'процесс', 'ввод', 'эксплуатация', 'кончиться'], ['период', 'накопление', 'информация', 'столкнуться', 'знаменитый', 'упасть', 'база'], ['плохой', 'расклад', 'оказаться', 'субд', 'выдерживать', 'поток', 'информация'], ['хороший', 'параметр', 'конфигурация', 'неверный'], ['первый', 'случай', 'опасный', 'повлиять', 'производитель', 'субд', 'сложный', 'заказчик', 'любить', 'ссылка', 'служба', 'технический', 'поддержка', 'субд'], ['решать', 'проблема', 'отказ', 'субд', 'прийтись', 'производитель', 'менять', 'схема', 'снижать', 'поток', 'запрос', 'менять', 'запрос', 'общем', 'вариант'], ['время', 'восстановление', 'база', 'вписываться', 'запланировать'], ['выход', 'система', 'проектный', 'мощность', 'удачный', 'стечение', 'обстоятельство', 'исправление', 'ряд', 'мелкий', 'ошибка', 'изредка', 'ошибка', 'серьёзный'], ['подход', 'разработка', 'приложение', 'правило', 'конечный_пользователь', 'руководство', 'полагать', 'процесс', 'проектирование', 'дать', 'никакой', 'результат', 'отсутствовать', 'готовый', 'компонент', 'пощупать'], ['зачастую', 'заказчик', 'настаивать', 'досрочный', 'проведение', 'этап', 'реализация', 'проект', 'быстрый', 'получить', 'результат', 'продемонстрировать'], ['случай', 'существовать', 'большой', 'соблазн', 'выбрать', 'ускоренный', 'разработка', 'приложение', 'урп', 'совместный', 'разработка', 'приложение', 'срп'], ['метод', 'предусматривать', 'разработка', 'рабочий', 'прототип', 'последующий', 'демонстрация', 'пользователь'], ['пользователь', 'отмечать', 'нравиться'], ['проектировщик', 'дорабатывать', 'прототип', 'учёт', 'сделать', 'замечание', 'демонстрировать', 'получиться'], [], ['процесс', 'повторяться', 'пользователь', 'понравиться', 'видеть', 'прототип', 'стать', 'рабочий', 'приложение'], ['устанавливаться', 'лимит', 'время', 'количество', 'итерация', 'пользователь', 'совершенствовать', 'прототип', 'вечно'], ['теоретически', 'позволять', 'получить', 'система', 'требоваться', 'пользователь'], ['практика', 'подход', 'разработка', 'приложение', 'сопрячь', 'серьёзный', 'проблема'], ['внимание', 'сконцентрировать', 'экранный', 'форма', 'касаться', 'правило', 'обработка', 'системный', 'функция', 'оставаться', 'кадр'], ['соблазн', 'начать', 'работа', 'отчёт', 'время', 'отчёт', 'являться', 'стартовый', 'производный', 'продукт', 'информационный_система'], ['пользователь', 'полагать', 'вариант', 'прототип', 'согласовать', 'модуль', 'готовый'], ['дело', 'картинка', 'набор', 'заглушка', 'вызов', 'системный', 'функция', 'взаимодействие', 'модуль'], ['модуль', 'проектироваться', 'изолированно', 'друг', 'друга', 'наверное', 'большинство', 'сталкиваться', 'бухгалтерский', 'программа', 'арм', 'являться', 'автономный', 'функция', 'дублироваться'], ['следствие', 'являться', 'противоречие', 'модуль', 'дублирование', 'функция', 'выявить', 'тестирование', 'комплекс', 'модуль'], ['функциональный', 'возможность', 'наращиваться', 'параллельно', 'несколько', 'направление', 'структура', 'база', 'контролироваться', 'жестко'], ['урп', 'схема', 'база', 'превращаться', 'свалка', 'таблица', 'лепиться', 'наскоро', 'результат', 'место', 'набор', 'противоречивый', 'дублирующихся'], ['документация', 'использование', 'метод', 'урп', 'правило', 'отсутствовать', 'документировать', 'система', 'забывать', 'создаваться', 'иллюзия', 'пользователь', 'понимать', 'происходить'], ['приложение', 'начинать', 'работать', 'предполагать', 'пользователь', 'возникать', 'масса', 'проблема'], ['обработка', 'исключительный', 'ситуация', 'каждый', 'модуль', 'производиться'], ['целостный', 'система', 'правило', 'получаться', 'некий', 'набор', 'автоматизированный', 'рабочий', 'место', 'наскоро', 'связать'], ['метод', 'урп', 'срп', 'использовать', 'случай', 'объём', 'проект', 'требование', 'бизнес', 'четко', 'определить', 'изменяться', 'проект', 'небольшой', 'проект', 'зависеть', 'средство', 'автоматизация', 'бизнес', 'количество', 'внешний', 'интерфейс', 'прийтись', 'дело', 'ограниченно', 'система', 'ориентировать', 'экранный', 'форма', 'обработка', 'системный', 'функция', 'составлять', 'незначительный', 'часть', 'удобство', 'экранный', 'форма', 'входить', 'пятёрка', 'важный', 'фактор', 'успех', 'проект', 'пользователь', 'иметь', 'высокий', 'квалификация', 'априори', 'положительно', 'оценивать', 'идея', 'создание', 'новый'], ['метод', 'урп', 'лучше', 'разрабатывать', 'небольшой', 'желательно', 'автономный', 'часть', 'проект'], ['время', 'предпринять', 'попытка', 'представить', 'способ', 'быстрый', 'написание', 'проект', 'метод', 'экстремальный_программирование'], ['рассмотреть', 'принцип', 'подход'], ['этап', 'планирование', 'planning', 'game'], ['основание', 'оценка', 'сделать', 'программист', 'заказчик', 'определять', 'функциональный', 'возможность', 'срок', 'реализация', 'версия', 'система'], ['программист', 'реализовать', 'функция', 'необходимый', 'возможность', 'выбрать', 'итерация'], ['результат', 'решение', 'кадр', 'оставаться', 'развитие', 'система', 'вследствие', 'разработка', 'возникать', 'необходимость', 'строить', 'заглушка', 'переписывать', 'код'], ['непонятный', 'срок', 'реализация', 'определять', 'заказчик', 'дело', 'прямой', 'обязанность', 'группа', 'проектировщик'], ['заказчик', 'говорить', 'выразить', 'пожелание', 'повод', 'срок', 'число', 'определить', 'срок', 'проектировщик', 'выполнимый', 'время'], ['частый', 'смена', 'версия', 'small', 'releases'], ['система', 'запускать', 'эксплуатация', 'месяц', 'реализация', 'дожидаться', 'окончательный', 'разрешение', 'поставить', 'проблема'], ['выпуск', 'новый', 'версия', 'происходить', 'периодичность', 'ежедневный', 'ежемесячный'], ['протестировать', 'срок', 'сложный', 'компонент', 'невозможный'], ['заказчик', 'фактически', 'выступать', 'роль', 'бета', 'тестер'], ['случай', 'видеть', 'разработчик', 'трудиться', 'ошибка', 'исправлять'], ['возникать', 'резонный', 'вопрос', 'стоить', 'посвящать', 'заказчик', 'рабочий', 'процесс', 'ставить', 'эксперимент', 'рабочий', 'система'], ['дополнение', 'сказанному', 'отметить', 'принцип', 'реализовать', 'часть', 'проект', 'требовать', 'работа', 'режим', '24x7'], ['метафора', 'metaphor'], ['общий', 'вид', 'система', 'определяться', 'помощь', 'метафора', 'набор', 'метафор', 'совместно', 'работать', 'заказчик', 'программист'], ['сторона', 'постулат', 'неплохой', 'смысл', 'посвящать', 'заказчик', 'внутренний', 'дело', 'группа', 'разработчик'], ['касаться', 'общий', 'вид', 'интерфейс', 'отчёт', 'т.п.', 'компетенция', 'заказчик', 'речь', 'идти', 'особенность', 'реализация', 'иных', 'компонент', 'заказчик', 'полезный', 'отсутствие', 'необходимый', 'знание'], ['простой', 'проект', 'simple', 'design'], ['момент', 'время', 'разрабатывать', 'система', 'выполнять', 'тест', 'поддерживать', 'взаимосвязь', 'определять', 'программист', 'дубликат', 'код', 'содержать', 'минимально', 'возможный', 'количество', 'класс', 'метод'], ['правило', 'кратко', 'выразить', 'каждый', 'мысль', 'формулируй', 'раз'], ['мысль', 'хороший', 'согласоваться', 'принцип', 'быстрый', 'написание', 'код'], ['стоить', 'подумать', 'делать', 'иной', 'модуль', 'группа', 'модуль', 'заняться', 'написание', 'код'], ['тест', 'tests'], ['программист', 'постоянно', 'писать', 'тест', 'модуль', 'unit', 'tests'], ['собрать', 'вместе', 'тест', 'работать', 'корректно'], ['этап', 'итерация', 'заказчик', 'писать', 'функциональный', 'тест', 'functional', 'tests', 'работать', 'правильно'], ['практика', 'достижимый'], ['принять', 'правильный', 'решение', 'понять', 'обойтись', 'сдача', 'система', 'заранее', 'известный', 'дефект', 'сравнить', 'цена', 'задержка', 'исправление', 'дефект'], ['написание', 'тест', 'программист', 'условие', 'сверхурочный', 'работа', 'тест', 'полнофункциональны', 'учитывать', 'особенность', 'многопользовательский', 'работа'], ['продвинутые', 'тест', 'разработчик', 'хватать', 'время'], ['построить', 'система', 'разработка', 'заниматься', 'человек', 'стоить', 'превращать', 'проект', 'аналог', 'телепередача', 'режиссёр'], ['сказанному', 'добавить', 'тестирование', 'система', 'исчерпываться', 'тест', 'компонент', 'units', 'важный', 'тест', 'взаимодействие', 'относиться', 'тест', 'надёжность', 'работа'], ['метод', 'экстремальный_программирование', 'предусматривать', 'создание', 'тест', 'класс'], ['объясняться', 'тест', 'представлять', 'достаточно', 'сложный', 'код', 'касаться', 'тест', 'имитатор', 'реальный', 'работа', 'система'], ['технология', 'учитываться', 'важный', 'класс', 'тест', 'тест', 'поведение', 'система', 'рост', 'объём', 'обрабатывать', 'информация'], ['высокий', 'скорость', 'изменение', 'версия', 'выполнить', 'тест', 'технологически', 'невозможный', 'проведение', 'требовать', 'стабильный', 'неизменный', 'код', 'проект', 'течение', 'неделя'], ['срок', 'говорить', 'гарантироваться', 'частый', 'смена', 'версия'], ['случай', 'прийтись', 'приостанавливать', 'разработка', 'компонент', 'время', 'проведение', 'тест', 'создавать', 'параллельный', 'версия', 'проект', 'сохраняться', 'неизменный', 'второй', 'изменяться'], ['выполнять', 'процесс', 'слияние', 'код'], ['случай', 'тест', 'прийтись', 'создавать', 'метод', 'экстремальный_программирование', 'предусматривать', 'разработка', 'средство', 'позволять', 'прогнозировать', 'поведение', 'система', 'иных', 'изменение'], ['переработка', 'система', 'refactoring'], ['архитектура', 'система', 'постоянно', 'эволюционировать'], ['текущий', 'проект', 'трансформируется', 'гарантироваться', 'правильный', 'выполнение', 'тест'], ['начинаться', 'интересный'], ['экстремальный_программирование', 'исходить', 'переделать', 'особый', 'затрата'], ['практика', 'свидетельствовать', 'обратный'], ['программирование', 'пара', 'pair', 'programming'], ['код', 'проект', 'писать', 'два', 'человек', 'использовать', 'настольный', 'система'], ['возникать', 'вопрос', 'видеть', 'два', 'совершенно', 'одинаковый', 'программист', 'конец', 'рабочий', 'день', 'успевать', 'писать', 'документация', 'напарник'], ['найти', 'программист', 'близнец', 'согласный'], ['главный', 'нужный', 'пара', 'программист'], ['причина', 'общий', 'простой', 'выдерживать', 'навязывать', 'экстремальный_программирование', 'высокий', 'темп', 'работа', 'неизбежный', 'отток', 'персонал'], ['пара', 'дать', 'некий', 'страховка', 'уволиться', 'второй', 'довести', 'дело', 'конец'], ['правда', 'остаться', 'попасть', 'жёсткий', 'временной', 'рамка', 'объём', 'работа', 'остаться', 'прежний', 'дублёр', 'крайний', 'мера', 'какой', 'время'], ['естественный', 'процесс', 'передача', 'информация', 'новый', 'дублёр', 'требовать', 'время'], ['конец'], ['непрерывный', 'интеграция', 'continuous', 'integration'], ['новый', 'код', 'интегрироваться', 'существовать', 'система', 'поздний', 'час'], ['система', 'собираться', 'единый', 'целый', 'прогоняются', 'тест'], ['выполняться', 'корректно', 'внести', 'изменение', 'отменяться'], ['постулат', 'предоставляться', 'малый', 'мера', 'спорный', 'непонятный', 'исправлять', 'ошибка', 'локальный', 'навести', 'неправильный', 'код'], ['проведение', 'комплексный', 'тест', 'предполагаться', 'этап', 'изменение', 'оставаться', 'случай', 'ошибка', 'детектирована'], ['время', 'метод', 'экстремальный_программирование', 'предусматривать', 'наличие', 'система', 'отслеживание', 'ошибка'], ['коллективный', 'владение', 'collective', 'ownership'], ['программист', 'возможность', 'время', 'усовершенствовать', 'часть', 'код', 'система', 'счесть'], ['анархия', 'напоминать'], ['случай', 'искать', 'автор', 'изменение'], ['встречать', 'разработка', 'большой', 'проект', 'рука', 'док', 'умелец', 'суметь', 'продержаться', 'рабочий', 'место'], ['правильно'], ['заказчик', 'постоянный', 'участие', 'on', 'site', 'customer'], ['заказчик', 'период', 'работа', 'система', 'находиться', 'команда', 'разработчик'], ['непонятный', 'цель', 'посвятить', 'заказчик', 'дело', 'сделать', 'соавтор'], ['заказчик', 'найтись', 'столь', 'высококвалифицированный', 'специалист'], ['40-часовая', 'неделя', '40-hour', 'weeks'], ['объём', 'сверхурочный', 'работа', 'превышать', 'длительность', 'рабочий', 'неделя'], ['отдельный', 'случай', 'сверхурочный', 'работа', 'повторяться', 'являться', 'сигнал', 'серьёзный', 'проблема', 'требовать', 'безотлагательный', 'решение'], ['показывать', 'практика', 'применение', 'экстремальный_программирование', 'несмотря', 'целый', 'ряд', 'положительный', 'пример', 'приводить', 'сторонник', 'метод', 'сверхурочный', 'подход', 'правило', 'исключение', 'борьба', 'проблема', 'случай', 'явление', 'постоянный'], ['усиливаться', 'период', 'замена', 'текущий', 'сырой', 'версия', 'продукт', 'очередной', 'сырой', 'версия'], ['заказчик', 'посвятить', 'процесс', 'испытывать', 'прелесть', 'проявление', 'ошибка', 'работа', 'система'], ['думать', 'надолго', 'хватить', 'заказчик', 'терпение', 'положение', 'дело'], ['система', 'работать'], ['открытый', 'рабочий', 'пространство', 'open', 'workspace'], ['команда', 'разработчик', 'располагаться', 'большой', 'помещение', 'окружить', 'комната', 'малый', 'площадь'], ['центр', 'рабочий', 'пространство', 'устанавливаться', 'компьютер', 'работать', 'пара', 'программист'], ['судить', 'предыдущий', 'принцип', 'располагаться', 'территория', 'заказчик', 'раз', 'весьма', 'активно', 'привлекаться', 'процесс', 'разработка'], ['возникать', 'вопрос', 'реально', 'столь', 'удачный', 'стечение', 'обстоятельство', 'правило', 'just', 'rules'], ['член', 'коллектив', 'работать', 'технология', 'экстремальный_программирование', 'обязываться', 'выполнять', 'изложить', 'правило'], ['правило', 'команда', 'момент', 'поменять', 'член', 'достигнуть', 'принципиальный', 'соглашение', 'повод', 'внести', 'изменение'], ['конец', 'конец', 'выработать', 'полезный', 'правило', 'подумай', 'сделать'], ['случай', 'схема', 'весьма', 'похожий', 'водопад'], ['сторонник', 'экстремальный_программирование', 'убеждены', 'использование', 'водопад', 'клон', 'цикл', 'разработка', 'обязательно', 'длинный'], ['непонятный', 'обусловить', 'уверенность'], ['запретить', 'дробить', 'проект', 'этап'], ['считаться', 'планирование', 'обязательно', 'одноразовый', 'неизменный', 'дело', 'соответствовать', 'истина', 'число', 'случай', 'водопад'], ['итог', 'получать', 'метод', 'потенциально', 'обладать', 'высокий', 'адаптируемость', 'сильно', 'изменяться', 'требование', 'проект', 'время', 'свободный', 'ряд', 'серьёзный', 'недостаток'], ['последний', 'обстоятельство', 'позволять', 'рекомендовать', 'метод', 'применение', 'проект', 'требовать', 'высокий', 'минимум', 'достаточный', 'надёжность', 'работа']]"
        ],
        [
         "39",
         "Этапы разработки проекта5.doc",
         "Этапы разработки проекта: стратегия и анализ\rВведение\rПроектирование информационных систем всегда начинается с определения цели проекта. Основная задача любого успешного проекта заключается в том, чтобы на момент запуска системы и в течение всего времени ее эксплуатации можно было обеспечить:\rтребуемую функциональность системы и степень адаптации к изменяющимся условиям ее функционирования; \rтребуемую пропускную способность системы; \rтребуемое время реакции системы на запрос; \rбезотказную работу системы в требуемом режиме, иными словами - готовность и доступность системы для обработки запросов пользователей; \rпростоту эксплуатации и поддержки системы; \rнеобходимую безопасность. \rПроизводительность является главным фактором, определяющим эффективность системы. Хорошее проектное решение служит основой высокопроизводительной системы.\rПроектирование информационных систем охватывает три основные области:\rпроектирование объектов данных, которые будут реализованы в базе данных; \rпроектирование программ, экранных форм, отчетов, которые будут обеспечивать выполнение запросов к данным; \rучет конкретной среды или технологии, а именно: топологии сети, конфигурации аппаратных средств, используемой архитектуры (файл-сервер или клиент-сервер), параллельной обработки, распределенной обработки данных и т.п. \rВ реальных условиях проектирование - это поиск способа, который удовлетворяет требованиям функциональности системы средствами имеющихся технологий с учетом заданных ограничений.\rК любому проекту предъявляется ряд абсолютных требований, например максимальное время разработки проекта, максимальные денежные вложения в проект и т.д. Одна из сложностей проектирования состоит в том, что оно не является такой структурированной задачей, как анализ требований к проекту или реализация того или иного проектного решения.\rСчитается, что сложную систему невозможно описать в принципе. Это, в частности, касается систем управления предприятием. Одним из основных аргументов является изменение условий функционирования системы, например директивное изменение тех или иных потоков информации новым руководством. Еще один аргумент - объемы технического задания, которые для крупного проекта могут составлять сотни страниц, в то время как технический проект может содержать ошибки. Возникает вопрос: а может, лучше вообще не проводить обследования и не делать никакого технического проекта, а писать систему «с чистого листа» в надежде на то, что произойдет некое чудесное совпадение желания заказчика с тем, что написали программисты, а также на то, что все это будет стабильно работать?\rЕсли разобраться, то так ли уж непредсказуемо развитие системы и действительно ли получить информацию о ней невозможно? Вероятно, представление о системе в целом и о предполагаемых (руководством) путях ее развития можно получить посредством семинаров. После этого разбить сложную систему на более простые компоненты, упростить связи между компонентами, предусмотреть независимость компонентов и описать интерфейсы между ними (чтобы изменение одного компонента автоматически не влекло за собой существенного изменения другого компонента), а также возможности расширения системы и «заглушки» для нереализуемых в той или иной версии системы функций. Исходя из подобных элементарных соображений описание того, что предполагается реализовать в информационной системе, уже не кажется столь нереальным. Можно придерживаться классических подходов к разработке информационных систем, один из которых - схема «водопада» (рис. 1) - описан ниже. Кратко будут рассмотрены и некоторые другие подходы к разработке информационных систем, где использование элементов, описанных в схеме «водопада», также допустимо. Какого подхода из описываемых ниже придерживаться (и есть ли смысл придумывать собственный подход) - в какой-то мере дело вкуса и обстоятельств.\rЖизненный цикл программного обеспечения представляет собой модель его создания и использования. Модель отражает его различные состояния, начиная с момента возникновения необходимости в данном ПО и заканчивая моментом его полного выхода из употребления у всех пользователей. Известны следующие модели жизненного цикла:\rКаскадная модель. Переход на следующий этап означает полное завершение работ на предыдущем этапе. \rПоэтапная модель с промежуточным контролем. Разработка ПО ведется итерациями с циклами обратной связи между этапами. Межэтапные корректировки позволяют уменьшить трудоемкость процесса разработки по сравнению с каскадной моделью; время жизни каждого из этапов растягивается на весь период разработки. \rСпиральная модель. Особое внимание уделяется начальным этапам разработки - выработке стратегии, анализу и проектированию, где реализуемость тех или иных технических решений проверяется и обосновывается посредством создания прототипов (макетирования). Каждый виток спирали предполагает создание некой версии продукта или какого-либо его компонента, при этом уточняются характеристики и цели проекта, определяется его качество и планируются работы следующего витка спирали. \rНиже мы рассмотрим некоторые схемы разработки проекта.\r\r«Водопад» - схема разработки проекта\rОчень часто проектирование описывают как отдельный этап разработки проекта между анализом и разработкой. Однако в действительности четкого деления этапов разработки проекта нет - проектирование, как правило, не имеет явно выраженного начала и окончания и часто продолжается на этапах тестирования и реализации. Говоря об этапе тестирования, также следует отметить, что и этап анализа, и этап проектирования содержат элементы работы тестеров, например для получения экспериментального обоснования выбора того или иного решения, а также для оценки критериев качества получаемой системы. На этапе эксплуатации уместен разговор и о сопровождении системы.\rНиже мы рассмотрим каждый из этапов, подробнее остановившись на этапе проектирования.\r\rСтратегия\rОпределение стратегии предполагает обследование системы. Основная задача обследования - оценка реального объема проекта, его целей и задач, а также получение определений сущностей и функций на высоком уровне.\rНа этом этапе привлекаются высококвалифицированные бизнес-аналитики, которые имеют постоянный доступ к руководству фирмы; этап предполагает тесное взаимодействие с основными пользователями системы и бизнес-экспертами. Основная задача взаимодействия - получить как можно более полную информацию о системе (полное и однозначное понимание требований заказчика) и передать данную информацию в формализованном виде системным аналитикам для последующего проведения этапа анализа. Как правило, информация о системе может быть получена в результате бесед или семинаров с руководством, экспертами и пользователями. Таким образом определяются суть данного бизнеса, перспективы его развития и требования к системе.\rПо завершении основной стадии обследования системы технические специалисты формируют вероятные технические подходы и приблизительно рассчитывают затраты на аппаратное обеспечение, закупаемое программное обеспечение и разработку нового программного обеспечения (что, собственно, и предполагается проектом).\rРезультатом этапа определения стратегии является документ, где четко сформулировано, что получит заказчик, если согласится финансировать проект; когда он получит готовый продукт (график выполнения работ); сколько это будет стоить (для крупных проектов должен быть составлен график финансирования на разных этапах работ). В документе должны быть отражены не только затраты, но и выгода, например время окупаемости проекта, ожидаемый экономический эффект (если его удается оценить).\rВ документе обязательно должны быть описаны:\rограничения, риски, критические факторы, влияющие на успешность проекта, например время реакции системы на запрос является заданным ограничением, а не желательным фактором; \rсовокупность условий, при которых предполагается эксплуатировать будущую систему: архитектура системы, аппаратные и программные ресурсы, предоставляемые системе, внешние условия ее функционирования, состав людей и работ, которые обеспечивают бесперебойное функционирование системы; \rсроки завершения отдельных этапов, форма сдачи работ, ресурсы, привлекаемые в процессе разработки проекта, меры по защите информации; \rописание выполняемых системой функций; \rбудущие требования к системе в случае ее развития, например возможность работы пользователя с системой с помощью Интернета и т.п.; \rсущности, необходимые для выполнения функций системы; \rинтерфейсы и распределение функций между человеком и системой; \rтребования к программным и информационным компонентам ПО, требования к СУБД (если проект предполагается реализовывать для нескольких СУБД, то требования к каждой из них, или общие требования к абстрактной СУБД и список рекомендуемых для данного проекта СУБД, которые удовлетворяют заданным условиям); \rчто не будет реализовано в рамках проекта. \rВыполненная на данном этапе работа позволяет ответить на вопрос, стоит ли продолжать данный проект и какие требования заказчика могут быть удовлетворены при тех или иных условиях. Может оказаться, что проект продолжать не имеет смысла, например из-за того, что те или иные требования не могут быть удовлетворены по каким-то объективным причинам. Если принимается решение о продолжении проекта, то для проведения следующего этапа анализа уже имеются представление об объеме проекта и смета затрат.\rСледует отметить, что и на этапе выбора стратегии, и на этапе анализа, и при проектировании независимо от метода, применяемого при разработке проекта, всегда следует классифицировать планируемые функции системы по степени важности. Один из возможных форматов представления такой классификации - MoSCoW - предложен в Clegg, Dai and Richard Barker, Case Method Fast-track: A RAD Approach, Adison-Wesley, 1994.\rЭта аббревиатура расшифровывается так: Must have - необходимые функции; Should have - желательные функции; Could have - возможные функции; Won’t have - отсутствующие функции.\rФункции первой категории обеспечивают критичные для успешной работы системы возможности.\rРеализация функций второй и третьей категорий ограничивается временными и финансовыми рамками: разрабатываем то, что необходимо, а также максимально возможное в порядке приоритета число функций второй и третьей категорий.\rПоследняя категория функций особенно важна, поскольку необходимо четко представлять границы проекта и набор функций, которые будут отсутствовать в системе.\r\rАнализ\rЭтап анализа предполагает подробное исследование бизнес-процессов (функций, определенных на этапе выбора стратегии) и информации, необходимой для их выполнения (сущностей, их атрибутов и связей (отношений)). На этом этапе создается информационная модель, а на следующем за ним этапе проектирования - модель данных.\rВся информация о системе, собранная на этапе определения стратегии, формализуется и уточняется на этапе анализа. Особое внимание следует уделить полноте переданной информации, анализу информации на предмет отсутствия противоречий, а также поиску неиспользуемой вообще или дублирующейся информации. Как правило, заказчик не сразу формирует требования к системе в целом, а формулирует требования к отдельным ее компонентам. Уделите внимание согласованности этих компонентов.\rАналитики собирают и фиксируют информацию в двух взаимосвязанных формах:\rфункции - информация о событиях и процессах, которые происходят в бизнесе; \rсущности - информация о вещах, имеющих значение для организации и о которых что-то известно. \rДвумя классическими результатами анализа являются:\rиерархия функций, которая разбивает процесс обработки на составные части (что делается и из чего это состоит); \rмодель «сущность-связь» (Entry Relationship model, ER-модель), которая описывает сущности, их атрибуты и связи (отношения) между ними. \rЭти результаты являются необходимыми, но не достаточными. К достаточным результатам следует отнести диаграммы потоков данных и диаграммы жизненных циклов сущностей. Довольно часто ошибки анализа возникают при попытке показать жизненный цикл сущности на диаграмме ER.\rНиже мы рассмотрим три наиболее часто применяемые методологии структурного анализа:\rдиаграммы «сущность-связь» (Entity-Relationship Diagrams, ERD), которые служат для формализации информации о сущностях и их отношениях; \rдиаграммы потоков данных (Data Flow Diagrams, DFD), которые служат для формализации представления функций системы; \rдиаграммы переходов состояний (State Transition Diagrams, STD), которые отражают поведение системы, зависящее от времени; диаграммы жизненных циклов сущностей относятся именно к этому классу диаграмм. \r\rER-диаграммы\rER-диаграммы (рис. 2) используются для разработки данных и представляют собой стандартный способ определения данных и отношений между ними. Таким образом, осуществляется детализация хранилищ данных. ER-диаграмма содержит информацию о сущностях системы и способах их взаимодействия, включает идентификацию объектов, важных для предметной области (сущностей), свойств этих объектов (атрибутов) и их отношений с другими объектами (связей). Во многих случаях информационная модель очень сложна и содержит множество объектов.\rСущность изображается в виде прямоугольника, вверху которого располагается имя сущности (например, TITLES). В прямоугольнике могут быть перечислены атрибуты сущности; атрибуты ER-диаграмм, набранные полужирным шрифтом1, являются ключевыми (так Title Identity - ключевой атрибут сущности TITLES, остальные атрибуты ключевыми не являются).\rОтношение изображается линией между двумя сущностями (синие линии на рисунке).\rОдиночная линия справа (рис. 3) означает «один», «птичья лапка» слева - «многие», а отношение читается вдоль линии, например «один ко многим». Вертикальная черта означает «обязательно», кружок - «не обязательно», например для каждого издания в TITLE обязательно должен быть указан издатель в PUBLISHERS, а один издатель в PUBLISHERS может выпускать несколько наименований изданий в TITLES. Следует отметить, что связи всегда комментируются (надпись на линии, изображающей связь).\r\u0001\rРис. 3. Элемент ER-диаграммы\rПриведем также пример (рис. 4) изображения рефлексивного отношения «сотрудник», где один сотрудник может руководить несколькими подчиненными и так далее вниз по иерархии должностей.\rСледует обратить внимание на то, что такое отношение всегда является необязательным, в противном случае это будет бесконечная иерархия.\rАтрибуты сущностей могут быть ключевыми - они выделяются полужирным шрифтом; обязательными - перед ними ставится знак «*», то есть их значение всегда известно, необязательными (optional) - перед ними ставится О, то есть значения этого атрибута в какие-то моменты могут отсутствовать или быть неопределенными.\r\rДуги\rЕсли сущность имеет набор взаимоисключающих отношений с другими сущностями, то говорят, что такие отношения находятся в дуге. Например, банковский счет может быть оформлен или для юридического лица, или для физического лица. Фрагмент ER-диаграммы для такого типа отношений приведен на рис. 5.\rВ этом случае атрибут ВЛАДЕЛЕЦ сущности СЧЕТ имеет особое значение для данной сущности - сущность делится на типы по категориям: «для физического лица» и «для юридического лица». Полученные в результате сущности называют подтипами, а исходная сущность становится супертипом. Чтобы понять, нужен супертип или нет, надо установить, сколько одинаковых свойств имеют различные подтипы. Следует отметить, что злоупотребление подтипами и супертипами является довольно распространенной ошибкой. Изображают их так, как показано на рис. 6.\r\rНормализация\rЧтобы не допустить аномалий при обработке данных, используют нормализацию. Принципы нормализации для объектов информационной модели в точности такие же, как и для моделей данных.\rДопустимые типы связей. При ближайшем рассмотрении связи типа «один к одному» (рис. 7) почти всегда оказывается, что A и B представляют собой в действительности разные подмножества одного и того же предмета или разные точки зрения на него, просто имеющие отличные имена и по-разному описанные связи и атрибуты.\rСвязи «многие к одному» представлены на рис. 8.\rI - достаточно сильная конструкция, предполагающая, что вхождение сущности B не может быть создано без одновременного создания по меньшей мере одного связанного с ним вхождения сущности A.\rII - это наиболее часто встречающаяся форма связи. Она предполагает, что каждое и любое вхождение сущности A может существовать только в контексте одного (и только одного) вхождения сущности B. В свою очередь, вхождения B могут существовать как в связи с вхождениями A, так и без нее.\rIII - применяется редко. Как A, так и B могут существовать без связи между ними.\rСвязи «многие ко многим» представлены на рис. 9.\rI - такая конструкция часто имеет место в начале этапа анализа и означает связь - либо понятую не до конца и требующую дополнительного разрешения, либо отражающую простое коллективное отношение - двунаправленный список.\rII - применяется редко. Такие связи всегда подлежат дальнейшей детализации.\rРассмотрим теперь рекурсивные связи (рис. 10).\rI - редко, но имеет место. Отражает связи альтернативного типа.\rII - достаточно часто применяется для описания иерархий с любым числом уровней.\rIII - имеет место на ранних этапах. Часто отражает структуру «перечня материалов» (взаимная вложенность компонентов). Пример: каждый КОМПОНЕНТ может состоять из одного и более (других) КОМПОНЕНТОВ и каждый КОМПОНЕНТ может использоваться в одном и более (других) КОМПОНЕНТОВ.\rНедопустимые типы связей. К недопустимым типам связей относятся следующие: обязательная связь «многие ко многим» (рис. 11) и ряд рекурсивных связей (рис. 12).\rОбязательная связь «многие ко многим» в принципе невозможна. Такая связь означала бы, что ни одно из вхождений A не может существовать без B, и наоборот. На деле каждая подобная конструкция всегда оказывается ошибочной.\r\rДиаграммы потоков данных \rЛогическая DFD (рис. 13) показывает внешние по отношению к системе источники и стоки (адресаты) данных, идентифицирует логические функции (процессы) и группы элементов данных, связывающие одну функцию с другой (потоки), а также идентифицирует хранилища (накопители) данных, к которым осуществляется доступ. Структуры потоков данных и определения их компонентов хранятся и анализируются в словаре данных. Каждая логическая функция (процесс) может быть детализирована с помощью DFD нижнего уровня; когда дальнейшая детализация перестает быть полезной, переходят к выражению логики функции при помощи спецификации процесса (мини-спецификации). Содержимое каждого хранилища также сохраняют в словаре данных, модель данных хранилища раскрывается с помощью ER-диаграмм.\rВ частности, в DFD не показываются процессы, которые управляют собственно потоком данных и не приводятся различия между допустимыми и недопустимыми путями. DFD содержат множество полезной информации, а кроме того:\rпозволяют представить систему с точки зрения данных; \rиллюстрируют внешние механизмы подачи данных, которые потребуют наличия специальных интерфейсов; \rпозволяют представить как автоматизированные, так и ручные процессы системы; \rвыполняют ориентированное на данные секционирование всей системы. \rПотоки данных используются для моделирования передачи информации (или даже физических компонентов) из одной части системы в другую. Потоки на диаграммах изображаются именованными стрелками, стрелки указывают направление движения информации. Иногда информация может двигаться в одном направлении, обрабатываться и возвращаться в ее источник. Такая ситуация может моделироваться либо двумя различными потоками, либо одним двунаправленным.\rПроцесс преобразует входной поток данных в выходной в соответствии с действием, задаваемым именем процесса. Каждый процесс должен иметь уникальный номер для ссылок на него внутри диаграммы. Этот номер может использоваться совместно с номером диаграммы для получения уникального индекса процесса во всей модели.\rХранилище данных (data storage) позволяет на ряде участков определять данные, которые будут сохраняться в памяти между процессами. Фактически хранилище представляет «срезы» потоков данных во времени. Информацию, которую оно содержит, можно использовать в любое время после ее определения, при этом данные могут выбираться в произвольном порядке. Имя хранилища должно идентифицировать его содержимое. В случае когда поток данных входит (выходит) в (из) хранилище и его структура соответствует структуре хранилища, он должен иметь то же самое имя, которое нет необходимости отражать на диаграмме.\rВнешняя сущность (терминатор) представляет сущность вне контекста системы, являющуюся источником или приемником системных данных. Ее имя должно содержать существительное, например «Клиент». Предполагается, что объекты, представленные такими узлами, не должны участвовать ни в какой обработке.\r\rДиаграммы изменения состояний STD\rЖизненный цикл сущности относится к классу STD-диаграмм (рис. 14). Эта диаграмма отражает изменение состояния объекта с течением времени. Например, рассмотрим состояние товара на складе: товар может быть заказан у поставщика, поступить на склад, храниться на складе, проходить контроль качества, может быть продан, забракован, возвращен поставщику. Стрелки на диаграмме показывают допустимые изменения состояний.\rСуществует несколько различных вариантов изображения подобных диаграмм, на рисунке приведен лишь один из них.\r\rНекоторые принципы проверки качества и полноты информационной модели \u000b(источник - Richard Barker, Case Method: Entity Relationship Modelling, Addison-Wesley, 1990)\rЕсли вы хотите создать качественную модель, то придется прибегать к помощи аналитиков, хорошо владеющих CASE-технологией. Однако это не означает, что построением и контролем информационной модели должны заниматься только аналитики. Помощь коллег также может оказаться весьма полезной. Привлекайте их к проверке поставленной цели и к детальному изучению построенной модели как с точки зрения логики, так и с точки зрения учета аспектов предметной области. Большинство людей легче находят недостатки в чужой работе.\rРегулярно представляйте вашу информационную модель или ее отдельные фрагменты, относительно которых у вас возникают сомнения, на одобрение пользователей. Особое внимание уделяйте исключениям из правил и ограничениям.\r\rКачество сущностей\rОсновной гарантией качества сущности является ответ на вопрос, действительно ли объект является сущностью, то есть важным объектом или явлением, информация о котором должна храниться в базе данных.\rСписок проверочных вопросов для сущности:\rОтражает ли имя сущности суть данного объекта? \rНет ли пересечения с другими сущностями? \rИмеются ли хотя бы два атрибута? \rВсего атрибутов не более восьми? \rЕсть ли синонимы/омонимы данной сущности? \rСущность определена полностью? \rЕсть ли уникальный идентификатор? \rИмеется ли хотя бы одна связь? \rСуществует ли хотя бы одна функция по созданию, поиску, корректировке, удалению, архивированию и использованию значения сущности? \rВедется ли история изменений? \rИмеет ли место соответствие принципам нормализации данных? \rНет ли такой же сущности в другой прикладной системе, возможно, под другим именем? \rНе имеет ли сущность слишком общий смысл? \rДостаточен ли уровень обобщения, воплощенный в ней? \rСписок проверочных вопросов для подтипа:\rОтсутствуют ли пересечения с другими подтипами? \rИмеет ли подтип какие-нибудь атрибуты и/или связи? \rИмеют ли они все свои собственные уникальные идентификаторы или наследуют один на всех от супертипа? \rИмеется ли исчерпывающий набор подтипов? \rНе является ли подтип примером вхождения сущности? \rЗнаете ли вы какие-нибудь атрибуты, связи и условия, отличающие данный подтип от других? \r\rКачество атрибутов\rСледует выяснить, а действительно ли это атрибуты, то есть описывают ли они тем или иным образом данную сущность.\rСписок проверочных вопросов для атрибута:\rЯвляется ли наименование атрибута существительным единственного числа, отражающим суть обозначаемого атрибутом свойства? \rНе включает ли в себя наименование атрибута имя сущности (этого быть не должно)? \rИмеет ли атрибут только одно значение в каждый момент времени? \rОтсутствуют ли повторяющиеся значения (или группы)? \rОписаны ли формат, длина, допустимые значения, алгоритм получения и т.п.? \rНе может ли этот атрибут быть пропущенной сущностью, которая пригодилась бы для другой прикладной системы (уже существующей или предполагаемой)? \rНе может ли он быть пропущенной связью? \rНет ли где-нибудь ссылки на атрибут как на «особенность проекта», которая при переходе на прикладной уровень должна исчезнуть? \rЕсть ли необходимость в истории изменений? \rЗависит ли его значение только от данной сущности? \rЕсли значение атрибута является обязательным, всегда ли оно известно? \rЕсть ли необходимость в создании домена для этого и ему подобных атрибутов? \rЗависит ли его значение только от какой-то части уникального идентификатора? \rЗависит ли его значение от значений некоторых атрибутов, не включенных в уникальный идентификатор? \r\rКачество связи\rНужно выяснить, отражают ли связи действительно важные отношения, наблюдаемые между сущностями.\rСписок проверочных вопросов для связи:\rИмеется ли ее описание для каждой участвующей стороны, точно ли оно отражает содержание связи и вписывается ли в принятый синтаксис? \rУчаствуют ли в ней только две стороны? \rНе является ли связь переносимой?\rЗаданы ли степень связи и обязательность для каждой стороны? \rДопустима ли конструкция связи? \rНе относится ли конструкция связи к редко используемым?\rНе является ли она избыточной? \rНе изменяется ли она с течением времени? \rЕсли связь обязательная, всегда ли она отражает отношение к сущности, представляющей противоположную сторону? \rДля исключающей связи:\rВсе ли концы связей, покрываемые исключающей дугой, имеют один и тот же тип обязательности? \rВсе ли из них относятся к одной и той же сущности? \rОбычно дуги пересекают разветвляющиеся концы - что вы можете сказать о данном случае? \rСвязь может покрываться только одной дугой. Так ли это? \rВсе ли концы связей, покрываемые дугой, входят в уникальный идентификатор? \r\rФункции системы\rЧасто аналитикам приходится описывать достаточно сложные бизнес-процессы. В этом случае прибегают к функциональной декомпозиции, которая показывает разбиение одного процесса на ряд более мелких функций до тех пор, пока каждую из них уже нельзя будет разбить без ущерба для смысла. Конечный продукт декомпозиции представляет собой иерархию функций, на самом нижнем уровне которой находятся атомарные с точки зрения смысловой нагрузки функции. Приведем простой пример (рис. 15) такой декомпозиции. Рассмотрим простейшую задачу выписки счета клиенту при отпуске товара со склада при условии, что набор товаров, которые хочет приобрести клиент, уже известен (не будем рассматривать в данном примере задачу выбора товаров).\rОчевидно, что операция выбора и расчета скидок может быть также разбита на более мелкие операции, например на расчет скидок за приверженность (клиент покупает товары в течение долгого времени) и на расчет скидок за количество покупаемого товара. Атомарные функции описываются подробно, например с помощью DFD и STD. Очевидно, что такое описание функций не исключает и дополнительное словесное описание (например, комментарии).\rСледует отметить, что на этапе анализа следует уделить внимание функциям анализа и обработки возможных ошибок и отклонений от предполагаемого эталона работы системы. Следует выделить наиболее критичные для работы системы процессы и обеспечить для них особенно строгий анализ ошибок. Обработка ошибок СУБД (коды возврата), как правило, представляет собой обособленный набор функций или одну-единственную функцию.\r\rУточнение стратегии\rНа этапе анализа происходит уточнение выбранных для конечной реализации аппаратных и программных средств. Для этого могут привлекаться группы тестирования, технические специалисты. При проектировании информационной системы важно учесть и дальнейшее развитие системы, например рост объемов обрабатываемых данных, увеличение интенсивности потока запросов, изменение требований надежности информационной системы.\rНа этапе анализа определяются наборы моделей задач для получения сравнительных характеристик тех или иных СУБД, которые рассматривались на этапе определения стратегии для реализации информационной системы. На этапе определения стратегии может быть осуществлен выбор одной СУБД. Данных о системе на этапе анализа уже намного больше, и они более подробны. Полученные данные, а также характеристики, переданные группами тестирования, могут показать, что выбор СУБД на этапе определения стратегии был неверным и что выбранная СУБД не может удовлетворять тем или иным требованиям информационной системы. Такие же данные могут быть получены относительно выбора аппаратной платформы и операционной системы. Получение подобных результатов инициирует изменение данных, полученных на этапе определения стратегии, например пересчитывается смета затрат на проект.\rВыбор средств разработки также уточняется на этапе анализа. В силу того что этап анализа дает более полное представление об информационной системе, чем оно было на этапе определения стратегии, план работ может быть скорректирован. Если выбранное на предыдущем этапе средство разработки не позволяет выполнить ту или иную часть работ в заданный срок, то принимается решение об изменении сроков (как правило, это увеличение срока разработки) или о смене средства разработки. Осуществляя выбор тех или иных средств, следует учитывать наличие высококвалифицированного персонала, который владеет выбранными средствами разработки, а также наличие администраторов выбранной СУБД. Эти рекомендации также будут уточнять данные этапа выбора стратегии (совокупность условий, при которых предполагается эксплуатировать будущую систему).\rУточняются также ограничения, риски, критические факторы. Если какие-либо требования не могут быть удовлетворены в информационной системе, реализованной с использованием СУБД и программных средств, выбранных на этапе определения стратегии, то это также инициирует уточнение и изменение получаемых данных (в конечном итоге сметы затрат и планов работ, а возможно, и изменение требований заказчика к системе, например их ослабление). Более подробно описываются те возможности, которые не будут реализованы в системе.",
         "0",
         "[['этап', 'разработка_проект', 'стратегия', 'анализ', 'введение', 'проектирование', 'информационный_система', 'начинаться', 'определение', 'цель', 'проект'], ['основный', 'задача', 'успешный', 'проект', 'заключаться', 'момент', 'запуск', 'система', 'течение', 'время', 'эксплуатация', 'обеспечить', 'требуемую', 'функциональность', 'система', 'степень', 'адаптация', 'изменяться', 'условие', 'функционирование', 'требуемую', 'пропускной', 'способность', 'система', 'требуемое', 'время', 'реакция', 'система', 'запрос', 'безотказный', 'работа', 'система', 'требовать', 'режим', 'слово', 'готовность', 'доступность', 'система', 'обработка', 'запрос', 'пользователь', 'простота', 'эксплуатация', 'поддержка', 'система', 'необходимый', 'безопасность'], ['производительность', 'являться', 'главный', 'фактор', 'определять', 'эффективность', 'система'], ['хороший', 'проектный', 'решение', 'служить', 'основа', 'высокопроизводительный', 'система'], ['проектирование', 'информационный_система', 'охватывать', 'три', 'основный', 'область', 'проектирование', 'объект', 'реализовать', 'база', 'проектирование', 'программа', 'экранный', 'форма', 'отчёт', 'обеспечивать', 'выполнение', 'запрос', 'данным', 'учёт', 'конкретный', 'среда', 'технология', 'топология', 'сеть', 'конфигурация', 'аппаратный', 'средство', 'использовать', 'архитектура', 'файл', 'сервер', 'клиент', 'сервер', 'параллельный', 'обработка', 'распределить', 'обработка', 'т.п.', 'реальный', 'условие', 'проектирование', 'поиск', 'способ', 'удовлетворять', 'требование', 'функциональность', 'система', 'средство', 'иметься', 'технология', 'учёт', 'задать', 'ограничение'], ['любой', 'проект', 'предъявляться', 'ряд', 'абсолютный', 'требование', 'максимальный', 'время', 'разработка_проект', 'максимальный', 'денежный', 'вложение', 'проект', 'т.д.'], ['сложность', 'проектирование', 'состоять', 'являться', 'структурировать', 'задача', 'анализ', 'требование', 'проект', 'реализация', 'иного', 'проектный', 'решение'], ['считаться', 'сложный', 'система', 'невозможный', 'описать', 'принцип'], ['частность', 'касаться', 'система', 'управление', 'предприятие'], ['основный', 'аргумент', 'являться', 'изменение', 'условие', 'функционирование', 'система', 'директивный', 'изменение', 'иных', 'поток', 'информация', 'новый', 'руководство'], ['аргумент', 'объём', 'технический', 'задание', 'крупный', 'проект', 'составлять', 'сотня', 'страница', 'время', 'технический', 'проект', 'содержать', 'ошибка'], ['возникать', 'вопрос', 'хороший', 'проводить', 'обследование', 'делать', 'никакой', 'технический', 'проект', 'писать', 'система', 'чистый', 'лист', 'надежда', 'произойти', 'некий', 'чудесный', 'совпадение', 'желание', 'заказчик', 'написать', 'программист', 'стабильно', 'работать'], ['разобраться', 'непредсказуемый', 'развитие', 'система', 'получить', 'информация', 'невозможный'], ['вероятно', 'представление', 'система', 'целое', 'предполагать', 'руководство', 'путь', 'развитие', 'получить', 'семинар'], ['разбить', 'сложный', 'система', 'простой', 'компонент', 'упростить', 'связь', 'компонент', 'предусмотреть', 'независимость', 'компонент', 'описать', 'интерфейс', 'изменение', 'компонент', 'автоматически', 'влечь', 'существенный', 'изменение', 'другого', 'компонент', 'возможность', 'расширение', 'система', 'заглушка', 'нереализуемых', 'иной', 'версия', 'система', 'функция'], ['исходить', 'элементарный', 'соображение', 'описание', 'предполагаться', 'реализовать', 'информационный_система', 'столь', 'нереальный'], ['придерживаться', 'классический', 'подход', 'разработка', 'информационный_система', 'схема', 'водопад', 'рис'], ['1', 'описать'], ['кратко', 'рассмотреть', 'подход', 'разработка', 'информационный_система', 'использование', 'элемент', 'описать', 'схема', 'водопад', 'допустимый'], ['подход', 'описывать', 'придерживаться', 'смысл', 'придумывать', 'собственный', 'подход', 'мера', 'дело', 'вкус', 'обстоятельство'], ['жизненный_цикл', 'программный', 'обеспечение', 'представлять', 'модель', 'создание', 'использование'], ['модель', 'отражать', 'различный', 'состояние', 'начинать', 'момент', 'возникновение', 'заканчивать', 'момент', 'полный', 'выход', 'употребление', 'пользователь'], ['известный', 'следующий', 'модель', 'жизненный_цикл', 'каскадный', 'модель'], ['переход', 'следующий', 'этап', 'означать', 'полный', 'завершение', 'работа', 'предыдущий', 'этап'], ['поэтапный', 'модель', 'промежуточный', 'контроль'], ['разработка', 'вестись', 'итерация', 'цикл', 'обратный', 'связь', 'этап'], ['межэтапный', 'корректировка', 'позволять', 'уменьшить', 'трудоёмкость', 'процесс', 'разработка', 'сравнение', 'каскадный', 'модель', 'время', 'жизнь', 'каждый', 'этап', 'растягиваться', 'период', 'разработка'], ['спиральный', 'модель'], ['особый', 'внимание', 'уделяться', 'начальный', 'этап', 'разработка', 'выработка', 'стратегия', 'анализ', 'проектирование', 'реализуемость', 'иных', 'технический', 'решение', 'проверяться', 'обосновываться', 'создание', 'прототип', 'макетирование'], ['виток', 'спираль', 'предполагать', 'создание', 'некий', 'версия', 'продукт', 'компонент', 'уточняться', 'характеристика', 'цель', 'проект', 'определяться', 'качество', 'планироваться', 'работа', 'следующий', 'виток', 'спираль'], ['рассмотреть', 'схема', 'разработка_проект'], ['водопад', 'схема', 'разработка_проект', 'проектирование', 'описывать', 'отдельный', 'этап', 'разработка_проект', 'анализ', 'разработка'], ['действительность', 'чёткий', 'деление', 'этап', 'разработка_проект', 'проектирование', 'правило', 'выразить', 'окончание', 'продолжаться', 'этап', 'тестирование', 'реализация'], ['говорить', 'этап', 'тестирование', 'отметить', 'этап_анализ', 'этап', 'проектирование', 'содержать', 'элемент', 'работа', 'тестер', 'получение', 'экспериментальный', 'обоснование', 'выбор', 'иного', 'решение', 'оценка', 'критерий', 'качество', 'получать', 'система'], ['этап', 'эксплуатация', 'уместный', 'разговор', 'сопровождение', 'система'], ['рассмотреть', 'этап', 'подробный', 'остановиться', 'этап', 'проектирование'], ['стратегия', 'определение_стратегия', 'предполагать', 'обследование', 'система'], ['основный', 'задача', 'обследование', 'оценка', 'реальный', 'объём', 'проект', 'цель', 'задача', 'получение', 'определение', 'сущность', 'функция', 'высокий', 'уровень'], ['этап', 'привлекаться', 'высококвалифицированный', 'бизнес', 'аналитики', 'иметь', 'постоянный', 'доступ', 'руководство', 'фирма', 'этап', 'предполагать', 'тесный', 'взаимодействие', 'основный', 'пользователь', 'система', 'бизнес', 'экспертами'], ['основный', 'задача', 'взаимодействие', 'получить', 'полный', 'информация', 'система', 'полный', 'однозначный', 'понимание', 'требование', 'заказчик', 'передать', 'данную', 'информация', 'формализованный', 'вид', 'системный', 'аналитик', 'последующий', 'проведение', 'этап_анализ'], ['правило', 'информация', 'система', 'получить', 'результат', 'беседа', 'семинар', 'руководство', 'эксперт', 'пользователь'], ['образ', 'определяться', 'бизнес', 'перспектива', 'развитие', 'требование', 'система'], ['завершение', 'основный', 'стадия', 'обследование', 'система', 'технический', 'специалист', 'формировать', 'вероятный', 'технический', 'подход', 'приблизительно', 'рассчитывать', 'затрата', 'аппаратный', 'обеспечение', 'закупать', 'программный', 'обеспечение', 'разработка', 'новый', 'программный', 'обеспечение', 'предполагаться', 'проект'], ['результат', 'этап_определение', 'стратегия', 'являться', 'документ', 'четко', 'сформулировать', 'получить', 'заказчик', 'согласиться', 'финансировать', 'проект', 'получить', 'готовый', 'продукт', 'график', 'выполнение', 'работа', 'стоить', 'крупный', 'проект', 'составить', 'график', 'финансирование', 'разный', 'этап', 'работа'], ['документ', 'отразить', 'затрата', 'выгода', 'время', 'окупаемость', 'проект', 'ожидать', 'экономический', 'эффект', 'удаваться', 'оценить'], ['документ', 'обязательно', 'описать', 'ограничение', 'риск', 'критический', 'фактор', 'влиять', 'успешность', 'проект', 'время', 'реакция', 'система', 'запрос', 'являться', 'задать', 'ограничение', 'желательный', 'фактор', 'совокупность', 'условие', 'предполагаться', 'эксплуатировать', 'будущий', 'система', 'архитектура', 'система', 'аппаратный', 'программный', 'ресурс', 'предоставлять', 'система', 'внешний', 'условие', 'функционирование', 'состав', 'человек', 'работа', 'обеспечивать', 'бесперебойный', 'функционирование', 'система', 'срок', 'завершение', 'отдельный', 'этап', 'форма', 'сдача', 'работа', 'ресурс', 'привлекать', 'процесс', 'разработка_проект', 'мера', 'защита', 'информация', 'описание', 'выполнять', 'система', 'функция', 'будущий', 'требование', 'система', 'случай', 'развитие', 'возможность', 'работа', 'пользователь', 'система', 'помощь', 'интернет', 'т.п.', 'сущность', 'выполнение', 'функция', 'система', 'интерфейс', 'распределение', 'функция', 'человек', 'система', 'требование', 'программный', 'информационный', 'компонент', 'требование', 'субд', 'проект', 'предполагаться', 'реализовывать', 'несколько', 'субд', 'требование', 'каждый', 'общий', 'требование', 'абстрактный', 'субд', 'список', 'рекомендовать', 'проект', 'субд', 'удовлетворять', 'задать', 'условие', 'реализовать', 'рамка', 'проект'], ['выполнить', 'этап', 'работа', 'позволять', 'ответить', 'вопрос', 'стоить', 'продолжать', 'проект', 'требование', 'заказчик', 'удовлетворить', 'иных', 'условие'], ['оказаться', 'проект', 'продолжать', 'смысл', 'иные', 'требование', 'удовлетворить', 'объективный', 'причина'], ['приниматься', 'решение', 'продолжение', 'проект', 'проведение', 'следующий', 'этап_анализ', 'иметься', 'представление', 'объём', 'проект', 'смета', 'затрата'], ['отметить', 'этап', 'выбор', 'стратегия', 'этап_анализ', 'проектирование', 'независимо', 'метод', 'применяемого', 'разработка_проект', 'классифицировать', 'планировать', 'функция', 'система', 'степень', 'важность'], ['возможный', 'формат', 'представление', 'классификация', 'moscow', 'предложить', 'clegg', 'dai', 'and', 'richard', 'barker', 'case', 'method', 'fast', 'track', 'a', 'rad', 'approach', 'adison', 'wesley', '1994'], ['аббревиатура', 'расшифровываться', 'must', 'have', 'функция', 'should', 'have', 'желательный', 'функция', 'could', 'have', 'возможный', 'функция', 'won’t', 'have', 'отсутствовать', 'функция'], ['функция', 'первый', 'категория', 'обеспечивать', 'критичный', 'успешный', 'работа', 'система', 'возможность'], ['реализация', 'функция', 'второй', 'третий', 'категория', 'ограничиваться', 'временной', 'финансовый', 'рамка', 'разрабатывать', 'максимально', 'возможный', 'порядок', 'приоритет', 'число', 'функция', 'второй', 'третий', 'категория'], ['последний', 'категория', 'функция', 'важный', 'четко', 'представлять', 'граница', 'проект', 'набор', 'функция', 'отсутствовать', 'система'], ['анализ', 'этап_анализ', 'предполагать', 'подробный', 'исследование', 'бизнес', 'процессов', 'функция', 'определить', 'этап', 'выбор', 'стратегия', 'информация', 'необходимый', 'выполнение', 'сущность', 'атрибут', 'связь', 'отношение'], ['этап', 'создаваться', 'информационный', 'модель', 'следующий', 'этап', 'проектирование', 'модель'], ['информация', 'система', 'собрать', 'этап_определение', 'стратегия', 'формализоваться', 'уточняться', 'этап_анализ'], ['особый', 'внимание', 'уделить', 'полнота', 'передать', 'информация', 'анализ', 'информация', 'предмет', 'отсутствие', 'противоречие', 'поиск', 'неиспользуемой', 'дублирующейся', 'информация'], ['правило', 'заказчик', 'формировать', 'требование', 'система', 'целое', 'формулировать', 'требование', 'отдельный', 'компонент'], ['уделить', 'внимание', 'согласованность', 'компонент'], ['аналитик', 'собирать', 'фиксировать', 'информация', 'два', 'взаимосвязанный', 'форма', 'функция', 'информация', 'событие', 'процесс', 'происходить', 'бизнес', 'сущность', 'информация', 'вещь', 'иметь', 'значение', 'организация', 'известный'], ['два', 'классический', 'результат', 'анализ', 'являться', 'иерархия', 'функция', 'разбивать', 'процесс', 'обработка', 'составной', 'часть', 'делаться', 'состоять', 'модель', 'сущность', 'связь', 'entry', 'relationship', 'model', 'er', 'модель', 'описывать', 'сущность', 'атрибут', 'связь', 'отношение'], ['результат', 'являться', 'необходимый', 'достаточный'], ['достаточный', 'результат', 'отнести', 'диаграмма', 'поток', 'диаграмма', 'жизненный_цикл', 'сущность'], ['ошибка', 'анализ', 'возникать', 'попытка', 'показать', 'жизненный_цикл', 'сущность', 'диаграмма', 'er'], ['рассмотреть', 'три', 'применять', 'методология', 'структурный', 'анализ', 'диаграмма', 'сущность', 'связь', 'entity', 'relationship', 'diagrams', 'erd', 'служить', 'формализация', 'информация', 'сущность', 'отношение', 'диаграмма', 'поток', 'data', 'flow', 'diagrams', 'dfd', 'служить', 'формализация', 'представление', 'функция', 'система', 'диаграмма', 'переход', 'состояние', 'state', 'transition', 'diagrams', 'std', 'отражать', 'поведение', 'система', 'зависеть', 'время', 'диаграмма', 'жизненный_цикл', 'сущность', 'относиться', 'класс', 'диаграмма'], ['er'], [], ['диаграмма', 'er_диаграмма', 'рис'], ['2', 'использоваться', 'разработка', 'представлять', 'стандартный', 'способ', 'определение', 'отношение'], ['образ', 'осуществляться', 'детализация', 'хранилище'], ['er_диаграмма', 'содержать', 'информация', 'сущность', 'система', 'способ', 'взаимодействие', 'включать', 'идентификация', 'объект', 'важный', 'предметный', 'область', 'сущность', 'свойство', 'объект', 'атрибут', 'отношение', 'объект', 'связь'], ['многих', 'случай', 'информационный', 'модель', 'сложный', 'содержать', 'множество', 'объект'], ['сущность', 'изображаться', 'вид', 'прямоугольник', 'вверху', 'располагаться', 'имя', 'сущность', 'titles'], ['прямоугольник', 'перечислить', 'атрибут', 'сущность', 'атрибут', 'er_диаграмма', 'набрать', 'полужирным', 'шрифтом1', 'являться', 'ключевой', 'title', 'identity', 'ключевой', 'атрибут', 'сущность', 'titles', 'остальные', 'атрибут', 'ключевой', 'являться'], ['отношение', 'изображаться', 'линия', 'два', 'сущность', 'синий', 'линия', 'рисунок'], ['одиночный', 'линия', 'справа', 'рис'], ['3', 'означать', 'птичий', 'лапка', 'слева', 'отношение', 'читаться', 'вдоль', 'линия', 'многим'], ['вертикальный', 'черта', 'означать', 'обязательно', 'кружок', 'обязательно', 'каждый', 'издание', 'title', 'обязательно', 'указать', 'издатель', 'publishers', 'издатель', 'publishers', 'выпускать', 'наименование', 'издание', 'titles'], ['отметить', 'связь', 'комментироваться', 'надпись', 'линия', 'изображать', 'связь'], ['\\x01', 'рис'], ['3'], ['элемент', 'er_диаграмма', 'привести', 'пример', 'рис'], ['4'], ['изображение', 'рефлексивный', 'отношение', 'сотрудник', 'сотрудник', 'руководить', 'несколько', 'подчиненными', 'иерархия', 'должность'], ['обратить', 'внимание', 'отношение', 'являться', 'необязательный', 'противный', 'случай', 'бесконечный', 'иерархия'], ['атрибут', 'сущность', 'ключевой', 'выделяться', 'полужирным', 'шрифт', 'обязательный', 'ставиться', 'знак', 'значение', 'известный', 'необязательный', 'optional', 'ставиться', 'значение', 'атрибут', 'момент', 'отсутствовать', 'неопределённый'], ['дуги', 'сущность', 'набор', 'взаимоисключающих', 'отношение', 'сущность', 'говорить', 'отношение', 'находиться', 'дуга'], ['банковский', 'счёт', 'оформить', 'юридический', 'лицо', 'физический', 'лицо'], ['фрагмент', 'er_диаграмма', 'тип', 'отношение', 'привести', 'рис'], ['5'], ['случай', 'атрибут', 'владелец', 'сущность', 'счёт', 'особый', 'значение', 'сущность', 'сущность', 'делиться', 'тип', 'категория', 'физический', 'лицо', 'юридический', 'лицо'], ['получить', 'результат', 'сущность', 'называть', 'подтип', 'исходный', 'сущность', 'становиться', 'супертипом'], ['понять', 'нужный', 'супертип', 'установить', 'одинаковый', 'свойство', 'иметь', 'различный', 'подтип'], ['отметить', 'злоупотребление', 'подтип', 'супертипами', 'являться', 'распространенной', 'ошибка'], ['изображать', 'показать', 'рис'], ['6'], ['нормализация', 'допустить', 'аномалия', 'обработка', 'использовать', 'нормализация'], ['принцип', 'нормализация', 'объект', 'информационный', 'модель', 'точность', 'модель'], ['допустимый', 'тип', 'связь'], ['близкий', 'рассмотрение', 'связь', 'тип', 'рис'], ['7', 'оказываться', 'a', 'b', 'представлять', 'действительность', 'разный', 'подмножество', 'предмет', 'разный', 'точка', 'зрение', 'иметь', 'отличный', 'имя', 'разный', 'описать', 'связь', 'атрибут'], ['связь', 'представить', 'рис'], ['8'], ['i', 'достаточно', 'сильный', 'конструкция', 'предполагать', 'вхождение', 'сущность', 'b', 'создать', 'одновременный', 'создание', 'малый', 'мера', 'связать', 'вхождение', 'сущность', 'a.', 'ii', 'встречаться', 'форма', 'связь'], ['предполагать', 'вхождение', 'сущность', 'a', 'существовать', 'контекст', 'вхождение', 'сущность', 'b.', 'очередь', 'вхождение', 'b', 'существовать', 'связь', 'вхождениями', 'a'], ['iii', 'применяться', 'редко'], ['a', 'b', 'существовать', 'связь'], ['связь', 'многим', 'представить', 'рис'], ['9'], ['i', 'конструкция', 'место', 'этап_анализ', 'означать', 'связь', 'понять', 'конец', 'требовать', 'дополнительный', 'разрешение', 'отражать', 'простой', 'коллективный', 'отношение', 'двунаправленный', 'список'], ['ii', 'применяться', 'редко'], ['связь', 'подлежать', 'дальнейший', 'детализация'], ['рассмотреть', 'рекурсивные', 'связь', 'рис', '10'], ['i', 'редко', 'место'], ['отражать', 'связь', 'альтернативный', 'тип'], ['ii', 'достаточно', 'применяться', 'описание', 'иерархия', 'любой', 'число', 'уровень'], ['iii', 'место', 'ранний', 'этап'], ['отражать', 'структура', 'перечень', 'материал', 'взаимный', 'вложенность', 'компонент'], ['пример', 'компонент', 'состоять', 'компонентов', 'компонент', 'использоваться', 'компонентов', 'недопустимые', 'тип', 'связь'], ['недопустимый', 'тип', 'связь', 'относиться', 'следующий', 'обязательный', 'связь', 'многим', 'рис'], ['11'], ['ряд', 'рекурсивный', 'связь', 'рис'], ['12'], ['обязательный', 'связь', 'многим', 'принцип', 'невозможный'], ['связь', 'означать', 'ни', 'вхождение', 'a', 'существовать', 'b'], ['дело', 'конструкция', 'оказываться', 'ошибочный'], ['диаграмма', 'поток', 'логический', 'dfd', 'рис'], ['13', 'показывать', 'внешний', 'отношение', 'система', 'источник', 'сток', 'адресат', 'идентифицировать', 'логический', 'функция', 'процесс', 'группа', 'элемент', 'связывать', 'функция', 'поток', 'идентифицировать', 'хранилище', 'накопитель', 'осуществляться', 'доступ'], ['структура', 'поток', 'определение', 'компонент', 'храниться', 'анализироваться', 'словарь'], ['логический', 'функция', 'процесс', 'детализирована', 'помощь', 'dfd', 'нижний', 'уровень', 'дальнейший', 'детализация', 'переставать', 'полезный', 'переходить', 'выражение', 'логика', 'функция', 'помощь', 'спецификация', 'процесс', 'мини', 'спецификация'], ['содержимое', 'каждый', 'хранилище', 'сохранять', 'словарь', 'модель', 'хранилище', 'раскрываться', 'помощь', 'er_диаграмма'], ['частность', 'dfd', 'показываться', 'процесс', 'управлять', 'поток', 'приводиться', 'различие', 'допустимый', 'недопустимый', 'путь'], ['dfd', 'содержать', 'множество', 'полезный', 'информация', 'позволять', 'представить', 'система', 'точка', 'зрение', 'иллюстрировать', 'внешний', 'механизм', 'подача', 'потребовать', 'наличие', 'специальный', 'интерфейс', 'позволять', 'представить', 'автоматизированный', 'ручной', 'процесс', 'система', 'выполнять', 'ориентировать', 'секционирование', 'система'], ['поток', 'использоваться', 'моделирование', 'передача', 'информация', 'физический', 'компонент', 'часть', 'система', 'другую'], ['поток', 'диаграмма', 'изображаться', 'именованными', 'стрелок', 'стрелка', 'указывать', 'направление', 'движение', 'информация'], ['информация', 'двигаться', 'направление', 'обрабатываться', 'возвращаться', 'источник'], ['ситуация', 'моделироваться', 'два', 'различный', 'поток', 'двунаправленным'], ['процесс', 'преобразует', 'входной', 'поток', 'выходной', 'соответствие', 'действие', 'задавать', 'имя', 'процесс'], ['процесс', 'уникальный', 'номер', 'ссылка', 'внутри', 'диаграмма'], ['номер', 'использоваться', 'совместно', 'номер', 'диаграмма', 'получение', 'уникальный', 'индекс', 'процесс', 'модель'], ['хранилище', 'data', 'storage', 'позволять', 'ряд', 'участок', 'определять', 'сохраняться', 'память', 'процесс'], ['фактически', 'хранилище', 'представлять', 'срез', 'поток', 'время'], ['информация', 'содержать', 'использовать', 'время', 'определение', 'выбираться', 'произвольный', 'порядок'], ['имя', 'хранилище', 'идентифицировать', 'содержимое'], ['случай', 'поток', 'входить', 'выходить', 'хранилище', 'структура', 'соответствовать', 'структура', 'хранилище', 'имя', 'отражать', 'диаграмма'], ['внешний', 'сущность', 'терминатор', 'представлять', 'сущность', 'контекст', 'система', 'являться', 'источник', 'приёмник', 'системный'], ['имя', 'содержать', 'существительное', 'клиент'], ['предполагаться', 'объект', 'представить', 'узел', 'участвовать', 'ни', 'обработка'], ['диаграмма', 'изменение', 'состояние', 'std', 'жизненный_цикл', 'сущность', 'относиться', 'класс', 'std', 'диаграмма', 'рис', '14'], ['диаграмма', 'отражать', 'изменение', 'состояние', 'объект', 'течение', 'время'], ['рассмотреть', 'состояние', 'товар', 'склад', 'товар', 'заказать', 'поставщик', 'поступить', 'склад', 'храниться', 'склад', 'проходить', 'контроль', 'качество', 'продать', 'забраковать', 'возвратить', 'поставщик'], ['стрелка', 'диаграмма', 'показывать', 'допустимый', 'изменение', 'состояние'], ['существовать', 'различный', 'вариант', 'изображение', 'диаграмма', 'рисунок', 'привести'], ['принцип', 'проверка', 'качество', 'полнота', 'информационный', 'модель', 'источник', 'richard', 'barker', 'case', 'method', 'entity', 'relationship', 'modelling', 'addison', 'wesley', '1990', 'хотеть', 'создать', 'качественный', 'модель', 'прийтись', 'прибегать', 'помощь', 'аналитик', 'владеть', 'case', 'технология'], ['означать', 'построение', 'контроль', 'информационный', 'модель', 'заниматься', 'аналитик'], ['помощь', 'коллега', 'оказаться', 'весьма', 'полезный'], ['привлекать', 'проверка', 'поставить', 'цель', 'детальный', 'изучение', 'построить', 'модель', 'точка', 'зрение', 'логика', 'точка', 'зрение', 'учёт', 'аспект', 'предметный', 'область'], ['большинство', 'человек', 'лёгкий', 'находить', 'недостаток', 'чужой', 'работа'], ['регулярно', 'представлять', 'ваш', 'информационный', 'модель', 'отдельный', 'фрагмент', 'относительно', 'возникать', 'сомнение', 'одобрение', 'пользователь'], ['особый', 'внимание', 'уделять', 'исключение', 'правило', 'ограничение'], ['качество', 'сущность', 'основный', 'гарантия', 'качество', 'сущность', 'являться', 'ответ', 'вопрос', 'объект', 'являться', 'сущность', 'важный', 'объект', 'явление', 'информация', 'храниться', 'база'], ['список', 'проверочный', 'вопрос', 'сущность', 'отражать', 'имя', 'сущность', 'объект'], ['пересечение', 'сущностями'], ['имеются', 'два', 'атрибут'], ['атрибут', 'восемь', 'синоним', 'омоним', 'сущность'], ['сущность', 'определить', 'полностью'], ['уникальный', 'идентификатор'], ['иметься', 'связь'], ['существовать', 'функция', 'создание', 'поиск', 'корректировка', 'удаление', 'архивирование', 'использование', 'значение', 'сущность'], ['вестись', 'история', 'изменение'], ['место', 'соответствие', 'принцип', 'нормализация'], ['сущность', 'прикладной', 'система', 'имя'], ['сущность', 'общий', 'смысл'], ['достаточный', 'уровень', 'обобщение', 'воплотить'], ['список', 'проверочный', 'вопрос', 'подтип', 'отсутствовать', 'пересечение', 'подтип'], ['подтип', 'атрибут', 'связь'], ['иметь', 'собственный', 'уникальный', 'идентификатор', 'наследовать', 'супертипа'], ['иметься', 'исчерпывать', 'набор', 'подтип'], ['являться', 'подтип', 'пример', 'вхождение', 'сущность'], ['знать', 'атрибут', 'связь', 'условие', 'отличать', 'подтип'], ['качество', 'атрибут', 'выяснить', 'атрибут', 'описывать', 'образ', 'данную', 'сущность'], ['список', 'проверочный', 'вопрос', 'атрибут', 'являться', 'наименование', 'атрибут', 'существительным', 'единственный', 'число', 'отражать', 'обозначаемого', 'атрибут', 'свойство'], ['включать', 'наименование', 'атрибут', 'имя', 'сущность'], ['атрибут', 'значение', 'момент', 'время'], ['отсутствовать', 'повторяться', 'значение', 'группа'], ['описать', 'формат', 'длина', 'допустимый', 'значение', 'алгоритм', 'получение', 'т.п.'], ['атрибут', 'пропустить', 'сущность', 'пригодиться', 'прикладной', 'система', 'существовать', 'предполагаемой'], ['пропустить', 'связь'], ['ссылка', 'атрибут', 'особенность', 'проект', 'переход', 'прикладной', 'уровень', 'исчезнуть'], ['необходимость', 'история', 'изменение'], ['зависеть', 'значение', 'сущность'], ['значение', 'атрибут', 'являться', 'обязательный', 'известный'], ['необходимость', 'создание', 'домен', 'атрибут'], ['зависеть', 'значение', 'часть', 'уникальный', 'идентификатор'], ['зависеть', 'значение', 'значение', 'атрибут', 'включить', 'уникальный', 'идентификатор'], ['качество', 'связь', 'выяснить', 'отражать', 'связь', 'важный', 'отношение', 'наблюдать', 'сущностями'], ['список', 'проверочный', 'вопрос', 'связь', 'иметься', 'описание', 'каждый', 'участвовать', 'сторона', 'отражать', 'содержание', 'связь', 'вписываться', 'принять', 'синтаксис'], ['участвовать', 'два', 'сторона'], ['являться', 'связь', 'переносить'], ['задать', 'степень', 'связь', 'обязательность', 'каждый', 'сторона'], ['допустима', 'конструкция', 'связь'], ['относиться', 'конструкция', 'связь', 'редко', 'использовать'], ['являться', 'избыточный'], ['изменяться', 'течение', 'время'], ['связь', 'обязательный', 'отражать', 'отношение', 'сущность', 'представлять', 'противоположный', 'сторона'], ['исключающей', 'связь', 'конец', 'связь', 'покрывать', 'исключать', 'дуга', 'иметь', 'тип', 'обязательность'], ['относиться', 'сущность'], ['дуга', 'пересекать', 'разветвляться', 'конец', 'сказать', 'случай'], ['связь', 'покрываться', 'дуга'], [], ['конец', 'связь', 'покрывать', 'дуга', 'входить', 'уникальный', 'идентификатор'], ['функция', 'система', 'аналитик', 'приходиться', 'описывать', 'достаточно', 'сложный', 'бизнес', 'процессы'], ['случай', 'прибегать', 'функциональный', 'декомпозиция', 'показывать', 'разбиение', 'процесс', 'ряд', 'мелкий', 'функция', 'каждый', 'разбить', 'ущерб', 'смысл'], ['конечный', 'продукт', 'декомпозиция', 'представлять', 'иерархия', 'функция', 'нижний', 'уровень', 'находиться', 'атомарный', 'точка', 'зрение', 'смысловой', 'нагрузка', 'функция'], ['привести', 'простой', 'пример', 'рис', '15', 'декомпозиция'], ['рассмотреть', 'простой', 'задача', 'выписка', 'счёт', 'клиент', 'отпуск', 'товар', 'склад', 'условие', 'набор', 'товар', 'хотеть', 'приобрести', 'клиент', 'известный', 'рассматривать', 'пример', 'задача', 'выбор', 'товар'], ['операция', 'выбор', 'расчёт', 'скидка', 'разбить', 'мелкий', 'операция', 'расчёт', 'скидка', 'приверженность', 'клиент', 'покупать', 'товар', 'течение', 'долгий', 'время', 'расчёт', 'скидка', 'количество', 'покупаемого', 'товар'], ['атомарный', 'функция', 'описываться', 'подробно', 'помощь', 'dfd', 'std'], ['описание', 'функция', 'исключать', 'дополнительный', 'словесный', 'описание', 'комментарий'], ['отметить', 'этап_анализ', 'уделить', 'внимание', 'функция', 'анализ', 'обработка', 'возможный', 'ошибка', 'отклонение', 'предполагать', 'эталон', 'работа', 'система'], ['выделить', 'критичный', 'работа', 'система', 'процесс', 'обеспечить', 'строгий', 'анализ', 'ошибка'], ['обработка', 'ошибка', 'субд', 'код', 'возврат', 'правило', 'представлять', 'обособленный', 'набор', 'функция', 'единственный', 'функция'], ['уточнение', 'стратегия', 'этап_анализ', 'происходить', 'уточнение', 'выбрать', 'конечный', 'реализация', 'аппаратный', 'программный', 'средство'], ['привлекаться', 'группа', 'тестирование', 'технический', 'специалист'], ['проектирование', 'информационный_система', 'важный', 'учесть', 'дальнейший', 'развитие', 'система', 'рост', 'объём', 'обрабатывать', 'увеличение', 'интенсивность', 'поток', 'запрос', 'изменение', 'требование', 'надёжность', 'информационный_система'], ['этап_анализ', 'определяться', 'набор', 'модель', 'задача', 'получение', 'сравнительный', 'характеристика', 'иных', 'субд', 'рассматриваться', 'этап_определение', 'стратегия', 'реализация', 'информационный_система'], ['этап_определение', 'стратегия', 'осуществить', 'выбор', 'субд'], ['система', 'этап_анализ', 'намного', 'подробный'], ['получить', 'характеристика', 'передать', 'группа', 'тестирование', 'показать', 'выбор', 'субд', 'этап_определение', 'стратегия', 'неверный', 'выбрать', 'субд', 'удовлетворять', 'требование', 'информационный_система'], ['получить', 'относительно', 'выбор', 'аппаратный', 'платформа', 'операционный', 'система'], ['получение', 'результат', 'инициировать', 'изменение', 'получить', 'этап_определение', 'стратегия', 'пересчитываться', 'смета', 'затрата', 'проект'], ['выбор', 'средство', 'разработка', 'уточняться', 'этап_анализ'], ['сила', 'этап_анализ', 'давать', 'полный', 'представление', 'информационный_система', 'этап_определение', 'стратегия', 'план', 'работа', 'скорректировать'], ['выбрать', 'предыдущий', 'этап', 'средство', 'разработка', 'позволять', 'выполнить', 'иную', 'часть', 'работа', 'задать', 'срок', 'приниматься', 'решение', 'изменение', 'срок', 'правило', 'увеличение', 'срок', 'разработка', 'смена', 'средство', 'разработка'], ['осуществлять', 'выбор', 'иных', 'средство', 'учитывать', 'наличие', 'высококвалифицированный', 'персонал', 'владеть', 'выбрать', 'средство', 'разработка', 'наличие', 'администратор', 'выбрать', 'субд'], ['рекомендация', 'уточнять', 'этап', 'выбор', 'стратегия', 'совокупность', 'условие', 'предполагаться', 'эксплуатировать', 'будущий', 'система'], ['уточняться', 'ограничение', 'риск', 'критический', 'фактор'], ['требование', 'удовлетворить', 'информационный_система', 'реализовать', 'использование', 'субд', 'программный', 'средство', 'выбрать', 'этап_определение', 'стратегия', 'инициировать', 'уточнение', 'изменение', 'получать', 'конечный', 'итог', 'смета', 'затрата', 'план', 'работа', 'изменение', 'требование', 'заказчик', 'система', 'ослабление'], ['подробно', 'описываться', 'возможность', 'реализовать', 'система']]"
        ],
        [
         "40",
         "Язык манипуляции данными.doc",
         "2.1.3. Язык манипуляции данными (ЯМД)\rЯзык манипуляции данными (ЯМД) обеспечивает эффективные команды манипуляции сетевой системой базы данных. ЯМД позволяет пользователям выполнять над базой данных операции в целях получения информации, создания отчетов, а также обновления и изменения содержимого записей. \rОсновные команды ЯМД можно классифицировать следующим образом: команды передвижения, команды извлечения, команды обновления записей, команды обновления наборов. \rТабл.2. Основные типы команд ЯМД. \r№\r\u0007Наименование типа команд\r\u0007Назначение\r\u0007\r\u00071\r\u0007Команды передвижения.\r\u0007Команды, применяемые для поиска записей базы данных.\r\u0007\r\u00072\r\u0007Команды извлечения.\r\u0007Команды, применяемые для извлечения записей базы данных.\r\u0007\r\u00073\r\u0007Команды обновления записей.\r\u0007Команды, применяемые для изменения значений записей.\r\u0007\r\u00074\r\u0007Команды обновления наборов.\r\u0007Команды, применяемые для добавления, изменения или удаления экземпляров наборов.\r\u0007\r\u0007Заключение \rПроцесс преобразования функциональной модели в реляционную включает создание реляционной таблицы для каждого объектного множества модели. Атрибуты объектного множества становятся атрибутами реляционной таблицы. Если в функциональной модели существует ключевой атрибут, то он может использоваться в качестве ключа реляционной таблицы. В противном случае ключевой атрибут таблицы может быть создан аналитиком. Однако, лучше всего, если такой атрибут естественным образом возникает из моделируемого приложения. Отношения один-к-одному и один-ко-многим преобразуются в реляционную модель путем превращения их в атрибуты соответствующей таблицы. Отношения многие-ко-многим соответствуют многозначным атрибутам и преобразуются в четвертую нормальную форму путем создания ключа из двух столбцов, соответствующих ключам двух объектных множеств, участвующих в отношении. Конкретизирующие множества преобразуются путем создания отдельных реляционных таблиц, ключи которых совпадают с ключами обобщающих объектных множеств. Рекурсивные отношения также можно смоделировать, создав новое смысловое имя атрибута, обозначающее отношение. \r\r2.2. Архитектуры реализации корпоративных информационных систем.\rПри построении корпоративных информационных сетей, как правило, используются две базовые архитектуры: Клиент-сервер и Интернет/Интранет. В чем же преимущества и недостатки использования каждой из данных архитектур и когда их применение оправдано? Найти ответы на эти вопросы мы постараемся в данном разделе. \rОдной из самых распространенных на сегодня архитектур построения корпоративных информационных систем является архитектура КЛИЕНТ-СЕРВЕР. \rВ реализованной по данной архитектуре информационной сети клиенту предоставлен широкий спектр приложений и инструментов разработки, которые ориентированы на максимальное использование вычислительных возможностей клиентских рабочих мест, используя ресурсы сервера в основном для хранения и обмена документами, а также для выхода во внешнюю среду. Для тех программных систем, которые имеют разделение на клиентскую и серверную части, применение данной архитектуры позволяет лучше защитить серверную часть приложений, при этом, предоставляя возможность приложениям либо непосредственно адресоваться к другим серверным приложениям, либо маршрутизировать запросы к ним. Средством (инструментарием) для реализации клиентских модулей для ОС Windows в данном случае является, как правило, Delpfi. \rОднако при этом частые обращения клиента к серверу снижают производительность работы сети, кроме этого приходится решать вопросы безопасной работы в сети, так как приложения и данные распределены между различными клиентами. Распределенный характер построения системы обуславливает сложность ее настройки и сопровождения. Чем сложнее структура сети, построенной по архитектуре КЛИЕНТ-СЕРВЕР, тем выше вероятность отказа любого из ее компонентов. \rВ последнее время все большее развитие получает архитектура Интернет/Интранет. В основе реализации корпоративных информационных систем на базе данной архитектуры лежит принцип \"открытой архитектуры\", что во многом определяет независимость реализации корпоративной системы от конкретного производителя. Все программное обеспечение таких систем реализуется в виде аплетов или сервлетов (программ написанных на языке JAVA) или в виде cgi модулей (программ написанных как правило на Perl или С). \rОсновными экономическими преимуществами данной архитектуры являются: \rотносительно низкие затраты на внедрение и эксплуатацию; \rвысокая способность к интеграции существующих гетерогенных информационных ресурсов корпораций; \rповышение уровня эффективности использования оборудования (сохранение инвестиций). \rприкладные программные средства доступны с любого рабочего места, имеющего соответствующие права доступа; \rминимальный состав программно-технических средств на клиентском рабочем месте (теоретически необходима лишь программа просмотра - броузер и общесистемное ПО); \rминимальные затраты на настройку и сопровождение клиентских рабочих мест, что позволяет реализовывать системы с тысячами пользователей (причем многие из которых могут работать за удаленными терминалами). \rВ общем случае АИС, реализованная с использованием данной архитектуры включает Web-узлы с интерактивным информационным наполнением, реализованных при помощи технологий Java, JavaBeans и JavaScript, взаимодействующих с предметной базой данных, с одной стороны, и с клиентским местом с другой. База данных, в свою очередь, является источником информации для интерактивных приложений реального времени. \rПо запросу клиента WEB узел осуществляет следующие операции (рис.7): \rОтправляет ASCII коды HTML страниц (или VRML документов), включающие при необходимости элементы javaScript; \rОтсылает двоичный код запрошенного ресурса (изображения, адио-, видеофайла, архива и т.п.); \rОтсылает байт коды JAVA апплетов. \rПринимает конкретную информацию от пользователя (результат заполнения активной формы, или статистическую информацию запрошенную CGI скриптом); \rОсуществляет заполнение базы данных; \rПринимает сообщения от пользователя и регламентирует доступ к ресурсам Web узла на основе анализа принятой информации (проверка паролей и т.п.); \rПринимает информацию от пользователя и в зависимости от нее динамически формирует HTML страницы, либо VRML документы, обращаясь, при необходимости, к базам данных и существующим на WEB узле HTML страницам и VRML документам.\rПосле того, как клиент получил ответ WEB сервера, он осуществляет следующие операции: \rвизуализирует HTML страницу либо VRML документ в окне броузера; \rинтерпретирует команды JavaScript, модифицирует образ HTML страницы и т.п.; \rинтерпретируя байт коды JAVA апплетов, позволяет загружать и выполнять активные приложения; \rведет диалог с пользователем, заполняющим формы, и создает новые запросы к WEB серверу; \rс помощью утилит воспроизводит коды аудио и видео файлов, поддерживает мультимедийные средства; \rобеспечивает моделирование виртуальной реальности просматривая VRML документы.\rПеречисленные задачи WEB клиента обеспечиваются возможностями броузера и специализированным программным обеспечением (утилитами), размещенными на рабочей станции клиента. Следует отметить и тот факт, что жестких стандартов на построение WEB клиента пока нет и его компонентный состав может различаться. \rНа сегодняшний день известны и широко применяются три основных технологии создания интерактивного взаимодействия с пользователем в Web. Первый путь заключается в использовании Стандартного Интерфейса Шлюза (Commom Gateway Interface) - CGI. Второй - включение JavaScript - сценариев в тело Web-страниц. И наконец самый мощный, предоставляющий практически неограниченные возможности способ - применение технологии Java (ипользование Java-аплетов). \rCGI - это механизм для выбора, обработки и форматирования информации. Возможность взаимодействия, обеспечиваемая CGI, предоставляется во многих формах, но в основном это динамический доступ к информации, содержащейся в базах данных. Например, многие узлы применяют CGI для того, чтобы пользователи могли запрашивать базы данных и получать ответы в виде динамически сформированных Web-страниц (рис.17). \rИмеются в виду узлы, предоставляющие доступ к базам данных, средствам поиска, и даже информационные системы, предающие сообщения в ответ на ввод пользователя. Все эти узлы используют CGI, чтобы принять ввод пользователя и передать его с сервера Web базе данных. База данных обрабатывает запрос и возвращает ответ серверу, который в свою очередь пересылает его опять броузеру для отображения. Без СGI база данных этого не смогла бы. Данный интерфейс можно считать посредником между броузером, сервером и любой информацией которая должна передаваться между ними. \rВ отличии от HTML, CGI не является языком описания документов. Собственно, это и не язык вообще; это стандарт. Он просто определяет, как серверы Web передают информацию, используя приложения, исполняемые на сервере. Это способ расширения возможностей сервера Web без преобразования при этом его самого. Подобно тому как броузер Web обращается к вспомогательным приложениям для обработки информации, которую он не понимает, CGI предоставляет серверу Web возможность преложить работу на другие приложения, такие как базы данных и средства поиска. \rПри написании программы шлюза (которая может конвертировать ввод из одной системы в другую) CGI позволяет использовать почти любой язык программирования. Способность использовать при написании программы шлюза любой язык, даже язык сценариев, чрезвычайно важна. Самыми популярными языками являются shell, Perl, C и С++. Сценарием традиционно называют программу, которая выполняется с помощью интерпретатора, выполняющего каждую строку программы по мере ее считывания. \rПоследовательность действий при взаимодействии клиента с программой запущенной на Web-сервере можно сформулировать как следующая последовательность шагов. \rБроузер принимает введенную пользователем информацию, как правило с помощью форы. \rБроузер помещает введенную пользователем информацию в URL, указывающий имя и местоположение сценария CGI, который требуется ввести в действие. \rБроузер подключается к серверу Web и запрашивает URL. Сервер определяет, что URL должен ввести в действие сценарий CGI, и запускает указанный сценарий. \rСценарий CGI выполняется, обрабатывая все передаваемые ему данные. \rСценарий CGI динамически формирует Web-страницу и возвращает результат серверу. \rСервер возвращает результат клиенту. \rБроузер отображает результат пользователю \rЭто является упрощенной схемой взаимодействия между броузером, сервером и сценарием CGI. Наибольшую популярность CGI - сценарии нашли при использовании в качестве обработчиков форм, средства доступа к базам данных, средства осуществления локального и глобального поиска, шлюзовых протоколов. \rНаибольшей мощью в реализации клиентского программного обеспечения обладают аплеты - программы написанные на языке JAVA. В узком смысле слова Java - это объектно-ориентированный язык, напоминающий C++, но более простой для освоения и использования. В более широком смысле Java - это целая технология программирования, изначально рассчитанная на интеграцию с Web-сервисом, то есть на использование в сетевой среде. Поскольку Web-навигаторы существуют практически для всех аппаратно-программных платформ, Java-среда должна быть как можно более мобильной, в идеале полностью независимой от платформы. \rС целью решения перечисленных проблем были приняты, помимо интеграции с Web-навигатором, два других важнейших постулата. \rБыла специфицирована виртуальная Java-машина (JVM), на которой должны выполняться (интерпретироваться) Java-программы. Определены архитектура, представление элементов данных и система команд Java-машины. Исходные Java-тексты транслируются в коды этой машины. Тем самым, при появлении новой аппаратно-программной платформы в портировании будет нуждаться только Java-машина; все программы, написанные на Java, пойдут без изменений. \rОпределено, что при редактировании внешних связей Java-программы и при работе Web-навигатора прозрачным для пользователя образом может осуществляться поиск необходимых объектов не только на локальной машине, но и на других компьютерах, доступных по сети (в частности, на WWW-сервере). Найденные объекты загружаются, а их методы выполняются затем на машине пользователя. \rНесомненно, между двумя сформулированными положениями существует тесная связь. В компилируемой среде трудно абстрагироваться от аппаратных особенностей компьютера, как трудно (хотя и можно) реализовать прозрачную динамическую загрузку по сети. С другой стороны, прием объектов извне требует повышенной осторожности при работе с ними, а, значит, и со всеми Java-программами. Принимать необходимые меры безопасности проще всего в интерпретируемой, а не компилируемой среде. Вообще, мобильность, динамизм и безопасность - спутники интерпретатора, а не компилятора. \rПринятые решения делают Java-среду идеальным средством разработки интерактивных клиентских компонентов (апплетов) Web-систем. Особо отметим прозрачную для пользователя динамическую загрузку объектов по сети. Из этого вытекает такое важнейшее достоинство, как нулевая стоимость администрирования клиентских систем, написанных на Java. Достаточно обновить версию объекта на сервере, после чего клиент автоматически получит именно ее, а не старый вариант. Без этого реальная работа с развитой сетевой инфраструктурой практически невозможна. \rСтандартный реляционный доступ к данным очень важен для программ на Java, потому что Java-апплеты по природе своей не являются монолитными, самодостаточными программами. Будучи модульными, апплеты должны получать информацию из хранилищ данных, обрабатывать ее и записывать обратно для последующей обработки другими апплетами. Монолитные программы могут себе позволить иметь собственные схемы обработки данных, но Java-апплеты, пересекающие границы операционных систем и компьютерных сетей, нуждаются в опубликовании открытых схем доступа к данным. \rИнтерфейс JDBC (Java Database Connectivity - связанность баз данных Java) является первой попыткой реализации доступа к данным из программ Java, не зависящего от платформы и базы данных. В версии JDK 1.1 JDBC является составной частью основного Java API. \rJDBC - это набор реляционных объектов и методов взаимодействия с источниками данных. Программа на языке Java открывает связь с таблицей, создает объект оператор, передает через него операторы SQL системе управления базой данных получает результаты и служебную информацию о них. В типичном случае файлы .class JDBC и апплет/приложение на языке Java находятся на компьютере клиенте. Хотя они могут быть загружены из сети, для минимизации задержек во время выполнения лучше иметь классы JDBC у клиента. Система управления базой данных (CУБД) и источник данных обычно расположены на удаленном сервере. \rНа рисунке 19 показаны различные варианты реализаций связи JDBC с базой данных. Апплет/приложение взаимодействует с JDBC в системе клиента, драйвер отвечает за обмен информацией с базой данных через сеть. \rКлассы JDBC находятся в пакете java.sql.*. Все программы Java используют объекты и методы из этого пакета для чтения и записи в источник данных. Программе, использующей JDBC, требуется драйвер к источнику данных, с которым она будет взаимодействовать. Этот драйвер может быть написан на другом (не Java) языке программирования, или он может являться программой на языке Java, которая общается с сервером, используя RPC (Remote Procedure Call) - удаленный вызов процедур или HTTP. Обе схемы приведены на рис.19. Драйвер JDBC может быть библиотекой на другом (не Java), как программа сопряжения ODBC - JDBC, или классом Java, который общается через сеть с сервером базы данных, используя RPC или HTTP. \rДопускается, что приложение будет иметь дело с несколькими источниками данных, возможно, с неоднородными. По этой причине у JDBC есть диспетчер драйверов, чьи обязанность заключаются в управлении драйверами и предоставлении программе списка загруженных драйверов. \rХотя словосочетание \"База данных\" входит в расшифровку аббревиатуры JDBC, форма, содержание и расположение данных не интересуют программу Java, использующую JDBC, поскольку существует драйвер к этим данным. \r\rСопряжение JDBC - ODBC \rВ качестве составной части JDBC поставляется драйвер для доступа из JDBC к источникам данных ODBC (Open Database Connectivity), и называется \"программа сопряжения JDBC - ODBC\". Эта программа сопряжения реализована в виде JdbcOdbc.class и является библиотекой для доступа к драйверу ODBC. \rПоскольку JDBC конструктивно близок к ODBC, программа сопряжения является несложной надстройкой над JDBC. На внутреннем уровне этот драйвер отображает методы Java в вызовы ODBC и тем самым взаимодействует с любым ODBC - драйвером. Достоинство такой программы сопряжения состоит в том, что JDBC имеет доступ к любым базам данных, поскольку ODBC - драйверы распространены очень широко. \rВ соответствии с правилами Internet JDBC идентифицирует базу данных при помощи URL, который имеет форму: \rjdbc:<субпротокол>:<имя, связанное с СУБД или Протоколом> \rУ баз данных в Internet/intranet \"имя\" может содержать сетевой URL \r//<имя хоста>:<порт>/.. \r<субпротокол> может быть любым именем, которое понимает база данных. Имя субпротокола \"odbc\" зарезервированно для источников данных формата ODBC. Типичный JDBC URL для базы данных ODBC выглядит следующим образом: \rjdbc:odbc:<DNS - имя ODBC>;User=<имя пользователя>; PW=<пароль> \r\rВнутреннее устройство JDBC - приложения \rЧтобы обработать информацию из базы данных, информационно-обучающая система на языке Java выполняет ряд шагов. На рис.20 показаны основные объекты JDBC, методы и последовательность выполнения, Во-первых, программа вызывает метод getConnection (), чтобы получить объект Connection.Затем она создает объект Statement и подготавливает оператор SQL. \rОператор SQL может быть выполнен немедленно (объект Statement), а может быть откомпилирован (объект PreparedStatement) или представлен в виде вызова процедуры (объект CallableStatement). Когда выполняется метод executeQuery(), возвращается объект ResultSet. Операторы SQL, такие как updatе или delete не возвращают ResultSet. Для таких операторов используется метод executeUpdate(). Он возвращает целое, указывающее количество рядов, затронутых оператором SQL. \rResultSet содержит ряды данных и анализируетcя методом next(). Если приложение обрабатывает транзакции, можно пользоваться методами rollback() и commit() для отмены или подтверждения изменений, внесенных оператором \rSQL. \r\rПримеры запроса и модификации базы данных с использованием JDBC \rДанный пример иллюстрирует как при помощи SQL - опрератора SELECT составляется список всех студентов из базы данных. Ниже приводятся шаги, которые необходимы для выполнения этого задания при помощи API JDBC. Каждый шаг имеет форму текста на языке Java с комментариями. \r// описать методы и переменные\rpublic void ListStudents () throws SQLException\r{\rint i,  noOfColumns;\rString stNo, stFName, stLName;\r// инициализировать и загрузить драйвер JDBC-ODBC\rClass.forName (\"jdbc.odbc.JdbcOdbcDriver\");\r// создать объект Connection\rConnection ex1Con = DriverManager.getConnection (\r\"jdbc:odbc:StudentDB;uid=\"admin\";pw=\"sa\"\");\r// создать простой объект Statement\rStatement ex1Stmt = ex1Con.createStatement ();\r// Создать строку SQL, передать ее СУБД и\r// выполнить SQL-оператор\rResultSet ex1rs = ex1Stmt.executeQuery (\r\"SELECT StudentNumber, FirstName, LastName FROM Students\");\r// Обработать каждый ряд и вывести результат на консоль\rSystem.out.println (\"Student Number  First Name  Last Name\");\rwhile (ex1rs.next())\r{\rstNo = ex1rs.getString (1);\rstFName = ex1rs.getString (2);\rstLName = ex1rs.getString (3);\rSystem.out.println (stNo, stFName, stLName);\r}\r}\rВ следующем примере поле firstName таблицы Students изменяется. Доступ осуществляется через поле StudentNumber. \r// описать методы, переменные и параметры \rpublic void UpdateStudentName (String stFName, String stLName, String stNo) \rthrows SQLException\r{\rint retValue;\r//инициализировать и загрузить драйвер JDBC-ODBC\rClass.forName (\"jdbc.odbc.JdbcOdbcDriver\");\r// создать объект Connection\rConnection ex1Con = DriverManager.getConnection (\r\"jdbc:odbc:StudentDB;uid=\"admin\";pw=\"sa\"\");\r// создать простой объект Statement\rStatement ex1Stmt = ex1Con.createStatement ();\r// Создать строку SQL, передать ее СУБД и\r// выполнить SQL-оператор\rString SQLBuffer = \"UPDATE Students SET FirstName =\" +\rstFName + \", lastName =\" + stLName +\r\"WHERE StudentNumber = \" + stNo;\rretValue = ex1Stmt.executeUpdate (SQLBuffer);\rSystem.out.println (\"Модифицированно \" + retValue +\r\" строк в базе данных.\")\r}\rРис.21. Интерфейс для регистрации пользователя в АИС. \rТаким образом, взаимодействие с базами данных из Java также отличается простотой и гибкостью, связанной с эффективной реализацией JDBC API. В сочетании со своей природной платформо-независимостью, Java предоставляет уникальный инструмент для создания интерактивных распределенных информационно-обучающих систем на база Internet/Intranet - технологий. \rОсновными сложностями при реализации корпоративных систем на базе данной архитектуры являются: \rотсутствие многих популярных приложений и средств разработки реализованных в виде JAVA аплетов; \rотносительное высокое время компиляции аплетов на клиентских местах (временно); \rвопросы безопасной работы в сети. \r\r2.2.1. Сравнительные исследования типовых серверных платформ.\rВыбирая платформу для АИС, нужно учитывать множество аспектов. На решение влияют соображения, связанные с надежностью (кластеризация и балансировка нагрузки), среды разработки, работы над содержанием узла и защиты информации. Результаты тестирования различных платформ широко представлены в периодической печати, представим здесь лишь некоторые обобщения материалов тестирования []. \rПри проведении испытаний оценивались Solaris 2.6, Windows NT Server 4 и Red Hat Linux 6.02 (ядро 2.2.11) при эксплуатации четырех web-серверов, занимающих ведущие позиции в мире: Microsoft Internet Information Server 4 (IIS), Netscape Enterprise Server 3.61, Web Server 2.1 корпорации Sun и Stronghold Web Server 2.4.1 (популярный вариант Web-сервера Apache с функциями защиты от несанкционированного доступа) (на тестах использовались триал версии указанного программного обеспечения). Все платформы были испытаны с помощью новой версии эталонного теста WebBench отделения Ziff-Davis Benchmark Operation. \r\r2.2.1.2. Особенности функционирования АИС на платформе Sun.\rSolaris - это современная операционная система UNIX клона. Примечательно, что она, опережая свое время, позволяет работать с 64-разрядными прикладными программами и имеет собственные расширения, которые помогают ей выдерживать высокие пользовательские нагрузки Web-узлов с интенсивным обменом информацией. В Solaris также предусмотрены замечательные возможности применения серверных прикладных программ и средств разработки сторонних производителей. \rКлючевой момент для понимания различий между платформами Linux, Microsoft и Sun - способ, которым серверные программы каждой из них обрабатывают большое число подключений. Обычно это делается в многопотоковом режиме. Многопотоковый режим возникает, когда прикладная программа (также называемая процессом) содержит множество небольших блоков исполняемого кода, работающих независимо друг от друга и, возможно, одновременно на разных процессорах. Эти потоки могут совместно пользоваться ресурсами и представляют собой способ организации программы, позволяющий одновременно выполнять несколько задач. \rМодель потоков Solaris весьма сложна. Она состоит из потоков на уровне ядра (kthreads) - реальных объектов, передаваемых отдельному процессору; потоков на пользовательском уровне и промежуточной структуры, называемой облегченным (lightweight) процессом. Это позволяет тонко управлять структурой прикладной программы и реализации в ней прикладной многозадачности. \r\rStronghhold на платформе Solaris \rСоздатели Web-сервера Stronghold (и Apache, основы Stronghold) считают, что многопотоковые программы обычно менее надежны, чем \"монолитные\". Такое различие стратегий объясняет значительные расхождения показателей производительности, поскольку и Sun Web Server 2.1, и Netscape Enterprise используют второй процессор, установленный в испытательных системах. Поэтому Stronghold, в зависимости от прикладного ПО, не столь эффективно использует оборудование Sun, содержащее до 64 процессоров. \r\rNetscape на платформе Solaris \rNetscape Enterprise Server 3.61 - Web-сервер, избранный для реализации большинства крупных узлов на основе Solaris, в том числе и корпорации Sun. Инструментальные средства фирмы Netscape, а также предлагаемые независимыми производителями, способствуют разработке сложных прикладных программ для Web с помощью сценариев на языках JavaScript, CORBA, Java. \rЕще одна важнейшая система, стоящая за добротными программами для Web на серверах Netscape, - сервер прикладных программ Netscape Application Server (NAS). Сервер NAS - среда программирования для объектов на языках C++ и Java - обеспечивает масштабируемость и устойчивость к сбоям прикладных программ. В NAS имеются инструменты для создания многоуровневых программ, объединяющих HTML и запросы к базам данных на серверах NAS. \r\rSun Web Server \rSun Web Server (SWS) обеспечивает разработку программ, конечно же, на языке Java. На SWS можно использовать сервлеты и разнообразные возможности, такие как CORBA. Сервлеты (servlet) - это Java-программы, запускаемые на сервере и, подобно CGI, передающие сверстанные HTML-страницы браузеру. Для сервлет существует собственный API к функциям рабочей среды сервера. В SWS также предусмотрена возможность использования серверных Java-страниц (Java Server Pages) - способа обращения к серверным функциям Java со страниц Web и из CGI-программ. \rПри соответствующем использовании Web-серверов на платформе Solaris, эта операционная система на многопроцессорных станциях превосходит по производительности Windows NT. Такого результата достигла Sun Microsystems благодаря использованию Solaris Network Cache and Accelerator (SNCA) - мощного механизма кэширования для Web-сервера. SWS победил в испытаниях при обслуживании статических страниц. При выполнении динамических CGI-испытаний Netscape на платформе Solaris превзошел и SWS, и IIS для Windows NT. \r\r2.2.1.3. Особенности функционирования АИС на платформе Microsoft.\rMicrosoft Windows NT Server \rWindows NT 4 Server и Internet Information Server (IIS) являются исключительно коммерческой web-платформой, разработанной компанией Microsoft. Данная ОС имеет удобный интуитивно понятный интерфейс взаимодействия с пользователем, что делает её довольно привлекательной для использования. Windows NT 4 Server оснащена службой балансировки нагрузки (Windows NT Load Balancing Services), которая позволяет создавать группу серверов и распределять нагрузку между ними. Пользователи при этом видят только один IP-адрес и полагают, что существует только один сервер. Однако служба Load Balancing Services - это неполноценная кластерная система, поэтому она не способна обеспечить такое высокое быстродействие, как настоящий кластер. Windows NT не может работать с мощными аппаратными и программными средствами кластеров, в том числе с собственной службой Microsoft Cluster Service, продуктами серии Infinity компании IBM и продуктами NonStop производства Compaq. У Microsoft есть продукты всех этапов разработки для Web, однако обычно их заменяют изделиями других фирм. Пакет Allaire ColdFusion 4.0, как среда разработки для Web, - отличный пример этого. \r\rNetscape Enterprise на платформе Windows NT \rNetscape Enterprise в среде Windows NT представляет собой Web-сервер, ориентированный на большие нагрузки. Для него имеется множество моделей программирования. Например, помимо общепринятых моделей разработки HTML и CGI в продукте Netscape предусмотрены возможности работы с JavaScript на стороне сервера. Почти все функции сервера Netscape для Solaris работают и на платформе Windows NT. \rПри тестировании на производительность IIS показал неплохие результаты. Скорость при работе IIS достигнута за счет хорошо организованной обработкой файлового ввода-вывода. Дополняет обработку сообщений в Windows NT возможность асинхронного ввода-вывода, позволяющая обрабатывать запрос одновременно с выполнением операций ввода-вывода в файл или ЛВС. Подобная функция имеется в Solaris, но до сих пор не полностью реализована в Linux. По результатам теста IIS проигрывает SWW при обработке статических страниц, а Netscape Enterprise на платформе NT оказался менее производительным во всех режимах, чем на платформе Solaris. \r\r2.2.1.4. Особенности функционирования АИС на основе Linux.\rВсе больше растет популярность Linux и её респектабельность как платформы разработки для Web и корпоративных сред. Linux характеризуется рядом преимуществ, таких как широкое сообщество разработчиков открытого кода, поддержка многих моделей комплектующих, и, главная особенность состоит в том, что Linux полностью бесплатная ОС. Linux является разновидностью Unix и изначально создавалась для работы в сетях. В каждой новой версии Linux появляются некоторые усовершенствования, направленные на повышение масштабируемости и производительности серверных прикладных программ. \r\rApache и Stronghold \rДля тестов в среде Linux был использован Stronghold Web Server 2.4.1 компании C2Net. Stronghold - это сервер с возможностями применения технологии SSL, в основе которого лежит Web-сервер Apache. Сервер Stronghold обладает всеми преимуществами Apache, в том числе мощными средствами обеспечения работы с виртуальными базовыми машинами (способность одного web-сервера обслуживать несколько машин одновременно). \rПлатформа Stronghold, подобно Linux, имеет заслуженную репутацию надежной и стабильной системы. Но Stronghold - и, следовательно, Apache - не оптимизированы для многопроцессорных сред. Поэтому Web-узлы, основанные на серверах Apache, лучше масштабировать путем добавления серверов, а не процессоров. \rНапротив, IIS и Netscape Enterprise имеют многопотоковую архитектуру, которая масштабируется на несколько процессоров одного сервера. При испытаниях на многопроцессорных станциях они, как правило, обгоняли Stronghold. \rApache позволяет тонко настраивать ряд параметров (такие как число процессов, доступных клиентам). Для Apache, как и для других серверов, есть механизм работы сервлетам (Apache Jserv). Механизм работы с сервлетами встраивается в Apache в виде модуля и работает с любой совместимой с JDK 1.1 виртуальной Java-машиной. По производительности дуэт Apache-Linux оказался оптимальным для однопроцессорных систем. По обработке статических страниц он немного уступал SWW и IIS, а по стабильности работы превосходил серверы на платформеWindows NT. \rLinux - это функциональность UNIX + пользовательско-ориентированный интерфейс Windows-систем. Большая часть поддерживаемого Linux оборудования - это то, что пользователи реально у себя имеют. Как в результате оказалось - большая часть популярной периферии для 80386/80486 поддерживается (действительно, Linux поддерживает оборудование, которое в ряде случаев не поддерживают некоторые коммерческие UNIX). Хотя некоторые достаточно экзотические устройства пока не поддерживаются. \rВажным вопросом при создании АИС является обеспечение жизнестойкости и надежности работы информационных серверов. В качестве иллюстрации эффективности платформы приведем расчет параметров для сервера с 25000 посетителей в день []. Подсчет загрузки: 24ч*60мин*60 сек=86400 секунд в сутках, если каждый посетитель берет с сервера по 10 документов (*.html + графика) то при равномерном распределении загрузки получается 3 обращения к серверу в секунду. Реальное распределение трафика носит характер кривой Гаусса либо синусоиды (в зависимости от содержания сервера), в максимумах которых загрузка достигает 10-20 обр/с. Для нормальной работы такому серверу необходимо около 400 Mb RAM, при хорошей настройке - не менее 200. \rПри правильной конфигурации сервера не рекомендуется использовать swap. все должно помещаться в оперативной памяти (имеется ввиду, что у сервера swap-область быть должна, но она обязана быть пустой). Для предотвращения перегрузок рекомендуется пользоваться несколькими правилами, снижающими загрузку сервера. Придерживаясь этих правил можно съэкономить около 30% ресурсов сервера. \rДля статической информации всегда ставить last-modified в атрибут выдачу CGI-скриптов - документ без временного штампа не сохраняется в локальном кэше, и постоянно перезаписывается при просмотре. \rCGI программы хранить в любом каталоге кроме /CGI-BIN/, т.к. proxy-серверы не кэшируют файлы, находящиеся в этих каталогах, и каждый раз вынуждены обращаться к вам на сервер. \rУстанавливать поле last-modified у русского apache с автоматическим определением кодировки, чтобы на proxy-серверах не оставались файлы в некорректной кодировке. \rНе применять авторедирект по чарсету в русском apache. \rНе использовать фреймы, т.к. вместо одного файла появляется минимум 3. \rНе использовать анимированные *.gif, т.к. некоторые NN обращаются к серверу перед каждым циклом. \r404 код не делать cgi-скриптом, 404 код не делать \"красивым\" - с графическими изображениями и указаниями на прочие разделы, т.к. сошедший с ума робот собирает невероятное количество 404 ошибок, зацикливаясь в них на веки. \rСоздать на сервере файл robot.txt, т.к. это самый запрашиваемый документ на сервере, и иначе порождает массу 404 (см. п. 7). А также разумные роботы слушаются запретов в этом файле, что уменьшает нагрузку на сервер. \rНе ставить баннеры наверху страницы, т.к. баннер сверху отнимает 1-2 реквеста из 4-х и в итоге грузится вперед тормозя ваши сайтовые картинки. \rПри вызове баннера не обращаться каждый раз к CGI, а подставлять вместо случайного числа любое число, что можно сделать, например, получив дату на JavaScript. \rВызывать баннеры программами на Си, т.к. Perl работает медленнее. \rНа одной машине должен размещаться только информационный сервер, не одновременно с почтой и др. сервисами. \rНа сегодня архитектура Internet/Intranet, в том числе и на платформе LINUX, уже используется при построении корпоративных ИС для решения задач автоматизации управления банками, управления проектированием, управления ТП, АСУ ТП, электронной коммерции, оперативной информации по курсу валют и акций и т.п.",
         "0",
         "[['2.1.3'], ['язык', 'манипуляция', 'данными', 'ямд', 'язык', 'манипуляция', 'данными', 'ямд', 'обеспечивать', 'эффективный', 'команда', 'манипуляция', 'сетевой', 'система', 'база'], ['ямд', 'позволять', 'пользователь', 'выполнять', 'база', 'операция', 'цель', 'получение', 'информация', 'создание', 'отчёт', 'обновление', 'изменение', 'содержимого', 'запись'], ['основной', 'команда', 'ямд', 'классифицировать', 'следующий', 'образ', 'команда', 'передвижение', 'команда', 'извлечение', 'команда', 'обновление', 'запись', 'команда', 'обновление', 'набор'], ['табл.2'], ['основной', 'тип', 'команда', 'ямд'], ['№', '\\x07наименование', 'тип', 'команда', '\\x07назначение', '\\x07', '\\x071', '\\x07команды', 'передвижение'], ['\\x07команды', 'применять', 'поиск', 'запись', 'база'], ['\\x07', '\\x072', '\\x07команды', 'извлечение'], ['\\x07команды', 'применять', 'извлечение', 'запись', 'база'], ['\\x07', '\\x073', '\\x07команды', 'обновление', 'запись'], ['\\x07команды', 'применять', 'изменение', 'значение', 'запись'], ['\\x07', '\\x074', '\\x07команды', 'обновление', 'набор'], ['\\x07команды', 'применять', 'добавление', 'изменение', 'удаление', 'экземпляр', 'набор'], ['\\x07', '\\x07заключение', 'процесс', 'преобразование', 'функциональный', 'модель', 'реляционный', 'включать', 'создание', 'реляционный', 'таблица', 'каждый', 'объектный', 'множество', 'модель'], ['атрибут', 'объектный', 'множество', 'становиться', 'атрибут', 'реляционный', 'таблица'], ['функциональный', 'модель', 'существовать', 'ключевой', 'атрибут', 'использоваться', 'качество', 'ключ', 'реляционный', 'таблица'], ['противный', 'случай', 'ключевой', 'атрибут', 'таблица', 'создать', 'аналитик'], ['хороший', 'атрибут', 'естественный', 'образ', 'возникать', 'моделируемого', 'приложение'], ['отношение', 'многим', 'преобразуются', 'реляционный', 'модель', 'путем', 'превращение', 'атрибут', 'соответствующий', 'таблица'], ['отношение', 'многим', 'соответствовать', 'многозначный', 'атрибут', 'преобразуются', 'четвёртый', 'нормальный', 'форма', 'путем', 'создание', 'ключ', 'два', 'столбец', 'соответствовать', 'ключ', 'два', 'объектный', 'множество', 'участвовать', 'отношение'], ['конкретизирующие', 'множество', 'преобразуются', 'путем', 'создание', 'отдельный', 'реляционный', 'таблица', 'ключ', 'совпадать', 'ключ', 'обобщающих', 'объектный', 'множество'], ['рекурсивный', 'отношение', 'смоделировать', 'создать', 'новый', 'смысловой', 'имя', 'атрибут', 'обозначать', 'отношение'], ['2.2'], ['архитектура', 'реализация', 'корпоративный', 'информационный', 'система'], ['построение', 'корпоративный', 'информационный', 'сеть', 'правило', 'использоваться', 'два', 'базовый', 'архитектура', 'клиент', 'сервер', 'интернет', 'интранет'], ['преимущество', 'недостаток', 'использование', 'каждый', 'архитектура', 'применение', 'оправдать'], ['найти', 'ответ', 'вопрос', 'постараться', 'раздел'], ['распространенных', 'сегодня', 'архитектура', 'построение', 'корпоративный', 'информационный', 'система', 'являться', 'архитектура', 'клиент', 'сервер'], ['реализовать', 'архитектура', 'информационный', 'сеть', 'клиент', 'предоставить', 'широкий', 'спектр', 'приложение', 'инструмент', 'разработка', 'ориентировать', 'максимальный', 'использование', 'вычислительный', 'возможность', 'клиентский', 'рабочий', 'место', 'использовать', 'ресурс', 'сервер', 'основный', 'хранение', 'обмен', 'документ', 'выход', 'внешний', 'среда'], ['программный', 'система', 'иметь', 'разделение', 'клиентский', 'серверный', 'часть', 'применение', 'архитектура', 'позволять', 'лучше', 'защитить', 'серверный', 'часть', 'приложение', 'предоставлять', 'возможность', 'приложение', 'непосредственно', 'адресоваться', 'серверный', 'приложение', 'маршрутизировать', 'запрос'], ['средство', 'инструментарием', 'реализация', 'клиентский', 'модуль', 'ос', 'windows', 'случай', 'являться', 'правило', 'delpfi'], ['частый', 'обращение', 'клиент', 'сервер', 'снижать', 'производительность', 'работа', 'сеть', 'приходиться', 'решать', 'вопрос', 'безопасный', 'работа', 'сеть', 'приложение', 'распределить', 'различный', 'клиент'], ['распределённый', 'характер', 'построение', 'система', 'обуславливать', 'сложность', 'настройка', 'сопровождение'], ['сложный', 'структура', 'сеть', 'построить', 'архитектура', 'клиент', 'сервер', 'высоко', 'вероятность', 'отказ', 'компонент'], ['последний', 'время', 'больший', 'развитие', 'получать', 'архитектура', 'интернет', 'интранет'], ['основа', 'реализация', 'корпоративный', 'информационный', 'система', 'база', 'архитектура', 'лежать', 'принцип', 'открытый', 'архитектура', 'определять', 'независимость', 'реализация', 'корпоративный', 'система', 'конкретный', 'производитель'], ['программный', 'обеспечение', 'система', 'реализоваться', 'вид', 'аплетов', 'сервлетов', 'программа', 'написать', 'язык_java', 'вид', 'cgi', 'модуль', 'программа', 'написать', 'правило', 'perl'], ['основный', 'экономический', 'преимущество', 'архитектура', 'являться', 'относительно', 'низкий', 'затрата', 'внедрение', 'эксплуатация', 'высокий', 'способность', 'интеграция', 'существовать', 'гетерогенный', 'информационный', 'ресурс', 'корпорация', 'повышение', 'уровень', 'эффективность', 'использование', 'оборудование', 'сохранение', 'инвестиция'], ['прикладной', 'программный', 'средство', 'доступный', 'рабочий', 'место', 'иметь', 'соответствующий', 'право', 'доступ', 'минимальный', 'состав', 'программно', 'технический', 'средство', 'клиентский', 'рабочий', 'место', 'теоретически', 'необходимый', 'программа', 'просмотр', 'броузер', 'общесистемный', 'минимальный', 'затрата', 'настройка', 'сопровождение', 'клиентский', 'рабочий', 'место', 'позволять', 'реализовывать', 'система', 'тысяча', 'пользователь', 'работать', 'удалённый', 'терминал'], ['общий', 'случай', 'аис', 'реализовать', 'использование', 'архитектура', 'включать', 'web', 'узел', 'интерактивный', 'информационный', 'наполнение', 'реализовать', 'помощь', 'технология', 'java', 'javabeans', 'javascript', 'взаимодействовать', 'предметный', 'база', 'сторона', 'клиентский', 'место'], ['база', 'очередь', 'являться', 'источник', 'информация', 'интерактивный', 'приложение', 'реальный', 'время'], ['запрос', 'клиент', 'web', 'узел', 'осуществлять', 'следующий', 'операция', 'рис.7', 'отправлять', 'ascii', 'код', 'html_страница', 'vrml', 'документ', 'включать', 'элемент', 'javascript', 'отсылать', 'двоичный', 'код', 'запрошенного', 'ресурс', 'изображение', 'адио-', 'видеофайл', 'архив', 'т.п.', 'отсылать', 'байт', 'код', 'java', 'апплет'], ['принимать', 'конкретный', 'информация', 'пользователь', 'результат', 'заполнение', 'активный', 'форма', 'статистический', 'информация', 'запросить', 'cgi', 'скрипт', 'осуществлять', 'заполнение', 'база', 'принимать', 'сообщение', 'пользователь', 'регламентировать', 'доступ', 'ресурс', 'web', 'узел', 'основа', 'анализ', 'принять', 'информация', 'проверка', 'пароль', 'т.п.', 'принимать', 'информация', 'пользователь', 'зависимость', 'динамически', 'формировать', 'html_страница', 'vrml', 'документ', 'обращаться', 'база', 'существовать', 'web', 'узел', 'html_страница', 'vrml', 'документ'], ['клиент', 'получить', 'ответ', 'web', 'сервер', 'осуществлять', 'следующий', 'операция', 'визуализирует', 'html_страница', 'vrml', 'документ', 'окно', 'броузер', 'интерпретировать', 'команда', 'javascript', 'модифицировать', 'образ', 'html_страница', 'т.п.', 'интерпретировать', 'байт', 'код', 'java', 'апплет', 'позволять', 'загружать', 'выполнять', 'активный', 'приложение', 'вести', 'диалог', 'пользователь', 'заполнять', 'форма', 'создавать', 'новый', 'запрос', 'web', 'сервер', 'помощь', 'утилита', 'воспроизводить', 'код', 'аудио', 'видео', 'файл', 'поддерживать', 'мультимедийный', 'средство', 'обеспечивать', 'моделирование', 'виртуальный', 'реальность', 'просматривать', 'vrml', 'документ'], ['перечисленный', 'задача', 'web', 'клиент', 'обеспечиваться', 'возможность', 'броузер', 'специализированный', 'программный', 'обеспечение', 'утилит', 'разместить', 'рабочий', 'станция', 'клиент'], ['отметить', 'факт', 'жёсткий', 'стандарт', 'построение', 'web', 'клиент', 'компонентный', 'состав', 'различаться'], ['сегодняшний', 'день', 'известный', 'широко', 'применяться', 'три', 'основный', 'технология', 'создание', 'интерактивный', 'взаимодействие', 'пользователь', 'web'], ['первый', 'путь', 'заключаться', 'использование', 'стандартный', 'интерфейс', 'шлюз', 'commom', 'gateway', 'interface', 'cgi'], ['второй'], [], ['включение', 'javascript', 'сценарий', 'тело', 'web', 'страница'], ['мощный', 'предоставлять', 'практически', 'неограниченный', 'возможность', 'способ', 'применение', 'технология', 'java', 'ипользование', 'java', 'аплетов'], ['cgi', 'механизм', 'выбор', 'обработка', 'форматирование', 'информация'], ['возможность', 'взаимодействие', 'обеспечивать', 'cgi', 'предоставляться', 'многих', 'форма', 'основный', 'динамический', 'доступ', 'информация', 'содержаться', 'база'], ['узел', 'применять', 'cgi', 'пользователь', 'запрашивать', 'база', 'получать', 'ответ', 'вид', 'динамически', 'сформировать', 'web', 'страница', 'рис.17'], ['имеются', 'вид', 'узел', 'предоставлять', 'доступ', 'база', 'средство', 'поиск', 'информационный', 'система', 'предавать', 'сообщение', 'ответ', 'ввод', 'пользователь'], ['узел', 'использовать', 'cgi', 'принять', 'ввод', 'пользователь', 'передать', 'сервер', 'web', 'база'], ['база', 'обрабатывать', 'запрос', 'возвращать', 'ответ', 'сервер', 'очередь', 'пересылать', 'броузер', 'отображение'], ['сgi', 'база', 'смочь'], ['интерфейс', 'считать', 'посредник', 'броузер', 'сервер', 'информация', 'передаваться'], ['отличие', 'html', 'cgi', 'являться', 'язык', 'описание', 'документ'], ['язык', 'стандарт'], ['определять', 'сервер', 'web', 'передавать', 'информация', 'использовать', 'приложение', 'исполнять', 'сервер'], ['способ', 'расширение', 'возможность', 'сервер', 'web', 'преобразование'], ['броузер', 'web', 'обращаться', 'вспомогательный', 'приложение', 'обработка', 'информация', 'понимать', 'cgi', 'предоставлять', 'сервер', 'web', 'возможность', 'преложить', 'работа', 'приложение', 'база', 'средство', 'поиск'], ['написание', 'программа', 'шлюз', 'конвертировать', 'ввод', 'система', 'другую', 'cgi', 'позволять', 'использовать', 'язык', 'программирование'], ['способность', 'использовать', 'написание', 'программа', 'шлюз', 'язык', 'язык', 'сценарий', 'чрезвычайно', 'важный'], ['самыми', 'популярный', 'язык', 'являться', 'shell', 'perl', 'c', 'с++'], ['сценарием', 'традиционно', 'называть', 'программа', 'выполняться', 'помощь', 'интерпретатор', 'выполнять', 'каждый', 'строка', 'программа', 'мера', 'считывание'], ['последовательность', 'действие', 'взаимодействие', 'клиент', 'программа', 'запустить', 'web', 'сервер', 'сформулировать', 'следующий', 'последовательность', 'шаг'], ['броузер', 'принимать', 'ввести', 'пользователь', 'информация', 'правило', 'помощь', 'фора'], ['броузер', 'помещать', 'ввести', 'пользователь', 'информация', 'url', 'указывать', 'имя', 'местоположение', 'сценарий', 'cgi', 'требоваться', 'ввести', 'действие'], ['броузер', 'подключаться', 'сервер', 'web', 'запрашивать', 'url'], ['сервер', 'определять', 'url', 'ввести', 'действие', 'сценарий', 'cgi', 'запускать', 'указать', 'сценарий'], ['сценарий', 'cgi', 'выполняться', 'обрабатывать', 'передавать'], ['сценарий', 'cgi', 'динамически', 'формировать', 'web', 'страница', 'возвращать', 'результат', 'сервер'], ['сервер', 'возвращать', 'результат', 'клиент'], ['броузер', 'отображать', 'результат', 'пользователь', 'являться', 'упростить', 'схема', 'взаимодействие', 'броузер', 'сервер', 'сценарий', 'cgi'], ['больший', 'популярность', 'cgi', 'сценарий', 'найти', 'использование', 'качество', 'обработчик', 'форма', 'средство', 'доступ', 'база', 'средство', 'осуществление', 'локальный', 'глобальный', 'поиск', 'шлюзовый', 'протокол'], ['больший', 'мощь', 'реализация', 'клиентский', 'программный', 'обеспечение', 'обладать', 'аплеты', 'программа', 'написать', 'язык_java'], ['узкий', 'смысл', 'слово', 'java', 'объектный', 'ориентированный', 'язык', 'напоминать', 'c++', 'простой', 'освоение', 'использование'], ['широкий', 'смысл', 'java', 'целый', 'технология', 'программирование', 'изначально', 'рассчитать', 'интеграция', 'web', 'сервис', 'использование', 'сетевой', 'среда'], ['web', 'навигатор', 'существовать', 'практически', 'аппаратно', 'программный', 'платформа', 'java', 'среда', 'мобильный', 'идеал', 'полностью', 'независимый', 'платформа'], ['цель', 'решение', 'перечислить', 'проблема', 'принять', 'интеграция', 'web', 'навигатор', 'два', 'важный', 'постулат'], ['специфицировать', 'виртуальный', 'java', 'машина', 'jvm', 'выполняться', 'интерпретироваться', 'java', 'программа'], ['определить', 'архитектура', 'представление', 'элемент', 'система', 'команда', 'java', 'машина'], ['исходный', 'java', 'текст', 'транслироваться', 'код', 'машина'], ['самым', 'появление', 'новый', 'аппаратно', 'программный', 'платформа', 'портировании', 'нуждаться', 'java', 'машина', 'программа', 'написать', 'java', 'пойти', 'изменение'], ['определить', 'редактирование', 'внешний', 'связь', 'java', 'программа', 'работа', 'web', 'навигатор', 'прозрачный', 'пользователь', 'образ', 'осуществляться', 'поиск', 'необходимый', 'объект', 'локальный', 'машина', 'компьютер', 'доступный', 'сеть', 'частность', 'www', 'сервер'], ['найденные', 'объект', 'загружаться', 'метод', 'выполняться', 'машина', 'пользователь'], ['несомненно', 'два', 'сформулировать', 'положение', 'существовать', 'тесный', 'связь'], ['компилировать', 'среда', 'трудный', 'абстрагироваться', 'аппаратный', 'особенность', 'компьютер', 'трудный', 'реализовать', 'прозрачный', 'динамический', 'загрузка', 'сеть'], ['сторона', 'приём', 'объект', 'извне', 'требовать', 'повышенный', 'осторожность', 'работа', 'java', 'программа'], ['принимать', 'мера', 'безопасность', 'интерпретировать', 'компилировать', 'среда'], ['мобильность', 'динамизм', 'безопасность', 'спутник', 'интерпретатор', 'компилятор'], ['принять', 'решение', 'делать', 'java', 'среда', 'идеальный', 'средство', 'разработка', 'интерактивный', 'клиентский', 'компонент', 'апплет', 'web', 'система'], ['отметить', 'прозрачный', 'пользователь', 'динамический', 'загрузка', 'объект', 'сеть'], ['вытекать', 'важный', 'достоинство', 'нулевой', 'стоимость', 'администрирование', 'клиентский', 'система', 'написать', 'java'], ['достаточный', 'обновить', 'версия', 'объект', 'сервер', 'клиент', 'автоматически', 'получить', 'старый', 'вариант'], ['реальный', 'работа', 'развить', 'сетевой', 'инфраструктура', 'практически', 'невозможный'], ['стандартный', 'реляционный', 'доступ', 'данным', 'важный', 'программа', 'java', 'java', 'апплет', 'природа', 'являться', 'монолитный', 'самодостаточный', 'программа'], ['модульный', 'апплет', 'получать', 'информация', 'хранилище', 'обрабатывать', 'записывать', 'обратно', 'последующий', 'обработка', 'апплет'], ['монолитный', 'программа', 'позволить', 'собственный', 'схема', 'обработка', 'java', 'апплет', 'пересекать', 'граница', 'операционный', 'система', 'компьютерный', 'сеть', 'нуждаться', 'опубликование', 'открытый', 'схема', 'доступ', 'данным'], ['интерфейс', 'jdbc', 'java', 'database', 'connectivity', 'связанность', 'база', 'java', 'являться', 'первый', 'попытка', 'реализация', 'доступ', 'данным', 'программа', 'java', 'зависеть', 'платформа', 'база'], ['версия', 'jdk', '1.1', 'jdbc', 'являться', 'составной', 'часть', 'основный', 'java', 'api'], ['jdbc', 'набор', 'реляционный', 'объект', 'метод', 'взаимодействие', 'источник'], ['программа', 'язык_java', 'открывать', 'связь', 'таблица', 'создавать', 'объект', 'оператор', 'передавать', 'оператор_sql', 'система', 'управление', 'база', 'получать', 'результат', 'служебный', 'информация'], ['типичный', 'случай', 'файл', '.class', 'jdbc', 'апплет', 'приложение', 'язык_java', 'находиться', 'компьютер', 'клиент'], ['загрузить', 'сеть', 'минимизация', 'задержка', 'время', 'выполнение', 'лучше', 'класс', 'jdbc', 'клиент'], ['система', 'управление', 'база', 'cубд', 'источник', 'расположены', 'удалённый', 'сервер'], ['рисунок', '19', 'показать', 'различный', 'вариант', 'реализация', 'связь', 'jdbc', 'база'], ['апплет', 'приложение', 'взаимодействовать', 'jdbc', 'система', 'клиент', 'драйвер', 'отвечать', 'обмен', 'информация', 'база', 'сеть'], ['класс', 'jdbc', 'находиться', 'пакет', 'java.sql'], [], ['программа', 'java', 'использовать', 'объект', 'метод', 'пакет', 'чтение', 'запись', 'источник'], ['программа', 'использовать', 'jdbc', 'требоваться', 'драйвер', 'источник', 'взаимодействовать'], ['драйвер', 'написать', 'другом', 'java', 'язык', 'программирование', 'являться', 'программа', 'язык_java', 'общаться', 'сервер', 'использовать', 'rpc', 'remote', 'procedure', 'call', 'удалённый', 'вызов', 'процедура', 'http'], ['оба', 'схема', 'привести', 'рис.19'], ['драйвер', 'jdbc', 'библиотека', 'другом', 'java', 'программа', 'сопряжение', 'odbc', 'jdbc', 'класс', 'java', 'общаться', 'сеть', 'сервер', 'база', 'использовать', 'rpc', 'http'], ['допускаться', 'приложение', 'дело', 'несколько', 'источник', 'неоднородный'], ['причина', 'jdbc', 'диспетчер', 'драйвер', 'чей', 'обязанность', 'заключаться', 'управление', 'драйвер', 'предоставление', 'программа', 'список', 'загрузить', 'драйвер'], ['словосочетание', 'база', 'входить', 'расшифровка', 'аббревиатура', 'jdbc', 'форма', 'содержание', 'расположение', 'интересовать', 'программа', 'java', 'использовать', 'jdbc', 'существовать', 'драйвер', 'данным'], ['сопряжение', 'jdbc', 'odbc', 'качество', 'составной', 'часть', 'jdbc', 'поставляться', 'драйвер', 'доступ', 'jdbc', 'источник', 'odbc', 'open', 'database', 'connectivity', 'называться', 'программа', 'сопряжение', 'jdbc', 'odbc'], ['программа', 'сопряжение', 'реализовать', 'вид', 'jdbcodbc.class', 'являться', 'библиотека', 'доступ', 'драйвер', 'odbc'], ['jdbc', 'конструктивно', 'близкий', 'odbc', 'программа', 'сопряжение', 'являться', 'несложный', 'надстройка', 'jdbc'], ['внутренний', 'уровень', 'драйвер', 'отображать', 'метод', 'java', 'вызов', 'odbc', 'самым', 'взаимодействовать', 'любой', 'odbc', 'драйвер'], ['достоинство', 'программа', 'сопряжение', 'состоять', 'jdbc', 'доступ', 'любой', 'база', 'odbc', 'драйвер', 'распространены', 'широко'], ['соответствие', 'правило', 'internet', 'jdbc', 'идентифицировать', 'база', 'помощь', 'url', 'форма', 'jdbc:<субпротокол>:<имя', 'связать', 'субд', 'протокол', '>', 'база', 'internet', 'intranet', 'имя', 'содержать', 'сетевой', 'url', '//<имя', 'хоста>:<порт>/', '<', 'субпротокол', '>', 'любой', 'имя', 'понимать', 'база'], ['имя', 'субпротокола', 'odbc', 'зарезервированно', 'источник', 'формат', 'odbc'], ['типичный', 'jdbc', 'url', 'база', 'odbc', 'выглядеть', 'следующий', 'образ', 'jdbc', 'odbc:<dns', 'имя', 'odbc>;user=<имя', 'пользователь', '>', 'pw=<пароль', '>', 'внутренний', 'устройство', 'jdbc', 'приложение', 'обработать', 'информация', 'база', 'информационный', 'обучать', 'система', 'язык_java', 'выполнять', 'ряд', 'шаг'], ['рис.20', 'показать', 'основной', 'объект', 'jdbc', 'метод', 'последовательность', 'выполнение', 'первых', 'программа', 'вызывать', 'метод', 'getconnection', 'получить', 'объект', 'connection'], ['создавать', 'объект', 'statement', 'подготавливать', 'оператор_sql'], ['оператор_sql', 'выполнить', 'немедленно', 'объект', 'statement', 'откомпилировать', 'объект', 'preparedstatement', 'представить', 'вид', 'вызов', 'процедура', 'объект', 'callablestatement'], ['выполняться', 'метод', 'executequery', 'возвращаться', 'объект', 'resultset'], ['оператор_sql', 'updatе', 'delete', 'возвращать', 'resultset'], ['оператор', 'использоваться', 'метод', 'executeupdate'], ['возвращать', 'целый', 'указывать', 'количество', 'ряд', 'затронуть', 'оператор_sql'], ['resultset', 'содержать', 'ряд', 'анализируетcя', 'метод', 'next'], ['приложение', 'обрабатывать', 'транзакция', 'пользоваться', 'метод', 'rollback', 'commit', 'отмена', 'подтверждение', 'изменение', 'внести', 'оператор_sql'], ['пример', 'запрос', 'модификация', 'база', 'использование', 'jdbc', 'пример', 'иллюстрировать', 'помощь', 'sql', 'опрератора', 'select', 'составляться', 'список', 'студент', 'база'], ['приводиться', 'шаг', 'необходимый', 'выполнение', 'задание', 'помощь', 'api', 'jdbc'], ['шаг', 'форма', 'текст', 'язык_java', 'комментариями'], ['описать', 'метод', 'переменный', 'public', 'void', 'liststudents', 'throws', 'sqlexception', 'int', 'i', 'noofcolumns', 'string', 'stno', 'stfname', 'stlname', 'инициализировать', 'загрузить', 'драйвер', 'jdbc', 'odbc', 'class.forname', 'jdbc.odbc', 'jdbcodbcdriver', 'создать', 'объект', 'connection', 'connection', 'ex1con', '=', 'drivermanager.getconnection', 'jdbc', 'odbc', 'studentdb;uid=\"admin\";pw=\"sa', 'создать', 'простой', 'объект', 'statement', 'statement', 'ex1stmt', '=', 'ex1con.createstatement', 'создать', 'строка', 'sql', 'передать', 'субд', 'выполнить', 'sql', 'оператор', 'resultset', 'ex1rs', '=', 'ex1stmt.executequery', 'select', 'studentnumber', 'firstname', 'lastname', 'from', 'students', 'обработать', 'ряд', 'вывести', 'результат', 'консоль', 'system.out.println', 'student', 'number', 'first', 'name', 'last', 'name', 'while', 'ex1rs.next', 'stno', '=', 'ex1rs.getstring', '1', 'stfname', '=', 'ex1rs.getstring', '2', 'stlname', '=', 'ex1rs.getstring', '3', 'system.out.println', 'stno', 'stfname', 'stlname', 'следующий', 'пример', 'поле', 'firstname', 'таблица', 'students', 'изменяться'], ['доступ', 'осуществляться', 'поле', 'studentnumber'], ['описать', 'метод', 'переменный', 'параметр', 'public', 'void', 'updatestudentname', 'string', 'stfname', 'string', 'stlname', 'string', 'stno', 'throws', 'sqlexception', 'int', 'retvalue', '//инициализировать', 'загрузить', 'драйвер', 'jdbc', 'odbc', 'class.forname', 'jdbc.odbc', 'jdbcodbcdriver', 'создать', 'объект', 'connection', 'connection', 'ex1con', '=', 'drivermanager.getconnection', 'jdbc', 'odbc', 'studentdb;uid=\"admin\";pw=\"sa', 'создать', 'простой', 'объект', 'statement', 'statement', 'ex1stmt', '=', 'ex1con.createstatement', 'создать', 'строка', 'sql', 'передать', 'субд', 'выполнить', 'sql', 'оператор', 'string', 'sqlbuffer', '=', 'update', 'students', 'set', 'firstname', '=', '+', 'stfname', '+', 'lastname', '=', '+', 'stlname', '+', 'where', 'studentnumber', '=', '+', 'stno', 'retvalue', '=', 'ex1stmt.executeupdate', 'sqlbuffer', 'system.out.println', 'модифицированно', '+', 'retvalue', '+', 'строка', 'база', 'рис.21'], ['интерфейс', 'регистрация', 'пользователь', 'аис'], ['образ', 'взаимодействие', 'база', 'java', 'отличаться', 'простота', 'гибкость', 'связать', 'эффективный', 'реализация', 'jdbc', 'api'], ['сочетание', 'природный', 'платформо', 'независимость', 'java', 'предоставлять', 'уникальный', 'инструмент', 'создание', 'интерактивный', 'распределить', 'информационный', 'обучающих', 'система', 'база', 'internet', 'intranet', 'технология'], ['основный', 'сложность', 'реализация', 'корпоративный', 'система', 'база', 'архитектура', 'являться', 'отсутствие', 'многих', 'популярный', 'приложение', 'средство', 'разработка', 'реализовать', 'вид', 'java', 'аплетов', 'относительный', 'высокий', 'время', 'компиляция', 'аплетов', 'клиентский', 'место', 'временно', 'вопрос', 'безопасный', 'работа', 'сеть'], ['2.2.1'], ['сравнительные', 'исследование', 'типовой', 'серверный', 'платформа'], ['выбирать', 'платформа', 'аис', 'учитывать', 'множество', 'аспект'], ['решение', 'влиять', 'соображение', 'связать', 'надёжность', 'кластеризация', 'балансировка', 'нагрузка', 'среда', 'разработка', 'работа', 'содержание', 'узел', 'защита', 'информация'], ['результат', 'тестирование', 'различный', 'платформа', 'широко', 'представить', 'периодический', 'печать', 'представить', 'обобщение', 'материал', 'тестирование'], ['проведение', 'испытание', 'оцениваться', 'solaris', '2.6', 'windows_nt', 'server', '4', 'red', 'hat', 'linux', '6.02', 'ядро', '2.2.11', 'эксплуатация', 'четыре', 'web', 'сервер', 'занимать', 'ведущий', 'позиция', 'мир', 'microsoft', 'internet', 'information', 'server', '4', 'iis', 'netscape_enterprise', 'server', '3.61', 'web', 'server', '2.1', 'корпорация', 'sun', 'stronghold', 'web', 'server', '2.4.1', 'популярный', 'вариант', 'web', 'сервер', 'apache', 'функция', 'защита', 'несанкционированный', 'доступ', 'тест', 'использоваться', 'триал', 'версия', 'указать', 'программный', 'обеспечение'], ['платформа', 'испытать', 'помощь', 'новый', 'версия', 'эталонный', 'тест', 'webbench', 'отделение', 'ziff', 'davis', 'benchmark', 'operation'], ['2.2.1.2'], ['особенность', 'функционирование', 'аис', 'платформа', 'sun'], ['solaris', 'современный', 'операционный', 'система', 'unix', 'клон'], ['примечательный', 'опережать', 'время', 'позволять', 'работать', '64-разрядными', 'прикладной_программа', 'собственный', 'расширение', 'помогать', 'выдерживать', 'высокий', 'пользовательский', 'нагрузка', 'web', 'узел', 'интенсивный', 'обмен', 'информация'], ['solaris', 'предусмотреть', 'замечательный', 'возможность', 'применение', 'серверный', 'прикладной_программа', 'средство', 'разработка', 'сторонний', 'производитель'], ['ключевой', 'момент', 'понимание', 'различие', 'платформа', 'linux', 'microsoft', 'sun', 'способ', 'серверный', 'программа', 'каждый', 'обрабатывать', 'большой', 'число', 'подключение'], ['делаться', 'многопотоковом', 'режим'], ['многопотоковый', 'режим', 'возникать', 'прикладной_программа', 'называть', 'процесс', 'содержать', 'множество', 'небольшой', 'блок', 'исполняемого', 'код', 'работать', 'независимо', 'друг', 'друга', 'одновременно', 'разный', 'процессорах'], ['поток', 'совместно', 'пользоваться', 'ресурс', 'представлять', 'способ', 'организация', 'программа', 'позволять', 'одновременно', 'выполнять', 'задача'], ['модель', 'поток', 'solaris', 'весьма', 'сложный'], ['состоять', 'поток', 'уровень', 'ядро', 'kthreads', 'реальный', 'объект', 'передавать', 'отдельный', 'процессор', 'поток', 'пользовательский', 'уровень', 'промежуточный', 'структура', 'называть', 'облегченным', 'lightweight', 'процесс'], ['позволять', 'тонко', 'управлять', 'структура', 'прикладной_программа', 'реализация', 'прикладной', 'многозадачность'], ['stronghhold', 'платформа', 'solaris', 'создатель', 'web', 'сервер', 'stronghold', 'apache', 'основа', 'stronghold', 'считать', 'многопотоковые', 'программа', 'надёжный', 'монолитный'], ['различие', 'стратегия', 'объяснять', 'значительный', 'расхождение', 'показатель', 'производительность', 'sun', 'web', 'server', '2.1', 'netscape_enterprise', 'использовать', 'второй', 'процессор', 'установить', 'испытательный', 'система'], ['stronghold', 'зависимость', 'прикладной', 'столь', 'эффективно', 'использовать', 'оборудование', 'sun', 'содержать', '64', 'процессор'], ['netscape', 'платформа', 'solaris', 'netscape_enterprise', 'server', '3.61', 'web', 'сервер', 'избрать', 'реализация', 'большинство', 'крупный', 'узел', 'основа', 'solaris', 'число', 'корпорация', 'sun'], ['инструментальный', 'средство', 'фирма', 'netscape', 'предлагать', 'независимый', 'производитель', 'способствовать', 'разработка', 'сложный', 'прикладной_программа', 'web', 'помощь', 'сценарий', 'язык', 'javascript', 'corba', 'java'], ['важный', 'система', 'стоить', 'добротный', 'программа', 'web', 'сервер', 'netscape', 'сервер', 'прикладной_программа', 'netscape', 'application', 'server', 'nas'], ['сервер', 'nas', 'среда', 'программирование', 'объект', 'язык', 'c++', 'java', 'обеспечивать', 'масштабируемость', 'устойчивость', 'сбой', 'прикладной_программа'], ['nas', 'иметься', 'инструмент', 'создание', 'многоуровневый', 'программа', 'объединять', 'html', 'запрос', 'база', 'сервер', 'nas'], ['sun', 'web', 'server', 'sun', 'web', 'server', 'sws', 'обеспечивать', 'разработка', 'программа', 'язык_java'], ['sws', 'использовать', 'сервлеты', 'разнообразный', 'возможность', 'corba'], ['сервлеты', 'servlet', 'java', 'программа', 'запускать', 'сервер', 'cgi', 'передавать', 'сверстанные', 'html_страница', 'браузер'], ['сервлет', 'существовать', 'собственный', 'api', 'функция', 'рабочий', 'среда', 'сервер'], ['sws', 'предусмотреть', 'возможность', 'использование', 'серверный', 'java', 'страница', 'java', 'server', 'pages', 'способ', 'обращение', 'серверный', 'функция', 'java', 'страница', 'web', 'cgi', 'программа'], ['соответствующий', 'использование', 'web', 'сервер', 'платформа', 'solaris', 'операционный', 'система', 'многопроцессорный', 'станция', 'превосходить', 'производительность', 'windows_nt'], ['результат', 'достигнуть', 'sun', 'microsystems', 'использование', 'solaris', 'network', 'cache', 'and', 'accelerator', 'snca', 'мощный', 'механизм', 'кэширование', 'web', 'сервер'], ['sws', 'победить', 'испытание', 'обслуживание', 'статический', 'страница'], ['выполнение', 'динамический', 'cgi', 'испытание', 'netscape', 'платформа', 'solaris', 'превзойти', 'sws', 'iis', 'windows_nt'], ['2.2.1.3'], ['особенность', 'функционирование', 'аис', 'платформа', 'microsoft'], ['microsoft', 'windows_nt', 'server', 'windows_nt', '4', 'server', 'internet', 'information', 'server', 'iis', 'являться', 'исключительно', 'коммерческой', 'web', 'платформа', 'разработать', 'компания', 'microsoft'], ['ос', 'удобный', 'интуитивно', 'понятный', 'интерфейс', 'взаимодействие', 'пользователь', 'делать', 'привлекательный', 'использование'], ['windows_nt', '4', 'server', 'оснастить', 'служба', 'балансировка', 'нагрузка', 'windows_nt', 'load', 'balancing', 'services', 'позволять', 'создавать', 'группа', 'сервер', 'распределять', 'нагрузка'], ['пользователь', 'видеть', 'ip', 'адрес', 'полагать', 'существовать', 'сервер'], ['служба', 'load', 'balancing', 'services', 'неполноценный', 'кластерный', 'система', 'способный', 'обеспечить', 'высокий', 'быстродействие', 'кластер'], ['windows_nt', 'работать', 'мощный', 'аппаратный', 'программный', 'средство', 'кластер', 'число', 'собственный', 'служба', 'microsoft', 'cluster', 'service', 'продукт', 'серия', 'infinity', 'компания', 'ibm', 'продукт', 'nonstop', 'производство', 'compaq'], ['microsoft', 'продукт', 'этап', 'разработка', 'web', 'заменять', 'изделие', 'фирма'], ['пакет', 'allaire', 'coldfusion', '4.0', 'среда', 'разработка', 'web', 'отличный', 'пример'], ['netscape_enterprise', 'платформа', 'windows_nt', 'netscape_enterprise', 'среда', 'windows_nt', 'представлять', 'web', 'сервер', 'ориентировать', 'больший', 'нагрузка'], ['иметься', 'множество', 'модель', 'программирование'], ['общепринятый', 'модель', 'разработка', 'html', 'cgi', 'продукт', 'netscape', 'предусмотреть', 'возможность', 'работа', 'javascript', 'сторона', 'сервер'], ['функция', 'сервер', 'netscape', 'solaris', 'работать', 'платформа', 'windows_nt'], ['тестирование', 'производительность', 'iis', 'показать', 'неплохой', 'результат'], ['скорость', 'работа', 'iis', 'достигнуть', 'счёт', 'организовать', 'обработка', 'файловый', 'ввод', 'вывод'], ['дополнять', 'обработка', 'сообщение', 'windows_nt', 'возможность', 'асинхронный', 'ввод', 'вывод', 'позволять', 'обрабатывать', 'запрос', 'одновременно', 'выполнение', 'операция', 'ввод', 'вывод', 'файл', 'лвс'], ['функция', 'иметься', 'solaris', 'полностью', 'реализовать', 'linux'], ['результат', 'тест', 'iis', 'проигрывать', 'sww', 'обработка', 'статический', 'страница', 'netscape_enterprise', 'платформа', 'nt', 'оказаться', 'производительный', 'режим', 'платформа', 'solaris'], ['2.2.1.4'], ['особенность', 'функционирование', 'аис', 'основа', 'linux', 'расти', 'популярность', 'linux', 'респектабельность', 'платформа', 'разработка', 'web', 'корпоративный', 'среда'], ['linux', 'характеризоваться', 'преимущество', 'широкий', 'сообщество', 'разработчик', 'открытый', 'код', 'поддержка', 'многих', 'модель', 'комплектующих', 'главный', 'особенность', 'состоять', 'linux', 'полностью', 'бесплатный', 'ос'], ['linux', 'являться', 'разновидность', 'unix', 'изначально', 'создаваться', 'работа', 'сеть'], ['каждый', 'новый', 'версия', 'linux', 'появляться', 'усовершенствование', 'направить', 'повышение', 'масштабируемость', 'производительность', 'серверный', 'прикладной_программа'], ['apache', 'stronghold', 'тест', 'среда', 'linux', 'использовать', 'stronghold', 'web', 'server', '2.4.1', 'компания', 'c2net'], ['stronghold', 'сервер', 'возможность', 'применение', 'технология', 'ssl', 'основа', 'лежать', 'web', 'сервер', 'apache'], ['сервер', 'stronghold', 'обладать', 'преимущество', 'apache', 'число', 'мощный', 'средство', 'обеспечение', 'работа', 'виртуальный', 'базовый', 'машина', 'способность', 'web', 'сервер', 'обслуживать', 'машина', 'одновременно'], ['платформа', 'stronghold', 'linux', 'заслужить', 'репутация', 'надёжный', 'стабильный', 'система'], ['stronghold', 'следовательно', 'apache', 'оптимизировать', 'многопроцессорный', 'среда'], ['web', 'узел', 'основать', 'сервер', 'apache', 'хороший', 'масштабировать', 'путем', 'добавление', 'сервер', 'процессор'], ['iis', 'netscape_enterprise', 'иметь', 'многопотоковую', 'архитектура', 'масштабируется', 'процессор', 'сервер'], ['испытание', 'многопроцессорный', 'станция', 'правило', 'обгонять', 'stronghold'], ['apache', 'позволять', 'тонко', 'настраивать', 'ряд', 'параметр', 'число', 'процесс', 'доступный', 'клиент'], ['apache', 'сервер', 'механизм', 'работа', 'сервлетам', 'apache', 'jserv'], ['механизм', 'работа', 'сервлетами', 'встраиваться', 'apache', 'вид', 'модуль', 'работать', 'совместимой', 'jdk', '1.1', 'виртуальный', 'java', 'машина'], ['производительность', 'дуэт', 'apache', 'linux', 'оказаться', 'оптимальный', 'однопроцессорных', 'система'], ['обработка', 'статический', 'страница', 'уступать', 'sww', 'iis', 'стабильность', 'работа', 'превосходить', 'сервер', 'платформеwindows', 'nt'], ['linux', 'функциональность', 'unix', '+', 'пользовательско', 'ориентированный', 'интерфейс', 'windows', 'система'], ['больший', 'часть', 'поддерживаемого', 'linux', 'оборудование', 'пользователь', 'реально', 'иметь'], ['результат', 'оказаться', 'больший', 'часть', 'популярный', 'периферия', '80386/80486', 'поддерживаться', 'linux', 'поддерживать', 'оборудование', 'ряд', 'случай', 'поддерживать', 'коммерческий', 'unix'], ['достаточно', 'экзотический', 'устройство', 'поддерживаться'], ['важный', 'вопрос', 'создание', 'аис', 'являться', 'обеспечение', 'жизнестойкость', 'надёжность', 'работа', 'информационный', 'сервер'], ['качество', 'иллюстрация', 'эффективность', 'платформа', 'привести', 'расчёт', 'параметр', 'сервер', '25000', 'посетитель', 'день'], ['подсчёт', 'загрузка', '24ч*60мин*60', 'сек=86400', 'секунда', 'сутках', 'посетитель', 'брать', 'сервер', '10', 'документ', '.html', '+', 'график', 'равномерный', 'распределение', 'загрузка', 'получаться', '3', 'обращение', 'сервер', 'секунда'], ['реальный', 'распределение', 'трафик', 'носить', 'характер', 'кривой', 'гаусс', 'синусоида', 'зависимость', 'содержание', 'сервер', 'максимум', 'загрузка', 'достигать', '10', '20', 'обр', 'с.', 'нормальный', 'работа', 'сервер', '400', 'mb', 'ram', 'хороший', 'настройка', '200'], ['правильный', 'конфигурация', 'сервер', 'рекомендоваться', 'использовать', 'swap'], ['помещаться', 'оперативный', 'память', 'иметься', 'ввиду', 'сервер', 'swap', 'область', 'обязать', 'пустой'], ['предотвращение', 'перегрузка', 'рекомендоваться', 'пользоваться', 'несколько', 'правило', 'снижать', 'загрузка', 'сервер'], ['придерживаться', 'правило', 'съэкономить', '30', 'ресурс', 'сервер'], ['статический', 'информация', 'ставить', 'last', 'modified', 'атрибут', 'выдача', 'cgi', 'скрипт', 'документ', 'временной', 'штамп', 'сохраняться', 'локальный', 'кэш', 'постоянно', 'перезаписывается', 'просмотр'], ['cgi', 'программа', 'хранить', 'каталог', '/cgi', 'bin/', 'т.к.', 'proxy', 'серверы', 'кэшировать', 'файл', 'находиться', 'каталог', 'раз', 'вынуждены', 'обращаться', 'сервер'], ['устанавливать', 'поле', 'last', 'modified', 'русский', 'apache', 'автоматический', 'определение', 'кодировка', 'proxy', 'сервер', 'оставаться', 'файл', 'некорректный', 'кодировка'], ['применять', 'авторедирект', 'чарсету', 'русский', 'apache'], ['использовать', 'фрейм', 'т.к.', 'файл', 'появляться', 'минимум', '3'], ['использовать', 'анимированные', '.gif', 'т.к.', 'nn', 'обращаться', 'сервер', 'каждый', 'цикл'], ['404', 'код', 'делать', 'cgi', 'скрипт', '404', 'код', 'делать', 'красивый', 'графический', 'изображение', 'указание', 'прочие', 'раздел', 'т.к.', 'сойти', 'ум', 'робот', 'собирать', 'невероятный', 'количество', '404', 'ошибка', 'зацикливаясь', 'веко'], ['создать', 'сервер', 'файл', 'robot.txt', 'т.к.', 'запрашиваемый', 'документ', 'сервер', 'порождать', 'масса', '404', 'см.', 'п.', '7'], ['разумный', 'робот', 'слушаться', 'запрет', 'файл', 'уменьшать', 'нагрузка', 'сервер'], ['ставить', 'баннер', 'страница', 'т.к.', 'баннер', 'сверху', 'отнимать', '1', '2', 'реквеста', '4-х', 'итог', 'грузиться', 'вперёд', 'тормозить', 'сайтовый', 'картинка'], ['вызов', 'баннер', 'обращаться', 'раз', 'cgi', 'подставлять', 'случайный', 'число', 'число', 'сделать', 'получить', 'дата', 'javascript'], ['вызывать', 'баннер', 'программа', 'си', 'т.к.', 'perl', 'работать', 'медленный'], ['машина', 'размещаться', 'информационный', 'сервер', 'одновременно', 'почта', 'и др.'], ['сервис'], ['сегодня', 'архитектура', 'internet', 'intranet', 'число', 'платформа', 'linux', 'использоваться', 'построение', 'корпоративный', 'ис', 'решение', 'задача', 'автоматизация', 'управление', 'банк', 'управление', 'проектирование', 'управление', 'тп', 'асу', 'тп', 'электронный', 'коммерция', 'оперативный', 'информация', 'курс', 'валюта', 'акция', 'т.п.']]"
        ]
       ],
       "shape": {
        "columns": 4,
        "rows": 41
       }
      },
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>doc</th>\n",
       "      <th>text</th>\n",
       "      <th>type</th>\n",
       "      <th>prep_text</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>tz_01.doc</td>\n",
       "      <td>2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1 Общие сведения\\...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[2.2, техническое, задание, 2.2.1, общий, све...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>tz_02.doc</td>\n",
       "      <td>2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1 Общие сведения\\...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[2.2, техническое, задание, 2.2.1, общий, све...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>tz_03.doc</td>\n",
       "      <td>2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\rОбщие сведения:\\rВ д...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[2.2], [техническое, задание, общий, сведение...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>tz_04.doc</td>\n",
       "      <td>ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1 ОБЩИЕ СВЕДЕНИЯ\\rИнт...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[техническое, задание, 2.2.1, общие, сведение...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>tz_05.doc</td>\n",
       "      <td>2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1 Общие сведения....</td>\n",
       "      <td>1</td>\n",
       "      <td>[[2.2, техническое, задание, 2.2.1, общий, све...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>tz_06.doc</td>\n",
       "      <td>2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\t\\r1.Общие сведения\\rП...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[2.2, техническое, задание, 1.общие, сведение...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>tz_07.doc</td>\n",
       "      <td>ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\rОбщие сведения\\rВ данном ...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[техническое, задание, общий, сведение, разде...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>tz_08.doc</td>\n",
       "      <td>Техническое задание\\r1 Общие сведения\\r1.1 Пол...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[технический, задание, 1, общий, сведение, 1....</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>tz_09.doc</td>\n",
       "      <td>2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1.\\rОбщие сведен...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[2.2], [техническое, задание, 2.2.1], [общий,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>tz_10.doc</td>\n",
       "      <td>2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1. Общие сведени...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[2.2], [техническое, задание, 2.2.1], [общий,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>tz_11.doc</td>\n",
       "      <td>2.2.\\tТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1.\\tОбщие сведе...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[2.2], [техническое, задание, 2.2.1], [общий,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>tz_12.doc</td>\n",
       "      <td>2.2\\tТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1\\tОбщие сведени...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[2.2, техническое, задание, 2.2.1, общий, све...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>tz_13.doc</td>\n",
       "      <td>2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1. Общие сведени...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[2.2], [техническое, задание, 2.2.1], [общий,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>tz_14.doc</td>\n",
       "      <td>ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\rРассмотрев общие требован...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[техническое, задание, рассмотреть, общий, тр...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>tz_15.doc</td>\n",
       "      <td>ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1. Общие сведения\\rПо...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[техническое, задание, 2.2.1], [общий, сведен...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>tz_16.doc</td>\n",
       "      <td>2.2\\tТехническое задание\\r2.2.1\\tОбщие сведени...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[2.2, технический, задание, 2.2.1, общий, све...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>tz_17.doc</td>\n",
       "      <td>2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ.\\r2.2.1 Общие сведения...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[2.2, техническое, задание], [2.2.1, общий, с...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>tz_18.doc</td>\n",
       "      <td>2.2. Техническое задание\\rОбщие сведения:\\rПол...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[2.2], [технический, задание, общий, сведение...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>tz_19.doc</td>\n",
       "      <td>2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1. Наименование ...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[2.2], [техническое, задание, 2.2.1], [наимен...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>tz_20.doc</td>\n",
       "      <td>2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1. Общие сведени...</td>\n",
       "      <td>1</td>\n",
       "      <td>[[2.2], [техническое, задание, 2.2.1], [общий,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>Архитектура, управляемая модель.doc</td>\n",
       "      <td>Архитектура, управляемая модель\\rАббревиатура ...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[архитектура, управляемая, модель, аббревиату...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>Введение в проектирование ИС.doc</td>\n",
       "      <td>1. ВВЕДЕНИЕ В ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИ...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[1], [введение, проектирование, информационны...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>Встроенные операторы SQL.doc</td>\n",
       "      <td>Встроенные операторы SQL. \\rКак было отмечено ...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[встроить, оператор, sql], [отметить, sql, st...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>Методологии разработки программного обеспечени...</td>\n",
       "      <td>Методологии разработки программного обеспечени...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[методология, разработка, программный_обеспеч...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>Методологии разработки программного обеспечени...</td>\n",
       "      <td>Методологии разработки программного обеспечени...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[методология, разработка, программный, обеспе...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>Методы композиции и декомпозиции.doc</td>\n",
       "      <td>Методы композиции и декомпозиции исполняемых U...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[метод, композиция_декомпозиция, исполнять, u...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>Модели представления данных в СУБД.doc</td>\n",
       "      <td>2.3.1. Исследование моделей информационного пр...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[2.3.1], [исследование, модель, информационны...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>Некоторые особенности проектирования.doc</td>\n",
       "      <td>Некоторые особенности проектирования под конкр...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[особенность, проектирование, конкретный, арх...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>Непроцедурный доступ к данным.doc</td>\n",
       "      <td>2.3.2.3 Непроцедурный доступ к данным (SQL).\\r...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[2.3.2.3, непроцедурный, доступ, данным, sql]...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>Процедурное расширение языка SQL.doc</td>\n",
       "      <td>Процедурное расширение языка SQL - PL/SQL.\\rOr...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[процедурный, расширение, язык, sql, pl_sql],...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>Системные объекты базы данных.doc</td>\n",
       "      <td>Системные объекты базы данных.\\rСловарь данных...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[системный, объект, база], [словарь], [первый...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>Технология создания распр ИС.doc</td>\n",
       "      <td>2. ТЕХНОЛОГИИ СОЗДАНИЯ РАСПРЕДЕЛЕННЫХ ИНФОРМАЦ...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[2], [технологии, создания, распределенных, и...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>Требования к проекту.doc</td>\n",
       "      <td>Требования к проекту\\rВведение\\rОтносительно с...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[требование, проект, введение, относительно, ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>Условия целостности БД.doc</td>\n",
       "      <td>2.1.1.3.1. Ограничительные условия, поддержива...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[2.1.1.3.1], [ограничительный, условие, подде...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>Характеристики СУБД.doc</td>\n",
       "      <td>2.2.2 Сравнительные характеристики SQL СУБД.\\r...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[2.2.2, сравнительные, характеристика, sql, с...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>Этапы разработки проекта1.doc</td>\n",
       "      <td>Этапы разработки проекта: заключительные стади...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[этап, разработка, проект, заключительные, ст...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>Этапы разработки проекта2.doc</td>\n",
       "      <td>Этапы разработки проекта: заключительные стади...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[этап, разработка, проект, заключительные, ст...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>Этапы разработки проекта3.doc</td>\n",
       "      <td>Этапы разработки проекта: определение стратеги...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[этап, разработка, проект, определение, страт...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>Этапы разработки проекта4.doc</td>\n",
       "      <td>Этапы разработки проекта: реализация, тестиров...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[этап_разработка, проект, реализация, тестиро...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>Этапы разработки проекта5.doc</td>\n",
       "      <td>Этапы разработки проекта: стратегия и анализ\\r...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[этап, разработка_проект, стратегия, анализ, ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>Язык манипуляции данными.doc</td>\n",
       "      <td>2.1.3. Язык манипуляции данными (ЯМД)\\rЯзык ма...</td>\n",
       "      <td>0</td>\n",
       "      <td>[[2.1.3], [язык, манипуляция, данными, ямд, яз...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                  doc  \\\n",
       "0                                           tz_01.doc   \n",
       "1                                           tz_02.doc   \n",
       "2                                           tz_03.doc   \n",
       "3                                           tz_04.doc   \n",
       "4                                           tz_05.doc   \n",
       "5                                           tz_06.doc   \n",
       "6                                           tz_07.doc   \n",
       "7                                           tz_08.doc   \n",
       "8                                           tz_09.doc   \n",
       "9                                           tz_10.doc   \n",
       "10                                          tz_11.doc   \n",
       "11                                          tz_12.doc   \n",
       "12                                          tz_13.doc   \n",
       "13                                          tz_14.doc   \n",
       "14                                          tz_15.doc   \n",
       "15                                          tz_16.doc   \n",
       "16                                          tz_17.doc   \n",
       "17                                          tz_18.doc   \n",
       "18                                          tz_19.doc   \n",
       "19                                          tz_20.doc   \n",
       "20                Архитектура, управляемая модель.doc   \n",
       "21                   Введение в проектирование ИС.doc   \n",
       "22                       Встроенные операторы SQL.doc   \n",
       "23  Методологии разработки программного обеспечени...   \n",
       "24  Методологии разработки программного обеспечени...   \n",
       "25               Методы композиции и декомпозиции.doc   \n",
       "26             Модели представления данных в СУБД.doc   \n",
       "27           Некоторые особенности проектирования.doc   \n",
       "28                  Непроцедурный доступ к данным.doc   \n",
       "29               Процедурное расширение языка SQL.doc   \n",
       "30                  Системные объекты базы данных.doc   \n",
       "31                   Технология создания распр ИС.doc   \n",
       "32                           Требования к проекту.doc   \n",
       "33                         Условия целостности БД.doc   \n",
       "34                            Характеристики СУБД.doc   \n",
       "35                      Этапы разработки проекта1.doc   \n",
       "36                      Этапы разработки проекта2.doc   \n",
       "37                      Этапы разработки проекта3.doc   \n",
       "38                      Этапы разработки проекта4.doc   \n",
       "39                      Этапы разработки проекта5.doc   \n",
       "40                       Язык манипуляции данными.doc   \n",
       "\n",
       "                                                 text  type  \\\n",
       "0   2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1 Общие сведения\\...     1   \n",
       "1   2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1 Общие сведения\\...     1   \n",
       "2   2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\rОбщие сведения:\\rВ д...     1   \n",
       "3   ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1 ОБЩИЕ СВЕДЕНИЯ\\rИнт...     1   \n",
       "4   2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1 Общие сведения....     1   \n",
       "5   2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\t\\r1.Общие сведения\\rП...     1   \n",
       "6   ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\rОбщие сведения\\rВ данном ...     1   \n",
       "7   Техническое задание\\r1 Общие сведения\\r1.1 Пол...     1   \n",
       "8   2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1.\\rОбщие сведен...     1   \n",
       "9   2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1. Общие сведени...     1   \n",
       "10  2.2.\\tТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1.\\tОбщие сведе...     1   \n",
       "11  2.2\\tТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1\\tОбщие сведени...     1   \n",
       "12  2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1. Общие сведени...     1   \n",
       "13  ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\rРассмотрев общие требован...     1   \n",
       "14  ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1. Общие сведения\\rПо...     1   \n",
       "15  2.2\\tТехническое задание\\r2.2.1\\tОбщие сведени...     1   \n",
       "16  2.2 ТЕХНИЧЕСКОЕ ЗАДАНИЕ.\\r2.2.1 Общие сведения...     1   \n",
       "17  2.2. Техническое задание\\rОбщие сведения:\\rПол...     1   \n",
       "18  2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1. Наименование ...     1   \n",
       "19  2.2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ\\r2.2.1. Общие сведени...     1   \n",
       "20  Архитектура, управляемая модель\\rАббревиатура ...     0   \n",
       "21  1. ВВЕДЕНИЕ В ПРОЕКТИРОВАНИЕ ИНФОРМАЦИОННЫХ СИ...     0   \n",
       "22  Встроенные операторы SQL. \\rКак было отмечено ...     0   \n",
       "23  Методологии разработки программного обеспечени...     0   \n",
       "24  Методологии разработки программного обеспечени...     0   \n",
       "25  Методы композиции и декомпозиции исполняемых U...     0   \n",
       "26  2.3.1. Исследование моделей информационного пр...     0   \n",
       "27  Некоторые особенности проектирования под конкр...     0   \n",
       "28  2.3.2.3 Непроцедурный доступ к данным (SQL).\\r...     0   \n",
       "29  Процедурное расширение языка SQL - PL/SQL.\\rOr...     0   \n",
       "30  Системные объекты базы данных.\\rСловарь данных...     0   \n",
       "31  2. ТЕХНОЛОГИИ СОЗДАНИЯ РАСПРЕДЕЛЕННЫХ ИНФОРМАЦ...     0   \n",
       "32  Требования к проекту\\rВведение\\rОтносительно с...     0   \n",
       "33  2.1.1.3.1. Ограничительные условия, поддержива...     0   \n",
       "34  2.2.2 Сравнительные характеристики SQL СУБД.\\r...     0   \n",
       "35  Этапы разработки проекта: заключительные стади...     0   \n",
       "36  Этапы разработки проекта: заключительные стади...     0   \n",
       "37  Этапы разработки проекта: определение стратеги...     0   \n",
       "38  Этапы разработки проекта: реализация, тестиров...     0   \n",
       "39  Этапы разработки проекта: стратегия и анализ\\r...     0   \n",
       "40  2.1.3. Язык манипуляции данными (ЯМД)\\rЯзык ма...     0   \n",
       "\n",
       "                                            prep_text  \n",
       "0   [[2.2, техническое, задание, 2.2.1, общий, све...  \n",
       "1   [[2.2, техническое, задание, 2.2.1, общий, све...  \n",
       "2   [[2.2], [техническое, задание, общий, сведение...  \n",
       "3   [[техническое, задание, 2.2.1, общие, сведение...  \n",
       "4   [[2.2, техническое, задание, 2.2.1, общий, све...  \n",
       "5   [[2.2, техническое, задание, 1.общие, сведение...  \n",
       "6   [[техническое, задание, общий, сведение, разде...  \n",
       "7   [[технический, задание, 1, общий, сведение, 1....  \n",
       "8   [[2.2], [техническое, задание, 2.2.1], [общий,...  \n",
       "9   [[2.2], [техническое, задание, 2.2.1], [общий,...  \n",
       "10  [[2.2], [техническое, задание, 2.2.1], [общий,...  \n",
       "11  [[2.2, техническое, задание, 2.2.1, общий, све...  \n",
       "12  [[2.2], [техническое, задание, 2.2.1], [общий,...  \n",
       "13  [[техническое, задание, рассмотреть, общий, тр...  \n",
       "14  [[техническое, задание, 2.2.1], [общий, сведен...  \n",
       "15  [[2.2, технический, задание, 2.2.1, общий, све...  \n",
       "16  [[2.2, техническое, задание], [2.2.1, общий, с...  \n",
       "17  [[2.2], [технический, задание, общий, сведение...  \n",
       "18  [[2.2], [техническое, задание, 2.2.1], [наимен...  \n",
       "19  [[2.2], [техническое, задание, 2.2.1], [общий,...  \n",
       "20  [[архитектура, управляемая, модель, аббревиату...  \n",
       "21  [[1], [введение, проектирование, информационны...  \n",
       "22  [[встроить, оператор, sql], [отметить, sql, st...  \n",
       "23  [[методология, разработка, программный_обеспеч...  \n",
       "24  [[методология, разработка, программный, обеспе...  \n",
       "25  [[метод, композиция_декомпозиция, исполнять, u...  \n",
       "26  [[2.3.1], [исследование, модель, информационны...  \n",
       "27  [[особенность, проектирование, конкретный, арх...  \n",
       "28  [[2.3.2.3, непроцедурный, доступ, данным, sql]...  \n",
       "29  [[процедурный, расширение, язык, sql, pl_sql],...  \n",
       "30  [[системный, объект, база], [словарь], [первый...  \n",
       "31  [[2], [технологии, создания, распределенных, и...  \n",
       "32  [[требование, проект, введение, относительно, ...  \n",
       "33  [[2.1.1.3.1], [ограничительный, условие, подде...  \n",
       "34  [[2.2.2, сравнительные, характеристика, sql, с...  \n",
       "35  [[этап, разработка, проект, заключительные, ст...  \n",
       "36  [[этап, разработка, проект, заключительные, ст...  \n",
       "37  [[этап, разработка, проект, определение, страт...  \n",
       "38  [[этап_разработка, проект, реализация, тестиро...  \n",
       "39  [[этап, разработка_проект, стратегия, анализ, ...  \n",
       "40  [[2.1.3], [язык, манипуляция, данными, ямд, яз...  "
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from gensim.models.phrases import Phraser, Phrases\n",
    "import spacy\n",
    "\n",
    "sp = spacy.load(\"ru_core_news_lg\")\n",
    "\n",
    "def prep_text(text):\n",
    "    doc = sp(text)\n",
    "    lower_sents = []\n",
    "    for sent in doc.sents:\n",
    "        lower_sents.append([word.lemma_.lower() for word in sent if not word.is_punct and not word.is_stop and not word.is_space])\n",
    "    lower_bigram = Phraser(Phrases(lower_sents))\n",
    "    clean_sents = []\n",
    "    for sent in lower_sents:\n",
    "        clean_sents.append(lower_bigram[sent])\n",
    "    return clean_sents\n",
    "\n",
    "df[\"prep_text\"] = df.apply(lambda row: prep_text(row[\"text\"]), axis=1)\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Инициализация Keras"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3.9.2\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "\n",
    "os.environ[\"KERAS_BACKEND\"] = \"jax\"\n",
    "import keras\n",
    "\n",
    "print(keras.__version__)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Загрузка данных для классификации с помощью глубоких сетей"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras.api.datasets import imdb\n",
    "import os\n",
    "from sklearn.model_selection import train_test_split\n",
    "from tensorflow.keras.preprocessing.text import Tokenizer # type: ignore\n",
    "from keras.api.preprocessing.sequence import pad_sequences\n",
    "import numpy as np\n",
    "\n",
    "unique_words = 10000\n",
    "max_length = 200\n",
    "X_texts = [' '.join([word for sent in doc for word in sent]) for doc in df['prep_text']]\n",
    "tokenizer = Tokenizer(num_words=unique_words)\n",
    "tokenizer.fit_on_texts(X_texts)\n",
    "sequences = tokenizer.texts_to_sequences(X_texts)\n",
    "X_padded = pad_sequences(sequences, maxlen=max_length, padding='post', truncating='post')\n",
    "\n",
    "\n",
    "\n",
    "output_dir = \"tmp\"\n",
    "if not os.path.exists(output_dir):\n",
    "    os.makedirs(output_dir)\n",
    "\n",
    "\n",
    "X_train, X_valid, y_train, y_valid = train_test_split(X_padded, df[\"type\"].values, test_size=0.2, random_state=42)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Приведение отзывов к длине max_length (100)`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras.api.preprocessing.sequence import pad_sequences\n",
    "from scipy.sparse import issparse\n",
    "\n",
    "X_train = pad_sequences(X_train, maxlen=max_length, padding='pre', truncating='pre', value=0)\n",
    "X_valid = pad_sequences(X_valid, maxlen=max_length, padding=\"pre\", truncating=\"pre\", value=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Формирование архитектуры глубокой рекуррентной сети"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential_2\"</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1mModel: \"sequential_2\"\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
       "┃<span style=\"font-weight: bold\"> Layer (type)                    </span>┃<span style=\"font-weight: bold\"> Output Shape           </span>┃<span style=\"font-weight: bold\">       Param # </span>┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
       "│ embedding (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Embedding</span>)           │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">200</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)        │       <span style=\"color: #00af00; text-decoration-color: #00af00\">640,000</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ spatial_dropout1d               │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">200</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)        │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">SpatialDropout1D</span>)              │                        │               │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ simple_rnn (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">SimpleRNN</span>)          │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)            │        <span style=\"color: #00af00; text-decoration-color: #00af00\">82,176</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_4 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1</span>)              │           <span style=\"color: #00af00; text-decoration-color: #00af00\">257</span> │\n",
       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
       "</pre>\n"
      ],
      "text/plain": [
       "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
       "┃\u001b[1m \u001b[0m\u001b[1mLayer (type)                   \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape          \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m      Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
       "│ embedding (\u001b[38;5;33mEmbedding\u001b[0m)           │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m200\u001b[0m, \u001b[38;5;34m64\u001b[0m)        │       \u001b[38;5;34m640,000\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ spatial_dropout1d               │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m200\u001b[0m, \u001b[38;5;34m64\u001b[0m)        │             \u001b[38;5;34m0\u001b[0m │\n",
       "│ (\u001b[38;5;33mSpatialDropout1D\u001b[0m)              │                        │               │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ simple_rnn (\u001b[38;5;33mSimpleRNN\u001b[0m)          │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m256\u001b[0m)            │        \u001b[38;5;34m82,176\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_4 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1\u001b[0m)              │           \u001b[38;5;34m257\u001b[0m │\n",
       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">722,433</span> (2.76 MB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m722,433\u001b[0m (2.76 MB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">722,433</span> (2.76 MB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m722,433\u001b[0m (2.76 MB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from keras.api.models import Sequential\n",
    "from keras.api.layers import InputLayer, Embedding, SpatialDropout1D, SimpleRNN, Dense\n",
    "\n",
    "rnn_model = Sequential()\n",
    "rnn_model.add(InputLayer(shape=(max_length,), dtype=\"float32\"))\n",
    "rnn_model.add(Embedding(unique_words, 64))\n",
    "rnn_model.add(SpatialDropout1D(0.2))\n",
    "rnn_model.add(SimpleRNN(256, dropout=0.2))\n",
    "rnn_model.add(Dense(1, activation=\"sigmoid\"))\n",
    "\n",
    "rnn_model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Обучение модели"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/16\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 3s/step - accuracy: 0.5312 - loss: 0.6881 - val_accuracy: 0.5556 - val_loss: 0.6938\n",
      "Epoch 2/16\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 282ms/step - accuracy: 0.9688 - loss: 0.4678 - val_accuracy: 0.8889 - val_loss: 0.3995\n",
      "Epoch 3/16\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 482ms/step - accuracy: 0.7188 - loss: 0.5565 - val_accuracy: 0.4444 - val_loss: 0.7295\n",
      "Epoch 4/16\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 275ms/step - accuracy: 0.7188 - loss: 0.5845 - val_accuracy: 0.5556 - val_loss: 0.7028\n",
      "Epoch 5/16\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 283ms/step - accuracy: 0.8438 - loss: 0.5840 - val_accuracy: 0.5556 - val_loss: 0.7054\n",
      "Epoch 6/16\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 438ms/step - accuracy: 0.6562 - loss: 0.5577 - val_accuracy: 0.5556 - val_loss: 0.7249\n",
      "Epoch 7/16\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 374ms/step - accuracy: 0.5625 - loss: 0.5709 - val_accuracy: 0.4444 - val_loss: 0.8666\n",
      "Epoch 8/16\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 406ms/step - accuracy: 0.6875 - loss: 0.4976 - val_accuracy: 0.2222 - val_loss: 0.9157\n",
      "Epoch 9/16\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 421ms/step - accuracy: 0.7812 - loss: 0.6008 - val_accuracy: 0.5556 - val_loss: 0.7275\n",
      "Epoch 10/16\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 389ms/step - accuracy: 0.5312 - loss: 0.5579 - val_accuracy: 0.5556 - val_loss: 0.7214\n",
      "Epoch 11/16\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 379ms/step - accuracy: 0.5312 - loss: 0.5610 - val_accuracy: 0.5556 - val_loss: 0.7141\n",
      "Epoch 12/16\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 367ms/step - accuracy: 0.8125 - loss: 0.5421 - val_accuracy: 0.5556 - val_loss: 0.7136\n",
      "Epoch 13/16\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 314ms/step - accuracy: 1.0000 - loss: 0.5058 - val_accuracy: 0.0000e+00 - val_loss: 0.7242\n",
      "Epoch 14/16\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 391ms/step - accuracy: 1.0000 - loss: 0.4982 - val_accuracy: 0.4444 - val_loss: 0.7418\n",
      "Epoch 15/16\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 373ms/step - accuracy: 1.0000 - loss: 0.4669 - val_accuracy: 0.4444 - val_loss: 0.7595\n",
      "Epoch 16/16\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 393ms/step - accuracy: 0.9688 - loss: 0.4163 - val_accuracy: 0.4444 - val_loss: 0.7732\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.src.callbacks.history.History at 0x290591efad0>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from keras.api.callbacks import ModelCheckpoint\n",
    "\n",
    "rnn_model.compile(\n",
    "    loss=\"binary_crossentropy\",\n",
    "    optimizer=\"adam\",\n",
    "    metrics=[\"accuracy\"],\n",
    ")\n",
    "\n",
    "rnn_model.fit(\n",
    "    X_train,\n",
    "    y_train,\n",
    "    batch_size=128,\n",
    "    epochs=16,\n",
    "    validation_data=(X_valid, y_valid),\n",
    "    callbacks=[ModelCheckpoint(filepath=output_dir + \"/rnn_weights.{epoch:02d}.keras\")],\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 109ms/step - accuracy: 0.4444 - loss: 0.7595\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.7595400810241699, 0.4444444477558136]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rnn_model.load_weights(output_dir + \"/rnn_weights.15.keras\")\n",
    "rnn_model.evaluate(X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Визуализация распределения вероятностей результатов модели на валидационной выборке"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 296ms/step\n"
     ]
    },
    {
     "data": {
      "image/png": "[encoded data, 14508 characters]",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.hist(rnn_model.predict(X_valid))\n",
    "_ = plt.axvline(x=0.5, color=\"red\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Формирование архитектуры глубокой сверточной сети"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential_3\"</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1mModel: \"sequential_3\"\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
       "┃<span style=\"font-weight: bold\"> Layer (type)                    </span>┃<span style=\"font-weight: bold\"> Output Shape           </span>┃<span style=\"font-weight: bold\">       Param # </span>┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
       "│ embedding_1 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Embedding</span>)         │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">200</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)        │       <span style=\"color: #00af00; text-decoration-color: #00af00\">640,000</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ spatial_dropout1d_1             │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">200</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)        │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">SpatialDropout1D</span>)              │                        │               │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ conv1d (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Conv1D</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">198</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)       │        <span style=\"color: #00af00; text-decoration-color: #00af00\">49,408</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ global_max_pooling1d            │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)            │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "│ (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">GlobalMaxPooling1D</span>)            │                        │               │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_5 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)            │        <span style=\"color: #00af00; text-decoration-color: #00af00\">65,792</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)             │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">256</span>)            │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_6 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1</span>)              │           <span style=\"color: #00af00; text-decoration-color: #00af00\">257</span> │\n",
       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
       "</pre>\n"
      ],
      "text/plain": [
       "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
       "┃\u001b[1m \u001b[0m\u001b[1mLayer (type)                   \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape          \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m      Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
       "│ embedding_1 (\u001b[38;5;33mEmbedding\u001b[0m)         │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m200\u001b[0m, \u001b[38;5;34m64\u001b[0m)        │       \u001b[38;5;34m640,000\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ spatial_dropout1d_1             │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m200\u001b[0m, \u001b[38;5;34m64\u001b[0m)        │             \u001b[38;5;34m0\u001b[0m │\n",
       "│ (\u001b[38;5;33mSpatialDropout1D\u001b[0m)              │                        │               │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ conv1d (\u001b[38;5;33mConv1D\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m198\u001b[0m, \u001b[38;5;34m256\u001b[0m)       │        \u001b[38;5;34m49,408\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ global_max_pooling1d            │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m256\u001b[0m)            │             \u001b[38;5;34m0\u001b[0m │\n",
       "│ (\u001b[38;5;33mGlobalMaxPooling1D\u001b[0m)            │                        │               │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_5 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m256\u001b[0m)            │        \u001b[38;5;34m65,792\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_2 (\u001b[38;5;33mDropout\u001b[0m)             │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m256\u001b[0m)            │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_6 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1\u001b[0m)              │           \u001b[38;5;34m257\u001b[0m │\n",
       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">755,457</span> (2.88 MB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m755,457\u001b[0m (2.88 MB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">755,457</span> (2.88 MB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m755,457\u001b[0m (2.88 MB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from keras.api.models import Sequential\n",
    "from keras.api.layers import InputLayer, Embedding, SpatialDropout1D, Conv1D, GlobalMaxPooling1D, Dense, Dropout\n",
    "\n",
    "conv_model = Sequential()\n",
    "conv_model.add(InputLayer(shape=(max_length,), dtype=\"float32\"))\n",
    "conv_model.add(Embedding(unique_words, 64))\n",
    "conv_model.add(SpatialDropout1D(0.2))\n",
    "\n",
    "# сверточный слой\n",
    "conv_model.add(Conv1D(256, 3, activation=\"relu\"))\n",
    "\n",
    "conv_model.add(GlobalMaxPooling1D())\n",
    "\n",
    "# полносвязанный слой\n",
    "conv_model.add(Dense(256, activation=\"relu\"))\n",
    "conv_model.add(Dropout(0.2))\n",
    "\n",
    "# выходной слой\n",
    "conv_model.add(Dense(1, activation=\"sigmoid\"))\n",
    "\n",
    "conv_model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Обучение модели"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2s/step - accuracy: 0.4688 - loss: 0.6933 - val_accuracy: 0.6667 - val_loss: 0.6881\n",
      "Epoch 2/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 322ms/step - accuracy: 0.6875 - loss: 0.6844 - val_accuracy: 1.0000 - val_loss: 0.6829\n",
      "Epoch 3/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 288ms/step - accuracy: 0.6562 - loss: 0.6829 - val_accuracy: 1.0000 - val_loss: 0.6775\n",
      "Epoch 4/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 300ms/step - accuracy: 0.8750 - loss: 0.6697 - val_accuracy: 1.0000 - val_loss: 0.6716\n",
      "Epoch 5/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 314ms/step - accuracy: 1.0000 - loss: 0.6571 - val_accuracy: 1.0000 - val_loss: 0.6651\n",
      "Epoch 6/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 341ms/step - accuracy: 1.0000 - loss: 0.6408 - val_accuracy: 1.0000 - val_loss: 0.6568\n",
      "Epoch 7/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 303ms/step - accuracy: 1.0000 - loss: 0.6304 - val_accuracy: 1.0000 - val_loss: 0.6466\n",
      "Epoch 8/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 330ms/step - accuracy: 1.0000 - loss: 0.6211 - val_accuracy: 1.0000 - val_loss: 0.6341\n",
      "Epoch 9/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 311ms/step - accuracy: 1.0000 - loss: 0.6057 - val_accuracy: 1.0000 - val_loss: 0.6198\n",
      "Epoch 10/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 288ms/step - accuracy: 1.0000 - loss: 0.5722 - val_accuracy: 1.0000 - val_loss: 0.6035\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.src.callbacks.history.History at 0x29035960350>"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from keras.api.callbacks import ModelCheckpoint\n",
    "\n",
    "conv_model.compile(\n",
    "    loss=\"binary_crossentropy\",\n",
    "    optimizer=\"adam\",\n",
    "    metrics=[\"accuracy\"],\n",
    ")\n",
    "\n",
    "conv_model.fit(\n",
    "    X_train,\n",
    "    y_train,\n",
    "    batch_size=128,\n",
    "    epochs=10,\n",
    "    validation_data=(X_valid, y_valid),\n",
    "    callbacks=[ModelCheckpoint(filepath=output_dir + \"/conv_weights.{epoch:02d}.keras\")],\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Загрузка лучшей модели и оценка ее качества"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 76ms/step - accuracy: 1.0000 - loss: 0.6035\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.60353022813797, 1.0]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "conv_model.load_weights(output_dir + \"/conv_weights.10.keras\")\n",
    "conv_model.evaluate(X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Визуализация распределения вероятностей результатов модели на валидационной выборке"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 164ms/step\n"
     ]
    },
    {
     "data": {
      "image/png": "[encoded data, 11392 characters]",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.hist(conv_model.predict(X_valid))\n",
    "_ = plt.axvline(x=0.5, color=\"red\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Формирование архитектуры глубокой полносвязанной сети"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential_4\"</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1mModel: \"sequential_4\"\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
       "┃<span style=\"font-weight: bold\"> Layer (type)                    </span>┃<span style=\"font-weight: bold\"> Output Shape           </span>┃<span style=\"font-weight: bold\">       Param # </span>┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
       "│ embedding_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Embedding</span>)         │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">200</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)        │       <span style=\"color: #00af00; text-decoration-color: #00af00\">640,000</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ flatten_2 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Flatten</span>)             │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">12800</span>)          │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_7 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)             │       <span style=\"color: #00af00; text-decoration-color: #00af00\">819,264</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_3 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dropout</span>)             │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)             │             <span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_8 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                 │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1</span>)              │            <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span> │\n",
       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
       "</pre>\n"
      ],
      "text/plain": [
       "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
       "┃\u001b[1m \u001b[0m\u001b[1mLayer (type)                   \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape          \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m      Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
       "│ embedding_2 (\u001b[38;5;33mEmbedding\u001b[0m)         │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m200\u001b[0m, \u001b[38;5;34m64\u001b[0m)        │       \u001b[38;5;34m640,000\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ flatten_2 (\u001b[38;5;33mFlatten\u001b[0m)             │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m12800\u001b[0m)          │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_7 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m)             │       \u001b[38;5;34m819,264\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dropout_3 (\u001b[38;5;33mDropout\u001b[0m)             │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m)             │             \u001b[38;5;34m0\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_8 (\u001b[38;5;33mDense\u001b[0m)                 │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1\u001b[0m)              │            \u001b[38;5;34m65\u001b[0m │\n",
       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">1,459,329</span> (5.57 MB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m1,459,329\u001b[0m (5.57 MB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">1,459,329</span> (5.57 MB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m1,459,329\u001b[0m (5.57 MB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from keras.api.models import Sequential\n",
    "from keras.api.layers import Dense, Flatten, Dropout, Embedding, InputLayer\n",
    "\n",
    "simple_model = Sequential()\n",
    "simple_model.add(InputLayer(shape=(max_length,), dtype=\"float32\"))\n",
    "simple_model.add(Embedding(unique_words, 64))\n",
    "simple_model.add(Flatten())\n",
    "simple_model.add(Dense(64, activation=\"relu\"))\n",
    "simple_model.add(Dropout(0.5))\n",
    "simple_model.add(Dense(1, activation=\"sigmoid\"))\n",
    "\n",
    "simple_model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Обучение модели"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2s/step - accuracy: 0.4062 - loss: 0.6990 - val_accuracy: 0.5556 - val_loss: 0.6789\n",
      "Epoch 2/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 407ms/step - accuracy: 0.9688 - loss: 0.6011 - val_accuracy: 0.6667 - val_loss: 0.6662\n",
      "Epoch 3/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 332ms/step - accuracy: 1.0000 - loss: 0.5178 - val_accuracy: 0.6667 - val_loss: 0.6511\n",
      "Epoch 4/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 434ms/step - accuracy: 1.0000 - loss: 0.4240 - val_accuracy: 0.6667 - val_loss: 0.6344\n",
      "Epoch 5/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 422ms/step - accuracy: 1.0000 - loss: 0.3631 - val_accuracy: 0.6667 - val_loss: 0.6170\n",
      "Epoch 6/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 311ms/step - accuracy: 1.0000 - loss: 0.3023 - val_accuracy: 0.6667 - val_loss: 0.5986\n",
      "Epoch 7/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 280ms/step - accuracy: 1.0000 - loss: 0.2429 - val_accuracy: 0.6667 - val_loss: 0.5801\n",
      "Epoch 8/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 300ms/step - accuracy: 1.0000 - loss: 0.1860 - val_accuracy: 0.6667 - val_loss: 0.5621\n",
      "Epoch 9/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 520ms/step - accuracy: 1.0000 - loss: 0.1621 - val_accuracy: 0.6667 - val_loss: 0.5452\n",
      "Epoch 10/10\n",
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 287ms/step - accuracy: 1.0000 - loss: 0.1185 - val_accuracy: 0.6667 - val_loss: 0.5295\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.src.callbacks.history.History at 0x2907b080350>"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from keras.api.callbacks import ModelCheckpoint\n",
    "\n",
    "simple_model.compile(\n",
    "    loss=\"binary_crossentropy\",\n",
    "    optimizer=\"adam\",\n",
    "    metrics=[\"accuracy\"],\n",
    ")\n",
    "\n",
    "simple_model.fit(\n",
    "    X_train,\n",
    "    y_train,\n",
    "    batch_size=128,\n",
    "    epochs=10,\n",
    "    validation_data=(X_valid, y_valid),\n",
    "    callbacks=[ModelCheckpoint(filepath=output_dir + \"/simple_weights.{epoch:02d}.keras\")],\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Загрузка лучшей модели и оценка ее качества"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 55ms/step - accuracy: 0.6667 - loss: 0.5295\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[0.5294919610023499, 0.6666666865348816]"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simple_model.load_weights(output_dir + \"/simple_weights.10.keras\")\n",
    "simple_model.evaluate(X_valid, y_valid)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "Визуализация распределения вероятностей результатов модели на валидационной выборке\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 86ms/step\n"
     ]
    },
    {
     "data": {
      "image/png": "[encoded data, 14780 characters]",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.hist(simple_model.predict(X_valid))\n",
    "_ = plt.axvline(x=0.5, color=\"red\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "aisenv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
