Скачать презентацию Методології проектування ПЗ Три складові проектування Скачать презентацию Методології проектування ПЗ Три складові проектування

Программная инженерия лекция 5.ppt

  • Количество слайдов: 32

Методології проектування ПЗ Методології проектування ПЗ

Три складові проектування : • ухвалення рішення • структуризація • подання (опис) • • Три складові проектування : • ухвалення рішення • структуризація • подання (опис) • • • Аспекти подання ПО: структура ПО; структура даних; потоки даних у програмній системі; стани ПО; опис функціонування.

Послідовний хід процесу проектування • Процес проектування починається після визначення вимог до системи й Послідовний хід процесу проектування • Процес проектування починається після визначення вимог до системи й розвивається, охоплюючи усе більш дрібні його етапи. • Другий крок, проектування, пов'язаний з розглядом різних підходів до розв'язання проблеми й із з'ясуванням, чи можуть вони привести нас до цього розв'язання. Цей крок часто пов'язаний із застосуванням методів проб і помилок, повернень до попереднього кроку.

Послідовний хід процесу проектування • Треба проробити ще третій крок, щоб зробити отриманий проект Послідовний хід процесу проектування • Треба проробити ще третій крок, щоб зробити отриманий проект більше компактним, чітким, легким для розуміння й пояснення й, отже, для реалізації. Часто третій крок, пов'язаний із синтезацією і зменшенням об'єму проекту, пропускається. • На четвертому кроці створюється проект верхнього рівня. Положення, сформульовані в ньому, слугують вихідними вимогами для робіт зі створення проектів, більш низьких рівнів. Повторним застосуванням кроку 4 до більш низьких рівнів проекту ми створюємо цілу серію проектів. Це триває доти, поки не буде створений проект самого нижнього рівня.

Процес проектування Процес проектування

Методології проектування програмного забезпечення Методології проектування програмного забезпечення "зверху вниз", "знизу нагору", "розширення ядра".

Метод спадного проектування подібний до методу одержання детального зображення з більше загального виду за Метод спадного проектування подібний до методу одержання детального зображення з більше загального виду за допомогою телескопічного збільшення. На початковому кроці формується пропозиція, що описує функцію всієї програми. Потім визначаються її підфункції. Ця процедура є рекурсивної, тобто, кожна з підфункцій може розчленовуватися доти, поки її складові частини не будуть остаточно уточнені.

