підвищені вимоги до замовника;
труднощі контролю і управління часом розробки.
Компонентно-орієнтована модель
Компонентно-орієнтована модель є розвитком спіральної моделі і теж грунтується на еволюційних стратегії конструювання. У цій моделі конкретизується зміст квадранта конструювання - воно відображає той факт, що в сучасних умовах нова розробка повинна грунтуватися на повторному використанні існуючих програмних компонентів (рис. 17).
Література 3 [10-100]
Контрольні питання
Дайте визначення технології конструювання програмного забезпечення.
Які етапи класичного життєвого циклу ви знаєте?
Охарактеризуйте зміст етапів класичного життєвого циклу.
Поясніть переваги і недоліки класичного життєвого циклу.
Чим відрізняється класичний життєвий цикл від макетування?
Які існують форми макетування?
Чим відрізняються один від одного стратегії конструювання ПО?
Вкажіть подібності та відмінності класичного життєвого циклу і инкрементной (макетування) моделі.
9.Об'ясніте достоїнства і недоліки инкрементной моделі.
Чим відрізняється модель швидкої розробки додатків від инкрементной моделі?
Поясніть переваги і недоліки моделі швидкої розробки додатків.
Вкажіть подібності та відмінності спіральної моделі і класичного життєво го циклу.
У чому полягає головна особливість спіральної моделі?
Чим відрізняється компонентно-орієнтована модель від спіральної моделі і класичного життєвого циклу?
Перерахуйте переваги і недоліки компонентно-орієнтованої моделі.
Лекція 2. Методологія програмування. Етапи і уpовни pазpаботки пpогpамм. Технічне завдання на pазpаботку пpогpамм. Етап технічного пpоектіpованія пpогpамм. Разpаботка стpуктуpной схем алгоpитмів. Оpганизация даних. Разpаботка стpуктуp пpогpамм і внутpіпpогpаммного интеpфейса
Технічне завдання. Включає найбільш повний і точний опис зовнішнього ефекту програми, тобто що вона повинна робити, які в неї вихідні дані та результати, обмеження на область застосовності, обмеження на ефективність (якщо вони є)
Розробка структурних схем алгоритмів
Алгоритмізація. Аналіз існуючого або розробка нового алгоритму. При аналізі існуючого алгоритму (чи кількох) слід звертати увагу на: розрахункові формули; характеристики алгоритму по швидкості, точності, необхідної пам'яті та області його застосовності. Висновок розрахункових формул при описі алгоритму можна опускати. Як правило, в математичних книгах алгоритми описуються у вигляді, що не придатному до безпосереднього перекладу мовою програмування.
Приклад. Обчислити значення
=ax3 + bx2 + cs + d
Пряме рішення
=A * X ** 3 + B * X ** 2 + C * X + D
Більш ефективне рішення
=A * X * X * X + B * X * X + C * X + D (повторне множення більш ефективно, ніж зведення в ступінь)
Подальше спрощення алгоритму - розкладання полінома (методом Горнера):
y=ax3 + bx2 + cs + d=x (ax2 + bx + c) + d=x (x (ax + b) + c) + d
У цьому випадку потрібно виконати по три дії додавання і множення.
Вибір мови програмування. На практиці вибір мови програмування часто обмежений наявністю відповідних трансляторів на доступній ЕОМ або стандартами організації. Якщо є вибір, перевага віддається мови максимально високого рівня, але такому, який може забезпечити необхідну ефективність програми.
Організація структури даних. На основі вибраного алгоритму необхідно продумати організацію даних в ЕОМ: які константи, змінні, масиви, структури будуть відповідати позначенням, прийнятим в алгоритмі, які потрібні допоміжні масиви і т.д. Залежно від вибору структури даних програма може значно змінюватися за розмірами і швидкості виконання.
Запис на псевдокоді. Перед програмуванням алгоритм слід записати в будь-якому вигляді із застосуванням стилізованого природної мови для опису структури управління програмою, конструкції якого близькі до базових керуючим конструкціям структурних мов програмування. Можливі форми запису: словесний опис, псевдокод, блок-схеми тощо При розробці псевдокоду методом так званої покрокової деталізації запис виходить більш зручною для подальшого програмування і налагодження. Фактично структура даних і псевдокод (схема) програми розробляються паралельно, все більш уточнюючи в міру деталізації алгоритму.