Project 2003 для менеджеров

         

Project 2003 для менеджеров

Project — программный продукт компании Microsoft, призванный помочь менеджерам и руководителям в управлении проектами. Программы Word, Excel и Outlook лишь отчасти способствуют автоматизации рабочего места менеджера, программа Project помогает решить эту проблему. При планировании проекта нужно составить список задач, требующих решения, и список ресурсов, которые могут в этом помочь, а затем назначить ресурсы задачам. На этапе осуществления проекта необходимо следить за ходом работы, сроками и затраченными средствами. Project автоматизирует эти процессы.
В России Project используется не так давно, после появления версии 2002, хотя существует он уже почти 10 лет. На сегодняшний день последней версией является Project Professional 2003. Кроме Professional существуют Project Standard, Server и Web Access. Это не значит, что данный раздел не подходит для изучения Project Standard 2003 или какой-либо другой версии программы, просто между версиями могут быть некоторые различия. Хотя Project 2002 практически не отличается от 2003, так что раздел в каком-то смысле универсален. Рассмотрим версии программы Project подробнее.
Project имеет стандартный для всех офисных приложений Microsoft интерфейс. Пользователям, которые умеют работать в Word и Excel, Project никаких сложностей не доставит. Если навыков нет, тоже не беда — пользоваться Project просто и понятно на интуитивном уровне. Есть и существенное отличие. Для нормального использования Project необходим какой-либо самоучитель, книга или хотя бы встроенная система помощи. Необходимость в помощи возникает не из-за непонятного интерфейса, а потому что не все будущие пользователи Project знают, как составить план проекта.

Общие сведения
Кому конкретно нужна эта программа? Не только менеджерам и управленцам, но и координаторам, администраторам, работникам кадровых агентств и даже исполнителям. В общем, Project может использовать кто угодно для множества целей, главная из которых — управление, планирование и наглядное представление данных, связанных с этими процессами.

Дополнительные окна
Пользователю, ранее практически не общавшемуся с компьютерами, может быть несколько странно и даже смешно слышать термины меню и окна, как будто в ресторане. Среди пользователей ходят анекдоты и шутки про такие компьютерные термины, которые совпадают со словами из обычной (некомпьютерной) жизни. Например, если вы замерзли и просите программиста закрыть окно, то не удивляйтесь, если он вас неправильно поймет и закроет совсем не то, что вы просили.

Окна вставки и поиска
Для запуска поиска нужно ввести искомый текст в поле Search text (Поиск текста) и затем нажать кнопку Go (Найти). Искать можно одно или несколько слов. Ввод большого количества слов в поле Search text (Поиск текста) делает поиск более точным, но замедляет его.

Консультант и система помощи
Помимо помощи в современных программах есть всевозможные мастера (специальные приложения), которые ведут пользователей, как лоцманы, позволяя выполнять сложные действия даже начинающим. Одним из таких лоцманов является консультант. Он представляет собой нечто среднее между мастером и системой помощи. С одной стороны, консультант является системой помощи, так как на его панели размещены ссылки, сгруппированные по предназначению. С другой стороны, консультант является мастером (комплексом из десятка мастеров). При щелчке на какой-либо ссылке в консультанте запускается соответствующий мастер, помогающий выполнить нужные действия.

Основы создания проектов
Проект подразумевает выполнение ряда связанных между собой задач. Для выполнения проекта можно выделить строго определенные ресурсы (человеко-часы, материалы). У проектов существуют даты начала и окончания, а также другие различные ограничения (например, графики работы).

Анализ
При планировании проекта в большинстве случаев нельзя обойтись без учета стоимости проекта и отдельных задач. Существует несколько методов планирования стоимости проекта: по аналогии, по параметрам, снизу вверх и сверху вниз. Для разных проектов подходят различные способы, но чаще всего используют метод «по параметрам». Самым же быстрым является метод «по аналогии». Рассмотрим все эти способы

Приложение
Средство отбора данных в поле (столбце). Автофильтры по умолчанию отключены, но их можно включить с помощью кнопки Autofilter (Автофильтр). Когда автофильтры включены, в заголовке каждого столбца в представлении листа выводится стрелка раскрытия меню автофильтра. В этом меню можно выбрать данные, которые должны отображаться в столбце. Выбор фильтра не приводит к удалению информации из проекта, отбираются только данные в представлении.

Приложение 2
Расходы, которые могут изменяться в зависимости от времени фактической работы ресурсов. Переменные затраты являются типичными для рабочих ресурсов с почасовой оплатой или для материальных ресурсов. Затраты изменяются соответственно часам работы ресурса или количеству израсходованного материального ресурса. В отличие от этого, затраты на использование остаются неизменными при каждом использовании ресурса.

Интерфейс Microsoft Project

