Análise Orientada a Objetos

Olá pessoal,

Estava conversando com um colega hoje aqui no trabalho sobre metodologias, principalmente RUP e XP. Do ponto de vista dele, ninguém utiliza 100% nenhuma dessas duas metodoligias pois nenhuma empresa no mundo utiliza análise 100% orientada o objetos, sendo o DER, por exemplo, ainda usado por todas as grandes empresas.

Vcs conhecem alguma empresa no mundo que faça a análise exclusivamente orientada a objetos? Conhecem alguma empresa que não usa DER?

Na opinão de vcs, o modelo orientado a objetos é auto-suficiente? Vcs arriscariam fazer um projeto sem pensar no bendito Diagrama-Entidade_Relacionamento?

Abraços!

Bom…

XP é uma disciplina que pode ser aplicada não somente ao paradigma OO. (corrijam-me se eu estiver errado) então o fato de um sistema não utilizar 100% de análise OO não implica em nao utilizar XP completamente.

Acontece que as vezes é difícil implementar TODAS as regras e as empresas aplicam o que mais ou melhor foi absorvido pelos seus funcionários.

Sistemas de informação, geralmente tem seus dados persistidos em um SGBD com um schema geralmente já modelado, nesse caso é dificil nao ter um MER. É como se ele já existisse

Se voce modelar um sistema OO (sem preocupações com tabelas) e usar um banco de objetos ou mesmo um mapeador, provavelmente você não vai se preocupar com MER (modelo de entidades e relacionamentos).

Na minha opinião análise OO é auto-suficiente, sem sombra de dúvidas mas Análise estruturada ainda tem seu valor e espaço.

 XP é uma disciplina que pode ser aplicada não somente ao paradigma OO. (corrijam-me se eu estiver errado) então o fato de um sistema não utilizar 100% de análise OO não implica em nao utilizar XP completamente.

É altamente recomendado esta combinação. :wink:

A verdadeira questão é: Alguém conhece alguma empresa que tenha tido a “coragem” de fazer uma análise 100% orientada a objetos?

Robert, acredito que seja dificil ter.
Exemplo, trabalho numa empresa que se vende servicos e nao objetos.
Como funciona isso? (exemplo no modo Grosso do assunto)
Os ActionForms sao sempre iguais ao Form HTML.
Os ActionForms sao Identicos a instrucao SQL.
Os JavaBeans tem as mesmas propriedades do SQL e do Form HTML, Logo igual ao ActionForms.

JavaBean = ActionForm = Instrucao SQL = Form HTML

Esse exemplo foi meio forcado, pois o javabean na verdade so tem as propriedades da Instrucao SQL.
Pois no ActionForm, temos algums propriedades que so funcionam naquele objeto e sao passados para os JavaBeans so o que eles precisam.

[quote=felipec]XP é uma disciplina que pode ser aplicada não somente ao paradigma OO. (corrijam-me se eu estiver errado) então o fato de um sistema não utilizar 100% de análise OO não implica em nao utilizar XP completamente.
[/quote]

Tá perfeito. As práticas de XP não dizem que você deve usar OO ou qualquer outro paradigma de programação. Assim sendo, é possível usar 100% de XP sim.

[quote=ranophoenix] XP é uma disciplina que pode ser aplicada não somente ao paradigma OO. (corrijam-me se eu estiver errado) então o fato de um sistema não utilizar 100% de análise OO não implica em nao utilizar XP completamente.

É altamente recomendado esta combinação. :wink:

A verdadeira questão é: Alguém conhece alguma empresa que tenha tido a “coragem” de fazer uma análise 100% orientada a objetos?

[/quote]

Não é uma questão de coragem e sim requisito.

Existem softwares que não são sistemas de informação que simplesmente não precisam de bancos de dados, muito menos de MER.

ex: softwares multimídia

Acho que formulei muito mal a pergunta…

A questão não é dar ou não dar para usar o XP ou RUP. A questão é se existe alguma empresa que use 100% de OO com metodologia ou não.

É comum ouvirmos dizer que empresa A trabalha 100% OO mas quando vc vai ver a empresa de perto, vê um DER enorme na parede, ou na mesa do desenvolvedor.

