Writing Mobile Code Essential Software Engineering for Building Mobile Applications [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Writing Mobile Code Essential Software Engineering for Building Mobile Applications [Electronic resources] - نسخه متنی

Ivo Salmre

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید











Welcome to Mobile Device Software Engineering


Day by day software plays a greater role in peoples' lives, enabling us to access information, make decisions in "real time," and generally live more productive and enjoyable lives. In the early days of computers, there were a few computers to be shared by many users. Now the famous march of Moore's law has brought us to a much more democratized and distributed form of computing, the desktop and portable "personal computer." Today we are in the midst of an even more profound evolution. Personal computers and centralized servers are not going away; instead, they are being surrounded by clouds of mobile devices allowing for further decentralization of computing power. This is bringing the applicability of application software into ever-newer domains. The same people who use desktop computers for browsing the Web, doing e-mail, playing games, shopping, and otherwise interacting with the world of networked information are increasingly bringing targeted pieces of this experience with them when they "go mobile." My long-time employer Microsoft had some years back stated its mission as "A computer on every desk and in every home." It is telling that this mission statement has since been amended with "software, running anytime, anywhere, on any device." This brings us to the subject of devices. What exactly is a mobile device and how is software engineering different for mobile devices?

What is a mobile device? Computationally a mobile device represents a compromise. We have chosen to trade the incredible processing power, storage capacity, and graphical capabilities of a modern desktop computer for a mobile device where size, instantaneousness of response, and battery life matter most. This is not a bad trade. With the continued exponential growth in processing power and decline in prices, we are now at a point where my run-of-the-mill Pocket PC (400MHz XScale processor, 64MB of RAM) is in many ways more powerful than the desktop computers that ran Windows 95 only a handful of years ago. Nevertheless, mobile devices are different. Simply running a desktop operating system and applications on a mobile device will not produce a satisfactory experience for the end user. As anyone using a modern mobile phone or PDA is familiar with, the device they are holding is indeed a rich computer, but it is in significant ways different from their desktop or laptop personal computer. The design priorities and user expectations for mobile devices differ from traditional personal computers.

Today, mobile devices offer developers and end users a unique opportunity to take information, entertainment, and knowledge with them in ways that were not possible even a few years ago. Any user who has spent a significant time with today's latest smart phones or Wi-Fi enabled devices can see that fantastic things are coming. Nothing represents the concept of "information at your fingertips" as literally as the ability to pull a device out of one's pocket and interact with that information.

The established principals of software engineering are still valid for mobile devices. There is no need to throw out the existing books on successful coding techniques or security. In fact, it is even more critical that good software engineering principals be followed for mobile device software development. Desktop computers offer such a rich and tolerant environment for application development that developers can just power though many of the problems at hand without thought to good engineering practices. Sloppy design and engineering practices are at least partially forgiven by the overwhelming resources available to the developer. When this happens, the overall user experience suffers due to unnecessarily sluggish performance or poorly thought-out user interface design; however, because the desktop computer is so rich in processing power, screen real estate, and data-input capabilities, the user can work around these limitations. This is not so with devices. A sloppy user interface rapidly becomes frustrating to a user who expects rapid and intuitive access to information and has no way to navigate around bad design. Similarly wasteful or thoughtless memory usage will rapidly cause a mobile application's performance to degrade to the point of being useless. Mobile device software design is more demanding.

This book is a software engineering guide focusing on mobile application development because good software engineering is so important for making great mobile applications. It is a topic that has not been addressed yet, and the lack of clear guidelines and techniques is responsible for a great deal of frustration both for developers attempting to move to mobile development as well as for end users who bear the brunt of software developers' design mistakes. Although the examples in this book are written using the .NET Compact Framework, the concepts are general and will be of use to developers building applications regardless of the mobile device framework they choose. Whether developers work using C/C++ native code, the .NET Compact Framework, Java/J2ME, or any other mobile device technology, a good understanding of mobile software engineering practices is essential. The reader will learn how to think about mobile development problems in a clear and insightful way and will be able to navigate the mobile software development process to a successful conclusion. It is my hope that the hard-won knowledge gained by my associates and myself knocking our heads against enough low ceilings and tripping over more than a few unseen pitfalls can be shared to save others the pain. This book's intention is to serve as a guide giving practical advice on how to navigate mobile software development successfully to the very rewarding ends that mobile computing promises.


/ 159