Анализ предметной области

advertisement
Отчет по курсу «Технологии программирования»
Проектная документация
к задаче «Утилита форматирования исходных кодов»
Состав команды:
Чучмина Е.В.
Шильникова В.Г.
Субботина Е.А.
Михин П.М.
Воронеж 2010
Содержание
Содержание ....................................................................................................................................2
Анализ предметной области .........................................................................................................3
Анализ требований к системе.......................................................................................................7
Схема интерфейса..........................................................................................................................8
Требования к аппаратному и программному обеспечению ......................................................9
Календарный план .......................................................................................................................10
План тестирования ......................................................................................................................11
Анализ предметной области
Задача проекта - создание утилиты форматирования исходных кодов языка
программирования в HTML-файлы.
Программа будет состоять из 4-х различных dll-файлов, каждый из которых
будет работать со своим языком программирования(Pascal, php, C#, java)
Термины:
1. Утилита (англ. utility или tool) — компьютерная программа,
расширяющая стандартные возможности оборудования и
операционных систем, выполняющая узкий круг специфических задач.
Утилиты предоставляют доступ к возможностям (параметрам,
настройкам, установкам), недоступным без их применения, либо
делают процесс изменения некоторых параметров проще
(автоматизируют его).
2. Исходный код (также исходный текст) — написанный человеком текст
компьютерной программы на каком-либо языке программирования. В
обобщённом смысле — любые входные данные для транслятора.
Исходный код транслируется в исполняемый код целиком до запуска
программы при помощи компилятора, или может исполняться сразу
при помощи интерпретатора.
3. HTML (от англ. HyperText Markup Language — «язык разметки
гипертекста») — стандартный язык разметки документов во
Всемирной паутине. Большинство веб-страниц создаются при помощи
языка HTML (или XHTML). Язык HTML интерпретируется браузером
и отображается в виде документа, в удобной для человека форме.
Текстовые документы, содержащие код на языке HTML (такие
документы традиционно имеют расширение .html или .htm),
обрабатываются специальными приложениями, которые отображают
документ в его форматированном виде. Такие приложения, называемые
«браузерами» или «интернет-обозревателями», обычно предоставляют
пользователю удобный интерфейс для запроса веб-страниц, их
просмотра (и вывода на иные внешние устройства) и, при
необходимости, отправки введённых пользователем данных на сервер.
Наиболее популярными на сегодняшний день браузерами являются
Internet Explorer, Mozilla Firefox, Safari, Google Chrome и Opera
4. PHP (англ. PHP: Hypertext Preprocessor — «PHP: препроцессор
гипертекста», англ. Personal Home Page Tools[5] (устар.) —
«Инструменты для создания персональных веб-страниц») —
скриптовый язык[6] программирования общего назначения,
интенсивно применяемый для разработки веб-приложений. В
настоящее время поддерживается подавляющим большинством
хостинг-провайдеров и является одним из лидеров среди языков
программирования, применяющихся для создания динамических вебсайтов.
5. C# (произносится си-шарп) — объектно-ориентированный язык
программирования. Разработан в 1998—2001 годах группой инженеров
под руководством Андерса Хейлсберга в компании Microsoft как
основной язык разработки приложений для платформы Microsoft .NET.
Компилятор с C# входит в стандартную установку самой .NET,
поэтому программы на нём можно создавать и компилировать даже без
инструментальных средств, вроде Visual Studio.
6. Паскаль (англ. Pascal) — высокоуровневый язык программирования
общего назначения. Один из наиболее известных языков
программирования, широко применяется в промышленном
программировании[4], обучении программированию в высшей школе,
является базой для большого числа других языков.
7. Java — объектно-ориентированный язык программирования,
разработанный компанией Sun Microsystems. Приложения Java обычно
компилируются в специальный байт-код, поэтому они могут работать
на любой виртуальной Java-машине (JVM) независимо от
компьютерной архитектуры. Дата официального выпуска — 23 мая
1995 года. Программы на Java транслируются в байт-код, выполняемый
виртуальной машиной Java (JVM) — программой, обрабатывающей
байтовый код и передающей инструкции оборудованию как
интерпретатор, но с тем отличием, что байтовый код, в отличие от
текста, обрабатывается значительно быстрее.
8. Идентификатор – сочетание букв, цифр а так же некоторых других
символов, используемых в качестве «имени» переменной, объекта и
других элементов приложения.
9. Ключевые слова – зарезервированные слова языка программирования,
имеющие особое значение. Обычно обозначают типы данных, циклы,
ветвление и другие значимые элементы. Использовать ключевые слова
в качестве идентификаторов запрещено.
10.Комментарии – текстовые пояснения, которыми разработчик
сопровождает программный код для повышения читаемости кода и
облегчения процесса понимания сути другим разработчиком.
11.Файл с исходным кодом (исходник) – файл (обычно текстовый), в
котором записаны инструкции определенного языка
программирования.
12.Форматирование кода в HTML – создание HTML страницы,
содержащей исходный код, с выделенными ключевыми словами,
комментариями и другими значимыми элементами. Результат в виде
HTML странице пригоден для размещения на web-сайте, в виде
отдельной страницы или части страницы.
Постановка задачи
Разработать приложение, которое позволяет:
1. Открывать и форматировать файлы исходных кодов языков
программирования C#, Pascal, PHP, Java;
2. Задавать цвет для ключевых слов конечного файла;
3. Задавать цвет для комментариев конечного файла;
4. Автоматически определять язык программирования;
5. Для файлов с неизвестным расширением принудительно задавать
язык программирования;
6. Обрабатывать как один файл, так и директорий с файлами.
Пример работы:
Исходный код:
using
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Windows.Forms;
System.IO;
namespace Dot
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//button open click
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
}
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
StreamReader text = File.OpenText(openFileDialog1.FileName);
string s = openFileDialog1.FileName;
s = s.Replace("txt","mtxx");
TextWriter write = File.AppendText(s);
while(!text.EndOfStream)
{
string str = text.ReadLine();
}
write.Close();
text.Close();
}
}
}
Форматированный результат (внешний вид):
using
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Windows.Forms;
System.IO;
namespace Dot
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//button open click
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
}
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
StreamReader text = File.OpenText(openFileDialog1.FileName);
string s = openFileDialog1.FileName;
s = s.Replace("txt","mtxx");
TextWriter write = File.AppendText(s);
while(!text.EndOfStream)
{
string str = text.ReadLine();
}
write.Close();
text.Close();
}
}
}
Анализ требований к системе
Приложение должно представлять собой набор независимых модулей,
предназначенных каждый для обработки исходников конкретного языка
программирования, а так же внешний интерфейс для обеспечения
взаимодействия с пользователем, в виде консоли MS Windows.
Расширяемость приложения достигается путем добавления новых
модулей для форматирования исходных кодов других языков
программирования.
Функционал реализуется посредством передачи различных параметров
при вызове приложения.
Program
+Main(в args : string) : int
+SelectLang(в name : string) : int
«interface»
ILang
+Remake(в str : StreamReader) : void
+SetColorKeyword(в set, в get) : string
+SetColorComment(в set, в get) : string
+SetResultStyle(в set, в get) : int
MainClass
-keyword : string
-_SetColorKeyword : string
-_SetColorComment : string
-_SetResultStyle : string
-sw : StreamWriter
Program – класс, реализующий консольное приложение.
Interface ILang – интерфейс взаимодействия модуля и приложения.
MainClass – реализует функционал модуля по форматированию
исходно файла, получаемого им в виде StreamReader, и выдачи результата
форматирования в виде StreamWriter.
Схема интерфейса
Интерфейс приложения представляет собой командную строку,
обеспечивающую взаимодействие с пользователем.
Параметры, задаваемые при вызове приложения из командной строки:
Обязательные:
1. Имя файла с исходным кодом;
Дополнительные:
1. Ключ –kw “color” - устанавливает цвет ключевых слов;
2. Ключ –cm “color” – устанавливает цвет комментариев;
3. Ключ –rs (0,1) – устанавливает стиль выходного файла:
0 - полноценная html-страница;
1 – только форматирование исходного кода;
4. Ключ –dl (php, cs, pas, java) – принудительно устанавливает
язык для обработки исходного кода.
Требования к аппаратному и программному обеспечению
 Операционная система: MS Windows XP (SP2, SP3)/Vista (SP1,SP2) /7
 Поддержка MS .NET Framework 3.5 или выше.