As pessoas olham para o DER já conseguem enxergar joins, constraints, sqls complexos, ou seja, olham para um DER e conseguem saber, de forma quase imediata, como extrair as informações desejadas através do modelo.

E se fosse um modelo OO?

Por que as pessoas não conseguem confiar ainda neste paradigma para desenhar os seus modelos? Por que ainda é tão difícil enxergar o contexto como uma interação entre objetos e não como relacionamentos entre tabelas?

Querem ver como conceitos relacionais estão impregnados em nossa mente? Façam um modelo conceitual sem pensar em constraints, chaves estrangeiras, chaves primárias, etc.

Sabemos que o grande sucesso do modelo relacional está na sua fundamentação matemática que não possui uma fundamentação equivalente para OO.

Prova disso é que grandes SGBD praticamente desistiram de implementarem OO e no máximo estão fornecendo extensões para ORM.

Quem se arrisca a usar o DB4o para desenvolver uma aplicação crítica?

A questão é essa.

Espero ter sido mais claro agora. :wink:

Existem softwares que não são sistemas de informação que simplesmente não precisam de bancos de dados, muito menos de MER.

Portanto fogem do escopo desta discussão. :wink:

[quote=ranophoenix] Existem softwares que não são sistemas de informação que simplesmente não precisam de bancos de dados, muito menos de MER.

Portanto fogem do escopo desta discussão. :wink:
[/quote]

Por que :?:

Um jogo não é um sistema e pode ser modelado em OO. É claro que existem empresas que nunca fizeram analise estruturada na vida… É possível

Modelagem OO é uma realidade, não duvide disso.

Implementações de bancos OO que ainda não são maduras o suficiente ou pelo menos não eram ha 5 anos atrás.

A questão é que o mercado, num geral, desenvolve sistemas de informação então fica realmente difícil de descartar tabelas, chaves etc… essa forma “relacional” de se pensar

O nosso projeto, aqui na Siemens, usa muito pouco bancos de dados.

A maior parte da informação está armazenada em scripts, que são usados por testadores. Cada script diz ao sistema como a central deve ser testada, e o sistema faz o teste em si.

É uma forma totalmente diferente de se trabalhar com dados, pois os scripts não deixam de ser dados, e bastante importantes.

A metodologia XP funciona muito bem nesse caso e a parte de banco de dados do sistema é simples o suficiente para dispensar DER ou gerar maiores transtorno de modelagem.

Na verdade, o BD constitui um módulo do sistema para totalização de resultados e classificação dos scripts.

Aliás, muitos sistemas aqui não usam qualquer tipo de BD. Um simulador de telefone, por exemplo, não precisa de banco de dados. Uma aplicação para testes na linha de montagem, também não.

Alguns algoritmos de centrais telefônicas e aparelhos telefônicos estão sendo produzidos recentemente com C++ em firmware. E isso tendo o RUP como metodologia. Novamente, tecnologia 100% Orientada a Objetos, e praticamente sem nenhum tipo de banco de dados envolvido (dados como agendas telefônicas e coisas do tipo podem muito bem ser serializados de maneira praticamente direta).

É sempre aquela regra: cuidado com generalizações, como essa frase de seu colega. Esses sistemas, 100% OO e sem BDs, são maioria aqui nesse setor, que por sinal é de uma empresa enorme.

Também não entendi pq restringir o escopo da discussão à Sistemas de Informação. Aliás, esse é o pior caso, pois a tecnologia de banco de dados é extremamente madura, rápida e confiável. Além de sistemas desse tipo normalmente exigirem interoperabilidade com um sistema legado. Além disso, ferramentas de apoio a decisão e softwares a mão do executivo (tal como o excel) trabalham bem com bancos de dados.

E realmente, não imagino a LucasArts ou alguma outra empresa de jogos usando muita tecnologia de banco de dados. E não dá para desmerecer os jogos. São sistemas grandes, complexos, de alta performance e movimentam milhões na indústria de software…

O que podemos encontrar nessas empresas, entretanto, é o uso de tecnologia estruturada em módulos do sistema. Tudo por causa de performance. Numa classe que roda milhares de vezes por segundo, fazendo operações matemáticas complexas, as vezes até a ordem dos parâmetros pode interferir na performance.

