Дипломна робота молодшого спеціаліста



Скачати 458.38 Kb.
Сторінка5/7
Дата конвертації23.10.2016
Розмір458.38 Kb.
ТипДиплом
1   2   3   4   5   6   7
Отже система тестування представлена в Moodle має значний набір функцій, але вона має значний недолік: вона працює виключно з сайтами, що працюють на системі Moodle. Це дуже сильно обмежує користувача, адже будь-які обмеження Moodle будуть обмеженнями цієї системи.
2. Вибір мови програмування та середи розробки

2.1 Вибір мови програмування

Для розробки системи можливо було використати мову C++ або Java

Мова С++ з появою перших трансляторів знайшла відразу ж дуже широке розповсюдження, на ній було створено величезну кількість програм і застосувань. У міру накопичення досвіду створення великих програмних систем спливли недоліки, які спонукали до пошуку альтернативних рішень. Таким альтернативним рішенням стала мова Java, яка в деяких областях стала конкурувати у популярності з C++, а фірма Майкрософт запропонувала мову C# як нову мову, що розвиває принципи C++ і що використовує переваги мови Java. Надалі з'явилася мова Nemerle, об'єднуюча переваги C# з можливістю функціонального програмування. Останнім часом з'явилася спроба об'єднання ефективності C++, безпеки і швидкості розробки, як в Java і C# — була запропонована мова D, яка поки не отримала широкого визнання.



Мова Java володіє такими особливостями, яких немає в мові C++ :

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

  • Java-код компілюються спочатку не в машинний код, а в певний проміжний код, який надалі інтерпретується або компілюється, тоді як багато C++ компіляторів орієнтіровані на компіляцію в машинний код заданої платформи.

  • У мові Java є чіткі певні стандарти на введення-виведення, графіку, геометрію, діалог, доступ до баз даних і інших типових застосувань. Завдяки цим особливостям, застосунки на Java мають значно кращу кросплатформенність, ніж С++, і часто, будучи написані для певного комп'ютера і операційної системи, працюють під іншими системами без змін. Програмісти, що пишуть на мові Java, не залежать від пакетів, нав'язаних розробниками компіляторів на дане конкретне середовище, що різко спрощує портування програм.

  • У мові Java реалізована повноцінна збірка сміття, якої немає в C++. Немає в С++ і засобів перевірки правильності вказівників. З іншого боку, C++ володіє набором засобів (конструктори і деструктори, стандартні шаблони, посилання), що дозволяють майже повністю виключити виділення і звільнення пам'яті вручну і небезпечні операції з вказівниками. Проте таке виключення вимагає певної культури програмування, тоді як в мові Java воно реалізується автоматично.

  • Мова Java є чисто об'єктно-орієнтованою, тоді як C++ підтримує як об'єктно-орієнтоване, так і процедурне програмування.

  • В C++ відсутня повноцінна інформація про типи під час виконання RTTI. Цю можливість можна було б реалізувати в C++, маючи повну інформацію про типи під час компіляції CTTI.

  • У C++ є можливість введення призначеного для користувача синтаксису за допомогою #define, що може привести до того, що модулі у великих пакетах програм стають сильно пов'язані один з одним. Це різко знижує надійність пакетів і можливість організації розділених модулів. З іншого боку, С++ надає достатньо засобів (константи, шаблони, вбудовані функції) для того, щоб практично повністю виключити використання #define.

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

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

  • Збірка сміття призводить до втрати ефективності.

  • Стандарти на графіку, доступ до баз даних тощо є недоліком, якщо програміст хоче визначити свій власний стандарт.

  • Вказівники у багатьох випадках є могутніми, або навіть необхідними засобом, а їхнє безконтрольне використання небезпечне лише в невмілих руках.

  • Підтримка процедурного програмування є корисною.

Далеко не всі програмісти є прихильниками однієї з мов. На думку більшості програмістів, Java і C++ не є конкурентами, тому що мають різні області застосування. Інші вважають, що вибір мови для багатьох завдань є питанням особистого смаку.

Для моєї задачі більш зручною буде мова Java. Незалежність від архітектури дозволить проходити тестування на мобільних пристроях, що є важливим у наш час, а деякі рішеня, такі як Java Servlet полегшать створення додатку. Отже розглянемо мову Java більш детально.

