Russian Qt Forum

Qt => Общие вопросы => Тема начата: 8Observer8 от Апрель 19, 2014, 09:28



Название: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 19, 2014, 09:28
Привет!

Пытаюсь разобраться, как разрабатывать ПО. С чего начинать и чем заканчивать. Как мне кажется, надо начинать с написания технического задания.

Я выбрал такое задание: разработать сетевую карточную игру "Дурак".

Начните, пожалуйста, писать обобщённый план или наброски ТЗ. Покажите с самого начала этапы разработки и взаимодействия с заказчиком. Чуть позже я начну составлять ТЗ. Но я пока не знаю, что такое ТЗ для ПО.

Заказчик - выдуманный персонаж. Пусть у него нет жёстких требований и для него главное для начала, чтобы была такая игра и его устроит консольная версия. А потом заказчик будет менять требования, ну скажем, он захочет видеть не консольную программу, а с GUI интерфейсом (сначала с простым, потом с картинками). То есть от версии к версии ПО будет улучшаться.

Буду выкладывать промежуточные варианты ПО. Вы только направляйте меня. Что делать дальше?

Заранее спасибо за помощь!

P.S. Я взял в качестве заготовки пример из книги А. Крупника "Изучаем C++". В этом примере создаётся колода, перемешивается, и карты раздаются игрокам.

main.cpp
Код
C++ (Qt)
// А.Крупник "Самоучитель по С++"
// Листинг 7.8. Раздача карт
#include <iostream>
#include <deque>
#include <algorithm>
using namespace std;
#include "play.hpp"
#define NOFP 4
#define NOFC 9
 
int main( ) {
   player pls[NOFP];
   deck mydeck;
   mydeck.ini( );
   for ( int i = 0; i < NOFP; i++ ) {
       pls[i].ini( );
       for ( int j = 0; j < NOFC; j++ )
           pls[i].add( mydeck.get( ) );
   }
   for ( int i = 0; i < NOFP; i++ )
       pls[i].show( );
}
 

play.hpp
Код
C++ (Qt)
// А.Крупник "Самоучитель по С++"
// Листинг 7.5. Игральная карта
string suits[4] = {"Б ", "Ч ", "П ", "Т "};
string
cds[9] = {"6 ", "7 ", "8 ", "9 ", "10", "В ", "Д ", "К ", "Т "};
 
enum suit {
   diamonds, hearts, spades, clubs
};
 
enum cname {
   six, seven, eight, nine, ten, jack, queen, king, ace
};
 
class card {
public:
 
   void set_suit( suit s ) {
       ms_ = s;
   }
 
   void set_cn( cname c ) {
       cn_ = c;
   }
 
   string get_suit( ) {
       return suits[ms_];
   }
 
   string get_cn( ) {
       return cds[cn_];
   }
private:
   suit ms_;
   cname cn_;
};
 
// Листинг 7.6. Колода
 
class deck {
public:
 
   void ini( ) {
       card tmp;
       for ( cname i = six; i <= ace; i = static_cast<cname> (i + 1) )
           for ( suit j = diamonds; j <= clubs; j = static_cast<suit> (j + 1) ) {
               tmp.set_suit( j );
               tmp.set_cn( i );
               tdeck_.push_back( tmp );
           }
       shuffle( );
   }
 
   void shuffle( ) {
       random_shuffle( tdeck_.begin( ), tdeck_.end( ) );
   }
 
   card get( ) {
       card tmp = tdeck_.front( );
       tdeck_.pop_front( );
       return tmp;
   }
private:
   deque<card> tdeck_;
};
 
 
// Листинг 7.7. Игрок
 
class player {
public:
 
   void show( ) {
       for ( unsigned i = 0; i < hand_.size( ); i++ )
           cout << hand_[i].get_cn( ) << " ";
       cout << endl;
       for ( unsigned i = 0; i < hand_.size( ); i++ )
           cout << hand_[i].get_suit( ) << " ";
       cout << endl << endl;
   }
 
   void ini( ) {
       hand_.clear( );
   }
 
   void add( card c ) {
       hand_.push_back( c );
   }
private:
   deque<card> hand_;
};
 


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Bepec от Апрель 19, 2014, 09:52
Начинаем с взятия аванса.
После пункта "Решил перейти на ГУИ" требуем повышение оплаты (ведь раньше договаривались на консольную версию).
Если повышает, работаем. Если нет, говорим до свидания.
 
В вашем случае надо компилятором работать по превращению "бла бла" в ТЗ :) Тоже нервная работа, но мне нравится :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 19, 2014, 10:03
Аванс берут после написания ТЗ? А то получится, что я помогу составить человеку ТЗ, детально всё опишем, потрачу своё время, а он скажет "до свидания" (или не скажет). Аванс это оплата ТЗ? Или ТЗ это настолько мелкая вещь, что много времени на него не тратят и денег тоже?

Я так понимаю, что ТЗ имеет две крайности:
1) Отсутствие ТЗ. Есть только короткое описание (одно два предложения)
2) ТЗ, которое описывает всё и по сути является рабочей программой. То есть исходник проекта - это и есть ТЗ


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Igors от Апрель 19, 2014, 10:36
Начинаем с взятия аванса.
Да кто ж Вам его даст  ???  :)

После пункта "Решил перейти на ГУИ" требуем повышение оплаты (ведь раньше договаривались на консольную версию).
Если повышает, работаем. Если нет, говорим до свидания.
Эти "мячты" не имеют ничего общего с реальностью. Не надо мнить что Вы можете "требовать", "говорить до свидания" и.т.п. Пока Вы не заработали авторитет в глазах заказчика
Цитировать
ты никто и зовут тебя никак


Стандартный порядок на фрилансерских сайтах: заказчик переводит деньги на сайт и затем постит заказ. Это правильно т.к. иначе найдется масса желающих морочить голову мнимыми/тестовыми заданиями. В случае если исполнителя не найдется (или заказ не выполнен) деньги заказчику возвращаются. Фрилансеры на сайте подписываются, заказчик выбирает одного, "по рукам". ТЗ заказчика должно быть полностью выполнено в заданный срок. Если нет - исполнитель ничего не получит. Заказчик может поощрить оплатив сделанный этап, но только если захочет. Оба могут аппелировать в арбитраж, но это так, облегчить душу "сказав ему кто он такой"  :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Bepec от Апрель 19, 2014, 10:41
Неправы по всем пунктам :)

Аванс берётся когда вы беретесь за работу и оплата вас устраивает. Если нет ТЗ, то вы не можете сказать человеку - а вот раньше мы делали дурака консольного, а сейчас ты требуешь ГУИ'шного. Так мы не договаривались, доплачивай.

ТЗ может состоять из 1 строки - хочу игру. Но тогда в любых спорах заказчик будет прав. Ты взялся делать игру. Рамки не ограничены, начиная от кода, заканчивая рисованием дизайна и написанием сценария.

Код:
З  - хочу игру. 
Вы - давайте ТЗ.
З  - Нет тз, я просто хочу карточную игру.
Вы - Тогда цена выше и аванс сразу.
З  - А почему?
Вы - Потому что хрен знает чего вы хотите в конце.
З  - А если я тебе заплачу чтоб ты тз сделал?
Вы - Цена ещё повышается, ТЗ делать это тоже работа, причем нервная.
З  - Ну ладно, бум делать.
Вы - Аванс!
З - вот будет игра, тогда будут деньги.
Вы - до свидания.
Ну вариации могут быть - аванс после тестового наброска.

to Igors:
Я немного побыл фрилансером, но уже успел наслушаться про "заказчиков", которые не платят аванс, а после получения работоспособной версии оспаривают решение и возвращают себе деньги.
Обычное дело.
Ты берёшься за заказ без аванса - ты мотивирован морковкой спереди, но есть нечего.
Заказчик не мотивирован никак с тобой сотрудничать, окромя желания получить программу. Потому спокойно исчезает на пару недель-месяц и потом говорит "А что это ты программу не сделал?".

Ты берёшься за заказ с авансом - ты мотивирован деньгами + морковкой спереди. Можно покушать.
Заказчик уже никуда не исчезнет на пару недель, ибо он уже вложил деньги + мотивация морковкой сзади (деньги заплатил уже, жаба задушит).

PS Igors вы правы, но только в случае если заключен договор и имеется серьезная репутация у заказчика. А если нет репутации ни у вас, ни у заказчика... Халявные работники везде нужны.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Igors от Апрель 19, 2014, 11:51
Я немного побыл фрилансером, но уже успел наслушаться про "заказчиков", которые не платят аванс, а после получения работоспособной версии оспаривают решение и возвращают себе деньги.
Обычное дело.
Еще одно популярное заблуждение, "вот видите, получил работоспособную версию - и не заплатил!!" (вот скотина какая).