Microsoft Project имеет стандартный для всех офисных приложений Microsoft интерфейс. Пользователям, которые умеют работать в Word и Excel, Project никаких сложностей не доставит. Если навыков нет, тоже не беда — пользоваться Project просто и понятно на интуитивном уровне. Есть и существенное отличие. Для нормального использования Project необходим какой-либо самоучитель, книга или хотя бы встроенная система помощи. Необходимость в помощи возникает не из-за непонятного интерфейса, а потому что не все будущие пользователи Project знают, как составить план проекта.
Чтобы оценить интерфейс, нужно сначала открыть Microsoft Project. Как и другие программы, с которыми вы работаете, Project можно открывать разными способами.
Как правило, ярлык для запуска Project находится в меню Пуск (Пуск > Программы > Microsoft Office > Microsoft Office Project 2003).
Иногда ярлык для запуска Microsoft Project присутствует на Рабочем столе. Если такого ярлыка нет, то рекомендуется его создать или попросить об этом специалиста.
Еще один весьма экстравагантный способ — открыть окно запуска программ (Пуск > Выполнить), набрать в текстовом поле Winproj и нажать клавишу Enter. В итоге также должен запуститься Microsoft Project.

Интерфейс
Microsoft Project имеет стандартный для всех офисных приложений Microsoft интерфейс. Пользователям, которые умеют работать в Word и Excel, Project никаких сложностей не доставит. Если навыков нет, тоже не беда — пользоваться Project просто и понятно на интуитивном уровне. Есть и существенное отличие. Для нормального использования Project необходим какой-либо самоучитель, книга или хотя бы встроенная система помощи. Необходимость в помощи возникает не из-за непонятного интерфейса, а потому что не все будущие пользователи Project знают, как составить план проекта.

Главное меню
Открывает существующий проект. При выборе этого пункта меню появляется стандартное для Windows окно открытия документа. Команда Open (Открыть) дублируется сочетанием клавиш Ctrl+О. Кроме того, в меню File (Файл) всегда присутствует список из нескольких проектов, с которыми вы работали в последнее время. Можно выбрать один из них.

ProjectStudio Электрика. Руководство пользователя

Программа Project StudioCS Электрика предназначена для создания проектов внутреннего электрического освещения зданий.   Она предоставляет возможность оформлять выпускать проектную документацию с использованием баз графических обозначений и параметров электрооборудования.
Программа способна рассчитывать мощности, токи и потери напряжения в электросетях, что заметно облегчает упрощает подбор характеристик питающего оборудования и кабелей. Она аАвтоматически формирует спецификацию оборудования, изделий и материалов.  
Исходные данные для Project StudioCS Электрика: Исходными данными программы является подоснова здания, выполненная в среде AutoCAD.
Выходные данные:
лист плана здания с обозначениями установленного оборудования и трасс, выносными обозначениями и таблицами;
ведомость основных комплектов рабочих чертежей;
ведомость рабочих чертежей основного комплекта;
ведомость ссылочных и прилагаемых документов;
общие указания и спецификация оборудования, изделий и материалов.
Выходными данными являются: лист плана здания с обозначениями установленного оборудования и трасс, выносными обозначениями и таблицами; ведомость основных комплектов рабочих чертежей, ведомость рабочих чертежей основного комплекта, ведомость ссылочных и прилагаемых документов, общие указания и спецификация оборудования, изделий и материалов.

Мастер установки Project StudioCS Электрика
Автоматический автоматический подсчет мощностей электрических нагрузок. Подсчитываются как отдельные нагрузки на выходные аппараты питающих устройств, так и суммарные нагрузки по группам потребителей с различными коэффициентами спроса. Автоматический автоматический подсчет необходимого числа жил электрических кабелей. Автоматическая автоматическая проверка параметров электрических сетей на соответствие токам однофазного короткого замыкания, токам длительной нагрузки и заданной потери напряжения до наиболее удаленных потребителей.

ProjectStudio Сила. Руководство пользователя
Позволяет создавать новые проекты, открывать существующие проекты, управлять чертежами (планировками) проекта. Позволяет создавать и включить в проект новый файл с подосновой или добавить в проект существующий файл с подосновой. При добавлении в проект плана, запрашивается информация по формату, масштабу чертежа, для автоматической подгонки к нужным размерам условных графических изображений.

ISaGRAF. Version 3.4

Этот раздел описывает инсталляцию системы разработки ISaGRAF. Кроме того, даны короткие примеры программ ISaGRAF. Они дают пользователю сжатый обзор его основных возможностей и позволяют сразу использовать ISaGRAF.

Первые шаги
ISaGRAF устанавливается программой INSTALL. Эта программа копирует программное обеспечение ISaGRAF с диска ISaGRAF на жёсткий диск пользователя. Кроме того, INSTALL добавляет группу ISaGRAF в окно Менеджера Программ и создаёт инициализационный файл «ISA.ini» в поддиректории EXE.
INSTALL - программа Windows, поэтому она должна запускаться из Менеджера Программ Windows или командой Выполнить из меню Пуск Windows.