[quote=felipec][quote=ranophoenix] Existem softwares que não são sistemas de informação que simplesmente não precisam de bancos de dados, muito menos de MER.

Portanto fogem do escopo desta discussão. :wink:
[/quote]

Porque :?:

Um jogo não é um sistema e pode ser modelado em OO. É claro que existem empresas que nunca fizeram analise estruturada na vida… É possível

Modelagem OO é uma realidade, não duvide disso.

Implementações de bancos OO que ainda não são maduras o suficiente ou pelo menos não eram ha 5 anos atrás.

A questão é que o mercado, num geral, desenvolve sistemas de informação então fica realmente difícil de descartar tabelas, chaves etc… essa forma “relacional” de se pensar

[/quote]

Que a modelagem OO é uma realidade isso é inquestionável. O que é questionável é até que ponto essa realidade está empregnada nas empresas!

Creio que essa combinação entre modelo OO e modelo E-R terá que existir enquanto o banco de dados relacional existir, infelizmente!
Na minha opinião, seria muito melhor se tivessemos mais bancos de dados OO como o caso do Cache. Já utilizei o Cache em alguns projetos e o desenvolvimento fica muito simplificado pois vc persiste os próprios objetos.

Diante do assunto em questão, eu particularmente não conheço alguma empresa que faça uso de 100% do modelo orientado a objetos, a cultura do modelo relacional está meio que “sedimentada” na mente dos analistas de sistemas como uma forma de traduzir o mundo real para o mundo da informática, e isto se deve, como mencionou nosso amigo Robert, a esta prática está associada à uma fundamentação matemática, a qual é fácil de ser assimilada e isto não acontece com a modelagem orientada a objetos.

No entanto, se forem desenvolvidos estudos mais contudentes sobre a modelagem O.O. e com isso disseminando-a, principalmente entre a área acadêmica e comercial; paulatinamente este paradigma será adotado pelas organizações, daí sim, dará início a uma cultura do paradigma da Modelagem O.O.

Não sei se viria ao caso, mas esta situação poderia se associar ao que aconteceu com o DW (DataWareHouse). Quando o assunto começou a ser abordado pelas pessoas da área de informática junto as pessoas da área de marketing, administração, estratégia de negócios, etc… Enfim, algumas empresas tentaram implementá-lo em suas organizações, no entanto, a nova técnica por ainda não ter sido estudada, analisada e testada o bastante, o resultado não foi o esperado, e o que aconteceu??? Algumas destas empresas deixaram de usar o DW e ainda falaram mal…muito mal… mas a tecnologia sumiu??? Não, fizeram uma camuflagem na mesma e criaram o BI (Bussiness Inteligence) a qual possui a mesma filosofia, a diferença está que agora estão com os objetivos mais sedimentados, METODOLOGIAS mais elaboradas e as pessoas responsáveis por tentar “vender” a idéia estão mais preparadas e o BI está ganhando espaços nas empresas, o mesmo poderá acontecer com a modelagem O.O., claro sem alterar a sua essência, apenas investindo em mais estudos.

Agora voltando ao foco da nossa discursão… eu não arriscaria, ainda, investir totalmente no modelo O.O. e deixar de lado o MER, pois ainda falta uma metodologia de estudo, implementação e implantação (isto lembra alguma coisa, né??? O modelo em cascata do MER… :lol: ) mais solidificada para abandonar o que já estamos acostumados a trabalhar, mas lembrando que precisamos sempre está abertos às mudanças, sem no entanto nos apegar a “modismos”, nem esquecendo também de questionar se o que é novo, é bom para minha empresa???

Bom, acho que é isso…

Abraços,

Clênia

[quote=ranophoenix][quote=felipec][quote=ranophoenix] Existem softwares que não são sistemas de informação que simplesmente não precisam de bancos de dados, muito menos de MER.

Portanto fogem do escopo desta discussão. :wink:
[/quote]

Porque :?:

Um jogo não é um sistema e pode ser modelado em OO. É claro que existem empresas que nunca fizeram analise estruturada na vida… É possível