От этой глупости избавитесь моментально, побывав всего лишь раз в роли заказчика (пусть для Вас этот вариант "гипотетический"). Техника примитивна до боли: вываливается "нечто", зачастую не имеющее ничего общего с ТЗ. Иногда это просто старый код с другой работы. В лучшем случае сделанное "как хочется", пофиг то ТЗ. При этом изо всех сил фиксируется момент "ага, заказчик ПОЛУЧИЛ" (неважно что). И дальше начинается протяжный вой "КИИИНУЛИ!!!!".

Работа недоделанная всего на 5% - уже серьезная проблема. Надо вникать в чужой код, фиксить, начинает клинить и.т.п. А если 15-20% то обычно проще начать с нуля. Так что заказчик ничего не получил и никак не "использовал" невинного программиста-жертву  :)

Ты берёшься за заказ с авансом - ты мотивирован деньгами + морковкой спереди. Можно покушать.
Заказчик уже никуда не исчезнет на пару недель, ибо он уже вложил деньги + мотивация морковкой сзади (деньги заплатил уже, жаба задушит).
Цитировать
Ну съесть он бы конечно съел - да только кто ж ему даст?
:)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Bepec от Апрель 19, 2014, 11:57
Не будем развивать холивары :) Правы оба только по своему. Есть так же целый цикл статей на хабре на эту тему.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Alex Custov от Апрель 19, 2014, 13:06
От этой глупости избавитесь моментально, побывав всего лишь раз в роли заказчика (пусть для Вас этот вариант "гипотетический"). Техника примитивна до боли: вываливается "нечто", зачастую не имеющее ничего общего с ТЗ. Иногда это просто старый код с другой работы. В лучшем случае сделанное "как хочется", пофиг то ТЗ. При этом изо всех сил фиксируется момент "ага, заказчик ПОЛУЧИЛ" (неважно что). И дальше начинается протяжный вой "КИИИНУЛИ!!!!".

Поддерживаю. Иногда работник работает на отъеб^W^W спустя рукава, ничего не тестирует, а потом думает, что его обманули. Это нужно сразу пресечь. Либо делать нормально, либо никак.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Bepec от Апрель 19, 2014, 13:19
А что поддерживаете то? сформулировать сможете? :)
Что аванса не давать? (при предоставлении опытного образца допустим)
Что не принимать неготовый продукт?
Или что нужно не давать денег за не готовый продукт?
Или что нужно проверять продукт?

ТЗ служит как раз для проверки требований. А Igors всё уводит в сторону - ай ай ай, вдруг он обманет.
Точно так же фрилансер требует ответственности и от заказчика. А то - ай ай ай, вдруг он обманет и скажет что не нужна программа уж.

Это здравый смысл.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 19, 2014, 14:00
Всем большое спасибо за информацию. По-моему, все по-своему правы :)

Я начал сочинять примерный сценарий развития событий. Буду сам выступать в роли заказчика и разработчика. Подкидывайте, пожалуйста, пищу для размышлений. А я буду фантазировать дальше. Вот такое получилось ТЗ. Достаточно для начала разработки? Может типичный заказчик предоставляет больше информации?

Заказчик - З
Разработчик - Р

Р: Здравствуйте! Готов взяться за выполнение задания. Вышлите, пожалуйста, ТЗ
З: Здравствуйте!

Техническое задание

Название приложения: Fool

Краткое описание.
Карточная сетевая игра "Дурак"

Тип приложения.
Клиент-серверное, консольное.

Детальное описание.
Один из игроков запускает приложение. Приложение запрашивает у пользователя свой тип: сервер или клиент. Пользователь сервера сообщает остальным игрокам IP адрес и номер порта. К серверу могут подсоединиться до пяти игроков.

P.S. После того, как разработчик получил ТЗ, что он дальше делает? Является ли правилом хорошего тона начать уточнять детали? Может написать своё (дополненное) ТЗ, а не заваливать вопросами? И спросить: устраивает?


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Igors от Апрель 19, 2014, 14:11
Возвращаясь к теме
Буду выкладывать промежуточные варианты ПО. Вы только направляйте меня. Что делать дальше?
Да ничего. Проект созданный "просто так", из любопытства и "желания спробовать" не живет. Нет того самого профессионализма. Это легко проверить, напр

Вот я заказчик. Хорошо, понимаю, красивое UI - то уже др работа. Но вот сейчас, в консольном приложении я хочу иметь возможность установить level/skills игрока-машины. Напр если он тупо бьет шестерку семеркой - человек его легко обыграет. Или напр стОит ли бить козырем или лучше его сохранить. Или вообще машинный "магистр" который видит сквозь карты.

Полагаю что этого будет достаточно. Ведь планировалась легкая прогулка (в расчете на свою молодую хорошую память), типа "пошуршать с сетью". А тут думать надо, упираться, да еще и не один день! Нееет. это не для нас, лучше создать новый блог. Или я ошибаюсь?  :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Hrundel от Апрель 19, 2014, 14:43
Не заню как у вас - у нас учат так:

1. Анализ проблемы
2. Описание UseCases
3. Разработка технических условий на базе UseCases
4. Разработка спецификации  на базе технических условий
4а. Желательно сделать прототип и утвердить у заказчика, что не всегда возможно. Вместо прототипа можно утвердить GUI для всех или почти всех окон.
5. Имплементирование с параллельной разработкой архитектуры, или последовательно: архитектура, потом имплементирование.
6. Тестирование
7. Документация и справка.
8. Сдача
9. Поддержка и сервис

На каждой стадии необходимо беседовать с заказчиком.

Проект-менеджмент отдельная тема.

1. Составить калькуляцию времени и стоимости.
2. Составить план работы и утвердить с заказчиком.
3. Составить календарь встреч с заказчиком и утвердить.

и т.д.  и  т.п.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Bepec от Апрель 19, 2014, 14:51
А проблему откуда берут?


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 19, 2014, 14:53
Hrundel, спасибо огромное! Я позже проанализирую каждый этап и попробую применить к своему проекту. Выглядит довольно универсально :)

Возвращаясь к теме
Буду выкладывать промежуточные варианты ПО. Вы только направляйте меня. Что делать дальше?
Да ничего. Проект созданный "просто так", из любопытства и "желания спробовать" не живет. Нет того самого профессионализма.
Есть же какие-то традиционные этапы разработки? "Что делать дальше?" - это значит в какую сторону копать, откуда танцевать, какой следующий шаг?

Вот я заказчик. Хорошо, понимаю, красивое UI - то уже др работа. Но вот сейчас, в консольном приложении я хочу иметь возможность установить level/skills игрока-машины. Напр если он тупо бьет шестерку семеркой - человек его легко обыграет. Или напр стОит ли бить козырем или лучше его сохранить. Или вообще машинный "магистр" который видит сквозь карты.

Полагаю что этого будет достаточно. Ведь планировалась легкая прогулка (в расчете на свою молодую хорошую память), типа "пошуршать с сетью". А тут думать надо, упираться, да еще и не один день!
Акцент на ТЗ, где будет оговарены детали. GUI появится позже, когда заказчик (то есть я) этого захочет.

Нееет. это не для нас, лучше создать новый блог. Или я ошибаюсь?  :)
Я по-другому представляю себе блог. У меня желание довести этот проект до конца, соблюдая все этапы профессиональной разработки. И прошу помощи показать на этом простом примере, как профи бы разрабатывал этот проект. Именно поэтапно.

Поддерживаю. Иногда работник работает на отъеб^W^W спустя рукава, ничего не тестирует, а потом думает, что его обманули. Это нужно сразу пресечь. Либо делать нормально, либо никак.
Вы имеете ввиду модульное тестирование? Или ручное (кнопки потыкать, неправильные значения повводить, чтобы проверить защиту от дурака)? Если модульное, то заказчику Вы отдаёте тесты, чтобы он мог у себя "погонять"? Или тесты Вы пишите для себя? Или достаточно просто "потыкать"?


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Hrundel от Апрель 19, 2014, 14:55
А проблему откуда берут?

Само задание и определяется как проблема.

Например в карточной игре проблемой является вероятность выигрыша и проигрыша. То есть - задача из математики - теория вероятности.
Здесь же извечная проблема случайных чисел. И т.д.

То есть - разработчик, еще в самом начале проекта, должен точно представлять с каким кругом проблем он сталкнется.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Bepec от Апрель 19, 2014, 14:57
Угум. У вас дробление задачи идет. Тоже необходимая вещь :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Hrundel от Апрель 19, 2014, 15:05
Верес, вы даже не дергайтесь. То, что  я здесь описываю - европейский стандарт ведения проектов. Я учусь в Баварском техническом университете на факультете общей информатики. Поэтому, советую вам не придерживаться ваших личных стандартов, а прислушаться к этой системе. На практике я уже отработал - все было в точности, как нас учили в теории.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 19, 2014, 15:08
Например в карточной игре проблемой является вероятность выигрыша и проигрыша. То есть - задача из математики - теория вероятности.
Здесь же извечная проблема случайных чисел. И т.д.
То есть - разработчик, еще в самом начале проекта, должен точно представлять с каким кругом проблем он сталкнется.
В моей задаче этой проблемы у разработчика нет, так как заказчику нужна сетевая игра. Ботов в ТЗ нет :) А вот какие будут проблемы - это с опытом приходит. Как я могу предвидеть с какими проблемами столкнусь в данном проекте? :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Hrundel от Апрель 19, 2014, 15:13
Уже одно то, что это сетевая игра - это уже комплекс проблем.