Использование менеджера библиотек
Библиотеки ISaGRAF обеспечивают стандартный интерфейс между автоматической разработкой и возможностями программного обеспечения или оборудования целевой системы ISaGRAF. Существует по одной библиотеке для каждого типа интерфейса. Менеджер Библиотек ISaGRAF Workbench предназначен для разработчика оборудования или программного обеспечения. Разработчик использует менеджер библиотек для описания интерфейса программирования ISaGRAF с объектами, которые он создает.

Стандартные функциональные блоки
Существуют следующие стандартные функциональные блоки, поддерживаемые системой ISaGRAF. Эти функциональные блоки предопределены и их не нужно заявлять в библиотеке.

Сохранение переменных приложения
Представляется, что лучшее решение - это сохранить аналоговые или булевские переменные, описывающие состояние процесса, в те моменты, когда, по мнению программиста, есть возможность использовать их при рестарте. После этого было бы возможно с помощью возможно неполного, но достаточно разумного ‘снимка’ состояния процесса запустить, убить или заморозить программы SFC и инициализировать переменные, чтобы привести приложение в адекватное состояние. В ISaGRAF не предусмотрено никакой автоматической процедуры старта.

Язык программирования Форт

Форт (FORTH) -- это мощный язык программирования, который обеспечивает высокую производительность ЭВМ. Предлагаемая книга является одновременно учебником и справочником, позволяющим овладеть языком Форт независимо от того, начинающий вы программист или опытный. Вы можете пользоваться этой книгой как учебником для классных или индивидуальных занятий, при этом не предполагается знание основ ЭВМ или программирования. Книга содержит полное описание языка, начинающееся с упрощенного изложения принципов работы компьютеров. Постепенно осуществляется переход к более сложным понятиям, не описанным в других книгах. Вы сами можете выбрать материал и скорость изучения с учетом своего уровня подготовки. В книге приводится множество примеров, показывающих стиль программирования на языке Форт, включая полный текст программы редактора, большое количество упражнений для приобретения опыта, уверенности и, что более важно, полезных технических навыков. В даны ответы к упражнениям. Излагаются обе версии языка Форт в соответствии со стандартами 1979 и 1983 гг. Кроме того, изложены вопросы, не освещаемые в стандартах, в том числе организация файлов данных, обработка алфавитно-цифровых текстов, арифметика с плавающей запятой, а также различные инструментальные программные средства, что поможет вам расширить сферу применения языка Форт для ваших нужд. Даны примеры функций усовершенствованной реализации языка MMSFORTH.

Что такое Форт?
Что же представляет собой язык Форт ? Основная его часть -- это набор слов, или словарь, из которого слово вызывается по имени для выполнения специфических функций. Слова языка Форт соответственно складывают, вычитают, умножают и делят два числа. Программа на Форте пишется путем определения новых слов с использованием слов, ранее уже определенных в словаре. Как только новые слова скомпилированы в словарь, они не отличаются по форме от тех слов, которые в нем уже имеются.

Операторы сравнения и ветвления
Предположим, что вам нужно проверить, не приводят ли к ошибке слова, которые вы ввели в конце какого-либо определения через двоеточие. Тогда можно сделать, чтобы эти слова игнорировались бы с помощью слова EXIT (разумеется, то же можно сделать, помещая эти слова в круглые скобки). Можно также применить QUIT, чтобы прервать исполнение программы каком-то месте и посмотреть содержимое стека или переменных.

Память Форта. Словари и контекстные словари
Память может адресоваться через обычные коды и, хотя карта памяти организована так же, как было описано, программа может работать со всей доступной памятью. Может быть, наиболее сложное использование памяти большей емкости реализовано в HS/FORTH, где применены различные сегменты для различных частей описаний слов, для различных контекстных словарей и для стеков, буферов и т.д.

Ответы к упражнениям

Способ мышления-Форт

Программирование компьютеров может свести с ума. Другие профессии дают Вам прекрасные возможности наблюдать осязаемые результаты Ваших усилий. Часовщик может смотреть на свои зубчики и колесики, швея -- на швы, ровно ложащиеся после каждого взмаха иглы. Но программист проектирует, строит и ремонтирует нечто воображаемое, призрачные механизмы, ускользающие от восприятия органами чувств. Наша работа происходит не в ОЗУ, не в программе-редакторе, а внутри нашей головы.
Построение моделей в воображении привлекает и доставляет удовольствие программисту. Как же лучше к этому подготовиться ? Вооружиться самыми хорошими отладчиками, декомпиляторами и дизассемблерами ? Они помогают, однако самые существенные из технологий и инструментов -- умственные. Нам нужна последовательная и практическая методология для `мышления` на тему задач программирования. Это и составляет суть того, что я попытался выразить в моей книге. "Способ мышления ..." предлагается всем, кто заинтересован в написании программ для решения конкретных задач. Книга рассматривает вопросы проектирования и применения: принятие решений о том, что Вам нужно сделать, разработка компонентов системы и, наконец, построение системы.

