вторник, марта 13, 2007

C# 3.0 - чего изволите, господин программист?

Лень - двигатель прогресса. Или регресса? Уже не знаю. Нововведения в C# 3.0 меня совсем запутали в этом плане.
Scott Guthrie в своем блоге пишет о выходе March CTP Visual Studio и .Net Framework "Orcas" и о нововведениях в языке С#: автоматических свойствах, инициализаторах объектов и коллекций.
Что такое автоматические свойства? Вы пишите:

public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}


Компилятор автоматически генерирует аксессоры get set и приватные поля для ваших свойств. Скотт пишет, что это будет делать именно компилятор, а не студия путем автогенерации кода.
Инициализаторы классов и коллекций представляют собой более вразумительную фичу, но выглядят весьма непривычно. Положим, нам надо создать экземпляр класса Person и задать значения его свойств. Сделать это можно через параметризированный конструктор, если он есть. Либо просто, присваявая значения:

Person person = new Person();
person.FirstName = "Scott";
person.LastName = "Guthrie";
person.Age = 32;


Все вы знаете, что с параметризированными конструкторами всегда беда. Их либо слишком мало, либо слишком много, и всегда не понятно, в каком состоянии окажется созданный таким конструктором экземпляр. А добавление нового свойства? Добавил свойство и полез переписывать 7 и 9 конструкторов :)
Теперь есть вот такая каонструкция:

Person person = new Person { FirstName="Scott", LastName="Guthrie", Age=32 };


Нравится?
То-же самое можно делать с коллекциями.

List people = new List {
new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 },
new Person { FirstName = "Bill", LastName = "Gates", Age = 50 },
new Person { FirstName = "Susanne", LastName = "Guthrie", Age = 32 }
};

понедельник, марта 12, 2007

Треугольник компромисов (Trade-off triangle).

В свое время, Microsoft, решив внести свою лепту в методологию разработки ПО, создала Microsoft Solutions Framework (MSF) – методологию от Microsoft. Возможно сказалось стремление переплюнуть RUP и обойти IBM в извечной конкурентной борьбе, возможно были другие причины, но методика получилась весьма тяжеловесной. Вечным свидетельством тому, служит учебник для подготовки к экзамену 70-100 в который сполна напихали этого MSF.
Несмотря ни на что, MSF получила признание в узких кругах специалистов, которым она действительно нужна, проектных менеджеров, аналитиков и архитекторов. Причиной тому отчасти была первая буква аббревиатуры - «М», ведь никто не может сказать, что Microsoft не умеет выпускать софт. Значит и методика от Microsoft должна работать. Другая причина признания MSF в том, что несмотря на свою монструозность, она содержит массу интересных и полезных вещей. Например, модель проектной группы MSF, или методика управления рисками (я знаю многих менеджеров, которые используют Excel шаблон MSF Risk Mitigations несмотря на наличие всяческих продвинутых инструментов именно из-за его простоты и удобства).
Одна из таких полезных вещей – треугольник компромиссов (tradeoff triangle), и связанная с ним матрица компромиссов (tradeoff matrix).


Треугольник компромиссов отражает в виде красивой метафоры хорошо известную всем, он жестоко попираемую на практике зависимость между ресурсами, временем и объемом работ (или реализованными возможностями) в проекте.
Принципы здравого смысла особенно часто и с особой жестокостью попираются на этапе предпроекта. Когда идет определение объема работ (scope) и сроков проекта мы часто слышим начальствующий глас - «проект должен быть завершен к концу финансового года», «бюджет не позволяет взять третьего программиста», «тестировщиков не будет, тестируйте силами программистов» и т.д. В такой ситуации процесс предварительного планирования, согласования скоупа и сроков проходит в бесконечных переговорах, в ходе которых у команды постепенно вырисовывается безрадостная перспектива очередного безнадежного проекта.
Направить анализ и планирование в конструктивное русло и помогает треугольник компромиссов. Для начала всем следует согласиться с тем, что ресурсы сроки и скоуп - это три взаимозависимых параметра. Затем следует выработать стратегию, которой вы (заказчик и проектная команда) будете придерживаться при планировании. Эта стратегия выражается в матрице компромиссов. В чем ее суть?
У нас есть три параметра планирования: ресурсы, время, функционал, и три стратегии для них: фиксировать, оптимизировать, «как получится».