Как будет осуществляться сетевая поддержка?
Какие протоколы имеет смысл использовать?
В случае если игра на деньги или материальный выигрышь - надежная передача данных.
Правила отправки и получения пакетов, и пауз.

и прочее, прочее.

Все это нужно протоколировать в логе проекта, спецификациях и в UseCases.

Как я могу предвидеть с какими проблемами столкнусь в данном проекте? :)

Если не можете предвидеть - значит не сможете составить спецификацию. Без нее серьезный заказчик не будет с вами продолжать проект.

А вот какие будут проблемы - это с опытом приходит.

У заказчика нет времени ждать, когда у вас появится опыт. Иначе он предпочтет вас тому, у кого уже есть опыт. Он хочет все уже сейчас. Поэтому вы должны быть так подготовленны, чтобы могли взяться за исполнение любой задачи.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Bepec от Апрель 19, 2014, 15:29
to Hrundel - дёргался, дёргаюсь и буду дёргаться. Увы, так устроен человек :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Hrundel от Апрель 19, 2014, 15:31
to Hrundel - дёргался, дёргаюсь и буду дёргаться. Увы, так устроен человек :)

Да я понимаю - сам такой :D ;D  ;)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Bepec от Апрель 19, 2014, 15:32
Ссылочку приведите аль ещё как направьте меня на путь изучения данной методике. И чтоб именно баварского университета :)
PS я серьёзно ^.^ Полезно знать много.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Igors от Апрель 19, 2014, 15:34
В моей задаче этой проблемы у разработчика нет, так как заказчику нужна сетевая игра. Ботов в ТЗ нет :) А вот какие будут проблемы - это с опытом приходит. Как я могу предвидеть с какими проблемами столкнусь в данном проекте? :)
Что-то я не понял, как/куда Вы "проецируетесь" :) Вы сами себе разработали и утвердили ТЗ? Такой вариант возможен, но это другая модель: "выпуск продукта в надежде что его купят", к работе с конкретным заказчиком это отношения не имеет. И до этого варианта далеко как до небес.

Заказчик - это я (не Вы). И вот я выдвигаю требование (позицию ТЗ). Разумно ли оно? Безусловно, да еще и подчеркивает хилость начального замысла - что это за игра возможная лишь при наличии партнера? Наоборот, живой партнер - всего лишь хорошее (пусть отличное) приложение к игре, но не более. Но так ли уж четко сформулированы мои требования? Вовсе нет, наверняка это будет предметом будущих конфликтов. Ваши действия?

С этой точки зрения Вы избираете наихудший вариант - заявляете что "ботов в игре нет". Ну на нет и суда нет, заказчику (мне) остается только удалиться. На мне Вы ничего не заработали.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 19, 2014, 17:01
Что-то я не понял, как/куда Вы "проецируетесь" :) Вы сами себе разработали и утвердили ТЗ? Такой вариант возможен, но это другая модель: "выпуск продукта в надежде что его купят", к работе с конкретным заказчиком это отношения не имеет. И до этого варианта далеко как до небес.
Хочу смоделировать ситуацию взаимодействия заказчика и разработчика. В конечном итоге довести до автоматизма процесс разработки ПО, то есть отработать этапы, которые будут универсальны и не зависеть от конкретного заказчика\проекта.

Вы сами себе разработали и утвердили ТЗ?
Я сделал только набросок (см. Ответ #9)

Заказчик - это я (не Вы). И вот я выдвигаю требование (позицию ТЗ). Разумно ли оно? Безусловно, да еще и подчеркивает хилость начального замысла - что это за игра возможная лишь при наличии партнера? Наоборот, живой партнер - всего лишь хорошее (пусть отличное) приложение к игре, но не более. Но так ли уж четко сформулированы мои требования? Вовсе нет, наверняка это будет предметом будущих конфликтов. Ваши действия?
С этой точки зрения Вы избираете наихудший вариант - заявляете что "ботов в игре нет". Ну на нет и суда нет, заказчику (мне) остается только удалиться. На мне Вы ничего не заработали.
Этот пример - всего лишь фикция. Для упрощения - не буду углубляться в разработку бота и красивого интерфейса. Если мне удастся сформировать чёткие требования для этого упрощённого примера, то я смогу продвинуться дальше. Если я буду усложнять задачу, то не смогу довести её до конца. Пусть мой заказчик получает промежуточные версии, которыми он сразу начнёт пользоваться. За каждый этап он будет платить. Он может сам не знает, что на самом деле хочет? А я не знаю, что он на самом деле захочет в будущем. Бот возможно появится в следующих версиях продукта. А может заказчик бота не захочет. Первая версия продукта будет консольной и без бота. Заказчик сможет получить свой продукт в короткий срок и оплатить его. Дальше, возможно, у него появятся дополнительные требования (или скорректируются имеющиеся). Буду планировать только на ближайшие пару недель. ТЗ будет меняться. Я не вижу способа написания ТЗ, которое опишет детально все аспекты системы.

P.S. Это всего лишь мои фантазии. Я, на самом деле, не знаю, как это в реальности.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Hrundel от Апрель 19, 2014, 17:07
Что значит без бота? Уже одно то, что програма пользуется некиим генератором для случайной раздачи карт - это уже бот.
Кроме того, ваша програма обязана следить за правилами в игре. То есть некиий искусственный интелект должен присутствовать обязательно. Ходы, конечно, будут делать игроки, но это не значит, что ваша програма должна остаться без AI.
А сделать виртуального игрока, там будет, уже, не проблема. Просто, ему нужно будет включить алгоритм анализа лучшего хода. Вот вам и весь бот.
Опять таки, а что если в сети никого нет. Например, два дня. Сайт, допустим, еще не раскручен. Что делать? Не играть? Значит, заказчик потерял деньги. Клиент не играл и ушел. А мог бы сыграть на доллар другой.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 19, 2014, 17:15
В программе используется shuffle для deque<card> deck

А вот про правила я не подумал :) Спасибо! Будем считать, что "разработчик" и "заказчик" взяли таймаут :)

В самом первом моём сообщении этой темы есть пример, файл play.h В этом файле располагаются три класса: Card (Карта), Deck (Колода) и Player (Игрок). Как Вы думаете, оставить эти классы в файле play.h или раскидать по разным файлам?


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Hrundel от Апрель 19, 2014, 17:21
Наверное в зависимости от того сколько в них методов. Если обозримость не потеряете - оставляйте в одном файле. Это уже дело вкуса и внутренней организации.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 19, 2014, 17:28
Спасибо! Пока оставлю в одном файле :)

А сделать виртуального игрока, там будет, уже, не проблема. Просто, ему нужно будет включить алгоритм анализа лучшего хода. Вот вам и весь бот.
Опять таки, а что если в сети никого нет. Например, два дня. Сайт, допустим, еще не раскручен. Что делать? Не играть? Значит, заказчик потерял деньги. Клиент не играл и ушел. А мог бы сыграть на доллар другой.
Вполне логично :) Я думаю, что разработчику и заказчику надо работать очень тесно, чтобы требования можно было вносить в проект. То что Вы написали, для меня было совсем неочевидно. Да, может и для заказчика тоже. Заказчики же так же бывают мало опытные :) Проект уже начался и вдруг заказчику пришла отличная мысль! При тесном взаимодействии (обратной связи) все новые требования будут вноситься с наименьшими затратами для обоих :)

P.S. Опять же, не знаю, как на практике общаются заказчик и разбработчик. В типичной ситуации, возможно ли взаимодействие с обратной связью? Или они общаются только в начале и в конце проекта? Принята же какая-то культура? Я  про фриланс.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Igors от Апрель 19, 2014, 17:37
Хочу смоделировать ситуацию взаимодействия заказчика и разработчика.
Ага, значит я все-таки отвечаю в тему  :)

Этот пример - всего лишь фикция. Для упрощения - не буду углубляться в разработку бота и красивого интерфейса. Если мне удастся сформировать чёткие требования для этого упрощённого примера, то я смогу продвинуться дальше. Если я буду усложнять задачу, то не смогу довести её до конца. Пусть мой заказчик получает промежуточные версии, которыми он сразу начнёт пользоваться.
Конечно было бы прекрасно, просто замечательно если бы заказчик удовольствовался именно и только тем что Вы предложили. Но у меня года так с 1995-го такого еще не случалось. Выдвигает (ах паразит) свои требования - и приходится потеть их выполняя. А другими способами зарабатывания денег я не владею.