Введение
Уже несколько лет я использую для программирования язык Форт. С первой же встречи с ним я был очарован и покорен его простотой, элегантностью и логичностью. И Форт пока ни разу не давал мне повода для разочарований. К сожалению, в нашей стране Форт знают и используют лишь считанные энтузиасты, чему в большой мере способствует отсутствие сколько-нибудь доступной литературы и программного обеспечения.

Философия Форта
Форт является языком и операционной системой. Но это не все: он также и воплощение философии. Обычно философию не рассматривают как нечто, отдельное от Форта. Она не предшествовала Форту и не описывалась где-либо вне рассуждений о Форте, и даже не имеет другого имени, кроме как "Форт".

Анализ
Как мы видели, Форт интегрирует аспекты проектирования с вопросами реализации и поддержки. В результате этого упоминание о "типичном цикле разработки" звучит примерно так же, как и упоминание о "типичном шуме". Однако любой подход лучше, чем отсутствие подхода и, разумеется, некоторые из подходов разработаны лучше других.

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

Детализированная разработка решение задачи
Когда Вы приняли решение по составу компонентов в задаче, Вашим следующим шагом является разработка этих компонентов. В этой главе мы применим технику решения задач для детализированной проработки проблемы на Форте. Это - время чистого творчества, та часть, которую большинство из нас находят наиболее занятной. Есть особое моральное удовлетворение в том, чтобы выйти на ринг с нетривиальной проблемой и уйти оттуда победителем.

Разработка: элементы Форт-стиля
Плохо написанная на Форте программа обычно выглядит как "код, пропущенный через пресс для мусора". Форт в действительности дает много свободы в выборе способа написания программ. Такая свобода обеспечивает все возможности для создания черезвычайно удобочитаемого и легко управляемого кода, что достигается сознательным применением элементов хорошего Форт-стиля.

Фрагментация
В этой главе мы продолжим наше исследование фазы реализации, сосредоточившись на этот раз на фрагментации. Декомпозиция и фрагментация - суть разные части единого целого. И то, и другое включает в себя разбиение и организацию. Декомпозиция применяется при предварительном проектировании, в то время, как фрагментация - при детализированной проработке и реализации.

Работа с данными: стеки и состояния
Форт оперирует с данными одним из двух способов: либо на стеке, либо в структурах данных. Когда какой из подходов применять и как управлять и стеком, и структурами данных - вот тематика этой главы. Для Форт-слов простейший способ прередачи аргументов друг другу - это через стек. Процесс "прост", поскольку вся работа по заталкиванию и извлечению чисел со стека подразумевается сама собою разумеющейся.

Минимизация структур управления
Структуры управления в Форте играют меньшую роль, нежели в других языках. Форт-программисты стараются описывать очень сложные приложения в терминах коротких слов и без особого акцента на конструкции IF THEN. Имеется несколько приемов для минимизации структур управления. Они включают в себя:* вычисления или подсчет * упрятывание условных операторов при рефакторизации * использование структурированных выходов * перепроектирование.

Обзор Форта (для новичков)
На Форте (FORTH) говорят словами (и числами), которые отделяются друг от друга пробелами: ЛАДОНЬ ОТКРЫТЬ РУКА ОПУСТИТЬ ЛАДОНЬ ЗАКРЫТЬ РУКА ПОДНЯТЬ Подобные команды могут быть набраны прямо с клавиатуры или вначале набраны редактором на устройствах массовой памяти (в файлах на диске), а потом загружены ("LOAD"). Все слова, уже имеющиеся в системе или определенные пользователем, существуют в "словаре", связном списке. "Определяющие слова" используются для добавления новых имен в словарь.

Начальный курс программирования на языке Форт

Новичок, впервые столкнувшийся с термином «машинный язык», может подумать: «На каком же таком языке разговаривает компьютер? Наверное, человеку чрезвычайно трудно его понять. Выглядит этот язык, вероятно, как-нибудь так:
976#!@NX714&+
если он вообще как-то выглядит». На самом деле машинный язык не должен быть трудным для понимания. Его назначение — служить удобным средством связи между человеком и компьютером.
Здесь уместно провести аналогию с марионеткой. Вы можете заставить марионетку «ходить», манипулируя деревянным приспособлением, даже не касаясь нитей, приводящих ее в движение. Эти манипуляции означают «ходьбу» на языке марионетки. Кукольник управляет марионеткой таким способом, который понятен марионетке и легко осуществим кукольником.
Компьютеры — это машины, подобные марионеткам. Ими нужно управлять, пользуясь специальным языком. И поэтому нам необходим язык, обладающий двумя на первый взгляд противоположными свойствами. С одной стороны, он должен точно выражать смысл приказа компьютеру, передавая последнему всю требуемую для выполнения операции информацию, а с другой — быть предельно простым.

Основы Форта
Со временем появления компьютеров было разработано множество языков: Фортран, который считается старейшиной среди них, Кобол - образец языка для обработки коммерческой информации, Бейсик, предназначенный для тех, кто делает первые шаги на пути изучения таких языков, как Фортран и Кобол. Предметом нашей книги является язык, совершенно не похожий на другие: Форт.