У створенні мови програмування Java було чотири початкові цілі:[6]


  1. Синтаксис мови повинен бути «простим, об'єктно-орієнтовним та звичним».

  2. Реалізація має бути «безвідмовною та безпечною», а також «високопродуктивною».

  3. Повинна зберегтися «незалежність від архітектури та портативність».

  4. Мова має бути «динамічною, інтерпретованою та підтримувати мультиопрацьовування».

Платформа Java

Під «незалежністю від архітектури» мається на увазі те, що програма, написана на мові Java, працюватиме на будь-якій підтримуваній апаратній чи системній платформі без змін у початковому коді та перекомпіляції.

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

Стандартні бібліотеки забезпечують загальний спосіб доступу до таких платформозалежних особливостей, як обробка графіки, багатопотоковість та роботу з мережами. У деяких версіях задля збільшення продуктивності JVM, байт-код можна компілювати у машинний код до або під час виконання програми.

Основна перевага використання байт-коду — це портативність. Тим не менш, додаткові витрати на інтерпретацію означають, що інтерпретовані програми будуть майже завжди працювати повільніше, ніж скомпільовані у машинний код, і саме тому Java одержала репутацію «повільної» мови. Проте, цей розрив суттєво скоротився після введення декількох методів оптимізації у сучасних реалізаціях JVM.

Одним із таких методів є англ. just-in-time (JIT) компіляція, що перетворює Java байт-код у машинний під час першого запуску програми, а потім кешує його. У результаті, така програма запускається і виконується швидше, ніж простий інтерпретований код, але ціною додаткових витрат на компіляцію під час виконання. Складніші віртуальні машини також використовують динамічну рекомпіляцію, яка полягає в тому, що В. М. аналізує поведінку запущеної програми й вибірково рекомпілює та оптимізує певні її частини. З використанням динамічної рекомпіляції можна досягти більшого рівня оптимізації, ніж за статичної компіляції, оскільки динамічний компілятор може робити оптимізації на базі знань про довкілля періоду виконання та про завантажені класи. До того ж, він може виявляти так звані гарячі точки (англ. hot spots) —- частини програми, найчастіше внутрішні цикли, які займають найбільше часу при виконанні. JIT компіляція та динамічна рекомпіляція збільшує швидкість Java програм, не втрачаючи при цьому портативності.

Існує ще одна технологія оптимізації байткоду, широко відома як статична компіляція, або англ. ahead-of-time (AOT) компіляція. Цей метод передбачає, як і традиційні компілятори, безпосередню компіляцію у машинний код. Це забезпечує хороші показники в порівнянні з інтерпретацією, але за рахунок втрати переносності: скомпільовану таким способом програму можна запустити тільки на одній, цільовій платформі.

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

Об'єктність

На противагу C++, Java об'єктно-орієнтованіша. Всі дані і дії групуються в класи об'єктів. Виключенням з повної об'єктності (як скажімо в Smalltalk) є примітивні типи (int, float тощо). Це було свідомим рішенням проектувальників мови задля збільшення швидкості. Через це, Java не вважається повністю об'єктно-орієнтовною мовою.

У Java всі об'єкти є похідними від головного об'єкта (він називається просто Object), з якого вони успадковують базову поведінку і властивості.

Хоча у C++ вперше стало доступне множинне успадкування, але у Java можливе тільки одинарне успадкування, завдяки чому виключається можливість конфліктів між членами класу (методи і змінні), які успадковуються від базових класів.

Безпека

У намірах проектувальників Java мала замінити C++ — об'єктного наступника мови C. Проектувальники почали з аналізу властивостей C++, які є причиною найбільшого числа помилок, щоби створити просту, безпечну і безвідмовну мову програмування.



В Java існує система винятків або ситуацій, коли програма зустрічається з неочікуваними труднощами, наприклад:

  • операції над елементом масиву поза його межами або над порожнім елементом

  • читання з недоступного каталогу або неправильної адреси URL

  • ввід недопустимих даних користувачем

Одна з особливостей концепції віртуальної машини полягає в тому, що помилки (виключення) не призводять до повного краху системи. Крім того, існують інструменти, які «приєднуються» до середовища періоду виконання і кожен раз, коли сталося певне виключення, записують інформацію з пам'яті для відлагодження програми. Ці інструменти автоматизованої обробки виключень надають основну інформацію щодо виключень в програмах на Java.