Если я буду усложнять задачу, то не смогу довести её до конца.
Вот этим и отличается любитель (пусть безумно талантливый) от профи (пусть явно тупого). Один делает "что хочет", другой "за что платят".


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Hrundel от Апрель 19, 2014, 17:59
P.S. Опять же, не знаю, как на практике общаются заказчик и разбработчик. В типичной ситуации, возможно ли взаимодействие с обратной связью? Или они общаются только в начале и в конце проекта? Принята же какая-то культура? Я  про фриланс.

Безконечные звонки друг - другу и емайлы. А иногда и по нескольку раз на день. В игрушках наверное не так интенсивно. Там фазы чуть длиннее, а в остальных проектах очень интенсивное общение  с заказчиком.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Old от Апрель 19, 2014, 18:20
8Observer8, мне кажется или вы действительно занимаетесь совершенно всем, кроме программирования? :)
Совершенно неважно как у вас появится игра Дурак, с техзаданием или без, главное что бы она появилась.
Вы тратите кучу времени на какие-то сопутствующее изыскания, вместо программирования. :)
Программирование первично, все остальное вторично. Программируйте.
Все, что вы задумывали как первый этап, можно было за сегодня сделать. Если делать... :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 19, 2014, 18:53
8Observer8, мне кажется или вы действительно занимаетесь совершенно всем, кроме программирования? :)
Совершенно неважно как у вас появится игра Дурак, с техзаданием или без, главное что бы она появилась.
Вы тратите кучу времени на какие-то сопутствующее изыскания, вместо программирования. :)
Программирование первично, все остальное вторично. Программируйте.
Все, что вы задумывали как первый этап, можно было за сегодня сделать. Если делать... :)
Если честно я ещё не начал :) Требования, ТЗ, подготовка, осмысление, настрой... в общем я устал... Завтра начну продумывать архитектуру :D

Надеюсь, до кодирования этой игры я всё же доберусь :D

P.S. Попробую этот проект через методологию TDD забацать. Хотелось бы сначала более чёткое ТЗ получить. В качестве документации будут модульные тесты, в количестве 1-2 для каждого метода, чтобы if-else - покрывали на 100%. Тесты будут передаваться заказчику в качестве: подтверждения работоспособности, тесты показывают как вызывать методы, заказчик сможет продемонстрировать свои требования, прислав мне новые тесты, под которые надо реализовать функционал. Без тестов же никак?


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Igors от Апрель 19, 2014, 18:59
P.S. Попробую этот проект через методологию TDD забацать. Хотелось бы сначала более чёткое ТЗ получить. В качестве документации будут модульные тесты, в количестве 1-2 для каждого метода, чтобы if-else - покрывали на 100%. Тесты будут передаваться заказчику в качестве: подтверждения работоспособности, тесты показывают как вызывать методы, заказчик сможет продемонстрировать свои требования, прислав мне новые тесты, под которые надо реализовать функционал. Без тестов же никак?
В одной хорошей старой книжке про это примерно так:
Цитировать
Подобные убеждения хоть и господствуют в умах теоретиков, но оказывают куда меньшее влияние на результат чем это принято думать
:)
Напр не стоит мнить/надеяться что заказчик пришлет Вам тесты (или вообще что-то)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 20, 2014, 07:48
Я решил хранить каждый класс в отдельном файле. А чтобы не было конфликтов имён, поместил каждый класс, который относится к игре, в пространство имён CardGame:
Код
C++ (Qt)
namespace CardGame {
   // ...
}
 

Card.h
Код
C++ (Qt)
#ifndef CARD_H
#define CARD_H
 
#include "string"
 
namespace CardGame {
 
   std::string suits[4] = {"Diamonds ", "Hearts ", "Spades ", "Clubs "};
   std::string cds[9] = {"6 ", "7 ", "8 ", "9 ", "10", "Jack ", "Queen ", "King ", "Ace "};
 
   enum suit {
       diamonds, hearts, spades, clubs
   };
 
   enum cname {
       six, seven, eight, nine, ten, jack, queen, king, ace
   };
 
   class Card {
   public:
 
       void set_suit( suit s ) {
           m_ms = s;
       }
 
       void set_cn( cname c ) {
           m_cn = c;
       }
 
       std::string get_suit( ) {
           return suits[m_ms];
       }
 
       std::string get_cn( ) {
           return cds[m_cn];
       }
   private:
       suit m_ms;
       cname m_cn;
   };
 
}
 
#endif // CARD_H
 

Deck.h
Код
C++ (Qt)
#ifndef DECK_H
#define DECK_H
 
#include "Card.h"
#include <deque>
#include <algorithm>
 
namespace CardGame {
 
   class Deck {
   public:
 
       void ini( ) {
           Card tmp;
           for ( cname i = six; i <= ace; i = static_cast<cname> (i + 1) )
               for ( suit j = diamonds; j <= clubs; j = static_cast<suit> (j + 1) ) {
                   tmp.set_suit( j );
                   tmp.set_cn( i );
                   m_tdeck.push_back( tmp );
               }
           shuffle( );
       }
 
       void shuffle( ) {
           std::random_shuffle( m_tdeck.begin( ), m_tdeck.end( ) );
       }
 
       Card get( ) {
           Card tmp = m_tdeck.front( );
           m_tdeck.pop_front( );
           return tmp;
       }
 
   private:
       std::deque<Card> m_tdeck;
   };
 
}
 
#endif // DECK_H
 

Player.h
Код
C++ (Qt)
#ifndef PLAYER_H
#define PLAYER_H
 
#include <deque>
#include <iostream>
#include "Card.h"
 
namespace CardGame {
 
   class Player {
   public:
 
       Player(std::string name) : m_name(name) {
       }
 
       void show( ) {
           for ( unsigned i = 0; i < m_hand.size( ); i++ )
               std::cout << m_hand[i].get_cn( ) << " ";
           std::cout << std::endl;
           for ( unsigned i = 0; i < m_hand.size( ); i++ )
               std::cout << m_hand[i].get_suit( ) << " ";
           std::cout << std::endl << std::endl;
       }
 
       void ini( ) {
           m_hand.clear( );
       }
 
       void add( Card c ) {
           m_hand.push_back( c );
       }
 
   private:
       std::deque<Card> m_hand;
       std::string m_name;
   };
 
}
 
#endif // PLAYER_H
 

main.cpp
Код
C++ (Qt)
#include <QCoreApplication>
#include <vector>
#include "Deck.h"
#include "Player.h"
#include <QDebug>
 
int main( int argc, char *argv[] ) {
   QCoreApplication app( argc, argv );
 
   // Колода
   CardGame::Deck deck;
 
   // Перемешиваем колоду
   deck.ini( );
 
   // Игроки
   std::vector<CardGame::Player> players;
   players.push_back( CardGame::Player( "Ivan" ) );
   players.push_back( CardGame::Player( "David" ) );
   players.push_back( CardGame::Player( "Joan" ) );
 
   // Раздаём игрокам по шесть карт
   for ( std::size_t i = 0; i < 6; ++i ) {
       try {
           players[i].add( deck.get( ) );
       } catch ( ... ) {
           qDebug( ) << "Uncaught exception.";
       }
   }
 
   // Показываем карты игроков
   for ( std::size_t i = 0; i < players.size( ); ++i ) {
       players[i].show( );
   }
 
   return app.exec( );
}
 

В коде файла main.cpp есть две проблемы:
1) В раздаче карт есть ошибка. У меня игрока всего три, а я пытаюсь выйти за диапазон массива: players. Должно срабатывать исключение, но этого не происходит. Почему?
2) После каждого запуска в процессах остаётся CardGame.exe. Мне приходится лезть в Диспетчер задач и вручную завершать процесс

Помогите, пожалуйста, с этими проблемами.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Old от Апрель 20, 2014, 08:04
1) В раздаче карт есть ошибка. У меня игрока всего три, а я пытаюсь выйти за диапазон массива: players. Должно срабатывать исключение, но этого не происходит. Почему?
А какое вы ждете исключение out_of_range? Так operator[] его не бросает, в отличие от vector::at()

2) После каждого запуска в процессах остаётся CardGame.exe. Мне приходится лезть в Диспетчер задач и вручную завершать процесс
Уверите запуск главного цикла app.exec(). Просто возвращайте код возврата.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 20, 2014, 08:18
А какое вы ждете исключение out_of_range? Так operator[] его не бросает, в отличие от vector::at()
Надо бы это на всю жизнь запомнить! Спасибо! :)

Просто возвращайте код возврата.
Не понимаю, зачем тогда так пишут, если приложение нельзя будет повторно запустить:
Код
C++ (Qt)
int main( int argc, char *argv[] ) {
   QCoreApplication app( argc, argv );
   // ...
   return app.exec( );
}
 


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Old от Апрель 20, 2014, 08:23
Не понимаю, зачем тогда так пишут, если приложение нельзя будет повторно запустить:
Почему нельзя? Можно. :)
Разберитесь, для чего это пишут и все станет ясно.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 20, 2014, 08:36
В документации Qt написано, что эта функция app.exec( ) запускает цикл обработки сообщений от операционной системы. При закрытии окна должен выполняться return app.exec( ); Непонятно, почему этого не происходит.

