Programação Orientada a Obejto
Unidade I – Gerenciando a Complexidade
I.1. A complexidade inerente dos sistemas de software
I.2. A estrutura de sistemas complexos
I.3. Trazendo ordem ao caos
I.3.1. Decomposição
I.3.2. Hierarquia
I.3.3. Abstração
I.4. Sobre o projeto de sistemas complexos
2
© Renato Mesquita,
Ana Liddy Magalhães e
Raquel Mini
A complexidade de sistemas de software
Alguns sistemas de software não são complexos ...
Exemplos
Aplicativos que são especificados, construídos, criados, mantidos e utilizados por uma mesma pessoa
Sistemas que têm um propósito limitado e um ciclo de vida curto
Neste caso, podemos simplesmente refazê-lo, se necessário ...
Jogar o sistema fora e construir outro ao invés de tentar reutilizá-lo, consertá-lo ou estender sua funcionalidade
3
© Renato Mesquita,
Ana Liddy Magalhães e
Raquel Mini
A complexidade de sistemas de software (cont.)
Os sistemas de software que nos interessam são os complexos ...
Software “industrial”
Possui um ciclo de vida longo para o produto
É extremamente difícil para um único indivíduo entender todos os detalhes de seu projeto
A complexidade do sistema ultrapassa a capacidade intelectual humana!
Podemos gerenciar sua complexidade, mas não fazer com que ela desapareça!!
O gerenciamento deve ser feito por
“mortais” e não gênios ...
4
© Renato Mesquita,
Ana Liddy Magalhães e
Raquel Mini
Por quê os sistemas de software são complexos?
O domínio do problema é complexo
Quem desenvolve não é quem conhece o domínio de aplicação
Dificuldade de capturar os requisitos do sistema
Os requisitos podem não ser estáveis
É necessário pensar na evolução do sistema
programar para o futuro!
5
© Renato Mesquita,
Ana Liddy Magalhães e
Raquel Mini
6
© Renato Mesquita,
Ana Liddy Magalhães e
Raquel Mini
É difícil gerenciar o processo de desenvolvimento