Проте, мову програмування Java не рекомендується використовувати в системах, збій в роботі яких може призвести до смерті, травм чи значних фізичних ушкоджень (наприклад, програмне забезпечення для керування атомними електростанціями, польотами, систем життєзабезпечення чи систем озброєння) через ненадійність програм, написаних на мові програмування Java.[8], пункт ліцензії Microsoft 7.7.h.

Автоматичне керування пам'яттю

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

Збирання сміття дозволене у будь-який час. В ідеалі воно відбувається під час бездіяльності програми. Збірка сміття автоматично форсується при нестачі вільної пам'яті в купі для розміщення нового об'єкта, що може призводити до кількасекундного зависання. Тому існують реалізації віртуальної машини Java з прибиральником сміття спеціально створеним для програмування систем реального часу.

Java не має підтримки вказівників у стилі C/C++. Це зроблено задля безпеки й надійності, аби дозволити збирачу сміття переміщувати вказівникові об'єкти.

На мою думку кращим вибором буде мова Java, адже її незалежність від платформи дозволить, наприклад, проходити тестування на мобільних пристроях, що є важливим в наш час. До того ж деякі особливості Java, такі як Java Servlet можуть значно полегшити роботу над проектом.
2.2. Вибір середовища розробки

Найбільш популярними середовищами для розробки на Java є NetBeans та Eclipse, розглянемо обидві.

Eclipse (вимовляється «і-клі́пс», від англійського «затемнення») — вільне модульне інтегроване середовище розробки програмного забезпечення. Розробляється і підтримується Eclipse Foundation і включає проекти, такі як платформа Eclipse, набір інструментів для розробників на мові Java, засоби для управління сирцевими кодами, візуальні побудовники GUI тощо. Написаний в основному на Java, може бути використаний для розробки застосунків на Java і, за допомогою різних плаґінів, на інших мовах програмування, включаючи Ada, C, C++, COBOL, Fortran, Perl, PHP, Python, R, Ruby (включно з каркасом Ruby on Rails), Scala, Clojure та Scheme. Середовища розробки зокрема включають Eclipse ADT (Ada Development Toolkit) для Ada, Eclipse CDT для C/C++, Eclipse JDT для Java, Eclipse PDT для PHP.
Початок коду йде від IBM VisualAge[1], він був розрахований на розробників Java, складаючи Java Development Tools (JDT). Але користувачі могли розширяти можливості, встановлюючи написані для програмного каркасу Eclipse плагіни, такі як інструменти розробки під інші мови програмування, і могли писати і вносити свої власні плагіни і модулі.
Випущена на умовах Eclipse Public License, Eclipse є вільним програмним забезпеченням. Він став одним з перших IDE під GNU Classpath і без проблем працює під IcedTea.

Eclipse являє собою фреймворк для розробки модульних кросплатформових застосунків із низкою особливостей:


можливість розробки ПЗ на багатьох мовах програмування (рідною є Java);

крос-платформова;

модульна, призначена для подальшого розширення незалежним розробниками;

з відкритим сирцевим кодом;

розробляється і підтримується фондом Eclipse, куди входять такі постачальники ПЗ, як IBM, Oracle, Borland.

Спочатку проект розроблявся в IBM як корпоративний стандарт IDE, настановлений на розробки на багатьох мовах під платформи IBM. Потім проект було перейменовано на Eclipse і надано для подальшого розвитку спільноті.