Операции над целыми числами
Существуют три причины, по которым желательно в вашем новом определении применять такие операции, как 1+ вместо 1 +. Во-первых, вы всякий раз экономите немного словарной памяти. Во-вторых, поскольку указанные слова определены в терминах машинного языка конкретного типа компьютера (чтобы учесть преимущества архитектуры данного компьютера), они выполняются быстрее, чем комбинация: 1+.


Язык Форт и его реализации

Язык программирования Форт (англ. forth - вперед и одновременно сокращение от fourth - четвертый), которому посвящена эта книга, появился в начале 1970-х гг. в США. Его изобретатель Чарльз Мур первоначально применил его для разработки программного обеспечения микроЭВМ, управляющей работой радиотелескопа. Преимущества работы с языком Форт вместо применявшегося ранее Ассемблера были настолько велики, что вскоре он стал использоваться и на других специализированных ЭВМ.
Быстрый рост популярности языка Форт начался с середины 1970-х гг., когда появились персональные ЭВМ. Оказалось, что этот язык позволяет обходиться сравнительно небольшим набором возможностей первых персональных ЭВМ, превращая их в удобный и эффективный инструмент для самой разной работы. К середине 1980-х гг. Форт выдвинулся на третье место после языков Бейсик и Паскаль в качестве средства программирования для персональных ЭВМ, и рост его применения продолжается. Широкое распространение получили коммерческие программные продукты, написанные на Форте: системы обработки текстов, пакеты машинной графики, трансляторы, видеоигры. Стихийно быстрое распространение Форта и его практический успех обусловили необходимость стандартизации языка. В 1983 г. был опубликован стандарт «Форт-83», в соответствии с которым ведется изложение материала в этой книге.

Предисловие
Этот язык, получивший широкое распространение за рубежом (особенно как средство программирования для персональных ЭВМ), стал привлекать внимание и советских программистов благодаря особенностям своей методологии. Язык Форт сочетает в себе достоинства интерпретирующих и компилирующих систем и ориентирован на диалоговый режим работы. В книге приведено большое количество примеров.

Основные понятия
Язык Форт больше всего похож на язык ассемблера. Его синтаксис также максимально прост. Запись каждой конструкции (команды) состоит из одного слова мнемонического обозначения, в качестве которото может выступать последовательность любых литер, не содержащая пробела. Простота синтаксиса является следствием того, что в качестве вычислительной модели используется стековая машина.

Шитый код и его разновидности
Логически можно выделить два подхода к реализации языков программирования трансляцию и интерпретацию. Транслятор преобразует входной текст программы в машинный код данной ЭВМ; впоследствии этот код, объединяясь с другими машиниыми модулями, образует рабочую программу, которую можно загрузить в оперативную память и исполнить. Интерпретатор непосредственно исполняет программу на языке высокого уровня, рассматривая входной текст как последовательность кодов операций, управляющих его работой.

Примеры программных разработок
В этой главе приведены примеры реализации отдельных программных средств небольших удобных расширений (инфиксная форма записи, локальные переменные, конструкция переключатель, векторное поле кода) и целых инструментальных систем на базе языка Форт. Основное внимание уделено методологическим аспектам использования Форта как расширяемого языка.

Модель форт-системы
Приводимый ниже текст представляет собой ядро системы ФОРТ-ЕС (см. ), из которого исключены запускающая часть и реализации слов нижнего уровня для обмена с терминалом и внешней памятью. Общий объем ядра 8Кбайт (свыше 200 слов). Текст состоит из двух частей списка слов с их краткими спецификациями и экранов с определениями на встроенном языке ассемблера и на языке Форт.

Распространенные форт-системы
Форт-СМ. Система разработана в Ленинграде С.Б.Кацевым (ЛГУ) и И.А.Шендриковым (ЛИТМО) на основе стандарта Форт-83. Используется с 1985г. на ЭВМ СМ-3, СМ-4, ДВК, Электроника-60, БК0010. Словарь включает около 350 слов, его общий объем 10,5К. В зависимости от генерации может работать под операционными системами ОСРВ, РАФОС или без операционной системы с перфоленточной загрузки.

Список литературы

Введение в теорию программирования. Функциональный подход

Важнейшими математическими формализациями, рассматриваемыми в данном курсе, являются ламбда-исчисление и комбинаторная логика.
Еще в 1924 г. М. Шейнфинкель (Moses Schonfinkel) разработал простую (simple) теорию функций, которая фактически являлась исчислением объектов-функций и предвосхитила появление ламбда-исчисления – математической формализации, поддерживающей языки функционального программирования (т.е. программирования в терминах функций).
Затем в 1934 г. А. Черч (Alonso Church) предложил собственно исчисление ламбда-конверсий (или ламбда-исчисление) и применил его для исследования теории множеств. Вклад ученого был фундаментальным, так что теория до сих пор называется ламбда-исчислением и часто именуется в литературе ламбда-исчислением Черча.
Позднее, в 1940 г., Х. Карри (Haskell Curry) создал теорию функций без переменных (иначе называемых комбинаторами), известную в настоящее время как комбинаторная логика. Эта теория является развитием ламбда-исчисления и представляет собой формальный язык, подобный языку функционального программирования.