Метод Йордона (Йордона - Демарко) • Використовує: DFD (діаграми потоків даних), ERD (діаграми Метод Йордона (Йордона - Демарко) • Використовує: DFD (діаграми потоків даних), ERD (діаграми "сутність - зв'язок"), STD (діаграми переходів станів), структурні діаграми, словник даних. • Ґрунтується на розгляді подій. На діаграмі верхнього рівня подія - процес. Провадиться декомпозиція

Метод Гейна - Сарсона • • • Розробляємо DFD, Виділяємо дані, Виконуємо ER - Метод Гейна - Сарсона • • • Розробляємо DFD, Виділяємо дані, Виконуємо ER - аналіз, Нормалізуємо структури даних, Переробляємо DFD з урахуванням нормалізації структур даних, • Виділяємо частини системи з урахуванням аналізу транзакцій, • Специфікуємо кожну виділену частину.

Метод Константайна • Модель: – – • Метод: – – – • структурні діаграми, Метод Константайна • Модель: – – • Метод: – – – • структурні діаграми, DFD. розробити специфікацію системи, розробити архітектуру системи, ґрунтуючись на структурі завдання, зробити декомпозицію функцій, ґрунтуючись на потоках даних, використати міри зв'язності й зчеплення й різні правила, щоб поліпшити модульність, довести проект до рівня окремих модулів. Міри: – – зв'язність максимальна, зчеплення мінімальне.

Аналітичний підхід до проектування складається в систематичному проведенні міркувань: • Чи можна досить чітким Аналітичний підхід до проектування складається в систематичному проведенні міркувань: • Чи можна досить чітким способом сформулювати розв'язання даної задачи Р за допомогою примітивних понять того язикового рівня, на якому ми збираємося програмувати? Якщо так, то можна писати програму, якщо ні, те треба ввести поняття Р 1, . . . , Рn, такі, що – (а) кожне з Р 1, . . . , Рn добре специфіковано, – (б) використовуючи ці поняття відповідно до їх специфікацій, можна написати задовільну програму рішення задачі Р. • Кожне з понять P 1, . . . , Рn розглядається у свою чергу як нове завдання, для якого процес міркування повторюється.

Аналітичний підхід до проектування • Процес триває доти, поки всі проміжні поняття, що вводять, Аналітичний підхід до проектування • Процес триває доти, поки всі проміжні поняття, що вводять, не будуть реалізовані за допомогою примітивних понять. • "Поняття" може означати програмний модуль, або речення етнічною мовою.

Приклад задача про хід шахового коня: • розробити програму, що видає перелік таких ходів Приклад задача про хід шахового коня: • розробити програму, що видає перелік таких ходів коня, що кінь побуває в кожній клітці дошки, причому в жодній не побуває двічі (вихідна позиція коня задається при введенні).

Програма розв'язання завдання: • початок. маршрут; • поки є не відвідана клітинка цк • Програма розв'язання завдання: • початок. маршрут; • поки є не відвідана клітинка цк • якщо досяжна невипробувана клітинка то розширення. маршрут інакше возврат. маршрут • все кц; • друк (маршрут)

Поняття, відмінні від основних програмних конструктів: • маршрут з операціями: початок, розширення й повернення; Поняття, відмінні від основних програмних конструктів: • маршрут з операціями: початок, розширення й повернення; • є не відвідана клітка; • досяжна невипробувана клітка.

Специфікації введених понять: • Маршрут є структурою даних, що дає можливість записати 64 позиції Специфікації введених понять: • Маршрут є структурою даних, що дає можливість записати 64 позиції коня. Позиції в маршруті впорядковані за допомогою відносини "наступний"; у будь-який момент часу остання позиція відповідає тій клітинці, що кінь займає на дошці. • Початок установлює маршрут у стартову позицію. • Повернення усікає маршрут шляхом видалення останньої позиції.

Специфікації введених понять: • “Розширення” виконується в тому випадку, коли кінь займає клітку, з Специфікації введених понять: • “Розширення” виконується в тому випадку, коли кінь займає клітку, з якої відповідно до шахових правил він може пересунутися в іншу можливу позицію маршруту, здійснюється тоді, коли можна розраховувати на один з восьми можливих ходів. • Предикат “досяжна невипробувана клітинка” повинен видавати значення істина завжди, коли існує хоча б одна досяжна клітка, у яку кінь ще не переміщався з поточної позиції.

 • • • • Type Letter. T = 'a'. . 'h'; Digit. T • • • • Type Letter. T = 'a'. . 'h'; Digit. T = 1. . 8; Position. T = record l : Letter. T; d : Digit. T; end; Board. T = array[Letter. T, Digit. T] of boolean; Route. T = array[1. . 64] of Position. T; Move. Variant. T = 1. . 8; Tried. Moves. T = array[1. . 64] of Move. Variant. T; var Board: Board. T; Route: Route. T; Tried. Moves: Tried. Moves. T; Move: Position. T; i, Nmoves : integer; Allowable : boolean; l: Char;

 • • • • • • procedure Right. Move (Pos. Beg: Position. T; • • • • • • procedure Right. Move (Pos. Beg: Position. T; Move. Varnt: Move. Variant. T; var Allowable: boolean; var Pos. Fin: Position. T); begin with Pos. Beg do begin case Move. Varnt of 1: if (l > 'f') or (d > 7) then Allowable: =false else begin Allowable: =true; Pos. Fin. l: =Succ(l)); Pos. Fin. d: =d+1 end; 2: if (l > 'g') or (d > 6) then Allowable: =false else begin Allowable: =true; Pos. Fin. l: =Succ(l); Pos. Fin. d: =d+2 end; . . 8: if (l > 'f') or (d < 2) then Allowable: =false else begin Allowable: =true; Pos. Fin. l: =Succ(l)); Pos. Fin. d: =d-1 end;

 • procedure Print. Route (Route: Route. T; NMoves: integer); • var i: integer; • procedure Print. Route (Route: Route. T; NMoves: integer); • var i: integer; f: text; • begin Assign(f, 'horse. mov'); rewrite(f); • if NMoves=0 then writeln(f, 'марщрут пустий') • else for i: =1 to NMoves do • begin • write(f, Route[i]. l, ' ', Route[i]. d: 1, ' '); • if (i mod 10) = 0 then writeln(f); • end;

 • • • • • • • begin for i: =1 to 64 • • • • • • • begin for i: =1 to 64 do Tried. Moves[i]: =1; for l: ='a' to 'h' do for i: =1 to 8 do Board[Move. l, Move. d]: =false; readln(Route[1]. l, Route[1]. d); Nmoves: =1; while (Nmoves < 64) and (Nmoves > 0) do begin Right. Move (Route[Nmoves], Tried. Moves[Nmoves], Allowable, Move); if Allowable and not Board[Move. l, Move. d] then begin NMoves: =NMoves+1; Route[Nmoves]: =Move; Board[Move. l, Move. d]: =true; end else if Tried. Moves[Nmoves] < 8 then Tried. Moves[NMoves]: =Tried. Moves[Nmoves]+1 else begin while Tried. Moves[Nmoves] = 8 do begin Board[Route[Nmoves]. l, Route[Nmoves]. d]: =false; Tried. Moves[NMoves]: =1; NMoves: =NMoves-1; end; Tried. Moves[NMoves]: =Tried. Moves[Nmoves]+1; end; Print. Route (Route, NMoves); end.