Вывожу текст e.what():

Код
C++ (Qt)
   // Раздаём игрокам по шесть карт
   for ( std::size_t i = 0; i < 6; ++i ) {
       try {
           players.at(i).add( deck.get( ) );
       } catch (const std::out_of_range &e) {
           std::cerr << e.what() << std::endl;
           return 1;
       } catch ( ... ) {
           std::cerr << "Uncaught exception." << std::endl;
           return 1;
       }
   }
 

Но какое-то странное сообщение выводится:

Цитировать
vector::_M_range_check

Что это значит?



Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Old от Апрель 20, 2014, 08:48
При закрытии окна должен выполняться return app.exec( ); Непонятно, почему этого не происходит.
Потому что у вас нет окон?

Но какое-то странное сообщение выводится:
А какое сообщение вы ждали?
Его тип out_of_range, однозначно описывает проблему.
А в сообщении просто сохраняется имя функции, которая проверяет диапазон и бросает исключение.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 20, 2014, 08:53
Потому что у вас нет окон?
Как же нет окон? А консольное окно? :)

А какое сообщение вы ждали?
Его тип out_of_range, однозначно описывает проблему.
А в сообщении просто сохраняется имя функции, которая проверяет диапазон и бросает исключение.
Ожидал более внятного сообщения для пользователя. А "_M_range_check" - это какая-то абракадабра :) Тогда буду дописывать, как в примере: http://www.cplusplus.com/reference/stdexcept/out_of_range/
Цитировать
Out of Range error: vector::_M_range_check


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Old от Апрель 20, 2014, 08:56
Как же нет окон? А консольное окно? :)
Это не ваше окно, не Qt-шное. :)

Тогда буду дописывать как в примере: http://www.cplusplus.com/reference/stdexcept/out_of_range/
Да не надо ничего дописывать. Поймали исключение с таким типом, просто скажите об этом своими словами, понятными пользователю. Вовсе не обязательно везде печатать what().


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 20, 2014, 09:09
Это не ваше окно, не Qt-шное. :)
Да, из терминала так просто не выйдешь. Может exec() для консолького приложения это почти тоже самое, что и бесконечный цикл? Надо послать сообщение, чтобы завершить?

Да не надо ничего дописывать. Поймали исключение с таким типом, просто скажите об этом своими словами, понятными пользователю. Вовсе не обязательно везде печатать what().
С what() это я что-то загнался :) Спасибо! :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Old от Апрель 20, 2014, 09:20
Может exec() для консолького приложения это почти тоже самое, что и бесконечный цикл? Надо послать сообщение, чтобы завершить?
exec, для любого приложения, это бесконечный цикл - главный цикл приложения, в котором обрабатываются все события.
В вашем случае, он не нужен, поэтому его проще вообще не запускать.



Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Igors от Апрель 20, 2014, 09:40
В коде файла main.cpp есть две проблемы:
1) В раздаче карт есть ошибка. У меня игрока всего три, а я пытаюсь выйти за диапазон массива: players. Должно срабатывать исключение, но этого не происходит. Почему?
2) После каждого запуска в процессах остаётся CardGame.exe. Мне приходится лезть в Диспетчер задач и вручную завершать процесс

Помогите, пожалуйста, с этими проблемами.
Вы потеряли цель. Какому этапу разработки соответствуют Ваши действия? Когда он должен быть завершен? Какой этап следующий и что должно быть сделано перед его началом?  А если хотели просто повозиться с примерчиком - нечего было заводить тему про "этапы".

А вообще все гораздо проще - есть ли хоть какие-то шансы на этом что-то заработать? Лично я их в упор не вижу. Ну значит и пример этот столь же бесполезен как и книжка из которой он списан  :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Old от Апрель 20, 2014, 09:49
А вообще все гораздо проще - есть ли хоть какие-то шансы на этом что-то заработать?
Android, сетевой дурак, школьники на уроках играют через wi-fi/bluetooth. Монетизация через показ рекламы или покупка за 50 центов отключалки рекламы.

Лично я их в упор не вижу.
Здесь остается только сожалеть. :)

Ну значит и пример этот столь же бесполезен как и книжка из которой он списан  :)
Ну это ничего не значит, хотя классы из книги не блещут, несмотря на элементарность задачи.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Igors от Апрель 20, 2014, 10:10
Android, сетевой дурак, школьники на уроках играют через wi-fi/bluetooth. Монетизация через показ рекламы или покупка за 50 центов отключалки рекламы.
Вот, уже "теплее". Но тогда почему проект начинается с какого-то задрипаного примера, а не с изучения аналогов, платформ, конкурентов? Где "features list", чем собрались завоевывать рынок?

И тут начинается типа "ну он же маленький еще, только учитЬся". И 8Observer8 охотно подхватывает, мол, да, это же "для примера", "фикция".  Ну так ведь и результат такая же "фикция", смысла в таких цацках-пецках никакого. Как можно научиться программировать если все время жалеть себя и отлынивать от работы под предлогом "я только учуся"? :) Зато как охотно впитывает витиеватый сынтаксыс! 


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Old от Апрель 20, 2014, 10:16
Конечно только учится, вы не согласны? :)
А это я написал для вас, вы же не могли представить, как на этом можно заработать.
Как учиться дело исключительно ТС, почему вас это постоянно беспокоит? :)

И да синтаксис витиеватый только для вас, но с этим уже ничего не поделать. :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Igors от Апрель 20, 2014, 12:31
А это я написал для вас, вы же не могли представить, как на этом можно заработать.
Ну а чего же Вы сами-то не пытаетесь? Наверное понимаете что труда придется вложить немало, а вот отдача сомнительна. Так чем же Ваши выводы отличаются от моих?  :)

Да, согласен с Вами, пусть ТС вообще ХОТЬ ЧТО-ТО напишет. О каких-то там "этапах", "профессионализме" говорить явно рано. Но вот странное дело - писать (в смысле программировать) он не хочет. А хочет "выучить". Но, как ни странно, чем больше заучено - тем хуже результат.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Old от Апрель 20, 2014, 12:38
Ну а чего же Вы сами-то не пытаетесь? Наверное понимаете что труда придется вложить немало, а вот отдача сомнительна. Так чем же Ваши выводы отличаются от моих?  :)
Почему вы так думаете? Я задумываюсь о выходе на этот рынок и задумываюсь все больше и больше.
То, что я не делаю это с наскока... ну так возраст уже не тот. Я изучаю рынок, смотрю, в общем учусь...
Так что, все будет, идеи есть. :)

Но вот странное дело - писать (в смысле программировать) он не хочет.
Ну так бурча на него, вы все равно не заставите его программировать. :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Hrundel от Апрель 20, 2014, 13:13
Old, вы не совсем правы, на мой взгляд. Тема действительно об этапах разработки. А он их не выполняет.

И да синтаксис витиеватый только для вас, но с этим уже ничего не поделать. :)

Нет. Для меня тоже витееватый. Чем проще написано - тем меньше ошибок!!!


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Old от Апрель 20, 2014, 13:25
Так в чем моя не правота? Что вы предлагает делать, что бы он соблюдал? :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Hrundel от Апрель 20, 2014, 13:40
Ну, пусть напишет техническую задачу, и спецификацию. А потом попробует жестко ей следовать. Тогда не будет спонтанного развития проекта, и он сможет понять, что он не учитывал в самом начале.
В одном из сообщений ТС пишет, что даже не подумал о том, что программа должна отслеживать правила игры. То есть, он берется за имплементацию, даже не имея приблизительного плана в голове. А, значит, ему нужно составить для начала четкий план на бумаге. С чего начать? Чем закончить?

Например, как в типовых проектах.

(UseCase Nr 1)
1. Программа должна хранить и читать данные.
      Значит, сначала пишу класс со структурой данных,
      потом пишу интерфейс ввода данных,
      потом пишу сериализацию данных.  

(UseCase Nr 2)
2. Програма должна отображать данные
     Пишу интерфейс отображения данных.
     потом пишу GUI под интерфейс.
     *(можно сначала GUI потом интерфейс, если знаешь какие данные будут выводиться)

и т.д. и т.п.

Но для начала нужно все эти Use Cases на бумаге написать и лучше всего в виде UML диаграммы

0. Начать сетевой сеанс
1. Пользователь залогинен
2. Пользователь включен в игру
3. Принять ставку
4. Раздать карты и начать игру
5. Передать ход игроку
6. Получить карту от игрока
7. Проверить правила
8. Очистить игровой стол
9. Сменить счет
10. Определить победителя
11. Перевести выигрыш на счет победителя
12. Предложить новую игру
13. Разлогинить пользователя
14. Закончить сетевой сеанс

