Вы знаете, что в мире около 30% проектов по разработке программного обеспечения закрываются до завершения, около 50% завершаются с двойным превышением бюджета и только 20% можно считать успешными? Вы можете себе представить, чтобы 30% зданий никогда не были достроены? На самом деле интересно было бы взглянуть на Минск в таком случае: наверное, впечатляющее зрелище...
В чем же причина такого плачевного положения в отрасли разработки ПО? Вот три наиболее часто встречающихся фактора, которые создают проблемы в проектах:
- Недостаток исходной информации от клиента: 13% всех проектов
- Неполные требования и спецификации: 12% проектов
- Изменение требований и спецификаций: 12% проектов
Как видите, каждый третий проект испытывает проблемы, связанные со сбором, документированием и управлением требованиями к ПО. Кроме того, устранение ошибок, найденных на стадии установления требований к ПО, обходится в несколько раз дешевле, чем на стадии кодирования. Очевидно, что работа с требованиями является одной из ключевых практик при разработке программного обеспечения.
Как обычно, русскоязычная техническая литература отстает от англоязычной на несколько лет, хотя в последнее время разрыв немного сокращается. Поэтому первая приличная книга, посвященная управлению требованиями, появилась только в 2002 году. Книга называется "Принципы работы с требованиями к программному обеспечению", а ее авторами являются Дин Леффингуэлл (Dean Leffingwell), вице-президент компании Rational Software, и Дон Уидриг (Don Widrig) - независимый консультант, который, впрочем, тоже связан с Rational. Даже не стоит говорить о привычной отвратительной полиграфии. К счастью, сама книга настолько хороша, что ее следовало бы прочитать, даже если бы ее издали на туалетной бумаге.
Читать действительно интересно. Не то чтобы стиль был уж совсем легким и простым, но все же авторы постарались не усложнять то, что можно было усложнить. Хороший перевод тоже благоприятно отражается на восприятии информации. Авторы отлично знают, что такое управление требованиями, как лучше структурировать информацию и как подавать ее читателю - а это самое главное. В итоге книга получилась целостной и понятной - отличный учебник для системного аналитика.
Книга разбита на шесть частей, каждая из которых посвящена отдельному аспекту управления требованиями: анализ проблемы, понимание потребностей пользователя, определение системы, управление масштабом, уточнение определения системы, построение правильной системы.
Анализ проблемы
"Анализ проблемы - процесс осознания реальных проблем и потребностей пользователя и предложения решений для удовлетворения этих потребностей". Очевидно, сначала надо установить проблему, прежде чем ее анализировать. Бывает, что сделать это не так просто. В книге описывается несколько полезных и достаточно простых методик, которые позволяют четко идентифицировать проблемы и их основные причины.
Затем авторы описывают моделирование бизнес-процессов и инженерию систем. Наверное, это одни из самых слабых разделов книги, потому что новичкам они не дают практически ничего, что можно использовать на практике, а зрелые аналитики и проектировщики не найдут здесь ничего нового.
Понимание потребностей
пользователей
Одна из самых интересных частей. Вначале описываются основные преграды на пути выявления требований. Авторы выделяют несколько синдромов:
- "Да, но...". Это достаточно распространенная первая реакция пользователей на новую систему: "Да, все отлично, но как насчет изменения механизма управления пользователями?"
- "Неоткрытых руин". "Поиск требований напоминает поиск неоткрытых руин: чем больше их найдено, тем лучше известно, что это еще не все".
- "Пользователя и разработчика". Пользователи и разработчики часто совершенно не могут понять друг друга. Они по-разному представляют, что и как должна делать система, а это приводит к проблемам типа: "Пользователи не знают, чего хотят, а если и знают, то не могут это выразить".
Выявление требований - сложный процесс. Тем ценнее методики выявления требований, описанные в книге:
- интервьюирование и анкетирование: простые и доступные методы, которые можно использовать в любой ситуации при любом проекте;
- совещания, посвященные требованиям: самый мощный метод выявления требований, но часто неприменимый из-за удаленности клиента;
- мозговой штурм и отбор идей: позволяет получить множество возможных решений для любой проблемы;
- раскадровки: простой и недорогой метод, который помогает выявить на раннем этапе реакции типа "да, но...";
- прецеденты: описывают взаимодействие между системой и пользователем, уделяя основное внимание тому, что система делает для пользователя;
- обыгрывание ролей: с помощью обыгрывания ролей команда разработчиков может почувствовать мир пользователя, поставив себя на его место;
- создание прототипов: эффективно помогает преодолеть синдромы "да, но..." и "неоткрытые руины";
Каждая методика рассмотрена достаточно подробно и содержит прямые указания и советы, которые можно сразу же применять на практике.
Определение системы
В этом разделе подробно описывается, как документировать требования. Недостаток раздела в том, что документирование требований рассматривается в контексте методологии RUP (Rational Unified Process). Конечно, многие мысли и замечания можно использовать в любом процессе, но их придется вылавливать самостоятельно. Положительная сторона в том, что даны шаблоны документов, которые лучше помогают понять механизм документирования требований.
Управление масштабом проекта
Данный раздел предназначен для управляющих проектами. Оценка масштаба проекта непосредственно влияет на количество требуемых ресурсов, план и бюджет проекта. Собственно, требования к ПО являются определяющими для правильного планирования, так что авторы рассматривают как бы стыковку системного анализа и управления проектом.
Уточнение определения системы
Требования к ПО для разработчиков несколько отличаются от требований клиентов. Для разработчиков важны детали, поэтому итоговый документ SRS (System Requirements Specification) содержит функциональные требования (то, что должна делать система), нефункциональные требования (производительность, надежность и т.п.) и ограничения проектирования (платформы, СУБД и т.п.).
Есть в книге уникальная деталь. Шестая часть начинается на странице 293 и мирно следует до страницы 320, а затем... неожиданно вместо 321 страницы находится страница 289, причем с абсолютно идентичным содержанием! А еще через четыре страницы шестая часть начинается вновь:). В итоге в книге полностью отсутствуют главы 32 и 33, которые должны были быть посвящены проверке правильности системы. Это не просто ложка, это настоящий черпак дегтя от киевского издательства...
В конце книги есть отличная глава, в которой описан четкий пошаговый процесс работы с требованиями к ПО. Глава просто бесценна для начинающих. Кроме того, имеется множество приложений. Некоторые полезны, некоторые нет, но ничего выдающегося вы в них не найдете.
Отличительной особенностью книги является ориентированность на Rational Unified Process, что и понятно, так как оба автора имеют к компании Rational прямое отношение. Несмотря на это, книга полезна всем без исключения, потому что анализ проблемы и методы выявления требований универсальны.
Михаил ДУБАКОВ
Комментарии
Страницы
Че их там собирать? Клиент ваще ничего не знает, собака, думать не хочет. Сам придумываешь и делаешь. А нафиг писать эти большие документации. Только бумагу марать и забивать винчестер мегабайтами "гордости".
Теории много, а проблемы в основном в коммуникациях. Главное разговорить клиента и заинтересовать его, все остальное, помойму, не важно и обычно происходит само собой.
Ничего нового там нет. Мутят че-то и мутят. Нет в жизни счастья. :-/
Хочется чего-то светлого, конкретного, а вся эта муть от Rational бринз аз давн...
Я бы ваще запретил Rational Rose и UML, люди из-за них сходят с ума, начинают думать о каких-то там требованиях. А думать нужно о работе.
Ну не скажите.
Наплевательское отношение к клиенту.
По-моему типичное рассуждение типичного дивелопера.
BW.
тестер.
Почему-то все время kv.by с Дубаковым под руку попадаются. Вот им и достается. Да и некого больше критиковать никто ваще больше ничего не пишет. Но критиковать ведь надо. :-/
Сбором требований я насобирался и понял, что это полная муть. Гораздо проще все держать в голове людей. Это быстрее. Минимум бумаги!
This is a total crap...
you have been talking about...
I have seen those "keeping in mind" a lot... but once you(higher manager) have those people left there is going to be your headache how to collect those particles they knew...
Do not even talk about such a shit, do not expose your sloppy approach as a right one...
This shit depends on shit. It depends on your people and on your approach.
You don't trust your people. So, they are just peaces of meat to make source code. That's your approach.
Your people are stupid programmers - nothing else. You do not know how to communicate with'em effectively. So you need to make some heavy document that will tell them how to live. Please, be my guest. You won't grow up ever!!!
Come on, that not possible. All of my projects mostly had a lot of stuff like this. I had a lot of documents, diagrams and rules. So what? People did not follow them. Why? Because life changes, things changes. Today you need this feature tomorrow that. You've finished one feature, you see that you need changes in the other one. So, what? You start to change your nasty documents. And? You lose hours and days with spupid Word, Rose and Visio. Than your people lose time trying to understand your text and make tons of mistakes.
But you can tell everything to your team within some hours. Just establish hot communication and people start to understand you better than any paper text and pictures. You can use your emotions to make things great and to inspire the team.
Of course, there's a need to have a document at the start. It's quite cool to have all the requirements. But who the hell will provide you with'em? Customer? - Never!!! Those americans do not know what they want until they have it. It's cool to have a document, but sorry, I haven't seen a possibility to make something usefull for a long time.
Of course, if you work with loosers, with stupid guys; if you have to control them all the time, make shitty documents and let the force be with you!!!
I think it's better to train the team. To make high-level communications and to start moving at the speed of thought.
You, people, make loosy conclusions, cause you do not want to work, you want to build a foolish non-human system that will make you source code and you won't have to think about it. It will never work!!! And don't think I'm a hard-edged persons. I can make documents that's what I do best of all. I just want you to think differently. Do not read stupid stuff from Rational and other guys.
Communication - is the highest peak in software development!!! Make it great and you will be the greatest!!! That's my approach.
You must provide them sufficient information about the system. They must understand how it's works. Do you think source code should be enough?
Caml down buddy...
About confidence, I am not going to discuss that crap you have just said... Just one word, there is a lot of proverbs in Russian, dig and you might be able to find the answer, whom, when, where to trust...
Try to put yourself in this way:
Once you have become a manager you should START taking care... and to think what would be if you left the company... Leave something to someone who will be proud to say that I see the legacy, previous guy has done his job well, but not to blame you for things you have not taken care of...
Or you might wanna blackmail your management having some knowledge of what you are in charge... This is may be an approach, but keep in mind this won't work all the TIME... :)
You cannot think in terms of company's interests... You might have not been put in a right corporation yet I guess...
Guys, it's quite nice to get into the fire. I think we are speaking differently. Let us put everything to the right places.
First of all, I wanna give some preconditions of my position:
1. My team works with internet projects: java, db2, websphere...
2. There are 9 guys in the team
3. Projects usually variate from 1 to 3 months.
4. We have only one source that provides us with information
5. Sometimes we have direct communication with cusomers
And now, there's some about the problem.
Did you ever think about requirements management in terms of your business processes? Did you ever establish this shit in your company? Tell me!? I bet you did not. Nobody did.
Asking a lot of friends having jobs in Minsk companies and in Russia, I can say - they didn't too.
I had very bad experience with Rational Suite and requirements bullshit. This stuff sucks, really sucks. You have to have 3-4 man just to support this buggy soft and 2-3 diligent man to tie all those data pieces for requirements. Also, think about documents templates, COM and MS Word bugs and other stuff. That's not all.
So you need 10 guys just for requirements and more over for everything else. So, what do we have in the end? 100 employees - doing nothing. I think, non of Minsk-based companies can make it work, we do not have appropriate resources and education, we do not need it.
So, what do we have? We have nice speaking about requirements for large-scale software business (the one we do not have), which might be feeling quite bad too. Why to continue?
In the terms of my situation, I do the following:
* I do educate my people to work as a team.
* I do provide detailed functional specification and use-case descriptions at the start. But this is not enough - it is only good for the start.
* Later, after some time I slow down document rotation and provide more oral speaking. Having some projects accomplished in this manner I understood - I'm much more effective without this RUP-based requirements shit.
The reasons:
* People do not like to read same document more then two-three times. If you change some phrases and provide people with this stuff, they'll just skip it. They won't see any changes.
* Oral speaking brings people to the resent activities. When your team works together you save much time speaking - not reading and trying to understand.
* People learn everything in the team quite faster
Now I see, that my people catch everything on the fly. They work faster. They make less bugs. And I have more free time to make research.
MIKE,
Do not tell me about leaving the company and to making legacy working well. And do not tell me that you can leave any knowledge on the paper.
This is bullshit I've seen dozen times. Yeah, it might look greate, just like you have those documents, management, structure. But it won't help if people you leave can't work together. Not a single clever document can't make work continue - only people.
And thanks for your foolish conclusions about company interests and the corporation stuff. You don't even know me and you don't know how I work!
Only stupud guy can make decision about anybody else having two posts in the Internet.
You talk like management from my presious job. Those silly people wanted to control, but lost everything. Not a single good person worked there for a long time. And you know, they've been talking like you.
Thanks for giving me a reson to talk the hard way. Bye bye.
Dionique
What does requirements mngmt has in common with remote work?
Requirements mngmnt is the process of understanding software details while remote communication is a question of standardization. Do not mix it.
The requirements mngmnt proposed by RUP is bullshit. You have to hire 1000 people to make it work.
Then you want to exchange RUP-based data, do you? Give me a break! Your remote people would kill themselves after some days trying to undertstand document structure proposed by RUP and diagrams placed to the word files.
My position in this forum is to provide alternate vision. I have a post-RUP vision of software development activities and I want to share them.
That's it.
Страницы