User Tools

Site Tools


пересмотр дизайна сервисов

draft roadmap, part 1, анализ (не включает явно архитектурный анализ)

  1. выделение частей (модулей, классов, интерфейсов), ответственных за поведение конкретного сервиса
  2. выделение общих компонент (модулей, классов, интерфейсов)
  3. создание списков модулей, классов, интерфейсов
  4. создание общих и более детальных, по участкам дерева, схем взаимодейтсвия

для каждого из компонент (классов, интерфейсов, модулей, коллекции функций) создать описание

  1. общие и частные цели данного компонента (“целью данного компонента…”)
  2. общее описание поведения данного компонента (“этот компонент отвечает за создание, если у него запрашивают…, то…. если…”)
  3. сколько целей преследует этот компонент? какие части можно выделить их этого компонента?
  4. можно ли его объеденить с другими компонентами со сходными целями?
  5. какие зависимости есть от других модулей?
    1. напишите цепочку зависимостей.
    2. какой длины цепочка зависимостей?
  6. насколько сложно для понимания поведение этого компонента, в отношении других разработчиков?
  7. поведение этого компонента валидировано по целям?
    1. валидация повторяема?
    2. при изменениии каких модулей валидация компонента будет недостижимой?
    3. этот компонент может быть преобразован в подгружаемый независимо, или в составе фрейворка, библиотеки? да, нет, какие затраты, в составе какой.
для внешних компонент

аналогично внутренним

для классов (интерфейсов) и их методов
  1. ответить на вопрос и записать ответ,
    1. почему этот метод являеться методом, а не функцией в модуле, и почему именно в этом классе (интерфейсе)
    2. не является ли этот метод вмешанным методом иного класса и иным поведением, с другими целями
    3. перечислисть под запись компоненты, от которых зависит работа данного класса
    4. для данного класса есть и возможен интерфейсный тип?
    5. этот класс можно заменить другим?
    6. сколько методов в этом классе?
    7. методы повторяются в иных классах-модулях? почему повторяются?
для функций
  1. ответить на вопрос и записать ответ, почему эта функция находиться именно в этом модуле, и как она связана с остальными;
  2. записать ответ, почему функция не может является методом класса (часть интерфейса), или почему нецелеообразно ее такой сделать
  3. чем оперирует эта функция? что являеться ее субъектом?
для импортированных модулей
  1. ответить на вопрос и записать ответ
    1. для каждого импортированнного модуля, почему этот модуль необходим?
    2. какое место в иерархии объектов занимает этот модуль?
    3. что будет, если этот модуль исключить из импорта?
    4. какие классы-интерфейсы используються их этого модуля?
литература