Книга відомого професіонала в області комп'ютерних технологій присвячена розробці" />

як проектувалася

як проектувалася
Writing Mobile Code. Essential Software Engineering for Building Mobile Applications "id =" b_cover ">

Книга відомого професіонала в області комп'ютерних технологій присвячена розробці додатків для широкого спектру мобільних пристроїв з використанням популярної і постійно розвивається платформи .NET Compact Framework. Унікальність цієї книги полягає в тому, що в ній гармонійно переплетені теоретичні відомості про весь цикл розробки програмного забезпечення з практичними прикладами застосування на мовах С # і Visual Basic. Докладно розглядаються концепції, що лежать в основі самої платформи .NET Compact Framework, а також питання, пов'язані зі створенням ефективного призначеного для користувача інтерфейсу, управлінням пам'яттю, продуктивністю і надійністю. Чимала увага приділяється практичним аспектам розробки додатків для мобільних пристроїв, серед яких вибір моделі представлення та доступу до даних, впровадження комунікаційної моделі, реалізація моделі поведінки з допомогою кінцевих автоматів і використання XML.

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

Книга: Програмування мобільних пристроїв на платформі .NET Compact Framework

Як проектувалася .NET Compact Framework

Як проектувалася .NET Compact Framework

Запорукою успішного вирішення будь-якої технічної задачі є попереднє визначення загальних цілей, до досягнення яких слід прагнути в процесі роботи над проектом. Було б неправильно сказати, що всі основні ідеї, які стосуються проекту .NET Compact Framework, зародилися в одній голові, оскільки це не відповідало б дійсності. Ідеї ​​проекту .NET Compact Framework з'явилися результатом бурхливих суперечок між основними учасниками групи розробки інструментальних засобів і середовищ виконання, кожен з яких палко обстоював свою думку. Одні з них дотримувалися тієї точки зору, що найголовніше - це домогтися максимально можливого зменшення розміру коду. Інші ставили на чільне місце забезпечення міжплатформеній сумісності коду. Частина членів групи вважала, що ключем до завоювання ринку буде створення прикладних систем рівня підприємства для Pocket PC. Кожна з цих ідей ретельно вивчалася, зіставлялася з іншими ідеями і відразу ж апробувалася в ході лабораторних випробувань, що проводяться групою цільових розробників. Завдяки співпраці з незалежними розробниками, які в ході зазначених лабораторних випробувань використовували вже найперші з створених нами цеглинок для побудови реальних мобільних додатків, нам вдалося багато чого з'ясувати щодо того, що саме є найбільш важливим, обов'язково необхідним або ж просто бажаним для середовищ часу виконання, орієнтованих на мобільні пристрої.

Цей зворотний зв'язок визначала наші дії на протязі всієї першої фази нашого багаторічного процесу розробки, і ми глибоко вдячні всім тим, хто надав нам безцінну інформацію, виконуючи тестування первинних результатів нашої праці. Їх незалежні судження дозволили нам уточнити, доопрацювати і відшліфувати базові принципи, які слід було використовувати для доведення проекту до його повного завершення. Після узгодження основних цілей проекту почалася друга фаза процесу розробки, що забезпечила практичну реалізацію цих ідей, їх уточнення, а в необхідних випадках і внесення поправок в проміжний продукт для досягнення розумного компромісу між взаємно конкуруючими вимогами до розміру, продуктивності і можливостям програмного коду. Увінчалися наші зусилля кінцевим результатом у вигляді версії 1.1 платформи .NET Compact Framework ми були дуже задоволені. У разі мобільних пристроїв описаний ітеративний характер процесу проектування грає особливо важливу роль з тієї причини, що в розробці програмного забезпечення для пристроїв накопичено поки ще набагато менший досвід, ніж в разі настільних комп'ютерів або серверів. Мобільні пристрої стали використовуватися в якості гнучких прикладних платформ порівняно недавно, і багато розробників тільки намагаються розгледіти свій шлях при слабкому ранковому світлі нового дня; ітеративний підхід з урахуванням зворотного зв'язку з користувачами набуває в цих умовах особливого значення. До питання про те, як надати ітеративний характер процесу проектування, ми будемо постійно повертатися протягом всієї цієї книги.

Нижче, в порядку зменшення ступеня важливості, перераховані основні критерії, яким повинна була задовольняти перша версія .NET Compact Framework.

1. NET Compact Framework необхідно було створювати як підмножина розробленої раніше для настільних комп'ютерів і серверів середовища .NET Framework, сумісний з останньою па рівні двійкових кодів і задовольняє вимогам стандартів. На розробку середовища .NET Framework, орієнтованої на настільні комп'ютери і сервери, були витрачені великі зусилля, і не скористатися досягнутими результатами було б просто нерозумно. До того ж, значна частина цих результатів, включаючи двійковий формат відкомпільованих додатків (IL), мова програмування С # і бібліотеки базових класів програмного каркаса, вже була подана на розгляд до органів стандартизації (ЕСМА-334 і ЕСМА-335, ISO / IEC 23270 (С #), ISO / IEC 23271 (CLI) і ISO / IEC 23272) і затверджена. При створенні .NET Compact Framework ставилася явна завдання реалізації цих стандартів, а разом з цим і використання мовних компіляторів .NET. Можливість використання вже пройшли всебічну апробацію і довели свою працездатність компіляторів С # і VB.NET для створення додатків на платформі .NET Compact Framework поряд із залученням великої кількості інструментальних засобів проектування, тестування і налагодження, вже доступних для розробки програмного забезпечення на настільних комп'ютерах і серверах , робили цей шлях набагато більш надійним і технічно ефективним, ніж розробка нового варіанту реалізації зазначених коштів з нуля.