Вступительная лекция
В 60-х годах Дж. Бэкусом (John Backus) были созданы основы формализации синтаксиса языков программирования посредством специального математического языка. Позднее П. Науром (Peter Naur) этот язык (а с точки зрения целевого языка программирования — метаязык) был доработан, в результате чего возникла математическая нотация, известная и сегодня под названием "форм Бэкуса-Наура", или, сокращенно, БНФ.

Классификация языков программирования
Первые языки программирования возникли относительно недавно. Различные исследователи указывают в качестве времени их создания 20-е, 30-е и даже 40-е годы XX столетия. Нашей задачей является не установление самого раннего языка, а поиск закономерностей в их развитии.

Концепция и возможности подхода .NET
Попытаемся найти ответ на вопрос: что такое .NET? Несмотря на популярность термина, однозначно ответить непросто, прежде всего по той причине, что ответ представляется многоаспектным.

Функциональный подход к программированию
Время появления теоретических работ, обосновывающих функциональный подход, относится к 20-м – 30-м годам XX столетия. Как мы убедимся впоследствии, теория часто значительно опережает практику программирования, и важнейшие работы, которые сформировали математическую основу подхода, были написаны задолго до появления компьютеров и языков программирования, которые потенциально могли бы реализовать эту теорию.

Ламбда-исчисление как формализация языка функционального программирования
Пожалуй, наиболее продуктивной формализацией понятия "функция" стала математическая теория, известная сегодня под названием ламбда-исчисления. Более точно это исчисление следует называть исчислением ламбда-конверсий.

Теоретические сведения
Первые реализации языка SML были интерактивными. При запуске компилятора пользователь вводил выражения в режиме командной строки. Введенные SML-выражения компилировались и направлялись на выполнение, и результат отображался на экране компьютера. Ввод очередного выражения был возможен по завершении обработки предыдущего.

Комбинаторная логика как формальная система
Рассмотрим построение формальной системы логики. Заметим, что важнейшим понятием для любой формы комбинаторной логики является понятие комбинатора. Для того, чтобы формально определить комбинатор, необходимо ввести понятие свободной и связанной переменной в ламбда-выражении.

Теория типов и комбинаторная логика
В математике принято называть типами (или, иначе, сортами) относительно устойчивые и независимые совокупности элементов, которые можно выделить во всем рассматриваемом множестве (предметной области). Заметим, что разделение элементов предметной области на типы или сорта во многом является условным и носит субъективный характер, т.к. зависит от эксперта в этой области.

Задание
Сформулируйте формальную постановку задачи, запишите правила вывода и реализуйте программу на SML в соответствии с вариантом исполнения.

Синтаксис языков программирования
Неформально определим синтаксис (языка программирования или математической теории) как форму конструкций (программы или теории) и способов их комбинирования. Более точное определение синтаксиса будет сформулировано далее в ходе лекции.

Семантика языков программирования
Прежде всего, рассмотрим неформальную семантику языков программирования. Для построения адекватной и удобной в использовании семантики необходимо, прежде всего, определить критерии, характеризующие "хороший" язык программирования. Попытаемся сформулировать обобщенные требования, предъявляемые к описанию языков программирования.

Варианты заданий
Целью синтаксического анализа является разбор строки символов на отдельные составляющие элементы согласно набору синтаксических правил. Например, простую скобочную запись a(bc) можно представить как в виде аппликации a - (b - c), так и в виде двоичного дерева.

Рекурсивные функции и множества
Построим модель рекурсивных вычислений посредством формальной логики. Под рекурсивным определением объекта (как в абстрактном теоретическом смысле, так и в аспекте практического программирования) будем понимать такое определение, которое содержит внутри себя ссылку на определяемый объект.

Теоретические сведения
Рекурсивно определенная функция содержит в своем определении ссылку на саму себя. Важными областями примемения индукции в математике являются индуктивные определения и доказательства. Рекурсия в языке программирования SML определяется по аналогии с традиционной математической индукцией.

Абстрактные машины и категориальная комбинаторная логика
Абстрактной машиной (abstract machine) в рамках данного курса будем называть математическую формализацию, которая моделирует правила выполнения программы (или, иначе, алгоритмы) для реальной вычислительной машины (компьютера).

Категориальная абстрактная машина
Под вычислениями будем понимать трансляцию конструкций, которые заданы на языке программирования, в код категориальной абстрактной машины (возможно, с использованием некоторого промежуточного кода) с последующим означиванием результирующего кода в той или иной среде. Означивание кода категориальной абстрактной машины производится с помощью функции вычисления значения.

Оптимизация вычислений и абстрактные машины
Проиллюстрируем особенности реализации наиболее существенных стратегий вычислений на примере КАМ. Как было показано в ходе предыдущей лекции, такая формализация вычислительной машины как категориальная абстрактная машина позволяет вполне удовлетворительно реализовать модель транслятора языка функционального программирования.

