Escolar Documentos
Profissional Documentos
Cultura Documentos
Algumas questões...
Porque razão é o software inerentemente complexo?
Que técnicas são usadas para lidar com a complexidade?
O que é a Decomposição?
O que é e para que serve a Abstracção?
O que entende por Hierarquia?
O que é um Modelo?
Qual é a importância dos Modelos?
Porquê a Orientação por Objectos (OO)?
O que é um Objecto?
Quais são os princípios fundamentais da OO?
O que é e para que serve o Encapsulamento?
O que é o Polimorfismo?
A Evolução do Software
Apesar da evolução verificada em diversos domínios...
• Linguagens: Assembler Æ Procedimentais Æ Estruturadas Æ OO
• Ferramentas: 3GL Æ 4GL Æ CASE
• Modelização: Estruturada(E-A), DFD, OMT, UML
Mas há esperança...
Análise
Análise
Projecto
Projecto
Qualidade do Software
Como definir (caracterizar) um software de qualidade?
• correcto • reutilizável
• fácil de usar • verificável
• robusto • compatível
• eficiente • modular (interno)
• expansível • compreensível (interno)
• portável
“The challenge over the next 20 years will not be speed or cost or
performance; it will be a question of complexity.”
Bill Raduchel, Chief Strategy Officer, Sun Microsystems
Técnicas de Decomposição
• Decomposição algorítmica
• Decomposição orientada por objectos
Decomposição (cont.)
Decomposição orientada aos objectos
Técnica usada a partir de meados dos anos 90
Modelização
“A modelização é uma técnica de engenharia aceite e comprovada.
Fazem-se modelos de casas e prédios para ajudar a imaginar o
impacto final na paisagem, definem-se modelos matemáticos para nos
ajudar a prever catástrofes naturais, etc.” Grady Booch
Uma definição...
• um modelo é uma abstracção de algo real, ou não, que tem o propósito de
promover a sua compreensão antes de se iniciar a sua construção ou
modificação
O que se modeliza?
• o objecto da modelização num projecto de desenvolvimento de software
são os requisitos dos produtos que resultarão desse mesmo projecto, ou
seja, a descrição do problema
Objectos
“Um objecto é algo que possui estado, comportamento e
identidade, e pode ser definido de uma forma bastante precisa.”
Desenvolvimento OO
Um sistema desenvolvido por meio de uma metodologia OO, é
composto por um conjunto de objectos que interactuam e colaboram
uns com os outros ao longo do tempo
• a funcionalidade e comportamento global de sistema, é o resultado destas
interacções
Design OO
• Método de design baseado no processo de decomposição OO e utilizando
uma notação própria para a construção de modelos do sistema a
projectar
Programação OO
• Método de implementação através do qual os programas são
organizados num conjunto de objectos que interagem uns com os outros
Princípios OO fundamentais
Abstracção
Encapsulamento
Modularidade
Hierarquia
Tipos e Polimorfismo
Concorrência
Persistência
Exemplo de encapsulamento:
• No desenvolvimento de uma aplicação baseada numa Base de Dados
relacional, constróem-se programas que não dependem da representação
física dos dados, mas sim do esquema que especifica a perspectiva lógica
dos dados.
Referências
Estes apontamentos foram baseados em:
“UML – Unified Modeling Language”, Curso em Tecnologia de
Objectos, FEUP, Novembro 2000
Ademar Aguiar, Gabriel David, João Pascoal Faria
“A complexidade do software”, César Toscano, ISPGaya, Novembro
1998
“Desenvolvimento OO – Construção de modelos para a análise e
design de sistemas”, César Toscano, ISPGaya, Novembro 1998
“Software Architecture and the UML”
Grady Booch, Rational Software
“Porquê modelizar?”, José Maria Bonnet, ISPGaya, Outubro de 1999