2.Межплатформенние можливості. Хоча перші реалізації середовища .NET Compact Framework призначаються для операційних систем Pocket PC, Windows CE і Microsoft Smartphone, сама вона була спроектована таким чином, щоб при необхідності її можна було переносити на інші платформи. Одним з практичних наслідків такого проектного рішення є той факт, що всі виклики з .NET Compact Framework, що зачіпають базову операційну систему, здійснюються через єдиний інтерфейс - PAL (platform abstraction layer - рівень абстракції платформи). Це спрощує облік залежностей базової операційної системи в процесі проектування і полегшує завдання перенесення середовища часу виконання і бібліотек в інші операційні системи. Звідси зовсім не випливає, що перенесення програмного забезпечення в іншу операційну систему не становитиме жодних труднощів лише з тієї єдиної причини, що цей аспект був врахований в процесі проектуванні .NET Compact Framework. Наприклад, в деяких операційних системах частина функціональних засобів, на які відображається PAL, може бути відсутнім, в зв'язку з чим необхідно, щоб PAL для цієї платформи реалізував такі можливості, як багатопоточне виконання, управління пам'яттю, створення графічних об'єктів або іншу функціональність, яку цільова операційна система надати не може. Рішення такого завдання може виявитися досить непростим, але воно зводиться до добре відомого і перевіреного процесу, який не був випущений з уваги в процесі проектування .NET Compact Framework.

3. Потужні можливості клієнтської сторони, включаючи підтримку малювання і форм, виконання функцій клієнта Web-служб і надання моделі доступу до даних, що володіє широкими можливостями. Ми прийшли до висновку, що для того, щоб середовище часу виконання для пристроїв сприймалася розробниками прикладних програм як конкурентоспроможна, вона повинна задовольняти декільком ключовим вимогам. Перш за все, потрібно, щоб вона забезпечувала створення користувацьких інтерфейсів з широким набором можливостей, які надають сучасні елементи управління, до яких розробники вже встигли звикнути (наприклад, сітки, списки і деревовидні уявлення). Далі, вона повинна була забезпечувати ту ж простоту використання Web-служб додатками, що і в разі .NET-додатків, що виконуються на настільних комп'ютерах (тобто робити це завдання тривіальної) Крім того, вона повинна була надавати сучасну, расширяемую модель для роботи з базами даних (ADO.NET), що забезпечує найширші можливості. Підтримка всіх вищеперелічених засобів була реалізована в бібліотеці об'єктів .NET Compact Framework.

4. Низькі вимоги до обсягу встановленої на пристрої та займаної платформою пам'яті. Для того щоб мати практичні шанси пробитися на масовий ринок пристроїв з типовими розмірами образів ПЗУ (ROM images), наша система повинна була займати не більше 2 Мбайт пам'яті. Можливість розміщення в образі ПЗУ з типовим для масових пристроїв об'ємом розглядалася нами як невід'ємна характеристика платформи для мобільних пристроїв. Щоб полегшити рішення цього завдання, не менш важливо було забезпечити можливість установки платформи в файлових системах ОЗУ існуючих пристроїв таким чином, щоб залишалося ще досить багато місця для додатків і даних. Для вирішення обох завдань потрібно, щоб необхідний для платформи обсяг пам'яті, використовуваної на пристрої, не перевищував 2 Мбайт. Крім того. NET Compact Framework повинна була зберігати працездатність і в середовищах, в яких діють жорсткі обмеження щодо доступних обсягів ОЗУ. Ці цілі значно відрізняються від тих, які ставилися при розробці платформи .NET Framework для настільних комп'ютерів і серверів, орієнтованої на виконання в умовах середовищ з достатніми запасами ресурсів, коли досягнення максимальної пропускної спроможності мало набагато більш високий пріоритет у порівнянні з мінімізацією обсягу пам'яті, займаного платформою.

5. Було потрібно надати практичну підтримку, принаймні, двох мов .NET - С # і Visual Basic .NET. Хоча з теоретичної точки зору коди будь-якою мовою програмування, орієнтованих на стандартизоване підмножина байтових кодів IL і стандартизоване безліч бібліотек програм .NET Compact Framework (ЕСМА і ISO), повинні бути здатними до компіляції для виконання на платформі .NET Compact Framework, це необхідно було підтвердити на практиці шляхом фактичної реалізації декількох мов. Ми вибрали мови С # і Visual Basic, оскільки вони є найбільш популярними мовами .NET. Як і в випадку варіанти реалізації для настільних комп'ютерів і серверів, це мало на увазі включення в .NET Compact Framework бібліотеки часу виконання Microsoft.VisualBasic.DLL.

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

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