Назначение руководства программиста



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

Примерами могут служить:

– библиотека функций;

– платформа или среда для разработки ПО;

– ПО с открытым кодом.

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

– назначение, структуру входных и выходных данных программных функций;

– возможности по созданию программного кода, особенности его интерпретации и компиляции;

– синтаксические особенности используемого языка программирования;

– возможные правила и ограничения при работе с программным кодом;

– различные инструкции по работе с программой.

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

Состав типового руководства программиста

В соответствии с требованиями ГОСТ руководство программиста должно содержать следующие разделы:

Назначение и условия применения программы, где указывают область применения ПО и технические требования, необходимые для его работы.

Характеристика программы, где описывают режим работы программы, показатели скорости ее работы и другие важные для использования характеристики.

Обращение к программе, где указывают способы и параметры запуска программы;

Входные и выходные данные, где описывают формат, способ организации и другие требования к входным и выходным данным;

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

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

Стандарты для руководства программиста

ГОСТы регламентируют и этот документ, в данном случае это ГОСТ 19.504. (Приложение 1) В соответствии с ним определяется структура и содержание Руководства программиста.

Для разработки приложения я использовал Microsoft Visual Studio. Для начала разработки нажимаем Файл --- Создать --- Создать проект --- Приложение WPF. Откроется пустая форма. На форме я разместил фон (картинку для фона я предварительно загрузил в ресурсы будущей программы), компоненты Label (свойство content Приветственное сообщение), TextBox (сюда будет вводиться имя тестируемого), кнопки Button для вызова справки и начала теста. Группирую все компоненты формы в Canvas. По нажатию на кнопку «Справка» - вызывается форма справки, на которой расположен TextBox со справкой по использованию программы и кнопка возврата к стартовой форме.

 

private void spravkaButton_Click(object sender, RoutedEventArgs e)

{

Hello.Visibility = Visibility.Hidden;//Скрыть элементы стартовой формы

Spravka.Visibility = Visibility.Visible;//Показать окно справки

}

 

private void closeSpravkaButton_Click(object sender, RoutedEventArgs e)

{

Hello.Visibility = Visibility.Visible;//показать окно стартовой формы

Spravka.Visibility = Visibility.Hidden;//скрыть элементы формы справка

}

 

При нажатии на кнопку «Начать тест», при условии, что заполнено поле ввода имени, открывается окно тестирования, на котором расположен TextBox, куда выводятся вопросы, ListBox, куда выводятся варианты ответов, и кнопки «Следующий вопрос» и «Предыдущий вопрос». Если поле ввода имени не заполнено, то выдаётся сообщение, о том, что необходимые поля не заполнены.

 

private void Button_Click(object sender, RoutedEventArgs e)

 

{

subjectName = User.Text;

 

if (!string.IsNullOrEmpty(subjectName) && !string.IsNullOrEmpty(testFilePath)) // проверяем заполнено ли поле

{

Start.Visibility = Visibility.Hidden;

Test.Visibility = Visibility.Visible;

xmlLoad(); //подгружаем файл с вопросами

step = 0;

}

else

{

MessageBox.Show("Не заполнены необходимые поля");//вывод сообщения об ошибке

}

}

 

 

void xmlLoad()

{

mainXml = XDocument.Load(testFilePath);

var qstns = mainXml.Root.Element("questions").Elements();

countSteps = qstns.Count();

foreach (var question in qstns)

{

questionsList.Add(question.Element("text").Value);

answers.Add(question.Element("answers"));

}

}

void loadStep(int _locStep, int beforeStep)

{

foreach (var curEl in mainXml.Root.Element("questions").Elements())

{

Vopros.Text = questionsList[_locStep];

Otvet.Items.Clear();

var currentAnswers = answers[_locStep];

foreach (var answer in currentAnswers.Elements())

{

Otvet.Items.Add(answer.Value);

}

}

}

 

По окончании тестирования откроется форма результатов тестирования, на которой расположен TextBox с результатом тестирования, и кнопки «Начать заново» и «Выход».

if (_step == countSteps)

{

Next.Content = "Начать заново";

Prev.Content = "Выход";

string sum = score.Sum().ToString();

string numeric = GetDeclension(int.Parse(sum), "правильный ответ", "правильных ответа", "правильных ответов");

string message = "Уважаемый(ая) " + subjectName + ". Благодарим Вас за прохождение теста. Ваш результат " + sum + " " + numeric + " из " + countSteps;

Vopros.Text = message;

Otvet.Visibility = Visibility.Hidden;

}

else

{

Next.Content = "Далее";

loadStep(_step, beforeStep);

}

}

}

string testFilePath = "Resources/testTest.xml";

 

Полный код программы с комментариями находится в Приложении 2


ЗАКЛЮЧЕНИЕ

 

Во время прохождения практики я расширил свои навыки в среде разработки языка программирования C#.

Все цели практики были достигнуты:

¾ расширение, углубление и систематизация знаний, полученных в процессе теоретического обучения;

¾ закрепление практических навыков по разработке и модификации информационных систем;