Теоретические сведения
Состояния КАМ принадлежат пространству декартово замкнутых категорий (д.з.к.), важными свойствами которых являются тождественное преобразование, а также операции композиции, образования упорядоченной пары, взятия проекций, каррирования и аппликации.

Основы тестирования программного обеспечения

Качество программного продукта характеризуется набором свойств, определяющих, насколько продукт "хорош" с точки зрения заинтересованных сторон, таких как заказчик продукта, спонсор, конечный пользователь, разработчики и тестировщики продукта, инженеры поддержки, сотрудники отделов маркетинга, обучения и продаж. Каждый из участников может иметь различное представление о продукте и о том, насколько он хорош или плох, то есть о том, насколько высоко качество продукта. Таким образом, постановка задачи обеспечения качества продукта выливается в задачу определения заинтересованных лиц, их критериев качества и затем нахождения оптимального решения, удовлетворяющего этим критериям. Тестирование является одним из наиболее устоявшихся способов обеспечения качества разработки программного обеспечения и входит в набор эффективных средств современной системы обеспечения качества программного продукта.

Тестирование - способ обеспечения качества
С технической точки зрения тестирование заключается в выполнении приложения на некотором множестве исходных данных и сверке получаемых результатов с заранее известными (эталонными) с целью установить соответствие различных свойств и характеристик приложения заказанным свойствам.

Концепция тестирования
Формальный подход или доказательство применяется, когда из исходных формул-аксиом с помощью формальных процедур (правил вывода) выводятся искомые формулы и утверждения (теоремы). Вывод осуществляется путем перехода от одних формул к другим по строгим правилам, которые позволяют свести процедуру перехода от формулы к формуле к последовательности текстовых подстановок

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

Оценка Покрытия Программы и Проекта
Тестирование программы Р по некоторому критерию С означает покрытие множества компонентов программы P М = {m1...mk} по элементам или по связям T = {t1...tn} - кортеж неизбыточных тестов ti. Тест ti неизбыточен, если существует покрытый им компонент mi из M(P,C), не покрытый ни одним из предыдущих тестов t1...ti-1. Каждому ti соответствует неизбыточный путь pi - последовательность вершин от входа до выхода.

Пример модульного тестирования
Модульное тестирование - это тестирование программы на уровне отдельно взятых модулей, функций или классов. Цель модульного тестирования состоит в выявлении локализованных в модуле ошибок в реализации алгоритмов, а также в определении степени готовности системы к переходу на следующий уровень разработки и тестирования.

Особенности интеграционного тестирования
Программный проект, написанный в соответствии с объектно-ориентированным подходом, будет иметь ГМП, существенно отличающийся от ГМП традиционной "процедурной" программы. Сама разработка проекта строится по другому принципу - от определения классов, используемых в программе, построения дерева классов к реализации кода проекта.

Системное тестирование
Системное тестирование качественно отличается от интеграционного и модульного уровней. Системное тестирование рассматривает тестируемую систему в целом и оперирует на уровне пользовательских интерфейсов, в отличие от последних фаз интеграционного тестирования, которое оперирует на уровне интерфейсов модулей. Различны и цели этих уровней тестирования.

Автоматизация тестирования
Использование различных подходов к тестированию определяется их эффективностью применительно к условиям, определяемым промышленным проектом. В реальных случаях работа группы тестирования планируется так, чтобы разработка тестов начиналась с момента согласования требований к программному продукту (выпуск Requirement Book, содержащей высокоуровневые требования к продукту) и продолжалась параллельно с разработкой дизайна и кода продукта

Качество программного продукта и тестирование
Каждый из участников может иметь различное представление о продукте и по-разному судить о том, насколько он хорош или плох, то есть насколько высоко качество продукта. С точки зрения разработчика, продукт может быть настолько хорош, насколько хороши заложенные в нем алгоритмы и технологии. Пользователю продукта, скорее всего, безразличны детали внутренней реализации, его в первую очередь волнуют вопросы функциональности и надежности.

Выполнение тестов
Рассмотрим два основных подхода к выполнению тестов: подход ручного тестирования и подход автоматического исполнения (прогон) тестов. Подходы рассмотрены на примере тестирования продукта, поддерживающего интерфейс командной строки. Тесты описывают вызов продукта с параметрами и проверку возвращаемого значения в виде фиксируемых при прогоне – текста из STDOUT и состояния некоторых файлов, зависящего от входных параметров.

Цели и задачи регрессионного тестирования
При корректировках программы необходимо гарантировать сохранение качества. Для этого используется регрессионное тестирование - дорогостоящая, но необходимая деятельность в рамках этапа сопровождения, направленная на перепроверку корректности измененной программы. В соответствии со стандартным определением, регрессионное тестирование - это выборочное тестирование, позволяющее убедиться, что изменения не вызвали нежелательных побочных эффектов, или что измененная система по-прежнему соответствует требованиям.

