|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Не знаю куда написать видимо сюда. Пишу приложения, и вдруг ловлю себя на мысли что я делаю это не так! Пишу обычные клиентские приложения под БД на C#.NET 2.0. Ощущение что я это делаю не так. Вроде все как обычно создается MDI-приложение. Главное меню, огромное количество дочерних окон.В базе пишется огромное количество хранимых процедур,для вставки,изменения,просмотра записей.В проекте для большей скорости не используются DataSet'ы. Настройки программы сохраняются, в файлах, имеющих "свой" формат (не XML). Почти вручную заполняется DataGridView. Вручную же и ловятся выделенные в нем записи для изменения. Для обработки хранимых процедур пишется огоромное количество монотонного кода, разница в нем только кол-во параметров и название процедур. Ощущение что я код пишу как то по старым привычкам, что есть уже новый подход, и приложения пишутся намного быстрее или я не прав ? http://webusblog.blogspot.com/ ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 12:28 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
webusДля обработки хранимых процедур пишется огоромное количество монотонного кода, разница в нем только кол-во параметров и название процедур.Имхо, это причина Ваших ощущений. В красиво спроектированной системе кол-во повторяющегося кода стремится к нулю. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 13:04 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Есть хорошая книжка на эту тему "Архитектура корпоративных программных приложений" Мартин Фаулер. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2007, 10:19 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Программист-ЛюбительЕсть хорошая книжка на эту тему "Архитектура корпоративных программных приложений" Мартин Фаулер. как раз щас читаю :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2007, 10:22 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
покажи пример того что делаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2007, 15:39 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
webusОщущение что я код пишу как то по старым привычкам, что есть уже новый подход, и приложения пишутся намного быстрее или я не прав ? Правы. И радует, что хоть кого-то еще посещают такие мысли. Новый подход есть примерно с 1955-го года - называется "выделение стандартных подпрограмм". К настоящему времени он весьма и весьма развит. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2007, 16:25 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
softwarerНовый подход есть примерно с 1955-го года - называется "выделение стандартных подпрограмм". К настоящему времени он весьма и весьма развит. По моим ощущениям, его иногда не хватает... И приходится использовать кодогенерацию (в т.ч. "на лету") или макрогенерацию. Тоже, конечно, старо как мир. Но народ начал про это забывать, а сейчас это снова становится модно - на этом Rails выезжает. Количество кода может сократиться довольно существенно, но сам язык при этом опасный - при компиляции почти ничего не проверяется. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2007, 19:34 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
>webus > ... В проекте для большей скорости не используются DataSet'ы ... После проверки ряда вариантов пришел к выводу, что имеет смысл использовать DataSet на клиенте. Только заполнять таблицу строками выборки так: ... SqlConnect conn= new SqlConnect(...); SqlCommand cmd= new SqlCommand("select ...") SqlDtaReader rdr = null; try { conn.Open(); //-- откроем соединение rdr=cmd.ExecuteReader(); while(rdr.Read()) { //-- Из строки формируем объект //-- Запись объекта в таблицу DataSet Table[0].LoadDataRow(obj,true); } rdr.Close(); catch (SqlException se) { ... } catch (Exception e) { ... } finally { if((rdr != null) && !rdr.IsCloseed) rdr.Close(); cmd.Dispose(); if(conn.State==ConnectionState.Open) conn.Close(); } ... Нудно конечно. Только надо помнить, что Dataset - почти база данных, но в оперативной памяти клиента. Поэтому - страничная подкачка. > ... Почти вручную заполняется DataGridView ... Имеет смысл связать его с таблицей DataSet (если он присутствует). С уважением, Владимир. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2007, 23:46 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
webusНе знаю куда написать видимо сюда. Пишу приложения, и вдруг ловлю себя на мысли что я делаю это не так! Пишу обычные клиентские приложения под БД на C#.NET 2.0. Ощущение что я это делаю не так. Вроде все как обычно создается MDI-приложение. Главное меню, огромное количество дочерних окон.В базе пишется огромное количество хранимых процедур,для вставки,изменения,просмотра записей.В проекте для большей скорости не используются DataSet'ы. Настройки программы сохраняются, в файлах, имеющих "свой" формат (не XML). Почти вручную заполняется DataGridView. Вручную же и ловятся выделенные в нем записи для изменения. Для обработки хранимых процедур пишется огоромное количество монотонного кода, разница в нем только кол-во параметров и название процедур. Ощущение что я код пишу как то по старым привычкам, что есть уже новый подход, и приложения пишутся намного быстрее или я не прав ? http://webusblog.blogspot.com/ В NET есть генерики, а вот на уровне SQL серверов нет. И я бы сказал - не хватает. Или приходится генерить налету sql код в клиентском приложении. Или тупо и монотонно писать дикое количество созраненных процедур и функций с тупо и монотоноо повторяющимся кодом. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2007, 05:12 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
ВМоисеев>webus > ... В проекте для большей скорости не используются DataSet'ы ... После проверки ряда вариантов пришел к выводу, что имеет смысл использовать DataSet на клиенте. Только заполнять таблицу строками выборки так: ... SqlConnect conn= new SqlConnect(...); SqlCommand cmd= new SqlCommand("select ...") SqlDtaReader rdr = null; try { conn.Open(); //-- откроем соединение rdr=cmd.ExecuteReader(); while(rdr.Read()) { //-- Из строки формируем объект //-- Запись объекта в таблицу DataSet Table[0].LoadDataRow(obj,true); } rdr.Close(); catch (SqlException se) { ... } catch (Exception e) { ... } finally { if((rdr != null) && !rdr.IsCloseed) rdr.Close(); cmd.Dispose(); if(conn.State==ConnectionState.Open) conn.Close(); } ... Нудно конечно. Только надо помнить, что Dataset - почти база данных, но в оперативной памяти клиента. Поэтому - страничная подкачка. > ... Почти вручную заполняется DataGridView ... Имеет смысл связать его с таблицей DataSet (если он присутствует). С уважением, Владимир. То же самое делает Адаптер.Филл ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2007, 16:12 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Alexsalog Или приходится генерить налету sql код в клиентском приложении. трындец sql серверу. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2007, 08:15 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Lepsik Alexsalog Или приходится генерить налету sql код в клиентском приложении. трындец sql серверу. Почему? из за накладных расходов на компиляцию запроса на сервере? В Оракле есть связанные переменные - да. Тут и Том Кайт советует и примеры дает - хотя в этой области я начинающий. В практической работе запрос все равно формируется как строка на клиентской стороне и отправляется посредством Код: plaintext
В MS SQL - если sql запрос посылается с клиентской стороны, то я вообще не знаю у него никаких возможностей "предкомпиляции". А ради: Код: plaintext
Можно коенчно и на это идти - ради "оптимизации", но именно это и превращает разработку в тот монотонный и повторяющийся процесс о котором говорилось в начале. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2007, 10:14 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Alexsalog Lepsikтрындец sql серверу. Почему? Забейте. Меня бы в принципе не огорчило, если бы sql серверу настал трындец, но я как-то долго выяснял этот вопрос с pkarklin-ым и Merle (одни из главным mssql-щиков здесь и на rsdn соответственно) и один из итоговых ответов был - MSSQL вполне нормально живет с клиентскими запросами, действуя примерно так же, как Oracle в режиме cursor_sharing=force. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2007, 10:41 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Программист-ЛюбительЕсть хорошая книжка на эту тему "Архитектура корпоративных программных приложений" Мартин Фаулер. А еще он про рефакторинг написал. Вместе эти книги образуют совершенно термоядерную смесь - гарантированно можно угробить любой проект, если немедленно бросаться реализовывать все что там написано. webusОщущение что я код пишу как то по старым привычкам, что есть уже новый подход, и приложения пишутся намного быстрее или я не прав ? Намного быстрее они не пишутся, т.к. кодирование - это не самое главное. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2007, 12:12 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
alexsalogИли тупо и монотонно писать дикое количество созраненных процедур и функций с тупо и монотоноо повторяющимся кодом. Есть прекрасные кодогенераторы(например,codesmith) c готовыми шаблонами для генерации процедур(впрочем, и любого кода).Затачиваешь их под себя, и весь гемморой сводиться к выбору имени таблицы.Никто не мешает подобным образом формировать весь необходимый винигрет:процедуры(запросы), классы для работы с БД(существуют шаблоны для многих ORM и DAL) и необходимые формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2007, 12:21 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Alexey Kudinov Вместе эти книги образуют совершенно термоядерную смесь - гарантированно можно угробить любой проект, если немедленно бросаться реализовывать все что там написано. да уж. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2007, 13:08 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
А зачем бросаться?Многое из того, что там написано уже реализовано:CAB,SCSF,EntLib,Spring и тд. Может быть взять это и заточить под себя? Пример - cabana .Более легкий вариант - самопальный CAB ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2007, 14:18 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
webusНе знаю куда написать видимо сюда. Пишу приложения, и вдруг ловлю себя на мысли что я делаю это не так! Пишу обычные клиентские приложения под БД на C#.NET 2.0. Ощущение что я это делаю не так. Вроде все как обычно создается MDI-приложение. Главное меню, огромное количество дочерних окон.В базе пишется огромное количество хранимых процедур,для вставки,изменения,просмотра записей.В проекте для большей скорости не используются DataSet'ы. Настройки программы сохраняются, в файлах, имеющих "свой" формат (не XML). Почти вручную заполняется DataGridView. Вручную же и ловятся выделенные в нем записи для изменения. Для обработки хранимых процедур пишется огоромное количество монотонного кода, разница в нем только кол-во параметров и название процедур. Ощущение что я код пишу как то по старым привычкам, что есть уже новый подход, и приложения пишутся намного быстрее или я не прав ? http://webusblog.blogspot.com/ Да нового подхода нет. Просто с ростом сложности и объёма проект перестаёт укладываться в голове и становится проще написать заново, чем искать уже написанное. Поэтому чтобы избавиться от монотонного кодирования - очень полезно проектировать до и документировать после. И ещё иметь хотя бы в голове представление о целях, которые преследует пользователь. Может, то что ему действительно нужно, можно реализовать по-другому, проще и быстрее, а то, что является лишним "бантиком" - просто выкинуть? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2007, 14:57 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
>Сахават Юсифов >То же самое делает Адаптер.Филл Вы правы - da.Fill даст такой же результат. Но: 1. Скорострельность. 2. Разработчик должен владеть несколькими методами работы с базой данных. 3. Длинный и нудный вариант дает возможность оперировать с каждой строкой выборки. Её можно сериализовать и отправить, к примеру в двоичный файл. Мы же помним, что DataSet располагается в оперативной памяти, а её объём межет быть не соизмерим с объёмом выборки. Посмотри не превзято на такой вариант - в прикладную систему по каким-то соображениям введен app-сервер (AS). Его реализацией может быть и такая - Web-service поверх host-а IIS (например). Клиент же - нормальное WinForm приложение. AS располагается в локальной сети с сервером данных. Метод AS делает запрос к серверу данных и получает в ответ выборку, которую должен передать клиентскому приложению. Нужно ли AS использовать DataSet. Можно, но право не стоит. DataSet содержит избыточную информацию. Я сериализую выборку по-строчно с записью в MemoryStream, результат сжимаю (zip) и шифрую. И вот этот результат передаю клиентскому приложению. И только здесь на клиенте, для графических компонентов отображения, записываю выборку в таблицу локального DataSet. С уважением, Владимир. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2007, 00:33 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
ВМоисеев>Сахават Юсифов >То же самое делает Адаптер.Филл Вы правы - da.Fill даст такой же результат. Но: 1. Скорострельность. 2. Разработчик должен владеть несколькими методами работы с базой данных. 3. Длинный и нудный вариант дает возможность оперировать с каждой строкой выборки. Её можно сериализовать и отправить, к примеру в двоичный файл. Мы же помним, что DataSet располагается в оперативной памяти, а её объём межет быть не соизмерим с объёмом выборки. Посмотри не превзято на такой вариант - в прикладную систему по каким-то соображениям введен app-сервер (AS). Его реализацией может быть и такая - Web-service поверх host-а IIS (например). Клиент же - нормальное WinForm приложение. AS располагается в локальной сети с сервером данных. Метод AS делает запрос к серверу данных и получает в ответ выборку, которую должен передать клиентскому приложению. Нужно ли AS использовать DataSet. Можно, но право не стоит. DataSet содержит избыточную информацию. Я сериализую выборку по-строчно с записью в MemoryStream, результат сжимаю (zip) и шифрую. И вот этот результат передаю клиентскому приложению. И только здесь на клиенте, для графических компонентов отображения, записываю выборку в таблицу локального DataSet. С уважением, Владимир. Владимир, это не АС, а какой-то приемопередатчик (это делают обычно, что бы обойтись НТТП только). Нормальный :) АС должен что-то кешировать, агрегировать, преобразовать и т.д., т.е. облеченный СУБД специализированный типа. Вот ту то и датасет и дататейбл и т.д. очень даже нужны. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2007, 00:57 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
WCF очень даже. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2007, 00:58 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
>Сахават Юсифов >Владимир, это не АС, а какой-то приемопередатчик. ... Сахават, я не ставил цель расписать все возможные функции сервера приложения. То о чем говорю я, для некоторых - это "толстый" драйвер. Для меня это -удаленные вычисления. Из того списка, что Вы привели - функционально ближе всего преобразования. Я привык оперировать не отдельным сервером приложений, а их пулом. Если текущий запрос выполняет СП(а), то далеко не факт что следующий запрос выполняться им, а не СП(?). Поэтому вопрос кеширования как бы повисает в воздухе (хотя и не отвергаю эту возможность - но кешировать придется на дополнительном общедоступном сервере). Агрегатирование можно делать и ХП на сервере данных, но если удобнее на СП, то почему нет. Сахават, я совсем не против использования DataSet и DataTable и широко их применяю в программах представления инфориации клиенту. Но они содержат избыточную информацию (например - три почти одинаковые строки в DataTable) - что не очень здорово при обмене. Но если приспичет - куда деваться. Сейчас также пытаюсь перебраться на WCF. Пока со скрипом. С уважением, Владимир ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2007, 09:40 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Сахават ЮсифовНормальный :) АС должен что-то кешировать, агрегировать, преобразовать и т.д. Ничего этого "Нормальный АС" делать не должен - он просто исполняет приложения - его клиент - простой терминал: экран + клава + мыша + эмулятор. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2007, 09:46 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
мод Сахават ЮсифовНормальный :) АС должен что-то кешировать, агрегировать, преобразовать и т.д. Ничего этого "Нормальный АС" делать не должен - он просто исполняет приложения - его клиент - простой терминал: экран + клава + мыша + эмулятор. Ну да. Я имел ввиду начинку, а Вы хость для начинки. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2007, 15:58 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Сахават Юсифов мод Сахават ЮсифовНормальный :) АС должен что-то кешировать, агрегировать, преобразовать и т.д. Ничего этого "Нормальный АС" делать не должен - он просто исполняет приложения - его клиент - простой терминал: экран + клава + мыша + эмулятор. Ну да. Я имел ввиду начинку, а Вы хость для начинки. блин, как только появляется буква "т" в конце слова, так пальцы автомать ставят :) "ь". Что за фигня :( ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2007, 15:59 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
>мод >Ничего этого "Нормальный АС" делать не должен ... Это скорее терминал-сервер. С уважением, Владимир. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2007, 20:33 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
ВМоисеевЭто скорее терминал-сервер. Он же АС. Пример - Oracle AS, его клиенты - просто терминалы. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2007, 09:44 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
sopromat webusДля обработки хранимых процедур пишется огоромное количество монотонного кода, разница в нем только кол-во параметров и название процедур.Имхо, это причина Ваших ощущений. В красиво спроектированной системе кол-во повторяющегося кода стремится к нулю. Программист-ЛюбительЕсть хорошая книжка на эту тему "Архитектура корпоративных программных приложений" Мартин Фаулер. Если представить что сейчас 50-ые годы и этот стон вопиющего в пустыне раздался не по поводу разработки "корпоративных" приложений, а по поводу вообще програмирования базовой логики типа циклов, переходов типа If, Switch а также блоков повтоярющегося кода, а все программируют блин в машиных кодах и на перфокартах, и тоже вот такой вот дядька спец своего времени по перфокартам говорит: оооо... есть хорошая книжка Марка Фалермана, называется: "Новейшие методы выкладывания перфокарт стопками". Чесс слово тоже самое.... Я понимаю были времена машинных кодов, потом появился С, который являет собой тооненькую прослойку над машинными кодами, а затем революционный С++. Эти средства решили технологические проблемы того времени, когда программы писались годами коллективами специалистов и это было очень дорого удовольствие. Но с тех пор (с 70-ых годов) ведь ничего НОВОГО создано не было. Java, Pascal, C# - суть упрощения языка С++, но принципиально нового ничего внесено не было. Между тем, если разобраться язык С++(C#, pascal, Java, and a lot of frameworks), как инструмент программирования позволяет более ЛЕГКО, НЕПРОТИВОРЕЧИВО и удобно писать программы, облегчая ТОЛЬКО уровень описания процедур алгоритмов низкого уровня (базовая процедурная логика (переходы, циклы, вычисления). Классы языка - еще один способ инкапсуляции ПРОЦЕДУР. Даже свойства - это процедуры (функции если угодно). Однако до сих пор НИЧЕГО не создано для атоматизации следующего уровня, ради которого эти функции и прочая машинная логика объединяются - приложения как логически целостное, непротиворечивое и ЦЕЛЕСООБРАЗНОЕ творенип предназначеное для решения определенного круга задач. Вот когда бужет такое средство, то и соответсвующие ощущения пропадут. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2007, 13:08 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Качественно разрабатывать можно быстро и медленно. Располагая вечностью, можно разрабатывать практически на любом средстве - начиная от машинных кодов – и, притом, очень качественно, исключая повторы, создавая стройную и красивую систему и т.п.. Практически для любого примера «ужасного кода» на любом языке можно привести контр аргументы в виде упоминания о «best practice» или начать говорить о разумном проектировании и неких принципах, которых должен придерживаться разработчик. Главным виновником, как правило, оказывается «человеческий фактор». По сути, решением проблемы качественной разработка приложений является призыв: «Хочешь качественной разработки – разрабатывай качественно. Никто тебе не мешает». Однако, в любом труде хочется (приходится) иметь инструмент, который часть работы сделает за тебя или позволит серьезно уменьшить твои усилия. В некотором приближении разработкой приложений можно считать ввод информации в систему о правилах обработки информации. Разработка программ – это процесс передачи оператором данных в систему о том, как, грубо говоря, должны оборачиваться в ней байты и биты в зависимости от возможных будущих воздействий на неё других людей или физических процессов. Рассматривая процесс программирования в таком «ракурсе», можно вынести основные принципы сокращения усилий программиста: информация, вводимая в систему программистом (во время процесса программирования) должна быть необходимой и достаточной для её функционирования. Иными словами она не должна как минимум повторяться. А во-вторых, не должно происходить её потерь. «Подразумевая» некий автоматизируемый «бизнес-процесс», программист вносит данные в систему («делает программу») на всех её уровнях: 1) Когда проектирует структуру БД 2) Когда проектирует интерфейс 3) Когда создает бизнес логику 4) Когда делает запросы для отчетов и сами формы отчетов При этом, все эти слои объединяются только разумом (осознанным или неосознанным представлением), волей и ответственностью программиста, а также за счет «обратной связи» получаемой от пользователя или тестировщика в случае нелогичного поведения системы. И так - из совершенно независимо функционирующих программных сущностей создается согласованно действующая система. Как известно любому современному программисту, процесс этот долог, нуден и кропотлив. Между тем, каждый из названных слоев повторяет, дублирует и частично перекрывает данные-основания любого другого слоя. В случае создания взаимных противоречий в функционировании слоев мы имеем случай потери информации вследствие её неопределенности, бесполезности и даже вредоносности. Так, например: при проектировании БД уже создается знание о системе, которое может быть использовано при проектировании интерфейса и бизнес логики. Бизнес логика оказывает влияние на, опять же, интерфейс и на систему отчетности и наоборот. И так далее. Все современные Фреймворки, языки программирования категории ООП, а также языки запросов напоминают слепых кротов способных ощупать семантическое пространство приложения на расстоянии коротеньких лапок своих операторов. А лапки эти очень коротки. И только «сильная, уверенная и очень трудолюбивая рука» команды проектировщиков, постановщиков, тестировщиков и программистов способна провести этих «уродцев» сквозь сложноустроенное пространство семантики законченного приложения. Принципиальным решением указанных проблем было бы создание инструмента разработчика, логически согласованно автоматизирующего создание отдельных компонентов системы, на основании общих метаданных, описываемых в терминах автоматизируемой предметной области. Выше я сказал том, что знания, закладываемые в систему, взаимно перекрываются или оказывают взаимное влияние. Это взаимное влияние является системой семантических связей. Для задач различного класса структура и содержание семантических связей отличаются. Мы можем спроектировать инструмент с неким предзаданным семантическим пространством, но он будет способен решать только узкий круг задач и только одним известным шаблонным способом. Мы можем спроектировать инструмент с изменяемым (программируемым) семантическим пространством или, иначе говоря, с изменяемой моделью приложения. Такой инструмент, хотя и ограниченный предлагаемой «моделью моделей» обладал бы уже некой универсальностью и возможностью творить, а не кроить однообразные программки по шаблону. Техническая реализация Если кто-то согласен или кто-то понял сказанное…. Какие мысли есть по технической реализации?? Извиняюсь за многа букаф. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2007, 11:12 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
AlexsalogВсе современные Фреймворки, языки программирования категории ООП, а также языки запросов напоминают слепых кротов способных ощупать семантическое пространство приложения на расстоянии коротеньких лапок своих операторов. А лапки эти очень коротки. И только «сильная, уверенная и очень трудолюбивая рука» команды проектировщиков, постановщиков, тестировщиков и программистов способна провести этих «уродцев» сквозь сложноустроенное пространство семантики законченного приложения. мощно задвинуто. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2007, 12:58 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
мод Пример - Oracle AS, его клиенты - просто терминалы. сколько нового узнаешь, поразительно. Но немного не верно, клиенты ORACLE AS - мобильные телефоны. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2007, 13:02 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
..... Опыта мало, возраста мало; желаний, энтузиазма и амбиций дохе.. много короче... сильно ногами не бейте если что не так... просто мысли вслух... Alexsalog Между тем, каждый из названных слоев повторяет, дублирует и частично перекрывает данные-основания любого другого слоя. Не совсем понял, если не затруднит то в реальных/простых примерах по возможности.. AlexsalogБизнес логика оказывает влияние на, опять же, интерфейс и на систему отчетности и наоборот. И так далее. От этого и никуда не денешься, какое то самообучение способам/методам/принципам воздействия интерфейса и на систему отчетности т.п. будет иметь место. Alexsalog ... но он будет способен решать только узкий круг задач и только одним известным шаблонным способом. Будут работать признанные большинством сообщества методы решения конкретных задач... Типовые примеры многим известны. Как возможное следствие -open source/GPL модули определенного рода/типа. AlexsalogМы можем спроектировать инструмент с изменяемым (программируемым) семантическим пространством или, иначе говоря, с изменяемой моделью приложения. Такой инструмент, хотя и ограниченный предлагаемой «моделью моделей» обладал бы уже некой универсальностью и возможностью творить, а не кроить однообразные программки по шаблону. Какие мысли есть по технической реализации?? Согласен, но программа никогда не сможет сделать того в чем до конца не разобрался разработчик. P.S. я, можно сказать, новичок и на форуме и в разработке КИС, но меня пугает низкая интесивность осбсуждения такой горячей темы как эта. Неужели так мало людей интересуеются грамотным построением КИС? :( ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2007, 22:16 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Уверен, что интересует многих. Вот что делаем мы для снижения энтропии проекта. Растущая команда в настоящий момент составом >10, но <15 человек разной квалификации. Каждый, кто что-то написал/исправил публикует свои заметки в специальном общедоступном месте. Т.о быстрее можно локализовать свежевозникающие проблемы и избегать дублирования кода. Выполнение некоторых вещей проверяется другими коллегами (известный принцип взаимного контроля). Помогает. На достигнутом не останавливаемся, постоянно думаем об улучшении процесса разработки. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2007, 09:21 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
CalmКаждый, кто что-то написал/исправил публикует свои заметки в специальном общедоступном месте. Т.о быстрее можно локализовать свежевозникающие проблемы и избегать дублирования кода. Calm , если кто-то что-то исправил, то это уже не нужно больше исправлять.В этом ведь и смысл отсутствия дублирования кода, хорошо организованной модульной структуры. Код, отвечающий за определенный функционал размещен в строго определенном месте. Внесение изменений в него сразу же отражается везде, где этот код используется. Публиковать заметки нужно только для истории. Или Вы о чем-то другом? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2007, 23:44 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Е.В.С...... Опыта мало, возраста мало; желаний, энтузиазма и амбиций дохе.. много короче... сильно ногами не бейте если что не так... просто мысли вслух... Alexsalog Между тем, каждый из названных слоев повторяет, дублирует и частично перекрывает данные-основания любого другого слоя. Не совсем понял, если не затруднит то в реальных/простых примерах по возможности.. Например вам нужно сделать ввод документов типа счетов. Вы представляете себе что это такое. Вы знаете, что у документа есть шапка и есть спецификация. в шапке такие то поля приотм некоторые являются ссылками на справочники. В спецификации нечто подобное. Это назовем : данные-основания. Теперь, вы делаете интерфейс. Как вы его делаете? Вы непременно будете учитывать в проектировании интерфейса подобноо отношение частей документа. Это окажет влияние на дизайн документа. Далее вы проректируете базу данных. Опять же вы учитываете названные выше ОДНИ И ТЕ ЖЕ исходные данные, но только в применении к таблицам. Далее вы пишете запросы, и опять в секции where вы заново указываете уже набившие оскомину отношения между данными но только в интепретации к SQL языку. А есть еще справочники - и для них цикл разработки целиком повторяется. Все тоже самое повторенное несколько раз на разных уровнях и в разной форме. Это и создает ощущение нудности и постоянный страх ошибки. Потому что например при написани SQL запроса ничего не стоит связать шапку документа с Id контрагента по полю предназначеному для связывания со спецификацией. И получить полную чушь. И СУБД это проглотит и не поперхнется. Это я и назваю "слепотой" инструментов данных современному разработчику. Им (инструментам) своершенно плевать на законченность и логичность конечного приложния. Они на все согласны и им все равно что делать. Такая вот метафора. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2007, 09:27 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
iscrafm Но немного не верно, клиенты ORACLE AS - мобильные телефоны. В т.ч. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2007, 10:05 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
авторВнесение изменений в него сразу же отражается везде, где этот код используется. Во истину так. авторИли Вы о чем-то другом? Не всегда член команды на 100% уверен, что знает ВСЕ места, где юзается код, который он правит. Как говорится, одно лечим, другое калечим. Мы внедряем чужую систему с огромным количеством чужого кода, в которое добавлено некоторое количество своего кода. Иногда внесение изменений в свой код приводит к неожиданным последствиями. В этом случае важно быстро разобраться в чем проблема. А это легче понять, если знать кто и что делал в последние дни. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2007, 13:31 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Calm я понял Вашу ситуацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2007, 13:36 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
CalmНе всегда член команды на 100% уверен, что знает ВСЕ места, где юзается код, который он правит. Как говорится, одно лечим, другое калечим. Если для внесения исправлений в модуль X нужно знать, где и как этот модуль используется - значит, "что-то не в порядке" с общей архитектурой и принципами кодирования системы. CalmВ этом случае важно быстро разобраться в чем проблема. А это легче понять, если знать кто и что делал в последние дни. Это да. Правда, как мне кажется, для этого вполне хватит посмотреть в репозиторий VCS - информация будет более быстрой и более точной. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2007, 13:47 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Alexsalog Да вообщем-то многие делают так, чтобы 1. меньше писать, а больше настраивать 2. побольше работы по настройкам свалить на пользователей. 3. чтобы как можно больше делалось автоматически, без привлечение программистов и пользователей. И подходов много. Понятно, что не имеется в наличии единого "правильного" решения. НО все - BPMS, системы докуменооборота, отчетные системы, системы на базе онтологий и т.п. все нацелены на это. Только в чем вопрос ? Делает ли кто-то сам - делают, думаю многие. Лучше вопрос конкретизировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2007, 13:53 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
CalmУверен, что интересует многих. Мне эта область программирования наиболее интересна. Хотя, думаю, единого алгоритма нет и не должно быть. Просто имхо надо создавать такой код, который можно будет потом подвергнуть изменениям, т.е. рефакторингу. Согласно одной книжке: если система хорошо спроектирована, то значит ее можно подвергнуть рефакторингу... Изначально написать самый оптимальный с минимумом повторений код нереально, если только будет полное ТЗ до мелочей(адакий томик на пару сотен страниц) и оно не будет меняться! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2007, 14:47 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
1.Для быстрой разработки клиент сервеного приложения с большим количествои форм и табличек полагаю нужно использовать отличные от C#.NET инструменты, например J2EE, Oracle Forms, Delphi 2.Во избежание переписывания однофункционального кода разными программистами: а.качественное проектирование б.контроль написанного кода коллегой или руководителем групппы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2007, 21:30 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
DVE1.Для быстрой разработки клиент сервеного приложения с большим количествои форм и табличек полагаю нужно использовать отличные от C#.NET инструменты, например J2EE, Oracle Forms, Delphi 2.Во избежание переписывания однофункционального кода разными программистами: а.качественное проектирование б.контроль написанного кода коллегой или руководителем групппы. Вот тут спор на соседней ветке про то что лучше C# или С++, так вот, мне этот спор (в современных условиях в переносе на современный технологический уровень) напоминает спор жителей двух африканских племен - что вот грошки глиняные делать чисто руками или деревянный скребок использовать? Ко мне давеча подошел наш маркетолог и говорит нужно блокировать возможность продаж через чистему при условии что товар обладает свойтсвом А, клиент свойством Б, а сектор продаж относится к сектору С. Сел рядом и начал смотреть - ну интересно ему как там и что я делать буду. Я начал "шерстить" сохраненные процедуры, справочники и таблицы. Он и спрашивает - а что не т такого места в системе в котором эти условия нужно прописать логическими формулами и все будет работать. Я говорю - нет, нужно произвести изменениия не менее чем в трех процедурах и еще одной программе которая печатает отчет. Потому что понятие продажи включает в себя: 1) Предложение клиенту 2) Прием о обработка заявки 3) Отгрузка 4) Распечатка документов Он офигел (маркетолог). Как я уже писал в предыдущих постах одно и тоже "знание" о процесее применяется в различных частях систмы при её проектировании и воплощении в кодах, в различных её уровнях и на разлдичных этапах её рабочего цикла. Нужен инструмент (язык программирования) позволяющий создавать сущности , которые могут одновременно участвовать в отношениях со многими другими сущностями, которые в свою очередь.. и так далее. Даже функциональные языки в этом смысле говорят только "а" но не говорят "б". Они (эти языки) уходят императивных многословий, сокращая код и увеличивая выразительноть программ путем задания логический условий (отношений) в контексте (в среде) некого испольнителя способного "понимать" эти условия и действовать сообразно им. Но эти "исполнители" даже в функциональных программа, как бы это сказать - МОНОГАМНЫ и холтя сокращают программы избегая императивнях команд, тем не менее не решают проблемы многосвязаннсти (и вслед за ней логической целостности и централицазии внесения изменений) семантичсекого пространства задачи. Пример многосвязанного понятия - ПРОДАЖИ. Очень комплексное и емкое понятие. Однако есть системы (например документооборота) в которых такие емкие обхъекты "живут". Но как правило разновидности объектов заданы жестко и зашиты в кодах более низкого уровня. Объекты нельзя скрещивать и видоизменять выводя новые "сорта". Поэтому данные системы остаются безвестными и применимы только в очень специальных областях применения. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2007, 06:42 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
AlexsalogКо мне давеча подошел наш маркетолог и говорит нужно блокировать возможность продаж через чистему при условии что товар обладает свойтсвом А, клиент свойством Б, а сектор продаж относится к сектору С. Сел рядом и начал смотреть - ну интересно ему как там и что я делать буду. Я начал "шерстить" сохраненные процедуры, справочники и таблицы. Он и спрашивает - а что не т такого места в системе в котором эти условия нужно прописать логическими формулами и все будет работать. Приведенная Вами задача хорошо ложится на BPMS. Но в моем видении BPMS пока не хватает онтологичности. То, что вы дальше пишете , в чистом виде онтологический подход. Но реализация таких систем - это процесс , т.е. он идет. (сами по себе системы проектирования онтологий - они есть и их много и давно, а вот системы реализующие деятельность на базе таких описаний - это реже. Бесспорно, они тоже есть, но их не всеобъемлюще. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2007, 10:16 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
AlexsalogОн и спрашивает - а что не т такого места в системе в котором эти условия нужно прописать логическими формулами и все будет работать. Я говорю - нет, нужно произвести изменениия не менее чем в трех процедурах и еще одной программе которая печатает отчет. Он офигел (маркетолог). я бы, честно говоря, тоже офигел. Все таки какая сложная наука - проектирование систем. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2007, 20:19 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Mainframe_старый Приведенная Вами задача хорошо ложится на BPMS. каким образом? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2007, 20:20 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Mainframe_старый AlexsalogКо мне давеча подошел наш маркетолог и говорит нужно блокировать возможность продаж через чистему при условии что товар обладает свойтсвом А, клиент свойством Б, а сектор продаж относится к сектору С. Сел рядом и начал смотреть - ну интересно ему как там и что я делать буду. Я начал "шерстить" сохраненные процедуры, справочники и таблицы. Он и спрашивает - а что не т такого места в системе в котором эти условия нужно прописать логическими формулами и все будет работать. Приведенная Вами задача хорошо ложится на BPMS. Но в моем видении BPMS пока не хватает онтологичности. То, что вы дальше пишете , в чистом виде онтологический подход. Но реализация таких систем - это процесс , т.е. он идет. (сами по себе системы проектирования онтологий - они есть и их много и давно, а вот системы реализующие деятельность на базе таких описаний - это реже. Бесспорно, они тоже есть, но их не всеобъемлюще. Я находил в инете только касательно баз знаний. Говоря обращзно на базе онтологий реализуются пассивные ХРАНИЛИЩА. Если можно - есть ли пример системы на баще онтологий с "активной жизненой позицией"? Которая что то делает и обрабатывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2007, 06:56 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Alexsalog Я находил в инете только касательно баз знаний. Говоря обращзно на базе онтологий реализуются пассивные ХРАНИЛИЩА. Если можно - есть ли пример системы на баще онтологий с "активной жизненой позицией"? Которая что то делает и обрабатывает. Правильно. Но это день сегодняшний. Хотя и тут не совсем корректно. У IBM есть исследовательская лаборатория в Германии, они там занимаются онтологическим системами, как активными, я где-то в этом форуме давала ссылку на их статью. Мы делаем такую систему для своих задач. Т.е. на описании онтологий выполняются различные процедуры, в том числе для автоматизации некоторых процессов. Ну и естесвенно и для хранилища, и для очтетов. Еще, например, у нас система управления контентом сайта сейчас сделана на такой системе, сейчас делаем документооборот. Внедрили пару подсистем документооборта (хотя там плюс еще управление процессами вставлено), делаем дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2007, 07:28 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
iscrafm Mainframe_старый Приведенная Вами задача хорошо ложится на BPMS. каким образом? :) Ну там же бизнес-правило, если стоиомсть ниже того-то, если у клиент свойство равно тому-то и еще какое-то условие, то ...то просто в орекестровке процесс продажи станет доступен пользователям с одной ролью, а иначе - с другой. В общем-то нормально вписывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2007, 07:32 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2007, 10:46 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Alexsalog Воть Особенно по теме: про пользовательский интерфейс Да как-то тут ранее поднималась как раз эта проблема, про пользовательский интерфйес на оснвое онтологий и про эту работу я упоминала. Сегодня в МИЭТ (Зеленоград) защита кандидадтской по схожей тематике. Я посчита работу сильной (отзыв писала). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2007, 10:53 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
И опять же - если кто понимает о чем речь, то главнейшей проблемой в системах онтологии является не описание онтологий (это все банально и тривиально), а их маппирование друг на друга. По моему это уже на уровне подступов к ИИ. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2007, 04:39 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
AlexsalogИ опять же - если кто понимает о чем речь, то главнейшей проблемой в системах онтологии является не описание онтологий (это все банально и тривиально), а их маппирование друг на друга. По моему это уже на уровне подступов к ИИ. По-моему мнению маппирование не самое интересное. Лично для меня интереснее, что с этим описанием делать дальше. И причем много раз в разных местах. Т.е. как исропльзовать описания для организации - бизнес-процессов, интеграции данных, автмоатизации процедур поддержки качества данных, автоматизации управляющих воздейтсвий, автмоатизации процедур обеспечения безопасности. Причем во всех местах должно использоваться одно и тоже описание. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2007, 12:43 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Mainframe_старый AlexsalogИ опять же - если кто понимает о чем речь, то главнейшей проблемой в системах онтологии является не описание онтологий (это все банально и тривиально), а их маппирование друг на друга. По моему это уже на уровне подступов к ИИ. По-моему мнению маппирование не самое интересное. Лично для меня интереснее, что с этим описанием делать дальше. И причем много раз в разных местах. Т.е. как исропльзовать описания для организации - бизнес-процессов, интеграции данных, автмоатизации процедур поддержки качества данных, автоматизации управляющих воздейтсвий, автмоатизации процедур обеспечения безопасности. Причем во всех местах должно использоваться одно и тоже описание. А я имел ввиду вот что... Мы имеем "центральное" описание, которое достаточно полно отражает бизнес-правилаи правила ввода и обработки данных (в одном флаконе). Теперь это описание надо "перевести" на "язык" другой онтологии специализированной на описание процессов, например "исполнителя и создателя" SQL запросов. Или(и) на язык онтологии "исполнителя и создателя" интерфейсов пользователя. Т.е. задания указанным "исполнителям" подаются на вход тоже в виде онтологий - просто хотя бы для того чтобы обеспечить однородность системы и единство технологии. Однако, как я уже сказал - это могут быть совсем другие онтологии. Другой структуры. И вот тут возникает вопрос мапирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2007, 11:23 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
То есть авторВ разных местах одно и то же описание - НЕТ, не одно и тоже. Источник один, но от него берут начало другие онтологии с дополнительным (и дополняемым) собственным контекстом, но тем не менее жестко связанные с центральным описанием. авторТ.е. как использовать описания для организации - бизнес-процессов, интеграции данных, автоматизации процедур поддержки качества данных, автоматизации управляющих воздействий, автоматизации процедур обеспечения безопасности. - это определяется активностью "исполнителя" - программы, которая собственно и производит активные действия. Исполнитель может быть интерактивным (ждущий воздействия оператора) и активным - выполняющим действия по таймеру или в зависимости от изменения информационного окружения (т.е. вариант ожидания либо временного события, либо опрос состояния рядом живущих объектов). Исполнитель - это как бы заряженный энергией демон, которого переполняют силы, но он не знает ЧТО ему делать и поэтому он работает (будучи запушенным) вхолостую. In idle. Но как только он получает на вход (в виде последовательности байтов) описание задачи - ПОНЯТНОЙ ему (поэтому и онтология для исполнителя должна быть специализированной), он начинает пахать и сеять. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2007, 11:33 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
При этом работа может быть двух типов 1) Конечные действия (выполенние запросов, формирование интрефейса, расчет, сохранение и исзвлечение данных) 2) Трансферт - внесение изменений в активное состояние других онтологий с использованием структуры взаимосвязи. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2007, 11:36 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Alexsalog - НЕТ, не одно и тоже. Источник один, но от него берут начало другие онтологии с дополнительным (и дополняемым) собственным контекстом, но тем не менее жестко связанные с центральным описанием. Боюсь вы не поняли. В том=то и дело, чтобы описание было ОДНО. Все ньансы с разными базами, процессами и т.п. описываются отношениями. Поскольку онтологии допускают произвольные отношения, то можно развернуться по полной программе. Какие хочшеь, так и проектируешь. А на основе этих огтношений - подчеркну - описание одно - делаются разные вещи. Одно описание и много разных вещей. К этому и стремимся - чтобы делать меньше, святое желаение любого программиста. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2007, 11:59 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
AlexsalogПри этом работа может быть двух типов 1) Конечные действия (выполенние запросов, формирование интрефейса, расчет, сохранение и исзвлечение данных) 2) Трансферт - внесение изменений в активное состояние других онтологий с использованием структуры взаимосвязи. Если нравится, то можно классифицировать как угодно, главное, чтобы из классификации что-то следовало. Простое изменение экземпляров понятий на основании описания онтологий и отношений между ними- это обычная вещь. Она давно есть. Я не об этом. Хотя и это полезно, но все же не это самое интересное. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2007, 12:04 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Mainframe_старый Alexsalog - НЕТ, не одно и тоже. Источник один, но от него берут начало другие онтологии с дополнительным (и дополняемым) собственным контекстом, но тем не менее жестко связанные с центральным описанием. Боюсь вы не поняли. В том=то и дело, чтобы описание было ОДНО. Все ньансы с разными базами, процессами и т.п. описываются отношениями. Поскольку онтологии допускают произвольные отношения, то можно развернуться по полной программе. Какие хочшеь, так и проектируешь. А на основе этих огтношений - подчеркну - описание одно - делаются разные вещи. Одно описание и много разных вещей. К этому и стремимся - чтобы делать меньше, святое желаение любого программиста. Кстати да. чтоб понятно одно описание - это не одна онтология. Просто, описав что-то один раз, можно это потоv использовать в разных местах. Например, описали что есть понятие с какими-то атрибутами. Потом определили, что это понятие имеет отношения проекции с источником данных 1 и 2, но с 1 отношения на чтение/запись, а с 2 только на чтение. ЧТо из этого следует ? 1. Что должна быть автоматически выполнена репликация из источника 1 на источник 2 и вся репликация уже определена потому что все описано в описания понятия и отношений проекции дополнительно не нужн описывать. 2. Что при выборки понятия можно обратиться к истчонику 1, но лучше при прочих арвных начать с 2, но если связи нет, то можно и один 3. Что если нужно создать экземпляр, то только к 1 ну и так далее там еще много чего. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2007, 12:27 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
AlexsalogПринципиальным решением указанных проблем было бы создание инструмента разработчика, логически согласованно автоматизирующего создание отдельных компонентов системы, на основании общих метаданных, описываемых в терминах автоматизируемой предметной области. Пожалуйста! Есть 1С: несколькими щелчками мыши описываете метаданные, то есть некоторую сущность - автоматически создаётся таблица в БД, автоматически генерируется UI для просмотра-редактирования-списка. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2007, 15:37 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
CrazyPotatoПожалуйста! Есть 1С: несколькими щелчками мыши описываете метаданные, то есть некоторую сущность - автоматически создаётся таблица в БД Для одной сущности одной таблицы может и не хватить. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2007, 16:01 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
мод CrazyPotatoПожалуйста! Есть 1С: несколькими щелчками мыши описываете метаданные, то есть некоторую сущность - автоматически создаётся таблица в БД Для одной сущности одной таблицы может и не хватить. Ну это не критично. Всё зависит от того, как проектировать систему. В большинстве случаев: сущность = таблица. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2007, 16:14 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
> Например, описали что есть понятие с какими-то атрибутами. Потом определили, что это понятие имеет > отношения проекции с источником данных 1 и 2 Онтология в чистом виде здесь бесполезна. Уже потому, что Вы определяете понятия источников не семантически, а идентифицируете их. Т. е. в данном случае онтологию есть смысл использовать как дополнительную парадигму. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2007, 16:20 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
CrazyPotatoВ большинстве случаев: сущность = таблица. Счет-фактура, физ. лицо, юр.лицо ну и т.д. по списку. В общем случае сущность - иерархия таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2007, 16:41 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
guest_20040621> Онтология в чистом виде здесь бесполезна. Уже потому, что Вы определяете понятия источников не семантически, а идентифицируете их. Т. е. в данном случае онтологию есть смысл использовать как дополнительную парадигму. Итосник данных ведь тоже понятие, имеющее атрибуты - сервер, база, таблица (представление) и атрибуты таблицы (поля). Т.е. отношения проекции устанавливаются между понятиями, а не между понятием и источником данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2007, 05:14 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
> отношения проекции устанавливаются между понятиями, а не между понятием и источником данных Пожалуйста, продемонстрируйте это примером. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2007, 05:37 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
guest_20040621> отношения проекции устанавливаются между понятиями, а не между понятием и источником данных Пожалуйста, продемонстрируйте это примером. Вводим понятие - сервер (с атрибутами - имя сервера, при необходимости свойства ОС, назначение и т.п.) , понятие - база данных с атрибутами название, отношением "размещается на" с понятием сервер. Понятие - источник данных с атрибутами название и свойством - база данных, т.е. отношением "является объектом", а так же множеством свойств - поля. Поле тоже понятие имеет тип, назание (понятное человеку, можно русское и англ. , которое будет принмать значение имени атрибута таблицы, ну и идентификаторы поля в системных таблицах СУБД). Далее описываем, например, понятие студент (ФИО, паспорт, отношение с образовательной программой и т.п.). Но студент вводится в основном вузе - в базу основного вуза и в филиалах - в базу филиала. При этом студенты филиала должны быть в базе головного вуза, но там не могут редактироваться. Определяем понятие студент головного вуза, как производное от студента. Условие наследования, что некая характеристика образовательной программы с которой студент связан однозанчно идентифицирует основной вуз. Опреедляем понятие студент филиала как производный от понятия студента, но характеристика образовательной программы определяет только программы филиала. Определяем отношения проекции между понятием студент и источником данных, т.е. определяем какой атрибут понятия студент какому атрибуту экземпляра понятия источник данных соответствует. При этом отношения проекции тоже могут иметь производные - проекция на чтения -запись и на запись. Далее определяем, что между источником соотвествующим головному вузу определены отношения проекции на чтение с понятием студент и отношения на чтение/запись с понятием студент головного вуза. Между понятием студент филиала определены отношения проекции на чтение/запись с источником филиала. Далее вводим правило : если есть отношения проекции ан чтение запись в производном понятии и отношения проекции на чтение в базовом с арзными источниками данных, то должна быть организована репликация из первого источника во второй. Как я понимаю, вопрос Ваш касался того, что отношения проекции определяются с произвольным понятием и экземпляром понятия источник данных? Вы думаете это не вписывается в онтологическую парадигму? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2007, 08:19 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
> вопрос Ваш касался того, что отношения проекции определяются с произвольным понятием и > экземпляром понятия источник данных? Да. И Ваш пример это иллюстрирует. ;) > Вы думаете это не вписывается в онтологическую парадигму? И идентификатор экземпляра сущности - суррогатный. Имя поля, которое Вы назвали понятным человеку, таковым быть вовсе не обязано. Штатных средств преобразования метаданных СУБД в онтомодель - нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2007, 13:31 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
guest_20040621 Да. И Ваш пример это иллюстрирует. ;) Согласна. guest_20040621 > Вы думаете это не вписывается в онтологическую парадигму? И идентификатор экземпляра сущности - суррогатный. Имя поля, которое Вы назвали понятным человеку, таковым быть вовсе не обязано. Штатных средств преобразования метаданных СУБД в онтомодель - нет. Тоже согласна. Но кто мешает самим сделать? (только время и деньги). Собственно мы сделали для одной СУБД для некоторого ограниченного подмножества объектов. Есть два способа хранить экземпляры. Можно преобразовав метаданные СУБД - и потом корректировать в ручном режиме - вводя понятность пользователям - русские слова, прописывая врунчую отношения, которые не построены, потому что они были "логическими", а ен физическими в СУБД. Есть второй способ - в начале описать на уровне понятным предметникам и это описание транслируется - Не в таблицы - в одной таблице хранится и метаописания и собственно экземпляры (по горизонтали). Мы пока делаем и так и так (ну если честно, пока нет ни в чем твердной уверенности). При необходимости репликации делаются в обе стороны. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2007, 14:26 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
> Но кто мешает самим сделать? Как Вы правильно заметили, никто не мешает. Но я бы все-таки использовал онтологию как дополнительную парадигму, а не основную. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2007, 14:40 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
guest_20040621> Но кто мешает самим сделать? Как Вы правильно заметили, никто не мешает. Но я бы все-таки использовал онтологию как дополнительную парадигму, а не основную. А какую бы Вы использовали как основную ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2007, 02:57 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Mainframe_старый guest_20040621> Но кто мешает самим сделать? Как Вы правильно заметили, никто не мешает. Но я бы все-таки использовал онтологию как дополнительную парадигму, а не основную. А какую бы Вы использовали как основную ? Я что то не пойму в чем ограничения онтологической модели. Онтология это конечное множество: O(A,F,L) A - атрибуты F-функции отношений L - сами отношения (связи) "жонглируя" структурой и свойствами атрибутов, многообразием фукций отношений (их идентификаторами, коих можно ввоодить сколько душа пожелает) и структурой отношений можно строить весьма разнообразные системы. Онтология - это всего лишь способ описания - декларативый вместо императивного. Фишка в том что онтология должна "жить" в среде исполнителя (программы) , которая "понимает" инеднификаторы функций отношений, знает свою собсвтенную цель (имеет контекст исполнителя - цель исполнителя) и знает что делать с атрибутами и их связями. Функциональное программировани, семантическое программирование, системы настроек, системы фильтров на прокси-серверах, правила фильтрации спама, бизнес правила с системах БПМ, свойства (property) в современны языках прогаммирования, SQL языки наконец - все это родственно и суть - замена императивного на декларативное. Но любое декларативное из приведенного списка примеров всегда живет в среде активного исполнителя который ЗНАЕТ что с этим делать. Приведенный ниже рисунок иллюстрирует взаимоотношение некой системы онтологии и нескольхих исполнителей: ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2007, 07:12 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
... однако, в таком случае мы долждны делать (программировать) исполнителей, способных понимать исходное онтологическое описание (одно и тоже для все). это не есть хорошо, потому что усложняет жизнь разработчика исполнителя (подразумеватся система расширяемая и состоящая их карпичиков) и после того как будут созаны несколько распространненых исполнителей и они пойдут в ход - этот факт тут же сковывает разработчика исходной онтологии который вынужден сохранять набор её функций и атрибутов таким как это было задано при первоначальной разработки. А иначе, - после расзирения системы первичной (центральной) онтологии уже созданные исполнители перестанут понимать её. Для решения этой проблемы и пригодился бы семантический перевод (маппирование) центральной онтологии на онтологии максимально своместимые с конекретным исполнителем. Это как главны инженер говорит на стройке с каждым исполнителем на его языке (начиная от прорада и заканчивая работягой - знаете - каждому свое.) Иллюстрация: ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2007, 07:19 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
И наконец, классификация... Я не являюсь специалистом по онтологиям. Поэтому, предлагая следующую классификацию онтологических отношений, предполагаю что: 1) Описываю некое подмножество понятий уже описанных в литературе 2) Говорю о вещах, не имеющих отношение к онтологиям 3) Предлагаю к рассмотрению нечто практически полезное и новое Итак: Виды онтологических отношений: 1) Зависимость – элементарное онтологическое отношения двух атрибутов по заданной функции отношения. 2) Трансферт – влияние результатов функций отношения одной онтологической подсистемы на атрибуты (линейное влияние) и на функции (нелинейное влияние) другой онтологической подсистемы. 3) Наследование – заимствование части связей, функций отношений и атрибутов одной онтологической подсистемы от другой 4) Иерархия – выбор результатов отношений внутри одной подсистемы или в различных подсистемах в зависимости от оценки результатов этих отношений по иерархической шкале. 5) Последовательность – упорядочение вычисления онтологий во времени или в зависимости от состояния завершенности вычисления в одной системе или в различных системах. 6) Инкапсуляция – именованное определение границ системы атрибутов и их отношений. Интересно мнение специалистов и сообщества . ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2007, 07:20 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Ну и раздулся топик. Давно я сюда не заглядывал. Ясно одно. В основе качественного создания любой системы, будь то ERP/CRM лежит основательное (детальное) проектирование от и до. т.е. отработка всех деталей ее "жизнедеятельности". хотя часто слышу что мол все уже создано и самописные системы никому не нужны, когда есть 1C, Navision/Axapta и SAP R/3 наконец, все равно из "консервантов" и "пакетов быстрого приготовления" у повара никогда не получится щедевр кулинарного искусства. ручная работа ценилась всегда и везде. может не к месту будет сказано. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2007, 11:38 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
> А какую бы Вы использовали как основную ? Нет однозначного ответа на этот вопрос. От MOF до "ручного изготовления". ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2007, 19:39 |
|
Качественная разработка приложений
|
|||
---|---|---|---|
#18+
Alexsalog... Такой инструмент, хотя и ограниченный предлагаемой «моделью моделей» обладал бы уже некой универсальностью и возможностью творить, а не кроить однообразные программки по шаблону. Техническая реализация Если кто-то согласен или кто-то понял сказанное…. Какие мысли есть по технической реализации?? ... Такие вещи замечательно реализуются (и реализованы) на динамических языках программирования. См. `Принцип DRY`, Django как прекрасный пример реализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2007, 00:20 |
|
|
start [/forum/topic.php?all=1&fid=33&tid=1548911]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
102ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 198ms |
0 / 0 |