¾ формирование профессиональных компетенций.

Выполнил все задачи практики, а именно:

¾ Ознакомился с условиями работы предприятии и со своим рабочим местом, а именно с правилами внутреннего распорядка, требованиями по безопасности, физиолого-гигиеническими основами трудового процесса и требованиями санитарии;

¾ изучил нормативные и методические материалы, фундаментальной и периодической литературы в соответствии с индивидуальным заданием;

¾ использовал информационно-коммуникационные технологии;

¾ выбрал средство разработки программных продуктов;

¾ выполнил индивидуального задания (разработал тестирующую программу);

¾ оформил отчет по практике.


СПИСОК ИСТОЧНИКОВ

 

1. Джон Скит. C# для профессионалов: тонкости программирования, 3-е издание, новый перевод = C# in Depth, 3rd ed.. — М.: «Вильямс», 2014. — 608 с.

2. Кристиан Нейгел и др. C# 5.0 и платформа .NET 4.5 для профессионалов = Professional C# 5.0 and .NET 4.5. — М.: «Диалектика», 2013. — 1440 с.

3. Джозеф Албахари, Бен Албахари. C# 6.0. Справочник. Полное описание языка = C# 5.0 in a Nutshell: The Definitive Reference. — М.: «Вильямс», 2015. — 1008 с.

4. https://habrahabr.ru/

5. http://www.cyberforum.ru/

 


ПРИЛОЖЕНИЯ

 

ПРИЛОЖЕНИЕ 1

Г О С У Д А Р С Т В Е Н Н Ы Й С Т А Н Д А Р Т С О Ю З А С С Р

Единая система программной документации ГОСТ 19.504-79* (СТ СЭВ 2095-80)
 
РУКОВОДСТВО ПРОГРАММИСТА. ТРЕБОВАНИЯ К СОДЕРЖАНИЮ И ОФОРМЛЕНИЮ
 
United system for program documentation. Programmer's guide. Requirements to contents and form of presentation

Постановлением Государственного комитета стандартов Совета Министров СССР от 12 января 1979 г. ¹ 74 срок введения установлен

С 01.01. 1980 г.

Настоящий стандарт устанавливает требования к содержанию и оформлению программного документа «Руководство программиста», определённого ГОСТ 19.101-77.

Стандарт полностью соответствует СТ СЭВ 2095-80.

ОБЩИЕ ПОЛОЖЕНИЯ

1.1. Структуру и оформление документа устанавливают в соответствии с ГОСТ 19.105-78.

Составление информационной части (аннотации и содержания) является обязательным.

1.2. Руководство программиста должно содержать следующие разделы:

· назначение и условия применения программ;

· характеристика программы;

· обращение к программе;

· входные и выходные данные;

· сообщения.

В зависимости от особенностей документы допускается объединять отдельные разделы или вводить новые.

СОДЕРЖАНИЕ РАЗДЕЛОВ

2.1. В разделе «Назначение и условия применения программ» должны быть указаны назначение и функции, выполняемые программой, условия, необходимые для выполнения программы (объем оперативной памяти, требования к составу и параметрам

 

периферийных устройств, требования к программного обеспечению и т.п.).

2.2. В разделе «Характеристика программы» должно быть приведено описание основных характеристик и особенностей программы (временные характеристики, режим работы, средства контроля правильности выполнения и самовосстанавливаемости программы и т.п.).

2.3. В разделе «Обращение к программе» должно быть приведено описание процедур вызова программы (способы передачи управления и параметров данных и др.).

2.4. В разделе «Входные и выходные данные» должно быть приведено описание организации используемой входной и выходной информации и, при необходимости, ее кодирования.

2.5. В разделе «Сообщения» должны быть указаны тексты сообщений, выдаваемых программисту или оператору в ходе выполнения программы, описание их содержания и действий, которые необходимо предпринять по этим сообщениям.

2.6. В приложении к руководству программиста могут быть приведены дополнительные материалы (примеры, иллюстрации, таблицы, графики и т.п.).

 

*Переиздание (Ноябрь 1987 г.) с Изменением № 1, утвержденным в сентябре 1981 г (ИУС 11-81)

 


ПРИЛОЖЕНИЕ 2

 

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

using System.Xml;

using System.Xml.Linq;

 

namespace Самотестер

