Новые книги

The agile model of software development has taken the world by storm. Now, in Agile Software Development, Second Edition, one of agiles leading pioneers updates his Jolt Productivity award-winning book to reflect all that?s been learned about agile development since its original introduction.

Alistair Cockburn begins by updating his powerful model of software development as a ?cooperative game of invention and communication.? Among the new ideas he introduces: harnessing competition without damaging collaboration; learning lessons from lean manufacturing; and balancing strategies for communication. Cockburn also explains how the cooperative game is played in business and on engineering projects, not just software development

Next, he systematically illuminates the agile model, shows how it has evolved, and answers the questions developers and project managers ask most often, including

· Where does agile development fit in our organization?

· How do we blend agile ideas with other ideas?

· How do we extend agile ideas more broadly?

Cockburn takes on crucial misconceptions that cause agile projects to fail. For example, you?ll learn why encoding project management strategies into fixed processes can lead to ineffective strategy decisions and costly mistakes. You?ll also find a thoughtful discussion of the controversial relationship between agile methods and user experience design.

Cockburn turns to the practical challenges of constructing agile methodologies for your own teams. You?ll learn how to tune and continuously reinvent your methodologies, and how to manage incomplete communication. This edition contains important new contributions on these and other topics:

· Agile and CMMI

· Introducing agile from the top down

· Revisiting ?custom contracts?

· Creating change with ?stickers?

In addition, Cockburn updates his discussion of the Crystal methodologies, which utilize his ?cooperative game? as their central metaphor.

If you?re new to agile development, this book will help you succeed the first time out. If you?ve used agile methods before, Cockburn?s techniques will make you even more effective.
Если вы читаете эту книгу, значит вы подумываете о том, как бы поставить и попробовать Ubuntu. Наверняка, вы не захотите сразу отказываться от Windows и поставите Ubuntu, как вторую ОС (операционную систему).

Возможно, вы как и я долго метались от дистрибутива к дистрибутиву и решали, какой же установить. Уверяю вас, вы сделали правильный выбор. Данная книга проведёт небольшую, но базовую экскурсию на тему установки и настройки.

Я уверен, что вы найдёте эту книгу интересной для себя. Если у вас возникают какие-либо вопросы, я могу осветить их в новой версии этой книги. С радостью выслушаю критику, пожелания и вопросы. Для связи со мной использовать почту [email protected]. Для получение бесплатных консультаций или ответов на ваши вопросы используйте контакты, полученные после подписки на рассылку http://ubuntubook.ru.

С уважением,

Дмитрий Котенок.

Примеры.

Пример 15

/* Команда для изменения скорости обмена в линии (baud).*/
/* Пример вызова в XENIX: baud /dev/tty1a 9600          */
/* /dev/tty1a - это коммуникационный последов. порт #1  */
/* Про управление модами терминала смотри man termio    */
#include <fcntl.h>
#include <termio.h>
struct termio old, new; int fd = 2;  /* stderr */
struct baudrate{ int speed; char *name;} br[] = {
  { B0,    "HANGUP" }, { B1200, "1200" }, { B9600, "9600"   },
  { B600,  "600"    }, { B2400, "2400" }, { EXTA,  "19200"  },
};
#define RATES (sizeof br/sizeof br[0])
main(ac, av) char *av[];
{       register i; char *newbaud;
	if( ac == 3 ){
	    if((fd = open(av[1], O_RDWR)) < 0 ){
		printf("Не могу открыть %s\n", av[1]); exit(1);
	    }   newbaud = av[2];
	} else  newbaud = av[1];
	if( ioctl(fd, TCGETA, &old) < 0 ){
	    printf("Попытка управлять не терминалом и не портом.\n");
	    exit(2);
	}
	if(newbaud == (char*)0) newbaud = "<не задано>";
	new=old;
	for(i=0; i < RATES; i++)
	    if((old.c_cflag & CBAUD) == br[i].speed) goto ok;
	printf("Неизвестная скорость\n"); exit(3);
ok:     printf("Было %s бод\n", br[i].name);
	for(i=0; i < RATES; i++)
	    if( !strcmp(newbaud, br[i].name)){
	      new.c_cflag &= ~CBAUD; /* побитное "или" всех масок B... */
	      new.c_cflag |= br[i].speed;
	      if( ioctl(fd, TCSETA, &new) < 0) perror("ioctl");
   /* Скорость обмена может не измениться, если терминал
    * не открыт ни одним процессом (драйвер не инициализирован).
    */        exit(0);
	    }
	printf("Неверная скорость %s\n", newbaud); exit(4);
}

© Copyright А. Богатырев, 1992-95
Си в UNIX

Назад | Содержание | Вперед