А дальше детально описать, что необходимо учесть и написать, чтобы каждый из Use Cases выполнил свою работу. Это и будет ТЗ и спецификация. ТЗ - грубое описание. Спецификация - очень подробное, пошаговое описание с примерами GUI из прототипа или набросков от руки.

Спонтанное развитие проекта всегда приводит к непредсказуемым, трудно определяемым ошибкам.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Hrundel от Апрель 20, 2014, 14:59
Кстати, забыл сказать, что есть два пути:
от частного к общему *(как я описал выше)
и от общего к частному

во втором случае, сначала пишут кучу пустых классов и в соответствии с логикой программы создают экземпляры. То есть - делают готовый автомат. Потом начинают детализировать автомат добавляя в классы методы и атрибуты.

Второй метод возможен, только если разработана очень подробная спецификация. Метод очень эффективный. Но, заказчик должен точно знать, что он хочет, и еще в фазе анализа выдать всю информацию.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Bepec от Апрель 20, 2014, 16:56
Второй метод работает с идеальным заказчиком и идеальной архитектурой. Т.е. в 99% случай первый :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Hrundel от Апрель 20, 2014, 17:03
Второй метод работает с идеальным заказчиком и идеальной архитектурой. Т.е. в 99% случай первый :)

Я бы сказал так - второй случай только в корпаративных проектах. Не знаю как это выражается в процентном соотношении. Если устроился работать на крупную фирму в силиконовой долине, то всегда только второй случай.  ;D


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Old от Апрель 20, 2014, 17:28
Если устроился работать на крупную фирму в силиконовой долине, то всегда только второй случай.  ;D
Потому что подготовкой ТЗ будет заниматься отдел по работе с клиентами в контакте с отделом разработки ТЗ, под контролем и с непосредственным участием группы архитекторов с участием ведущих программистов. :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 21, 2014, 08:47
Потому что подготовкой ТЗ будет заниматься отдел по работе с клиентами в контакте с отделом разработки ТЗ, под контролем и с непосредственным участием группы архитекторов с участием ведущих программистов. :)
Мне придётся сначала самому научиться писать ТЗ. Хочу быть фрилансером :)

Я расписал этапы разработки. Пока застрял на первом:

- на примере карточной игры, создать подробное ТЗ

- создать тесты (для демонстрации основной функциональности методов классов, в том числе демонстрация с помощью тестов защиты методов от "дурака")

- реализовать приложение

- создать документацию с помощью Doxygen

- отправить заказчику исполняемый файл, исходный код, тесты и документацию

А вообще все гораздо проще - есть ли хоть какие-то шансы на этом что-то заработать? Лично я их в упор не вижу. Ну значит и пример этот столь же бесполезен как и книжка из которой он списан  :)

Я долго думал, что потом дальше делать. Вот какие мысли пришли:

Дополнительный заработок:
- Либо создать красивый сайт посвящённый приложению, выложить в свободный доступ исполняемый файл, исходный код, тесты и документацию. Расположить кнопку "Donate".
- Либо создать красивый сайт посвящённый приложению, организовать покупку приложения пользователями.

Большая проблема в том, что "дополнительный заработок" в России - провальный изначально. У нас мало народу (с каждым годом всё меньше), народ бедный и жадный. Покупать тоже никто не будет, так как всегда можно украсть. Надо ориентироваться на Запад. Сначала выучить в совершенстве английский. Выучить в совершенстве программирование. Раскрутить сайт посвящённый приложению и получать донейты. Тогда можно жить :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: OKTA от Апрель 21, 2014, 09:29
1. Совершенство недостижимо  ;D
2. Фриланс не любит ленивых
3. Даже для собственных разработок, сайтов и т.д. нужны $  ;D

А вообще, зачем мусолить и без того замусоленную тему? Чему учиться в написании ТЗ? ТЗ должно быть таким, как ноты произведения. Если ноты все перед тобой - играешь по ним и не задумываешься, а если каких-то нот нет, то все, провал и импровизация, которая успешна только при наличии большого опыта.
Хочешь научиться писать ТЗ? Научись расписывать любую задачу до мельчайших деталей и научишься.
Простой пример из жизни. План "как сходить в туалет"
1. Захотелось
2. Определил как далеко до туалета
3. Нашел туалет
4. определил платный он или нет
5. Пробрался внутрь
6. Определил наличие туалетной бумаги -
7. Закрылся (нет замка - забарикодировался)
8. Определился с ширинкой - на молнии или на пуговицах
9. Снял штаны
10. Сделал дела
11. использовал бумагу
12. одел штаны
13. вышел из туалета
14. помыл руки, если есть где
15. mission accomplished

Упустишь хоть один из пунктов и все - провал... так же и в ТЗ - не ленись и не стыдись расписывать все до мельчайших подробностей и все будет пучком)) А методики написания ТЗ - это уже второй вопрос.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: OKTA от Апрель 21, 2014, 09:38
Да, и пример из жизни, связанный с силиконовой долиной и ТЗ)))
Есть там одна фирма очень крупная.. Одно из подразделений этой фирмы занимается разработкой некоего SDK. Сделали, все проверили, выложили в интернет и только через год поняли, что одна  из библиотек внутри SDK оказалось пустой - прописаны только функции без реализации  ;D ;D ;D
А сколько человек попробовало и положило болт, увидев, что не работает - неизвестно  ;D Спасибо первому, кто додумался сказать о том, что почему-то странно себя ведет библиотека  ;D Вот так вот бывает с ТЗ, где нет пункта проверить релизную версию, выкладываемую в интернет  ;D ;D ;D


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 21, 2014, 09:43
1. Совершенство недостижимо  ;D
К нему надо стремиться :) Иначе деградация и смерть. Хорошо, что недостижимо. Можно бесконечно развиваться :)

2. Фриланс не любит ленивых
Нас ленивых никто не любит :) ну, кроме родителей...

3. Даже для собственных разработок, сайтов и т.д. нужны $  ;D
Какие деньги? Есть бесплатные хостинги, даже без рекламы: http://www.freewebhostingarea.com/

А методики написания ТЗ - это уже второй вопрос.
Вот об этом и речь. Мне нужна методика составления ТЗ, на примере карточной игры. Составлю, а потом перейду к этапу разработки.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: OKTA от Апрель 21, 2014, 09:52
Я заметил просто пару пунктов  ;D
Цитировать
Сначала выучить в совершенстве английский. Выучить в совершенстве программирование.

Фриланс на самом деле не любит ленивых - на работе 8-ми часовой куда попроще будет + опыт гораздо быстрее набирается.

А пока ты будешь разрабатывать программу, делать сайт и все остальное, кто тебя кормить будет, когда будешь без родителей тусоваться?  ;)

ТЗ начинать с малого надо - с подробного плана  ;)
А то иначе вот вам, методика ;D