Случайные методы
Случайные методы оказываются на удивление дешевыми и эффективными. Случайно выбранные входные данные могут давать больший разброс по покрытию кода, чем входные данные, которые используются в наборах тестов, основанных на покрытии, в одних случаях дублируя покрытие, а в других не обеспечивая его.

Интеграционное регрессионное тестирование
С появлением новых направлений в разработке программного обеспечения (например, объектно-ориентированного программирования), поощряющих использование большого количества маленьких процедур, повышается важность обработки межмодульного влияния изменений кода для методик уменьшения стоимости регрессионного тестирования.

Методика регрессионного тестирования
Методика предназначена для эффективного решения задачи выборочного повторного тестирования. Ее исходными данными являются: программа P и ее модифицированная версия P', критерий тестирования C, множество (набор) тестов T, ранее использовавшихся для тестирования P, информация о покрытии элементов P (M(P,C)) тестами из T.

Описание тестируемой системы и ее окружения
Практикум базируется на тестировании модели реальной системы управления автоматизированным комплексом хранения подшипников. Она обеспечивает прием подшипников на склад, сохранение характеристик поступивших подшипников в базе данных (БД), а при поступлении заявки на подшипники вместе с параметрами оси - подбор подходящих подшипников и их выдачу.

Модульное тестирование на примере классов
Цель тестирования программных модулей состоит в том, чтобы удостовериться, что каждый модуль соответствует своей спецификации. Если это так, то причиной любых ошибок, которые возникают при их объединении, является неправильная стыковка модулей. В процедурно- ориентированном программировании модулем называется процедура или функция, иногда группа процедур, которая реализует абстрактный тип данных.

Идентификация взаимодействий
Взаимодействие объектов представляет собой просто запрос одного объекта (отправителя) на выполнение другим объектом (получателем) одной из операций получателя и всех видов обработки, необходимых для завершения этого запроса.

Системное тестирование
Системное тестирование качественно отличается от интеграционного и модульного уровней. Системное тестирование рассматривает систему в целом и применяется на уровне пользовательских интерфейсов, в отличие от последних фаз интеграционного тестирования, которое оперирует на уровне интерфейсов модулей, хотя набор модулей может быть аналогичным. Различны и цели этих уровней тестирования.

Ручное тестирование
Наиболее распространенным способом разработки тестов является создание тестового кода вручную. Такой способ создания тестов является наиболее гибким, однако производительность тестировщиков при создании тестового кода соизмерима с производительностью разработчиков при создании кода продукта, а объемы тестового кода часто бывают в 1-10 раз больше объема самого продукта.

Автоматизация тестирования с помощью скриптов
Общая тенденция последнего времени предусматривает максимальную автоматизацию тестирования, которая позволяет справляться с большими объемами данных и тестов, необходимых для современных продуктов.

Автоматическая генерация тестов на основе формального описания
Тесты составляются на основе спецификации требований. При формулировании требований на естественном языке существует проблема их различных толкований. Одним из способов избежать этого является применение формальных языков для описания структуры и поведения системы (UML, SDL, MSC).

Описание ручного тестирования
Реализация выбранного подхода для ручного тестирования приводится в Class1.cs (..\SystemTesting\ManualTests\Tests\Class1.cs). Все классы входят в пространство имен Tests.

Как создать свой тест?
В данном случае используется тот же принцип, что и при ручном тестировании: задать состояние окружения (StoreStat, AxlePar, RollerPar, StoreMessage, CommandStatus);ждать, когда в системе произойдет определенное событие;задать новое состояние окружения;и т.д.

Структура и описание содержимого каталогов
В папке Documents находится:FDS;HLD;Практикум (этот документ). Папка IntegrationTesting содержит проект Visual Studio .NET с примером интеграционного теста. Папка ModuleTesting содержит проект Visual Studio .NET с примером модульного теста. В папке SystemTesting\ManualTests содержится проект Visual Studio .NET с примерами системных ручных тестов.

Использование MS Visio для генерации MPR-файлов
Разработанный набор утилит предназначен для: преобразования MSC-диаграмм в формат MPR;проверки правильности подключения сигналов;загрузки комментариев. Утилита поддерживает следующие типы конструкций: Instance Instance End Message Action Comment Coregion Text Condition Reference Block(Alt, Par, Loop, Opt).

Необходимое аппаратное обеспечение
Запустите программу инсталляции. Появится диалоговое окно. Для продолжения инсталляции нужно нажать кнопку NEXT. После этого необходимо ввести путь, куда будет установлено приложение.

Принятые сокращения
Система предназначена для управления автоматизированным комплексом хранения подшипников. Она обеспечивает прием подшипников на склад, а также подбор и выдачу по запросу. Данный документ описывает требования и ограничения на использование приложения.

Описание структуры проекта
Данный документ описывает внутреннюю структуру, взаимодействие с окружением и внешние интерфейсы приложения. Приводится описание классов, их взаимодействие, а также описание их внешних и внутренних интерфейсов.