Календарный план
Ид. Назв ание задачи
Длительность
1 Постанов ка задачи
Начало
Окончание
7 дней
Пн 04.10.10
Вт 12.10.10
Михин П.М.
Чучмина Е.В.
Субботина Е.А.
Шильников а В.Г.
Михин П.М.
Чучмина Е.В.
Субботина Е.А.
Шильников а В.Г.
Субботина Е.А.
4 Кодиров ание модуля PHP
20 дней
Вт 12.10.10
Пн 08.11.10
Михин П.М.
5 Кодиров ание модуля С#
20 дней
Вт 12.10.10
Пн 08.11.10
Субботина Е.А.
6 Кодиров ание модуля Java
20 дней
Вт 12.10.10
Пн 08.11.10
Шильников а В.Г.
7 Кодиров ание модуля Delphi
20 дней
Вт 12.10.10
Пн 08.11.10
Чучмина Е.В.
8 Кодиров ание в нешнего интерфейса
20 дней
Вт 12.10.10
Пн 08.11.10
Михин П.М.
9 создание скрипта сборки
10 дней
Пн 08.11.10
Пт 19.11.10
10 Тестиров ание приложения
10 дней
Пт 19.11.10
Чт 02.12.10
Шильников а В.Г.
Чучмина Е.А.
Михин П.М.
Чучмина Е.В.
Субботина Е.А.
Шильников а В.Г.
2 Подготов ка технического задания
3 Подготов ка тестов
Ид.
23 Ав г '10
06 Сен '10
В Ч П П В
1
2
3
4
5
6
7
8
9
10
7 дней
Вт 07.09.10
Ср 15.09.10
14 дней
Ср 15.09.10
Пн 04.10.10
Исполнитель
20 Сен '10
04 Окт '10
С С В Ч П П В
18 Окт '10
01 Ноя '10
С С В Ч П П В
15 Ноя '10
29 Ноя '10
С С В Ч П П
План тестирования
Описание нескольких тестов, подтверждающих работоспособность
приложения.
Тест 1
тип теста: модульный
описание: проверка функционирования модуля C#(проверка ключевых слов);
Входные данные: using System.IO;
ожидаемый результат:<font color = "blue">using</font> System.IO;
Тест 2
тип теста: модульный
описание: проверка функционирования модуля C#(проверка комментариев);
Входные данные: str.Close();//закрываем поток
ожидаемый результат: str.Close();<font color="green">//закрываем поток</font>
Тест 3
тип теста: модульный
описание: проверка функционирования модуля C#(проверка выделения строк);
Входные данные: ins = s.IndexOf("//");
ожидаемый результат : ins = s.IndexOf(<font color="red">"//"</font>);
Тест 4
тип теста: модульный
описание: проверка функционирования модуля C#(проверяем смешанные варианты,ключевые слова
+строки+комментарии);
Входные данные: string _SetColorKeyword="blue";//цвет ключевых слов,по умолчанию синий
ожидаемый результат: <font color = "blue">string</font> _SetColorKeyword=<font color =
"red">"blue"</font>;<font color = "green">//цвет ключевых слов,по умолчанию синий</font>
Тест 5
тип теста: модульный
описание: проверка функционирования модуля C#;
Входные данные get { return "\""+_SetColorKeyword+"\""; }
ожидаемый результат: get { <font color = "blue">return</font> <font color =
"blue">"\""</font>+_SetColorKeyword+<font color = "blue">"\""</font>; }
Тест 6
тип теста: модульный
описание: проверка функционирования модуля C#(проверка многострочных комментариев);
Входные данные :/*string s = "2354";
string StrRg;
Match foundWord;
*/
ожидаемый результат: :<font color = "green">/*string s = "2354";
string StrRg;
Match foundWord;
*/</font>
Тест 7
тип теста: модульный
описание: проверка функционирования модуля C#(строки+ключевые слова);
Входные данные:string newText="",n2="",n3="",n4="sdfsdf";
ожидаемый результат: <font color="blue">string</font> newText=<font color="red">""</font>,n2=<font
color="red">""</font>,n3=<font color="red">""</font>,n4=<font color="red">"sdfsdf"</font>;
Тест 8
тип теста: модульный
описание: проверка функционирования модуля Java(проверка выделения ключевых слов);
Входные данные: import java.util.Scanner;
ожидаемый результат : <font color = "blue">import</font> java.util.Scanner;
Тест 9
тип теста: модульный
описание: проверка функционирования модуля Java(проверка выделения ключевых слов,(несколько
подряд));
Входные данные: public static void main(String[] args) {
ожидаемый результат : <font color = "blue"> public</font> <font color = "blue">static<.font> <font color =
"blue">void</font> main(String[] args) {
Тест 10
тип теста: модульный
описание: проверка функционирования модуля Java(проверка выделения комментариев);
Входные данные: //выводим результат на экран
ожидаемый результат : <font color="green">//выводим результат на экран</font>
Тест 11
тип теста: модульный
описание: проверка функционирования модуля Java(проверка выделения комментариев);
Входные данные: /*выводим результат на экран*/
ожидаемый результат : <font color="green">/*выводим результат на экран*/</font>
Тест 12
тип теста: модульный
описание: проверка функционирования модуля Java(проверка выделения комментариев);
Входные данные: /**
* @param args the command line arguments
*/
ожидаемый результат : <font color="green">/**
* @param args the command line arguments
*/</font>
Тест 13
тип теста: модульный
описание: проверка функционирования модуля Java(проверка выделения строк);
Входные данные: System.out.println(" Input N - ");
ожидаемый результат : System.out.println(<font color="red">" Input N - "</font>);
Тест 14
тип теста: модульный
описание: проверка функционирования модуля Pascal(проверка выделения ключевых слов);
Входные данные: procedure ExitClick(Sender: TObject);
ожидаемый результат : <font color = "blue">procedure</font> ExitClick(Sender: TObject);
Тест 15
тип теста: модульный
описание: проверка функционирования модуля Pascal(проверка выделения комментариев);
Входные данные: { Private declarations }
ожидаемый результат : <font color="green">{ Private declarations }</font>
Тест 16
тип теста: модульный
описание: проверка функционирования модуля Pascal(проверка выделения комментариев);
Входные данные: Reset(openfile); //открывает файл;
ожидаемый результат :
Reset(openfile); <font color="green"> //открывает файл;</font>
Тест 17
тип теста: модульный
описание: проверка функционирования модуля Pascal(проверка выделения комментариев);
Входные данные: AssignFile(tmpfile,'tmp.txt');//связывает файл с tmpfile
ожидаемый результат : AssignFile(tmpfile, <font color="red"> 'tmp.txt'</font>); <font color="green">
//связывает файл с tmpfile</font>
Тест 18
тип теста: модульный
описание: проверка функционирования модуля Pascal(проверка выделения строк);
Входные данные: ss:='Hi';
ожидаемый результат : ss:=<font color="red">'Hi'</font>;
Тест 19
тип теста: модульный
описание: проверка функционирования модуля PHP(проверка выделения ключевых слов);
Входные данные: echo $a;
ожидаемый результат : <font color = "blue"> echo</font> <font color='grey'>$а</font>;
Тест 20
тип теста: модульный
описание: проверка функционирования модуля PHP(проверка выделения комментариев);
Входные данные: /* ............... */
ожидаемый результат : <font color="green">/* ............... */</font>
Тест 21
тип теста: модульный
описание: проверка функционирования модуля PHP(проверка выделения строк);
Входные данные: $s = 'Hello, world!';
ожидаемый результат : <font color='grey'>$s</font>=<font color="red">'Hello, world!'</font>;
Download