Крестики можно расставлять как вздумается, главное соблюдать основное правило заполнения матрицы компромиссов - в каждой строке и в каждом столбце может быть только один крестик. Это значит, что к каждому параметру мы применяем только одну стратегию. Что означают эти стратегии?
«Фиксируем» (constarain) - данным параметром не может управлять ни заказчик ни проектная команда. По взаимной договоренности (или из-за внешних ограничений) этот параметр принимается неизменным.
«Оптимизируем» (optimize) - управление данным параметром отдается заказчику. По сути дела этот параметр тоже фиксируется, но не столь жестко. Данный параметр наиболее важен заказчику и он стремится добиться нужного ему значения.
«Как получится» (accept) – управление данным параметром отдается проектной команде, поскольку данный параметр менее важен для заказчика. Очевидно, что когда одна переменная зафиксирована, а вторая подвергается оптимизации, значение третьей переменной определяется значениями первых двух. Термин «как получится» для перевода с английского “accept” придумал использовать не я. Его использовали в старом учебнике к экзамену 70-100, и мне он кажется наиболее подходящим в данной ситуации.
Наиболее часто используется стратегия когда фиксируются ресурсы, оптимизируется время, а функционал – «как получится». Хотя иногда бывает необходимым зафиксировать время или функционал (чаще для коробочных продуктов).
В любом случае, я рекомендую включать матрицу компромиссов в план управления проектом, или в тот документ, который его заменяет. Назовите ее «Стратегией управления проектом» или «Стратегией планирования». Добейтесь чтобы заказчик ее подписал. И показывайте ее, как крестное знамение, всякий раз, когда у заказчика возникает желание «добавить еще один отчетик» или перенести сроки выпуска релиза.

пятница, марта 09, 2007

Quintura - это что-то новенькое

Сегодня увидел новость о том что российский стартап Quintura вошёл в число финалистов престижной премии Red Herring 100 Europe 2007. Quintura - стартап в области web поиска. Стало интересно, что же нового можно придумать в поиске. Зашел на их сайт.... и залип на полчаса, просто играясь в различными поисковыми запросами! Это просто фантастика. Насколько просто и насколько новО и необычно.
Quintura еще раз подтверждает, что главное в стартапе - это новая идея, все остальное важно, но вторично. Облако тэгов - изобретение web 2.0. Quintura использует динамическое интерактивное облако тегов по результатам запросов для управления поиском (я видел похожую идею у кого-то в блоге). Получается потрясающий эффект, и мне кажется, есть еще много возможностей для совершенствования алгоритмов формирования облака, и соответствнно для совершенствования самого поиска.
В общем, рекомендую - Quintura

понедельник, марта 05, 2007

.Net в массы!

У меня на работе стоит Windows XP prof с включенной службой Windows Updates. Сегодня после установки очередного пакета обновлений я обнаружил на своей машине .Net Framework 2.0 и .Net Framework 3.0 (в дополнение к FW 1.1, который там уже был). Заглянув на проектные сервера с Windows 2003, также обнаружил там Framework 3.0.
Напомню, что до недавнего времени .Net framework не входил в состав дистрибутивов клиентских ОС Microsoft. Появление их в пакетах обновления Windows Updates говорит о том, что политика изменилась.
До сих пор Microsoft сама использовала .Net только в своих серверных продуктах (SQL 2005, SarePoint? BizTalk и т.д.). Видимо теперь Microsoft начинает активно встраивать .Net в core функционал своих клиентских продуктов.

суббота, марта 03, 2007

Oracle продолжает поглощения

На этот раз "жертвой" Oracle пал Hyperion Solutions - один из ведущих поставщиков решений Business Intelligence. Сумма сделки, которая состоится после одобрения антимонопольных органов, составит $3,3 млрд, сообщает CNews.
До этого Oracle прикупил Siebel, People Soft и кучу компаний поменьше. Но видимо счастья не купишь. Аналитические решения от Oracle в последнее время явно не блистали на рынке. Особенно после выхода Microsoft SQL 2005, в котором аналитическая составляющая заметно усилилась. Но к сожалению Hyperion - это не стартап. А это значит, что помимо хорошей технологической платформы за ним тянется длинный хвост корпоративных клиентов. Данный вид клиентуры отличается повышенной пугливостью, и таких перетурбаций весьма не любит. Резонно предположить, что большую часть клиентуры Hyperion-а Oracle потеряет, а $3 млрд. повиснут на нем тяжким грузом.

WCF и MSMQ

В февральском номере MSDN Magazine опубликована очередная статья Джувела Лоуи посвященная WCF. На этот раз рассматривается использование WCF совместно с MSMQ. К сожалению русский перевод статьи просто ужасен. Повсеместно вместо устоявшегося термина "сервис"(service) почему то используется "служба". Ко всему этому прибавьте "цепочку перехватчиков", "транзактную очередь", "вредных сообщений" и т.п. перлы. В общем читать довольно трудно.
По содержанию статьи - еще раз убеждаемся, что MSMQ представляет собой довольно специфический транспорт. С одной стороны он предоставляет такие замечательные возможности, как истинная ассинхронность, транзакционность и возможности гарантированной доставки. С другой - наблюдаем повышенную сложность использования, традиционную для MSMQ, особенно когда необходимо реализовать какое-то подобие дуплексного канала.