Результати розв'язання задачі a 1 c 2 e 3 g 4 h 6 g Результати розв'язання задачі a 1 c 2 e 3 g 4 h 6 g 8 e 7 c 8 a 7 b 5 d 6 f 7 h 8 g 6 f 8 d 7 b 8 a 6 c 7 e 8 f 6 h 7 g 5 e 6 g 7 f 5 d 4 c 6 d 8 b 7 a 5 b 3 c 5 a 4 b 2 d 1 c 3 b 1 a 3 c 4 e 5 d 3 e 1 g 2 h 4 f 3 h 2 f 1 d 2 e 4 f 2 h 1 g 3 h 5 f 4 h 3 g 1 e 2 c 1 a 2 b 4 d 5

Методи розширення ядра Методи розширення ядра

Метод Джексона Використовуються: • нотація Джексона для структури даних і програм, • структурний виклад Метод Джексона Використовуються: • нотація Джексона для структури даних і програм, • структурний виклад програми. Етапи: • зобразити структури вхідних і вихідних даних, • ідентифікувати зв'язки обробки між цими структурами, • сформувати структуру програми на основі виявлених відповідностей, • перелічити й розподілити всі здійсненні операції в структурі програми, • написати програму в структурованому викладі.

Нотація Джексона для структури даних і програм Нотація Джексона для структури даних і програм

Відповідність даних і програми Відповідність даних і програми

Метод Варньє - Орра Використовуються: ERD, діаграми Варньє - Орра. Схема: • аналіз обробки Метод Варньє - Орра Використовуються: ERD, діаграми Варньє - Орра. Схема: • аналіз обробки даних за схемою вхід - перетворення - вихід, • зниження розмірності відношень "багато до багатьох" за рахунок розділення системи на підсистеми, • схема для рівня програми: фізичне введення даних - логічне введення даних - редагування логічних даних - оновлення логічних даних - запис у базу - вибір з бази - обробка даних - логічний вивід - фізичний вивід.

Базові елементи в діаграмах Варньє Базові елементи в діаграмах Варньє

Структура газети у вигляді діаграми Варньє Структура газети у вигляді діаграми Варньє