350 likes | 443 Views
Методология на разработката. Инструменти за разработка. План на темата. Инструменти за дизайн Инструменти на сорс код ниво Инструменти на ниво изпълним код Инструментно-ориентирани среди Изграждане на собствени инструменти Tool Fantasyland. Инструменти за дизайн.
E N D
Методология на разработката Инструменти за разработка
План на темата • Инструменти за дизайн • Инструменти на сорс код ниво • Инструменти на ниво изпълним код • Инструментно-ориентирани среди • Изграждане на собствени инструменти • Tool Fantasyland
Инструменти за дизайн • Инструментите за дизайн обикновено са част от някакъв CASE инструмент • Един инструмент за дизайн помага да се навигира между различни нива на абстракция • Той може да проверява консистентността на дизайна • Някои инструменти могат да генерират и сорс код на база дизайн схемата
План на темата • Инструменти за дизайн • Инструменти на сорс код ниво • Инструменти на ниво изпълним код • Инструментно-ориентирани среди • Изграждане на собствени инструменти • Tool Fantasyland
Инструменти на сорс код ниво Категории: • Редактори • Анализ на качеството на кода • Преработка на кода • Контрол на версиите • Data Dictionary инструменти
Категория Редактори - IDE Една IDE предоставя: • Компилация и откриване на грешки • Компресия/очертаване на логически елементи • Бърз преход до дефиниция на класове, методи и променливи • Бърз преход до всяко място, на което даден клас, метод или променлива се използва • Форматиране специфично за използвания език
Категория Редактори - IDE ... и още: • Динамична помощ за използвания език (библиотеки) • Съпоставяне на скобите (begin-end) • Шаблони за често използваните езикови конструкции • Интелигентно отместване • Възможност за използване на макроси
Категория Редактори - IDE За финал: • Запомняне на стринговете, по които се извършва търсене • Използване на регулярни изрази при “search-and-replace” • “Search-and-replace” върху цяла файлова група • Редакция на няколко файла едновременно • Undo на различни нива
Категория Редактори – Search-and-replace “Search-and-replace” инструменти: grep “\[ *[0-9]* *\]” *.c • Често използвани инструменти за тази цел са Perl и AWK
Категория Редактори – Сравняване на файлове • Инструменти за сравняване на файлове могат да се използват за откриване на разлика между различни версии – нещо много полезно, особено при работа в екип • Пример за такъв инструмент е diff
Категория Редактори – Инструменти за обединяване • Някои инструменти за контрол на версиите използват “заключване” на файловете, по които се работи. Има модели, при които това не е така. • Ако не се използва “заключване”, обикновено възникват няколко версии на едни и същи файлове, които в последствие трябва да се обединят.
Категория Редактори – Инструменти за форматиране • Стандартизират сорс кода (отстояния, празни редове, имена и т.н.) • Съществуват два основни типа – едните променят сорс кода, а другите генерират нови файлове на база кода, без да внасят изменения в него.
Категория Редактори – Инструменти за документиране • Използват се за генериране на документация направо от сорс кода • Използват специални тагове, за анотиране на методи, класове и т.н.
Категория Редактори – Cross-refernce инструменти • Генерират списък с променливи, методи и т.н. и местата, на които се използват в проекта. • Обикновено изхода от работата на такива инструменти е в уеб страница
Категория Редактори – Генератор на йерархии • Тези инструменти съставят карта на наследяванията. • Този тип карти могат да се използват в процеса на откриване на грешки, но са по-полезни при анализа на структурата на програмта • Подобни инструменти са достъпни в някои IDE
Анализ на качеството на кода • Инструменти за проверка на синтаксис и семантика • Инструменти за отчетност на метрики : + 20% продуктивност при поддръжката
Преработка на кода • Инструменти за преработка на кода • Инструменти за преработка на структурата - Restructurers • Инструменти за превеждане на код – Code translators
Контрол на версиите • Контрол на версиите на сорс кода • Контрол на версиите на документацията Примерни инструменти: CVS, Microsoft Visual SourceSafe, OpenCM, svk
Data Dictionary инструменти • Централно хранилище на метаданни • Каталог съдържащ всички елементи на данните – имена, структури, информация за употребата им, отношения, произход, формат
План на темата • Инструменти за дизайн • Инструменти на сорс код ниво • Инструменти на ниво изпълним код • Инструментно-ориентирани среди • Изграждане на собствени инструменти • Tool Fantasyland
Инструменти на ниво изпълним код • За създаване на код • За откриване на грешки • За извършване на тестове • За оптимизация на кода
За създаване на код • Компилатори и линекри • Make, Ant • Библиотеки с код • Wizard-и за генерация на код • Настройка и инсталация • Макро предпроцесори
За откриване на грешки • Debugger
За извършване на тестове • Автоматизиран framework за извършване на тестове – JUnit, CppUnit и т.н. • Генератори на тестове • Инструменти за създаване и изпълняване на test-case-ове • Инструменти за логически анализ • Инструменти за контрол над паммета – selective failers, access checkers • Инструменти за проследяване на грешките
За оптимизация на кода • Execution Profilers • Дизасемблери
План на темата • Инструменти за дизайн • Инструменти на сорс код ниво • Инструменти на ниво изпълним код • Инструментно-ориентирани среди • Изграждане на собствени инструменти • Tool Fantasyland
Инструментно-ориентирани среди • Някои среди са доказали, че по-добри в инструментно-ориентираното разработване. Пример : UNIX и огромния набор малки инструменти (grep, diff, make, crypt, lint, sed, awk..)
План на темата • Инструменти за дизайн • Инструменти на сорс код ниво • Инструменти на ниво изпълним код • Инструментно-ориентирани среди • Изграждане на собствени инструменти • Tool Fantasyland
Изграждане на собствени инструменти Право на избор: • Да свършим поставената задача за 5 часа • За 4 часа и 45 минути да напишем програма, която върши работата за 15 минути Програмистите винаги избират втория вариант.
Пример • В една от версиите на Windows, Microsoft оновява изцяло шрифтовата подсистема. Това изисква създаване на множество допълнителни инструменти • Извод : Край всеки по-голям проект се правят допълнителни инструменти
В допълнение за инструментите • Използването на скриптове е не-лош компромис
План на темата • Инструменти за дизайн • Инструменти на сорс код ниво • Инструменти на ниво изпълним код • Инструментно-ориентирани среди • Изграждане на собствени инструменти • Tool Fantasyland
Tool Fantasyland • Доставчиците на инструменти от години се опитват да докажат, че скоро добрите инструменти ще елиминрат нуждата от програмисти • До колко е възможно? Пример – FORTRAN е “инструмент” правен с такава цел • Извод : Програмирането е СЛОЖНО. Каквито и инструменти да се ползват, те не заменят модела на мислене на един добър програмист (например да мисли в зависимости и изключения)