{

/// <summary>

/// Логика взаимодействия для MainWindow.xaml

/// </summary>

public partial class MainWindow : Window

{

string subjectName = "";//Переменная имени тестируемого

private int _step;// Локальная переменная шага тестирования

int countSteps;// Количество вопросов в тесте (получается динамически из выбранного файла тестирования)

XDocument mainXml = new XDocument(); // Инициализируем объект XML документа, для считывания файла теста

List<string> questionsList = new List<string>();// Список вопросов, наполняется из файла тестирования

List<XElement> answers = new List<XElement>();// Список ответов

List<int> score = new List<int>();// Кол-во набранных очков

 

//string testFilePath = "";

// Attributes

int step // Глобальная переменная шага

{

get

{

return _step;// Получаем значение локальной переменной шаг

}

 

set

{

var beforeStep = _step; // Устанавливаем предыдущий шаг

_step = value;// Устанавливаем текущий шаг

if (_step == countSteps + 1)// Проверка, равен ли текущий шаг общему кол-ву шагов, действие по кнопке начать заново

{

score.Clear();// Очищаем набранные очки

Otvet.Visibility = Visibility.Visible;// Показываем ListBox в который мы отображаем ответы текущего вопроса

_step = 0;//Снова переходим на нулевой шаг

}

if (_step == 0)// Проверяем, нулевой ли это у нас шаг

{

 

Prev.Content = "Выход";// Назначаем кнопке "Предыдущий вопрос" значение "Выход"

}

else if (_step < 0)// Проверяем шаг меньше ли нуля

{

Close();//Закрываем программу

}

else

{

Prev.Content = "Назад";// Назначение кнопке "Предыдущий вопрос", значения Назад "Предыдущий вопрос"

}

 

if (_step > 0)// Если шаг больше нулевого

{

var _answers = answers[_step - 1].Elements().ToList();// Записываем все варианты ответов на текущий вопрос в переменную

var selectedIndex = Otvet.SelectedIndex;// Смотрим какой вариант ответа был выбран в прошлом шаге

var index = beforeStep;

var val = (selectedIndex != -1) ? (_answers[selectedIndex].Attribute("true-answer") != null && _answers[selectedIndex].Attribute("true-answer").Value == "true") ? 1 : 0 : 0;// Проверяем был ли ответ правильным

if (score.Contains(_step))// Смотрим отвечали ли мы на вопрос ранее

{

score[_step] = val;// Устанавливаем для предыдущего вопроса ответили мы правильно

}

else

{

score.Add(val);// Устанавливаем для предыдущего вопроса ответили мы правильно

}

}

/*Выводим если ответили на последний вопрос результаты тестирования*/

if (_step == countSteps)

{

Next.Content = "Начать заново";

Prev.Content = "Выход";

string sum = score.Sum().ToString();

string numeric = GetDeclension(int.Parse(sum), "правильный ответ", "правильных ответа", "правильных ответов");

string message = "Уважаемый(ая) " + subjectName + ". Благодарим Вас за прохождение теста. Ваш результат " + sum + " " + numeric + " из " + countSteps;

Vopros.Text = message;

Otvet.Visibility = Visibility.Hidden;

}

else

{

Next.Content = "Далее";

loadStep(_step, beforeStep);

}

}

}

string testFilePath = "Resources/testTest.xml";

public MainWindow()

{

InitializeComponent();

Test.Visibility = Visibility.Hidden;

}

 

 

void loadStep(int _locStep, int beforeStep)

{

foreach (var curEl in mainXml.Root.Element("questions").Elements())

{

Vopros.Text = questionsList[_locStep];

Otvet.Items.Clear();

var currentAnswers = answers[_locStep];

foreach (var answer in currentAnswers.Elements())

{

Otvet.Items.Add(answer.Value);

}

}

}

public static string GetDeclension(int number, string nominativ, string genetiv, string plural)

{

number = number % 100;

if (number >= 11 && number <= 19)

{

return plural;

}

 

var i = number % 10;

switch (i)

{

case 1:

return nominativ;

case 2:

case 3:

case 4:

return genetiv;

default:

return plural;

}

 

}

 

private void prevButton_Click(object sender, RoutedEventArgs e)

{

if (Prev.Content.ToString().Trim() == "Выход")

{

Close();

return;

}

step--;

}

 

private void nextButton_Click(object sender, RoutedEventArgs e)

{

step++;

}

void xmlLoad()

{

mainXml = XDocument.Load(testFilePath);

var qstns = mainXml.Root.Element("questions").Elements();

countSteps = qstns.Count();

foreach (var question in qstns)

{

questionsList.Add(question.Element("text").Value);

answers.Add(question.Element("answers"));

}

}

 

private void Button_Click(object sender, RoutedEventArgs e)

 

{

subjectName = User.Text;

 

if (!string.IsNullOrEmpty(subjectName) && !string.IsNullOrEmpty(testFilePath))

{

Start.Visibility = Visibility.Hidden;

Test.Visibility = Visibility.Visible;

xmlLoad();

step = 0;

}

else

{

MessageBox.Show("Не заполнены необходимые поля");

}

 

}

 

private void spravkaButton_Click(object sender, RoutedEventArgs e)

{

Hello.Visibility = Visibility.Hidden;

Spravka.Visibility = Visibility.Visible;

}

 

private void closeSpravkaButton_Click(object sender, RoutedEventArgs e)

{

Hello.Visibility = Visibility.Visible;

Spravka.Visibility = Visibility.Hidden;

}

}

}

 

 









Последнее изменение этой страницы: 2016-04-07; Нарушение авторского права страницы

infopedia.su не принадлежат авторские права, размещенных материалов. Все права принадлежать их авторам. Обратная связь - 54.162.10.211