Eclipse насамперед повноцінна Java IDE, націлена на групову розробку, має засоби роботи з системами контролю версій (підтримка CVS входить у поставку Eclipse, активно розвиваються кілька варіантів SVN модулів, існує підтримка VSS та інших). З огляду на безкоштовність, у багатьох організаціях Eclipse — корпоративний стандарт для розробки ПЗ на Java.
Друге призначення Eclipse — служити платформою для нових розширень. Такими стали C/C++ Development Tools (CDT), розроблювані інженерами QNX разом із IBM, засоби для підтримки інших мов різних розробників. Безліч розширень доповнює Eclipse менеджерами для роботи з базами даних, серверами застосунків та інших.
З версії 3.0 Eclipse став не монолітною IDE, яка підтримує розширення, а набором розширень. У основі лежать фреймворки OSGi, і SWT/JFace, на основі яких розроблений наступний шар — платформа і засоби розробки повноцінних клієнтських застосунків RCP (Rich Client Platform). Платформа RCP є базою для розробки різних RCP програм як торент-клієнт Azareus чи File Arranger. Наступний шар — платформа Eclipse, що є набором розширень RCP — редактори, панелі, перспективи, модуль CVS і модуль Java Development Tools (JDT).
Eclipse написана на Java, тому є платформо-незалежним продуктом, крім бібліотеки графічного інтерфейсу SWT, яка розробляється окремо для більшості поширених платформ. Бібліотека SWT використовує графічні засоби платформи (ОС), що забезпечує швидкість і звичний зовнішній вигляд інтерфейсу користувача.
Відповідно до IDC, із Eclipse працюють 2,3 мільйона розробників.
NetBeans IDE — вільне інтегроване середовище розробки (IDE) для мов програмування Java, JavaFX, C/C++, PHP, JavaScript, HTML5, Python, Groovy. Середовище може бути встановлене і для підтримки окремих мов, і у повній конфігурації. Середовище розробки NetBeans за умовчанням підтримує розробку для платформ J2SE і J2EE.
Поширюється у сирцевих текстах під ліцензіями GPLv2 і CDDL. Проект NetBeans IDE підтримувався і спонсорувався фірмою Sun Microsystems і після придбання Sun — Oracle, проте розробка NetBeans ведеться незалежно співтовариством розробників (NetBeans Community) і компанією NetBeans.Org.
NetBeans IDE доступна для платформ Microsoft Windows, GNU/Linux, FreeBSD, і Solaris (як SPARC, так x86). Для інших платформ доступна можливість зібрати NetBeans самостійно із сирцевих текстів.
За якістю і можливостям останні версії NetBeans IDE змагається з найкращим інтегрованими середовищами розробки для мови Java, підтримуючи рефакторинг, профілювання, виділення синтаксичних конструкцій кольором, автодоповнення мовних конструкцій на льоту, шаблони коду та інше.
NetBeans IDE 6.0, створена на основі попередньої версії 5.5.1, надала гнучку підтримку створення модулів для IDE і інтернет-застосунків, заснованих на платформі NetBeans, новий дизайнер користувацьких інтерфейсів (відомий під назвою «Проект Matisse»), нову і перероблену підтримку системи управління версіями CVS, підтримку Weblogic 9 і JBoss 4, і багато покращень в редакторі. NetBeans 6.0 поставляється в складі дистрибутивів Ubuntu 8.04 і Debian.[5]
NetBeans IDE 6.5, випущена в листопаді 2008 року, розширює можливості Java EE (включаючи підтримку Java Persistence, EJB 3 та JAX-WS). Додатково, NetBeans Enterprise Pack підтримує розробку застосунків Java EE 5 Enterprise, включаючи візуальні засоби SOA, засоби для роботи з XML schema, роботу з веб-сервісами (для BPEL), і моделювання на мові UML. Збірка NetBeans IDE Bundle for C/C++ підтримує проекти на мовах C/C++.
NetBeans 7.0, що вийшла у квітні 2011, реалізувала підтримку розробки застосунків з використанням попередньої версії JDK7, були додані засоби для інтеграції з Oracle WebLogic Server 11g і забезпечена підтримка Oracle Database, GlassFish Server Open Source Edition 3.1 і Oracle GlassFish Server 3.1. Версія 7.0 вилучила зі складу модулі з реалізацією засобів розробки мови Ruby і MVC-фреймворка Ruby on Rails. В якості причини названа низька популярність NetBeans серед розробників мовою Ruby.[6]
За заявою Oracle NetBeans IDE 7.1, що вийшов у грудні 2011, став першим середовищем розробки, який повною мірою підтримує останні варіанти специфікацій і стандартів на платформу Java, включаючи повну підтримку циклу розробки з використанням JavaFX і JDK7. Основними нововведеннями NetBeans 7.1 є забезпечення повноцінної підтримки розробки з використанням JavaFX 2.0, значне розширення можливостей Swing GUI Builder, підтримка CSS3, нові інструменти для візуального зневадження інтерфейсу застосунків на базі Swing і JavaFX, інтеграція підтримки Git, додані засоби для інтеграції з Oracle WebLogic Server 12c.[7]

