Бердичівський політехнічнийколедж
Контрольна робота
з дисципліни “Технологіярозробки програмного забезпечення”
(варіант №17)
Виконав: студент групи Пзс-504
Шпак Р.В.
Перевірив: викладач
Тростянський Б.Г.
Бердичів
2007
/>Зміст
1. Метод “згори – вниз” розробкиструктури програми
2. Документація по супроводженнюпрограмних засобів
3. Основні класи інструментальнихсередовищ розробки і супроводження програмних засобів
4. Практичне завдання
Список використаної літератури
1. Метод “згори –вниз” розробки структури програми
Метод низпадаючоїрозробки (згори – вниз) полягає в наступному. Як і в попередньому методіспочатку будується модульна структура програми у виді дерева. Потім по черзіпрограмуються модулі програми, починаючи з модуля самого верхнього рівня(головного), переходячи до програмування якого-небудь іншого модуля тільки втому випадку, якщо вже запрограмований модуль, який до нього звертається. Післятого, як усі модулі програми запрограмовані, виконується їхнє почерговетестування і налагодження в такому ж низпадаючому) порядку. При цьому першим тестуєтьсяголовний модуль програми. При цьому ті модулі, до яких може звертатисяголовний, заміняються їхніми імітаторами. Після завершення тестування іналагодження головного і будь-якого наступного модуля виробляється перехід дотестування одного з модулів, що у даний момент представлені імітаторами, якщотакі маються. Для цього імітатор обраного для тестування модуля заміняєтьсясамим цим модулем і, крім того, додаються імітатори тих модулів, до яких можезвертатися обраний для тестування модуль. При такому порядку розробки програмився необхідна глобальна інформація формується вчасно, тобто ліквідується дуженеприємне джерело прорахунків при програмуванні модулів. Деяким недолікомнизпадаючої розробки, що приводить до певних ускладнень при її застосуванні, єнеобхідність абстрагуватися від базових можливостей використовуваної мовипрограмування, видумуючи абстрактні операції, що пізніше потрібно будереалізувати за допомогою виділених у програмі модулів. Однак здатність до такихабстракцій представляється необхідною умовою розробки великих програмнихзасобів, тому її потрібно розвивати.
Особливістюрозглянутих методів висхідної і низпадаючої розробок (які називаютьсякласичними) є вимога, щоб модульна структура програми була розроблена допочатку програмування (кодування) модулів. Ця вимога знаходиться в повнійвідповідності з водоспадним підходом до розробки ПЗ, тому що розробка модульноїструктури програми і її кодування виконуються на різних етапах розробки ПЗ:перша завершує етап конструювання ПЗ, а друга — відкриває етап кодування.
/>
2. Документаціяпо супроводженню програмних засобів
Документація посупроводу ПЗ описує ПЗ із погляду її розробки. Ця документація необхідна, якщоПЗ припускає вивчення того, як воно улаштовано (сконструйовано), і модернізаціюйого програм. Тому в разі потреби модернізації ПЗ до цієї роботи залучаєтьсяспеціальна команда розроблювачів-супровідників. Цій команді прийдеться матисправу з такою же документацією, що визначала діяльність команди первісних(основних) розроблювачів ПЗ, ( з тією лише різницею, що ця документація длякоманди розроблювачів-супровідників буде, як правило, чужою (вона створюваласяіншою командою). Щоб зрозуміти будову і процес розробки ПЗ, що модернізується,команда розроблювачів-супровідників повинна вивчити цю документацію, а потімвнести в неї необхідні зміни, повторюючи в значній мірі технологічні процеси,за допомогою яких створювалося первісне ПЗ.
Документацію посупроводу ПЗ можна розбити на дві групи:
— документація,що визначає будівлю програм і структур даних ПЗ і технологію їхньої розробки;
— документацію,що допомагає вносити зміни в ПЗ.
Документаціяпершої групи містить підсумкові документи кожного технологічного етапу розробкиПЗ. Вона включає наступні документи:
Зовнішній описПЗ.
Опис архітектуриПЗ.
Для кожноїпрограми ПЗ, опис її модульної структури, включаючи зовнішню специфікаціюкожного включеного в неї модуля.
Тексти модулівобраною мовою програмування.
Документаціядругої групи містить
Посібник ізсупроводу ПЗ, що описує особливості реалізації ПЗ (зокрема, труднощі, щодовелося переборювати) і як враховані можливості розвитку ПЗ у його будівлі(конструкції). У ньому також фіксуються, які частини ПЗ є апаратно- іпрограммно-залежними.
/>
3. Основнікласи інструментальних середовищ розробки і супроводження програмних засобів
Розроблювачамвеликих програмних засобів приходиться вирішувати дуже специфічні і складніпроблеми, особливо, якщо цей ПЗ представляє собою програмну систему нового типу,у погано комп'ютеризованій предметній області. Розробка ПЗ починається зпроцесу формулювання вимог до нього, на основі яких, виходячи з досить неяснихбажань замовника, повинний бути створений документ, що досить точно визначаєзадачі розроблювачів ПЗ. Цей документ називається зовнішнім описом ПЗ.
Зовнішній опис ПЗвідіграє роль точної постановки задачі, рішення якої повинен забезпечитирозроблювальний ПЗ. Більш того, він повинен містити всю інформацію, якунеобхідно знати користувачу для застосування ПЗ. Зовнішній опис є вихіднимдокументом для трьох взаємопов’язаних процесів: розробки текстів (дляконструювання і кодування) програм, що входять у ПЗ, розробки документації позастосуванню ПЗ і розробки комплекту тестів для тестування ПЗ. Помилки інеточності в зовнішньому описі, у кінцевому рахунку, трансформуються в помилкисамого ПЗ і обходяться особливо дорого, по-перше, тому, що вони допускаються насамому ранньому етапі розробки ПЗ, і, по-друге, тому, що вони поширюються натри рівнобіжних процеси. Це вимагає прийняття особливо серйозних заходів для їхпопередження. Вихідним документом для розробки зовнішнього опису є технічнезавдання на розробку ПЗ, яке узгоджується зацікавленими сторонами ізатверджується відповідним чином. Через цей документ передається від замовника(користувача) до розроблювача основна інформація щодо необхідного ПЗ, томуформування цього документа представляє собою досить тривалий і складнийітераційний процес взаємодії між замовником і розроблювачем, з якого іпочинається етап розробки вимог до ПЗ. Труднощі, що виникають у цьому процесі,зв'язані з тим, що користувачі часто погано представляють, що їм насправдіпотрібно. Крім того, проблеми, які необхідно відобразити у вимогах, можуть немати визначеного формулювання, що приводить до поступової зміни розуміннярозроблювачами цих проблем. У зв'язку з цим визначенню вимог часто передуєпроцес системного аналізу, у якому з'ясовується, наскількидоцільне замовлене ПЗ, як уплине таке ПЗ на діяльність користувачів і якіособливості діяльності користувачів воно повинне враховувати. Іноді буваєкорисним розробка спрощеної версії необхідного ПЗ, яка називається прототипомПЗ. Аналіз «пробного» застосування прототипу дозволяє виявитидійсні потреби користувачів і істотно уточнити вимоги до ПЗ.
Зовнішній опис ПЗподіляють на дві самостійні частини функціональну специфікацію і специфікаціюякості ПЗ. У даному випадку під терміном “специфікація” розуміється переліквластивостей та їх значень, які необхідно забезпечити в результаті розробкипрограмного продукту. Опис поводження ПЗ визначає функції, які повинневиконувати ПЗ, і тому його називають функціональною специфікацієюПЗ. Вимоги до якості ПЗ повинні бути сформульовані так, щоброзроблювачу були зрозумілі якісні показники та їх значення, які йому необхіднодосягнути при розробці цього ПЗ. Ця частина зовнішнього опису називається специфікацієюякості ПЗ. Звичайно розробка специфікації якості передує розробціфункціональної специфікації ПЗ, тому що деякі вимоги до якості ПЗ можутьвизначати включення у функціональну специфікацію спеціальних функцій,наприклад, функції захисту від несанкціонованого доступу до деяких об'єктів інформаційногосередовища. Таким чином, структуру зовнішнього опису ПЗ можна виразитиформулою:
Зовнішній опис ПЗ= визначення вимог
+ специфікаціяякості ПЗ
+ функціональнаспецифікація ПЗ
Зовнішній описвизначає, що повинне робити ПЗ і якими зовнішніми властивостями воно повинневолодіти, але не відповідає на питання, як забезпечити необхідні зовнішні властивостіПЗ і як це ПЗ повинно бути улаштовано. Зовнішній опис повинний досить точно іповно визначати задачі, які повинні вирішити розроблювачі ПЗ. У той же час вінповинен бути зрозумілим користувачем — на його підставі замовником досить частоприймається остаточне рішення про висновок договору на розробку ПЗ. Зовнішнійопис відіграє велику роль у забезпеченні необхідної якості ПЗ, тому щоспецифікація якості ставить для розроблювачів ПЗ конкретні орієнтири, щокерують вибором прийнятних рішень при реалізації специфікованих функцій./>
4. Практичнезавдання
З використаннямзасобів візуального програмування розробити програму для автоматичногорозрахунку значень складної функції:
/>
Приклад файлуформи Delphi6 для табулювання функції:
unit Func_tab;
interface
uses
Windows,Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,StdCtrls, Buttons, Grids, Menus;
type
TForm1 =class(TForm)
Label1:TLabel;
Edit1: TEdit;
Label2:TLabel;
Edit2: TEdit;
Label3:TLabel;
Edit3: TEdit;
StringGrid1:TStringGrid;
BitBtn1:TBitBtn;
Label4:TLabel;
ListBox1:TListBox;
Memo1: TMemo;
BitBtn2:TBitBtn;
Label5:TLabel;
Label6:TLabel;
Label7:TLabel;
MainMenu1:TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N3: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
BitBtn3:TBitBtn;
procedureBitBtn1Click(Sender: TObject);
procedureEdit1KeyPress(Sender: TObject; var Key: Char);
procedureEdit2KeyPress(Sender: TObject; var Key: Char);
procedureEdit3KeyPress(Sender: TObject; var Key: Char);
procedureEdit1Exit(Sender: TObject);
procedureEdit2Exit(Sender: TObject);
procedureEdit3Exit(Sender: TObject);
procedureBitBtn2Click(Sender: TObject);
procedureN4Click(Sender: TObject);
procedureN3Click(Sender: TObject);
procedureFormActivate(Sender: TObject);
procedureBitBtn3Click(Sender: TObject);
procedureN5Click(Sender: TObject);
procedureN7Click(Sender: TObject);
procedureN8Click(Sender: TObject);
procedureN9Click(Sender: TObject);
private
{ Privatedeclarations }
public
{ Publicdeclarations }
end;
var
Form1: TForm1;
X,Xn,Xk,H:real;//Параметри табулювання
fname:String[25];//
f:textfile;
implementation
{$R *.dfm}
procedure P1;
begin
MessageDlg('«Xп» не може бути більшим ніж«Хк».' +#13
+'Введіть значення правильно.', mtWarning, [mbCancel], 0);
Form1.Edit1.Text:='';
Form1.Edit2.Text:='';
end;
procedure P2;
begin
MessageDlg ('Крок табулювання «H» не може приймати таких значень.' +#13
+'Введіть значення правильно.', mtWarning, [mbCancel], 0);
Form1.Edit3.Text:='';
end;
procedure P3;
begin
MessageDlg ('Введенезначення знаходться за межами допустимого.' +#13
+'Введіть значенняправильно.', mtWarning, [mbCancel], 0);
end;
procedure P4;
begin
MessageDlg ('Треба ввестивсі дані.', mtWarning, [mbCancel], 0);
end;
procedure P5;
begin
Form1.Edit1.Text:='';
Form1.Edit2.Text:='';
Form1.Edit3.Text:='';
Form1.Edit1.SetFocus;
Form1.Height:=167;
Form1.Position:=poScreenCenter;
Form1.Label4.Visible:=False;
Form1.Label5.Visible:=False;
Form1.Label6.Visible:=False;
Form1.Label7.Visible:=False;
Form1.StringGrid1.Visible:=False;
Form1.ListBox1.Items.Clear;
Form1.Memo1.Lines.Clear;
Form1.ListBox1.Visible:=False;
Form1.Memo1.Visible:=False;
end;
procedureTForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9',Chr(8):;
'-': if(pos('-',Edit1.Text)= 0) and (length(Edit1.Text) = 0)
Then Key :='-'
else Key :=Chr(0);
',': ifpos(',',Edit1.Text)0
THen Key :=Chr(0);
else Key :=Chr(0);
end;
end;
procedureTForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9',Chr(8):;
'-': if(pos('-',Edit2.Text)= 0) and (length(Edit2.Text) = 0)
Then Key := '-'
else Key :=Chr(0);
',': ifpos(',',Edit2.Text)0
Then Key :=Chr(0);
else Key :=Chr(0);
end;
end;
procedureTForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9',Chr(8):;
',': ifpos(',',Edit3.Text)0
Then Key :=Chr(0);
else Key :=Chr(0);
end;
end;
procedureTForm1.Edit1Exit(Sender: TObject);
begin
IfEdit1.Text='' Then Exit;
If(Abs(StrToFloat(Edit1.Text))>100000)Then
begin
P3;
Edit1.Text:='';
Edit1.SetFocus;
end;
end;
procedureTForm1.Edit2Exit(Sender: TObject);
begin
IfEdit2.Text='' Then Exit;
If(Abs(StrToFloat(Edit2.Text))>100000)Then
begin
P3;
Edit2.Text:='';
Edit2.SetFocus;
end;
end;
procedureTForm1.Edit3Exit(Sender: TObject);
begin
IfEdit3.Text='' Then Exit;
If(StrToFloat(Edit3.Text)>10000)Then
begin
P3;
Edit3.Text:='';
Edit3.SetFocus;
end;
end;
ProcedureTForm1.BitBtn1Click(Sender: TObject);
var
I,K:integer;
Y:array[0..1000] of Real;
label L1;
begin
//Перевірка наявності правильних значеньв полях введення і їх взаємної коректності, з виведенням відповдних повідомлень і формуванням переходів
IF (Edit1.Text= '') or (Edit2.Text = '') or(Edit3.Text = '') then
begin
P4;
Exit;
end;
IF Edit3.Text= '0' then
begin
MessageDlg ('Треба задати крок табулювання,'
+ #13 +'який має ненульове значення', mtWarning, [mbCancel], 0);
Edit3.Text :='';
Edit3.SetFocus;
goto l1;
end;
Xn:=StrToFloat(Edit1.Text);
Xk:=StrToFloat(Edit2.Text);
H:=StrToFloat(Edit3.Text);
If Xk
begin
P1;
goto L1;
end;
If (H=Abs(Xk-Xn)) Then
begin
P2;
goto L1;
end;
X:=Xn-H;
K:=Round((Abs((Xk-Xn))/H));
If K>1000Then
begin
MessageDlg ('Переповнення масивуданих.'
+#13 +'Треба зменшити інтервал або'
+#13 +' збільшити крок табулювання', mtWarning, [mbCancel], 0);
Edit1.Text :='';
Edit2.Text :='';
Edit3.Text :='';
goto l1;
end;
//Фомування компонентівдля виведення результатів
StringGrid1.RowCount:=K+2;
Form1.Height:=430;
Form1.Position:=poScreenCenter;
Label4.Visible:=True;
Label5.Visible:=True;
Label6.Visible:=True;
Label7.Visible:=True;
StringGrid1.Visible:=True;
Label7.Caption:='у полі memo';
ListBox1.Items.Clear;
Memo1.Lines.Clear;
ListBox1.Visible:=True;
Memo1.Visible:=True;
StringGrid1.Cells[0,0]:='X';
StringGrid1.Cells[1,0]:='Y';
//Розрахунок і виведення результатів
For I:=0 to Kdo
begin
Y[I]:=(1+ln(2-Xn+H*I))/(1-Xn+H*I+0.1);
//Наступний рядокзабезпечує виведення результату
// з точністю до тисячних
Y[I]:=Round(Y[I]*1000)/1000;
StringGrid1.Cells[0,I+1]:=FloatToStr(Xn+H*I);//Виведення у таблицю
StringGrid1.Cells[1,I+1]:=FloatToStr(Y[I]);
ListBox1.Items.Add(FloatToStr(Xn+H*I)+''+FloatToStr(Y[i])); //Виведення у список
Memo1.Lines.Add(FloatToStr(Xn+H*I)+''+FloatToStr(Y[i])); //Виведення у поле Мемо
end;
l1:;
end;
//Запис результатів уфайл
procedureTForm1.BitBtn2Click(Sender: TObject);
begin
ListBox1.Items.SaveToFile('result.txt');
end;
//Збереження у файлі
procedureTForm1.N4Click(Sender: TObject);
begin
ListBox1.Items.SaveToFile(fname);
end;
//Зчитати з файла івивести у поле Мемо із скриттям зайвих компонентів
procedureTForm1.N3Click(Sender: TObject);
begin
IfFileExists('result.txt')= False Then
Begin
MessageDlg('Файла не існує', mtWarning, [mbCancel], 0);
Exit;
end;
Label7.Visible:=True;
Label7.Caption:= 'Результати зчитування з файлу';
Memo1.Lines.LoadFromFile('result.txt');
Memo1.Visible:=True;
Label4.Visible:=False;
Label5.Visible:=False;
Label6.Visible:=False;
ListBox1.Visible:=False;
StringGrid1.Visible:=False;
Form1.Height:=430;
Memo1.SetFocus;
Form1.Position:=poScreenCenter;
end;
//Створення файлу з перевіркою його існування
procedureTForm1.FormActivate(Sender: TObject);
begin
fname:='result.txt';
AssignFile (f,fname);
IfFileExists('result.txt')= False Then
begin
rewrite(f);
CloseFile(f);
end;
end;
//Очищення полів введення
procedureTForm1.BitBtn3Click(Sender: TObject);
begin
P5;
end;
procedureTForm1.N5Click(Sender: TObject);
begin
P5;
end;
//Вихід з програми
procedureTForm1.N7Click(Sender: TObject);
begin
Close;
end;
//Виведення довідки
procedureTForm1.N8Click(Sender: TObject);
begin
ShowMessage(Шпак Р.В. + #13 + ' студент групи Пзс-504');
end;
procedureTForm1.N9Click(Sender: TObject);
begin
ShowMessage('Навчальна програма табулювання функції.' + #13 +
' Версія 1.0');
end;
end.
/>Список використаної літератури
1. В. Турский.«Методология программирования».
2. Б.Іванов “Дискретнаяматематика. Алгоритмы и программы”.
3. Конспект лекцій з предмету«Технології автоматизованої обробки економічної інформації».