Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Processos de Software, Modelos e UML – Uma Visão Geral Franklin Ramalho Universidade Federal de Campina Grande - UFCG SI2-UFCG 2 Agenda - Visão Geral da Disciplina - Por que estudar SI2? - O que estudar em SI2? - Quando aplicar o que aprendeu em SI2? - Página da Disciplina - Aulas - Horário de Atendimento - Forma de Avaliação SI2-UFCG 3 Introdução • Desenvolvimento de Software • Software com Qualidade – Atenda aos requisitos do cliente – No prazo determinado – De forma eficiente • Como Garantir a qualidade do software? • Como desenvolver o software? SI2-UFCG 4 Introdução • Um processo de software é um conjunto de atividades que juntas levam à produção de um produto de software • Tarefa complexa • Baseado em atividades • Decisões e julgamentos • Auxílio de ferramentas CASE – Limitado! SI2-UFCG 5 Processo de Software Quem? O quê? Como? Quando? SI2-UFCG 6 Processo de Software • Não existe processo ideal • Personalização de processos • Todos processos de software devem possuir algumas atividades em comum: – Especificação – Projeto – Implementação – Validação – Evolução 2 SI2-UFCG 7 Introdução • Contínua melhora nos processos de desenvolvimento de software é requerida • Padronização tem papel fundamental! SI2-UFCG 8 Modelos de Processo de Software • Um modelo de processo (paradigma de processo) de software é uma representação abstrata do processo de software • Diferentes perspectivas • Parciais • Genéricos – Funcionam como frameworks de processos de software SI2-UFCG 9 Modelos de Processos de Software • Modelo cascata – Representa as atividades de desenvolvimento em diferentes fases do processo: requisitos, especificação, projeto, implementação e testes • Desenvolvimento Evolutivo – Intercala as atividades de especificação, desenvolvimento e validação • Eng. De Software baseada em componentes – Baseada no uso de componentes reusáveis e na sua integração SI2-UFCG 10 Modelos de Processos de Software • Podem ser integrados – Sistemas complexos – Ex: RUP • Adaptações – Ex: Cleanroom process, método B (base formal) – Domínios específicos SI2-UFCG 11 Processos Iterativos • Mudanças são inevitáveis – Em todas as fases • Desenvolvimento Iterativo é fundamental! • Modelos de processo: – Entrega incremental: Especificação, projeto e implementação quebrados em unidades menores (incrementos) desenvolvidos de acordo com prioridades – Desenvolvimento em espiral SI2-UFCG 12 Atividades do Processo • Processos são baseados em atividades • Atividades: – Especificação – Desenvolvimento – Validação – Evolução • São organizadas de acordo com: – Tipo de software sendo desenvolvido – Estrutura organizacional – Pessoas – MODELO DE SOFTWARE adotado – Cliente 3 SI2-UFCG 13 Especificação de Software • Entender e definir quais serviços devem ser providos pelo software e identificar quais são as restrições de operação e desenvolvimento do mesmo • Documentos precisam ser gerados de forma precisa especificando os requisitos e contratos que o software deve atender • Especificações acompanham o projeto de software também! – Mais detalhado SI2-UFCG 14 Projeto e Implementação de Software • Implementação: atividades com foco na conversão da especificação em um sistema executável – Envolve: Projeto e programação – Pode envolver também: refinamentos (modelo evolutivo) • O projeto de software é a descrição da estrutura do software a ser implementado – Arquitetura (mais detalhada) – Especificação abstrata – Projeto de Estrutura de Dados – Projeto de Interfaces – Projeto de Componentes – Projeto de Algoritmos – Diferentes níveis de abstração SI2-UFCG 15 Validação e Evolução de Software • V & V tem o objetivo de mostrar que o software atende às suas especificações e às necessidades do cliente – Testes de unidade – Testes de integração – Testes de aceitação • Evolução de software – Ligado à manutenção de software SI2-UFCG 16 Atividades do processo de software • Especificação • Projeto • Implementação • Validação • Evolução - Como permitir a comunicação entre equipes na mesma linguagem? - Como representar seus artefatos? - É preciso entrar em todos os níveis de detalhes? MODELOS Especificar, construir, documentar e visualizar artefatos de software ao longo de todas as atividades do processo de software e em diferentes níveis de detalhamento SI2-UFCG 17 Vida útil extensa Equipe grande e rotativa Múltiplas versões Tarefas distribuídas Sistemas Complexos Modelos 17 Quando os modelos se tornam mais importante ainda! SI2-UFCG 18 • Desenvolvimento Dirigido por Modelos (DDM) – MDD (Model-Driven Development) – MDE (Model-Driven Engineering) Técnica de eng. de software consistindo da aplicação de modelos e suas tecnologias no intuito de aumentar o nível de abstração sobre o qual desenvolvedores criam e evoluem software, com o objetivo de simplificar e formalizar as várias atividades e tarefas envolvidas no ciclo de vida de um software. 18 Desenvolvimento Dirigido por Modelos 4 SI2-UFCG 19 Modelos SI2-UFCG 20 Notação para modelos • Expressiva • Simples • Precisa • Visual • Textual • Extensível • Padrão SI2-UFCG 21 SI2-UFCG 22 • UML é uma linguagem para especificação, visualização, construção e documentação de artefatos de sistemas de software. • Amplamente utilizada pelo mercado e pela academia • Extensível e inter-disciplinar 22 UML SI2-UFCG 23 • Apenas uma linguagem, independente de processo • Não possui semântica formal precisa e completa • Abrange modelagem estrutural e comportamental 23 UML SI2-UFCG 24 • Maior precisão • Organização da linguagem melhorada • Habilidade modelar sistemas de larga escala • Melhor suporte para DSLs • Melhor e maior consolidação e consistência da linguagem • Versão lançada em Agosto/2011: 2.4.1 UML 2.0 5 SI2-UFCG 25 • Parte estrutural – Diagrama de classes – Diagrama de objetos – Diagrama de Componentes – Diagrama de estruturas compostas – Diagrama de Implantação Classes, interfaces e relacionamentos Objetos e relacionamentos Componentes e dependências Nós físicos e configurações 25 Hierarquia erelacionamentos internos de componentes e classes UML 2.0 SI2-UFCG 26 • Parte comportamental – Diagrama de casos de uso – Diagrama de atividades – Diagrama de comunicação – Diagrama de seqüência – Diagrama de tempo – Diagrama de overview de interação – Máquina de estados comportamental – Máquina de estados de protocolos Diagramas de Interação: Objetos, relacionamentos e mensagens } Casos de uso, atores e relacionamentos Máquina de estados: Estados, transições, eventos e atividades } 26 Fluxo de atividades e entidade responsável UML 2.0 SI2-UFCG 27 • Desenhistas – Modelos para facilitar o entendimento do código – Seletivo • Projetistas – Arquitetos de software semelhantes a arquitetos da construção civil – Sem interferência dos programadores • Programadores de modelo – Modelos como linguagem de desenvolvimento com semântica executável – Modelos como linguagem executável Usuários de UML SI2-UFCG 28 Abstração Executabilidade UML + LN Requisitos da Aplicação Modelo UML Código Fonte Código Binário Mistura de 2 questões Ortogonais: refinamento de negócio e tradução para uma plataforma Produtividade Portabilidade Interoperabilidade Documentação Prática tradicional: Desenhistas e Projetistas SI2-UFCG 29 • MDA (Model Driven Architecture) – Uma realização particular de DDM – Iniciativa da OMG (Object Management Group) – 1997: Lançamento – 2000: Definição – 2007: Aperfeiçoamento e ampla utilização • Outras: – Agile Model-Driven Development (AMDD) – Domain-Oriented Programming (DOP) – Microsoft’s Software Factories – xUML • Predomínio e padrões tornam MDA o carro-chefe de DDM MDA SI2-UFCG 30 MDA • Tornar a geração de código a partir de modelos UML 100% automática • UML 2.0 tornou-se necessária – Mais precisa – Mais completa – Melhor projetada • OCL 2.0 tornou-se necessária • UML 2.0 e OCL 2.0: Pivôs de MDA 6 SI2-UFCG 31 Abstração Executabilidade UML/OCL CIM - Negócio UML/OCL PIM – Especificação da aplicação Perfis UML/OCL PSM – Realização da aplicação Código Fonte Código Binário Padrões de tradução de modelos Padrões de refinamento de modelos UML/OCL PIM – Realização da aplicação Produtividade Portabilidade Interoperabilidade Documentação DDM e MDA: Progamadores UML SI2-UFCG 32 • Modelos não são necessariamente documentos – Muitos desenvolvedores não gostam de modelos (documentos?) • Conhecimento sobre o domínio é muito importante • Escolher o tipo certo de modelo não é tão simples • A linguagem visual ajuda bastante • Alta rotatividade: Imagine novatos na equipe – Milhões de linhas de código – Dezenas de modelos Ainda sobre modelos SI2-UFCG 33 • Que tal codificar diretamente de sua cabeça e de forma imediata? • Precisa-se pensar antes de codificar! • Precisa-se abstrair! – Abstrair é muito difícil! • Precisa-se modelar! Ainda sobre modelos SI2-UFCG 34 Por que preciso aprender UML? Análise de Software Projeto de Software Domínios específicos: Perfis UML Arquitetura de Software SI2-UFCG 35 Por que preciso aprender UML? Programador precisa entender especificações UML Seu trabalho precisa ser entendido por outros Implementação - MDA - Nova geração: Compiladores UML SI2-UFCG 36 Por que preciso aprender UML? Você precisa pagar SI2 para se formar! Linguagem explorada em concursos e POSCOMP
Compartilhar