У випуску 7.4 у жовтні 2013[8] продовжено розвиток засобів для розробки з використанням технологій HTML5, додана підтримка створення гібридних HTML5-застосунків для платформ Android і Apple iOS з використанням фреймворку Apache Cordova, реалізовані засоби використання HTML5 в проектах Java EE і PHP, представлена ​​експериментальна підтримка майбутнього випуску JDK8.

NetBeans 8 вийшов 18 березня 2014. У випуску реалізовані засоби для розробки з використанням Java SE 8, Java SE Embedded 8 і Java ME Embedded 8, розширена підтримка Maven і Java EE з PrimeFaces, додані нові інструменти для HTML5 і, зокрема, фреймворк AngularJS, покращена підтримка PHP (підтримка системи unit-тестування Nette Tester і аналізатора коду PHP-CS-Fixer; поліпшення підтримки Twig, Latte, Neon) і C/C++ (зокрема додана консоль зневаджувача GDB).

З цих двох систем я обираю NetBeans, тому що маю опит роботи из цією IDE.

3.Створення веб-додатку

Для створення Веб-додатку біло вирішено використовувати мову програмування Java та IDE NetBeans. У першу чергу було вирішено створити класи Test та Question, які реалізують тест та окреме питання тесту відповідно.

Клас Question має відображати окреме питання тесту, тому він має такі поля:

List answers – Список, в який заносяться можливі відповіді у строчній формі.

int rightAnswer – Змінна, що вказує яка з відповідей є вірною.

Конструктор класу приймає строковий масив відповідей та ціле число, що вказує на вірну відповідь. Він заносить елементи масиву до списку відповідей answers, і копіює до змінної rightAnswer номер правильної відповіді.

Також клас має стандартні методи Get і Set для змінної rightAnswers

Клас Test реалізує власне тест. Він має наступні поля:

Question[] questions – Масив об’єктів класу Question, які реалізують питання тесту.

int length – Змінна, яка дорівнює кількості питань у тесті. Вона потрібна для зручності організації інтерфейсу.

int rightAnswers – Змінна, яка містить кількість правильних відповідей, даних особою що проходить тестування

double score – Змінна, що містить отриманий бал за 100-бальною шкалою.

Конструктор цього класу складніший ніж у класі Question. Він приймає список строкових змінних, який зазвичай має бути зчитаний з текстового файлу з тестом. Він послідовно проходить за списком, автоматично визначаючи строки, які містять відповідь, вірну відповідь, або пусту строку між питаннями. Якщо строка містить невірну відповідь то її зміст заноситься до масиву відповідей відповідного запитання. Якщо строка містить вірну відповідь, то її зміст заноситься до списку відповідей, а вказівник вірної відповіді цього питання встановлюється на номер даної відповіді. Якщо строка порожня, конструктор переходить на нове питання. Після того як усі строки будуть опрацьовані конструктор встановить змінну length на значення, що відповідає кількості питань.

Також клас має методи Get і Set для змінної rightAnswers і метод Get для змінної score, який розраховує та повертає отриманий бал відповідно до наявного значення змінної rightAnswers.

Окрім цих класів додаток має три сервлета, які відповідають за веб-інтерфейс.

Перший з сервлетів – сервлет TestChoiceServlet. Він відповідає за сторінку, на якій користувач обирає тест, котрий він хоче пройти. Цей сервлет зчитує текстовий файл tests.txt, який містить список тестів з посиланнями на файли з цими тестами. Відповідно до змісту цього файлу створюється веб-сторінка(рис.2.1) .


Рисунок 2.1- Веб-сторінка сервлета TestChoiceServlet


Каталог: cpu edu -> pluginfile.php
pluginfile.php -> Кваліфікаційна робота
pluginfile.php -> Отримано” Реєстраційний номер № від “ ” 200 р. “Відправлено з зауваженнями”
pluginfile.php -> Дипломна робота розробка android-додатку "читач pdf" Виконав ст групи ki 011
pluginfile.php -> 1. Моделі системи освіти в сучасному світі. Модель освіти як державно-відомчої організації, модель розливальної освіти
pluginfile.php -> 1. Моделі системи освіти в сучасному світі. Модель освіти як державно-відомчої організації, модель розливальної освіти


Поділіться з Вашими друзьями:
1   2   3   4   5   6   7


База даних захищена авторським правом ©uchika.in.ua 2019
звернутися до адміністрації

    Головна сторінка