понедельник, 22 августа 2011 г.

С чего начать проектирование программы? Часть 2


Прежде чем следовать дальше, повторим основные тезисы предыдущей статьи:

  1. Любая программа разрабатывается для решения конкретных задач. Эти задачи будем называть полезными функциями или просто функциями.
  2. Прежде чем проектировать архитектуру программы, нужно сначала разработать алгоритм выполнения каждой полезной функции. Такой алгоритм в машиностроении называется технологией или технологическим процессом.
  3. Технологический процесс представляет собой последовательность операций, которая может быть описана либо в текстовом виде в форме варианта использования, либо в форме блок-схемы, flowchart.
  4. Порядок проектирования можно описать в виде такой схемы:

Функция --> Технологический процесс --> Архитектура

Сначала нужно сформулировать полезные функции, которые будет выполнять проектируемая программа. Затем – описать технологический процесс для каждой из них. И только после этого можно проектировать архитектуру.

суббота, 20 августа 2011 г.

[OFF:] Что вы думаете о таланте?

Мой знакомый попросил меня разместить это сообщение.


Исследование портала TREKO.RU: "Ваше мнение о гениальности и талантливости?"

Запланировано открытие нового портала, посвящённого технологиям творчества и
решению сложных (!) задач.

Одно из направлений нового проекта - изучение талантов и гениев. Поэтому и
проводится исследование: "Ваше мнение о гениальности и талантливости?"

Желающие могут ответить на любое количество вопросов из 10 задать свои
собственные. На ряд заданных Вами вопросов разработчики постараются ответить уже в сентябре 2011 г. Чем сложнее будут Ваши вопросы - тем лучше, именно для этого портал и создаётся.

Для ответов на Ваши вопросы будет использоваться база данных по выдающимся
личностям и творческим коллективам трудолюбиво собираемая разработчиками нового портала 
с 70-х годов XX века и уже содержащая около 24 000 записей...

Вопросы самого исследования:
http://www.treko.ru/creative_vote

пятница, 19 августа 2011 г.

С чего начать проектирование программы? Часть 1


С чего начать проектирование программы? Классический объектно-ориентированный подход даёт нам однозначный ответ на этот вопрос: с выявления ключевых абстракций и построения объектной модели предметной области.

Джеймс Рамбо, один из создателей языка UML и Rational Unified Process'а, в своей книге "UML 2.0. Объектно-ориентированное моделирование и разработка" предлагает нам такой алгоритм проектирования:

  1. Изучить предметную область и выделить классы предметной области.
  2. Удалить лишние классы (несущественные или избыточные).
  3. Связать классы ассоциациями.
  4. Выделить в классах атрибуты.
  5. Реструктуризовать классы при помощи наследования.
  6. Добавить классы приложения.
  7. Добавить операции.

Дж. Рамбо, М. Блаха. UML 2.0. Объектно-ориентированное моделирование и разработка. 2-е изд. – СПб.: Питер, 2007, стр. 218 – 285.

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

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