Цитировать
Про программирование:
ГОСТ 19.001-77 Общие положения
ГОСТ 19.002-80 Схемы алгоритмов и программ. Правила выполнения (Заменен на ГОСТ 19.701-90 (ИСО 5807-85))
ГОСТ 19.003-80 Схемы алгоритмов и программ. Обозначения условные графические (Заменен на ГОСТ 19.701-90 (ИСО 5807-85))
ГОСТ 19.004-80 Термины и определения (Заменен на ГОСТ 19781-90)
ГОСТ 19.005-85 Р-схемы алгоритмов и программ
ГОСТ 19.101-77 Виды программ и программных документов
ГОСТ 19.102-77 Стадии разработки
ГОСТ 19.103-77 Обозначения программ и программных документов
ГОСТ 19.104-78 Основные надписи
ГОСТ 19.105-78 Общие требования к программным документам
ГОСТ 19.106-78 Требования к программным документам, выполненным печатным способом
ГОСТ 19.201-78 Техническое задание, требования к содержанию и оформлению
ГОСТ 19.202-78 Спецификация. Требования к содержанию и оформлению
ГОСТ 19.301-79 Программа и методика испытаний. Требования к содержанию и оформлению
ГОСТ 19.401-78 Текст программы. Требования к содержанию и оформлению
ГОСТ 19.402-78 Описание программы
ГОСТ 19.403-79 Ведомость держателей подлинников
ГОСТ 19.404-79 Пояснительная записка. Требования к содержанию и оформлению
ГОСТ 19.501-78 Формуляр. Требования к содержанию и оформлению
ГОСТ 19.502-78 Описание применения. Требования к содержанию и оформлению
ГОСТ 19.503-79 Руководство системного программиста. Требования к содержанию и оформлению
ГОСТ 19.504-79 Руководство программиста. Требования к содержанию и оформлению
ГОСТ 19.505-79 Руководство оператора. Требования к содержанию и оформлению
ГОСТ 19.506-79 Описание языка. Требования к содержанию и оформлению
ГОСТ 19.507-79 Ведомость эксплуатационных документов
ГОСТ 19.508-79 Руководство по техническом обслуживанию. Требования к содержанию и оформлению
ГОСТ 19.601-78 Общие правила дублирования, учета и хранения
ГОСТ 19.602-78 Правила дублирования, учета и хранения программных документов, выполненных печатным способом
ГОСТ 19.603-78 Общие правила внесения изменений
ГОСТ 19.604-78 Правила внесения изменений в программные документы, выполненных печатным способом
ГОСТ 24.101-80 Виды и комплектность документов (Заменен на ГОСТ 34.201-89)
ГОСТ 24.102-80 Обозначение документов (Заменен на ГОСТ 34.201-89)
ГОСТ 24.103-84 Автоматизированные системы управления. Общие положения
ГОСТ 24.104-85 Автоматизированные системы управления. Общие требования (Раздел 3 заменен на ГОСТ 34.603-92)
ГОСТ 24.201-79 Требования к содержанию документа «Техническое задание» (Заменен ГОСТ 34.602-89)
ГОСТ 24.202-80 Требования к содержанию документа «Технико-экономическое обоснование»
ГОСТ 24.203-80 Требования к содержанию общесистемных документов
ГОСТ 24.204-80 Требования к содержанию документа «Описание постановки задачи»
ГОСТ 24.205-80 Требования к содержанию документов по информационному обеспечению
ГОСТ 24.206-80 Требования к содержанию документов по техническому обеспечению
ГОСТ 24.207-80 Требования к содержанию документов по программному обеспечению
ГОСТ 24.208-80 Требования к содержанию документов стадии «Ввод в эксплуатацию»
ГОСТ 24.209-80 Требования к содержанию документов по организационному обеспечению
ГОСТ 24.210-82 Требования к содержанию документов по функциональной части
ГОСТ 24.211-82 Требования к содержанию документа «Описание алгоритма»
ГОСТ 24.301-80 Общие требования к выполнению текстовых документов
ГОСТ 24.302-80 Общие требования к выполнению схем
ГОСТ 24.304-82 Требования к выполнению чертежей
ГОСТ 24.602-86 Состав и содержание работ по стадиям (Заменен на ГОСТ 34.601-90)
ГОСТ 24.703-85 Типовые проектные решения. Основные положения
ГОСТ 34.201-89 Информационная технология. Комплекс стандартов на автоматизированные системы. Виды, комплектность и обозначения документов при создании автоматизированных систем (Взамен ГОСТ 24.101-80, ГОСТ 24.102-80)
ГОСТ 34.601-90 Информационная технология. Комплекс стандартов на автоматизированные системы. Автоматизированные системы. Стадии создания. (Взамен ГОСТ 24.601-86, ГОСТ 24.602-86)
ГОСТ 34.602-89 Информационная технология. Комплекс стандартов на автоматизированные системы.Техническое задание на создание автоматизированной системы (Взамен ГОСТ 24.201-85)
ГОСТ 34.603-92 Информационная технология. Виды испытаний автоматизированных систем (Взамен ГОСТ 24.104-85 в части разд. 3.)
РД 50-34.698-90 Автоматизированные системы. Требования к содержанию документов.
ГОСТ Р ИСО 9001-96 Системы качества. Модель обеспечения качества при проектировании, разработке, производстве, монтаже и обслуживании
ГОСТ Р ИСО 9002-96 Системы качества. Модель обеспечения качества при производстве, монтаже и обслуживании
ГОСТ Р ИСО 9003-96 Системы качества. Модель обеспечения качества при окончательном контроле и испытаниях
ГОСТ 26139-84 Интерфейс для автоматизированных систем управления рассредоточенными объектами. Общие требования
ГОСТ Р51188-98 Защита информации. Испытания программных средств на наличие компьютерных вирусов. Типовое руководство
ГОСТ Р51241-98 Средства и системы контроля и управления доступом. Классификация. Общие технические требования. Методы испытаний


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 21, 2014, 09:54
Огромное спасибо за список! А есть такой же для буржуев? :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: OKTA от Апрель 21, 2014, 10:08
Начни отсюда)
http://en.wikipedia.org/wiki/Product_requirements_document


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 21, 2014, 10:12
Спасибо! :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Igors от Апрель 21, 2014, 11:18
Что касается "написания ТЗ" - дело гнусное. Неск ключевых моментов

1) Все что не оговорено в ТЗ является предметом другой работы, и значит - другой оплаты. "Не подумал, не предусмотрел", "а вот тут теперь надо.." и.т.л. - не <волнует>, контрактор имеет полное право отказаться это делать. Придется его просить, договариваться, что страшно противно.

2) Важное следствие из предыдущего. Не все (или далеко не все) работы могут быть поручены контрактору - по той простой причине что четкое ТЗ невозможно (или его составление слишком затратно/неэффективно). Вот хоть сейчас нужен большой редактор на Qt, и деньги есть - но увы, оно не формализуется  :'(

3) Учебный пример неправильного подхода:
Я выбрал такое задание: разработать сетевую карточную игру "Дурак".
Ну хз, то ли Вам деньги некуда девать, то ли напрашиваетесь быть обманутым... За что Вы собрались платить? За пару окон и связку по сети? Нормальный программист сделает это за день-два (ну Вам скажет что вкалывал аж 2 недели), и скажет "плати". Что Вы потом докажете? Игра есть - есть. По сети ходит - ходит. Ну так "гони монету". Из этого следует

- давайте контрактору то что трудно/долго сделать самому и что хорошо локализуется. Не делайте его автором проекта ("разработать игру"), это чревато. Обозначьте ему участок где он будет корячиться. Такая возможность в данном случае есть и была указана выше. А нахрюкать окон и прицепить сеть дешевле самому - или поручить штатному работнику.

Ну и вообще, не лезли бы Вы в это дело, роль работодателя неблагодарна.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Bepec от Апрель 21, 2014, 12:49
Насчёт учебного примера - Igors ты неправ :)
Кому то работы на час, кому то на пару дней, человеку не имеющего образования и опыта - на пару месяцев :) И не такие задачи бывали у меня :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 23, 2014, 12:35
Я пришёл к такому выводу, что мне надо писать два ТЗ. Одно на русском, а другое дублировать на английском.

А для тренировки, данный проект, лучше всего реализовать следующим образом:

- создать сайт, с которого можно скачать приложение для настольного ПК, для ОС: Windows, Linux и Mac OS (для начала сделаю для Widows, так как с Linux мало знаком, а с Mac OS вообще незнаком)

- на этом же сайте можно будет зарегистрироваться и играть прямо с сайта. Для этого реализую игру на JavaScript, jQuery, PHP, MySQL, CSS

P.S. На данный момент занят разработкой формы регистрации (с сохранением в базу данных MySQL) на jQuery и PHP. Хочу ещё позже реализовать чат на сайте. Так же учусь писать ТЗ и дублировать его на английском.
P.S.S. Параллельно буду писать игру на Qt и JavaScript (jQuery, PHP). Разработку методов буду вести по методологии TDD: QTest, PHPUnit и QUnit (для JavaScript и jQuery)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Old от Апрель 23, 2014, 14:21
 ::) Это шутка?


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Апрель 23, 2014, 14:26
Сейчас не до шуток :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: OKTA от Апрель 23, 2014, 14:36
Раз не до шуток, то может начать с ТЗ, а не формы регистрации?  ;)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Bepec от Апрель 23, 2014, 16:18
Человек не отличает причину от следствия, а вы его просите начать с ТЗ :) Он за время сидения на форуме уже бы написал эту программу, поднял сервер, сфейлился, написал апи, изучил ЕСПД и создал ТЗ по программе "от противного". :)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: OKTA от Апрель 23, 2014, 16:27
Отличит со временем  ;)


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Май 16, 2014, 09:46
Я хотел (и хочу, но уже в будущем) создать сайт с игрой "Дурак", но что-то увлёкся изучением jQuery, PHP и т.д. Я думаю, что теряю время. Лучше я буду писать маленькие технические задания, выполнять их на Qt, а потом усложнять. Так хотя бы я буду знать, как надо было писать с самого начала.

Допустим, мой заказчик хочет получить первую рабочую версию в таком виде: лишь бы выполняла минимум функциональности. Заказчик сам не уверен, как должен выглядеть конечный продукт. Поэтому у нас будет договорённость, что мы пишем вместе ТЗ не сразу всё, а скажем на одну или на две недели. То есть мы работаем в условиях постоянно меняющихся требований.

Остановлюсь на таком ТЗ и реализую первую "черновую" версию чуть позже:

Задание на разработку сетевой карточной игры "Дурак"

Описание

В игре участвуют до 6 человек. Один из пользователей запускает сервер, сообщает IP и номер порта остальным участникам, которые подсоединяются к серверу.

Пользователь, который запустил сервер, раздаёт карты после каждого кона, нажимая кнопку "Раздать карты"