Modelagem OO é uma realidade, não duvide disso.

Implementações de bancos OO que ainda não são maduras o suficiente ou pelo menos não eram ha 5 anos atrás.

A questão é que o mercado, num geral, desenvolve sistemas de informação então fica realmente difícil de descartar tabelas, chaves etc… essa forma “relacional” de se pensar

[/quote]

Que a modelagem OO é uma realidade isso é inquestionável. O que é questionável é até que ponto essa realidade está empregnada nas empresas!

[/quote]

Isso vai de acordo com o tipo de software produzido…

Aqui no Brasil é difícil realmente ver uma empresa usando somente OO justamente porque na maioria dos casos essas empresas produzem SI.

Eu mesmo já me fiz a pergunta que você está fazendo mas no mercado a grande maioria dos projetos vai mesclar análise estruturada com OO

:smiley:

Também não entendi pq restringir o escopo da discussão à Sistemas de Informação. Aliás, esse é o pior caso, pois a tecnologia de banco de dados é extremamente madura, rápida e confiável. Além de exigir muita interoperabilidade com o sistema legado.

E realmente, não imagino a LucasArts ou alguma outra empresa de jogos usando muita tecnologia de banco de dados. E não dá para desmerecer os jogos. São sistemas grandes, complexos, de alta performance e movimentam milhões na indústria de software…

O que podemos encontrar nessas empresas, entretanto, é o uso de tecnologia estruturada em módulos do sistema. Tudo por causa de performance. Numa classe que roda milhares de vezes por segundo, fazendo operações matemáticas complexas, as vezes até a ordem dos parâmetros pode interferir na performance.[/quote]

Não é uma questão de pré-conceito mas sim de conceito. Por ser uma questão muito complexa, quanto mais restrito for o escopo melhor podemos aproveitar o tópico. :wink:

Cada sistema tem suas particularidades, se deixarmos a discussão muito aberta acabaremos em uma discussão infinita, com cada um falando de um mundo “diferente”. Centralizando em sistemas de informação podemos manter um foco melhor. Mas nada impede, caso seja a vontade de vcs, abrirmos o escopo da discussão. Este espaço é totalmente democrático e estamos aqui é para trocarmos experiências e conhecimentos, portanto fiquem à vontade para manifestarem livremente a opinião de vcs. :wink:

 Isso vai de acordo com o tipo de software produzido..

Aqui no Brasil é difícil realmente ver uma empresa usando somente OO justamente porque na maioria dos casos essas empresas produzem SI.

Eu mesmo já me fiz a pergunta que você está fazendo mas no mercado a grande maioria dos projetos vai mesclar análise estruturada com OO 

É exatamente este o ponto! :wink:

Análise OO não impede nem limita o uso de DER ou qualquer outra coisa para documentar ou especificar banco de dados. O que não é recomendado ser feito é utilizar o DER como base para criar classes porque agindod esta forma primeiro se criam as entidades relacionais, depois os objetos.

Ainda assim, para bases legadas ou empresas que ignoram esta recomendação, análise OO pode ser utilizada mapeando os conceitos apra objetos. Eric Evans no Domain Driven Design tem bons capítulos sobre mapas de contexto que fazem este tipo de coisa.

Acredito que esta empresa precise urgentemente de consultoria especializada em desenvolvimento OO.

[quote=clenia]
No entanto, se forem desenvolvidos estudos mais contudentes sobre a modelagem O.O. e com isso disseminando-a, principalmente entre a área acadêmica e comercial; paulatinamente este paradigma será adotado pelas organizações, daí sim, dará início a uma cultura do paradigma da Modelagem O.O.[/quote]

Isso é feito há mais de trinta anos. Falta é vontade de aprender uma nova maneira de pensar.

Como foi dit anteriormente aqui, depende muito do tipo de sistema a ser feito. Já trabalhei em sistemas que não rpecisavam de conexxão com banco de dados. Resultado é que a modelagem foi feita somente utilizando OO.

Agora a pergunta: OO é usada 100%? Creio que sim! 100% OO + uns 10% ER…

Não creio que as empresas não estão usando OO. Vejo muitos projetistas usarem ER só na hora de fazer o ORM.