Представляю Вашему вниманию требования пользователя. Как бы заказчик мог их составить. Что-то прописано довольно конкретно, что-то не очень,
а что-то вообще упущено.
Система должна обеспечивать следующие возможности:
1. Учетные функции. 1.1. Ежедневная запись расходов и доходов в разрезе счетов.
Пример.
Сегодня на карточный банковский счет мне зачислили зарплату X рублей.
Я обналичил Y рублей.
На Z рублей купил пакет кефира.
В системе должны появиться следующие записи:
Дата
Статья
Содержание
Счет источник
Счет приемник
Сумма
сегодня
зарплата
-
свой карт-счет
чужой счет
X
сегодня
обналичивание
-
своя наличка
Свой карт-счет
Y
сегодня
Комиссия за обналичивание
-
свой карт-счет
чужой счет
%Y
сегодня
Еда
кефир
Своя наличка
чужой счет
Z
Должна быть возможность автоматического создания записи (например, комиссия).
1.2. Классификация счетов
Счета должны обладать следующими атрибутами:
Наименование счета.
Наличный/безналичный.
Свой/чужой.
Валюта счета.
1.3. Классификация статей
Статьи должны обладать следующими атрибутами:
Наименование статьи.
Счет источник (список возможных счетов).
Счет приемник (список возможных счетов).
Список автоматических операций.
1.4. Учет счетов
Для каждого из используемых типов счетов должен вестись экземпляр счета, на котором должен отражаться актуальный остаток.
2.Статистические функции.
Система должна уметь генерировать различные отчеты за различные промежутки времени:
Должна быть возможность построения графика по каждому из параметров.
3.Аналитические функции.
Назначение аналитических функций - планирование расходов будущих периодов на основе накопленной статистики.
Для планирования могут использоваться следующие данные:
Статистика прошлых периодов.
Календарь праздников.
Календарь дней рождения лиц, которым надо будет сделать подарок.
В следующем выпуске я представлю техническую спецификацию на систему.
*** Почта рассылки ***
Лобасенко Роман Борисович прислал
Дельный комментарий на прошлый выпуск.
Практика показывает, что создать продукт "с первого раза" шансов нет, даже домашнюю бухгалтерию, поэтому к
Формирование требований к программе с точки зрения пользователь.
Подготовка спецификации.
Проработка общей структуры программы.
Проработка форм визуализации.
Реализация программы (кодирование).
я добавил бы еще 2 пункта
Проверка на соответствие продукта требованиям заказчика (тестирование).
Доработка выявленных несоответствий.
Причем не исключена их цикличность.
Полностью согласен с Романом Борисовичем.
С.Макконел в своей книге "Совершенный код" рассказывает о "черновом решении" проблемы. Т.е. делается первая попытка решения проблемы, цель которой
создать некий прототип и выявить основные сложности реализации. Подобный опыт позволяет более точно и адекватно спроектировать чистовую систему.
Я уже довольно давно пользуюсь Exel для ведения домашних финансов, этот опыт и использую как "черновое решение".
Вообще разработка программного обеспечения - дело весьма сложно. Причем основную сложность представляет именно проектирование, т.е.
создание "плана программы" - классы, функции, структуры данных…
Предлагаю Вам поделиться опытом в этом нелегком деле.