Карты у каждого пользователя отображаются в текстовом виде, к примеру:
Diamonds-6 - Бубновая Шестёрка
Spade-Queen - Пиковая Дама


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: OKTA от Май 16, 2014, 10:41
Маловато для ТЗ будет..
Нерадивый заказчик посмотрит на такое и про себя уже придумает способ, как получить программу, а деньги не платить. Забудьте о "договоренностях", потому что большинство заказчиков в определенный момент начинают руководствоваться только тем, под чем подписались, забывая о всех договоренностях. Ну и в конце концов, если заказчик не знает или не уверен, что должно получиться в итоге, стоит с подозрением к нему относиться..
Ну и в самом конце концов, постоянно меняющиеся условия это одна головная боль, за которую сам заказчик со временем не захочет платить, да и программист морально устанет переделывать одно и тоже несколько раз.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Май 19, 2014, 10:08
OKTA, я не точно выразился. Я имел ввиду, что ТЗ будет дополняться новыми требованиями.

Дорогие форумчане! Я сейчас вырабатываю на практике методику разработки ПО для фрилансера. Мне надо будет сверяться, как разработка происходит в реальности с использованием современных подходов и инструментов. Мне нужен ваш опыт. У меня нет, к сожалению, никакого. Прошу понять насколько мне сложно вступить в ряды разработчиков. Не предлагайте пойти в "ученики" в фирмы. У нас в Саратове нет вакансий на Qt. Уехать в другой город я не могу. Для меня один только выход - стать профессиональным фрилансером и оформиться, как ИП. Поэтому мне надо сформировать хорошее портфолио.

Очевидно, что проекты для портфолио надо размещать на своём сайте, делать (по возможности) интернет версии проектов, мобильные версии, версии исполняемых файлов на Qt для Windows, Linux (с возможностью скачать со своего сайта)

Учитывая сказанное выше, прошу помочь отработать до автоматизма этапы разработки ПО. Если есть время, то напишите, пожалуйста, своё ТЗ. Мне просто хочется проиграть на нескольких проектах сценарии от этапа получения от заказчика ТЗ до этапа получения вознаграждения.

Напишите, пожалуйста, основные требования к данному ТЗ, учитывая сказанное выше.

Заранее спасибо за уделённое время!


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Bepec от Май 19, 2014, 10:17
Чесслово - кажется что человек не видит того, что ему пишут :D
ЕСПД описывает весь процесс создания документации на программу. И соответственно наоборот - написание программы по документации.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: OKTA от Май 19, 2014, 10:28
Если нет Qt, может стоит поискать вакансии по С++? Ну не верю я, что в городе, где население почти миллион, нет вакансий  :)
У меня в родном город 100000 человек живет, так программистов с руками отрывают, лишь бы показались, что они есть   :o  ;D
Вы рискуете завязнуть в попытках самостоятельно во всем разобраться  :-[. Форум это хорошо и удобно, но не так, как общение с живыми людьми и требует раз в 10 больше времени  :'(.
Может стоит погуглить всяческие опенсорсные проекты на Qt, где разработка идет в данное время и рады видеть помощников на бесплатной основе? Их уверен много!


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Май 19, 2014, 11:09
Bepec, ЕСПД - слишком сложно. Я хочу постепенно разобраться, но почувствовать, что это необходимо. Неужели такое простое задание требует привлечение ЕСПД? К тому же многие ГОСТ'ы уже устарели. Как мне кажется, на практике мало кто использует ЕСПД. Как бы это задание выполнялось с привлечением ЕСПД? И при чём здесь техническое задание? Я так понимаю, что эту систему используют для оформления сопроводительной документации (могу ошибаться)

OKTA, разве чистый C++ может использоваться без какого-нибудь фреймворка? Какое приложение можно написать на чистом C++? Скорее всего это будет Visual C++ или MFC или ещё что-нибудь. Я не знаю почему, но Qt очень непопулярен здесь. Есть только три фирмы, и то у них нет свободных вакансий на Qt. В лубом случае, мне нужно портфолио. Сейчас при устройстве требуют продемонстрировать выполненные заказы. У меня нет другого выхода, кроме, как быть фрилансером. Тем более у меня резко меняются интересы (кроме Qt люблю jQuery, JavaScript, PHP) и я сам хочу выбирать заказы. К тому же я люблю методологию TDD (Google Test, Google Mock, QUnit, MockJax, PHPUnit). Хочу ещё осваивать OpenGL, Bullet, математику (в свободное время). Если я сам выбираю заказы, то смогу выбирать направление развития на текущий момент. Допустим, на этой неделе я делаю сайт, на другой - web-приложение на Qt и т.д. Меня бесит, что методология TDD в наших фирмах игнорируется. Хотя Microsoft встроил полную поддержку TDD в среду Visual Studio 2012 (и 2013) для Visual С++, C# и Visual Basic.



Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Igors от Май 19, 2014, 11:22
Не занимайтесь фигней с "портфолио" - никакого впечатления это не произведет.
(кроме Qt люблю jQuery, JavaScript, PHP) и я сам хочу выбирать заказы.
Так в чем проблема? Регистрируетесь на фрилансерском сайте и выбираете. Да, вначале у Вас будет нулевой рейтинг, ничего страшного, все начинают. Чем быстрее Вы получите реальный опыт - тем лучше, сейчас Вы просто в плену своих фантазий


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: OKTA от Май 19, 2014, 11:27
Конечно может использоваться! Какое приложение можно написать на чистом С++? Да какое угодно  :o Qt - это библиотека всего лишь.. Поверь, у тебя не получится чередовать каждую неделю свои интересы и направления разработки - это практически нереально, если проект мало-мальски серьезный. TDD может и используется, просто о нем не говорят)) Резко меняющиеся интересы это конечно хорошо - гарант отсутствия застоя, но по началу надо на чем-то одном сосредоточиться, чтобы был уверенный костяк  знаний  :) И работа на том же С++ - отличный способ это сделать!) В Саратове очень много НИИ. Во всех НИИ обожают брать начинающих программистов, которые хотят набраться опыта, поверь мне! Если не лень - берешь список НИИ и рассылаешь туда свое резюме, сказав что хочешь опыта, а не денег. Это проще, чем искать работу среди в частном секторе, где все жаждут видеть многолетний опыт и миллион успешных проектов.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: Bepec от Май 19, 2014, 11:44
ЕСПД - это выжимка всех требований к ТЗ.
Это чистое знание как должно выглядеть и быть оформлено ТЗ.
Кратко, доходчиво, в самую суть.
Написано для людей, не программистов и потому понятное 80% людей.

Как может быть сложно просто прочитать 90-150 страниц текста?  Потратьте 2 часа вечером.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Май 19, 2014, 12:54
Верес, спасибо! Почитаю :) Вот нашёл статью: http://habrahabr.ru/post/218735/undefined/

Важны любые советы!

Я зарегистрировался на многих из этих списков (хочу на всех, в том числе, и на зарубежных):
- http://habrahabr.ru/post/153091/
- http://www.kadrof.ru/cat_exchange.shtml
- http://ydalehka.ru/birzhi-frilansa/
- http://www.seoded.ru/ssilki/birgi/birgi.html

Стараюсь ежедневно просматривать.

Ещё здесь зарабатываю: http://www.vip-prom.net/
Там надо выполнять простые задания от 0.006$, 0.020$, 0.050$, и т.д. за задание. Правда хватает только на телефон. Я сначала перевожу на webmoney, а потом сразу на телефон.

Ещё (больше для знакомства с PayPal) на нескольких из этих бирж: http://cxs.freeptcsites.info/
Там надо кликать на ссылки. После клика запускается таймер 3, 5 сек., далее, надо ввести капчу. За одну ссылку - 0.001$.

Что касается темы, то вот набросал этапы:

Этапы разработки:
1) Получение ТЗ от заказчика
2) Согласование ТЗ (уточнение, дополнение, приведение к своим шаблонам)
3) Проектирование модулей (классов) в виде заглушек
4) Демонстрация заказчику предварительной документации на doxygen
5) Написание TDD-тестов для разрабатываемых классов
6) Демонстрация заказчику тестов
7) Реализация функциональности модулей

Это чисто моё видинее на данный момент.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: OKTA от Май 19, 2014, 13:00
От документации на этом этапе будет толку ноль, тем более заказчику...
На тесты заказчику тоже будет наплевать - ему нужен работающий продукт, а не тесты.. - тесты это для вас..


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: 8Observer8 от Май 19, 2014, 13:08
OKTA, возможно Вы правы, но я пока так не думаю. Я видел, по крайней мере, один заказ, где заказчик требовал тесты :) А документация в doxygen много времени не требует, там вроде что-то типа диаграмм классов встроено. Можно к заглушкам написать документацию. А тесты они тоже как документация.

Больше всего мне пока нравится этот фрилансерный сайт: http://freelansim.ru/ Там можно подписаться на моментальную рассылку. Но и среди остальных сайтов много хороших должно быть.


Название: Re: Этапы разработки ПО. Научите, как работает профессионал.
Отправлено: OKTA от Май 19, 2014, 13:19
Ну, просто это странно, показывать заказчику документацию на пустышки  ;D