Análise e projeto de sistemas Conteúdo: UML O processo de desenvolvimento de software Prof. Patrícia Lucas
A linguagem de modelagem unificada (UML) A UML teve origem em uma tentativa de se unificar os principais métodos orientados a objetos utilizados até então: a OMT, o Método de Booch e o OOSE. Um método é composto por uma notação para os artefatos produzidos e de um processo descrevendo que artefatos construir e como construí-los. A notação pode ser unificada, mas a decisão de quais artefatos produzir e que passos seguir não é passível de padronização, já que varia de projeto para projeto. A definição completa da UML está contida na Especificação da Linguagem de Modelagem Unificada da OMG (www.uml.org).
A linguagem de modelagem unificada (UML) A UML é uma linguagem visual para modelar sistemas orientados a objetos. Através dos elemento gráficos definidos nessa linguagem pode-se construir diagramas que representam diversas perspectivas de um sistema. Cada elemento gráfico da UML possui uma sintaxe e uma semântica.
A linguagem de modelagem unificada (UML) A UML é independente tanto de linguagens de programação quanto de processos de desenvolvimento. Um processo de desenvolvimento de software que utilize a UML envolve a criação de diversos documentos, que podem ser textuais ou gráficos. Esses documentos são denominados artefatos de software.
A linguagem de modelagem unificada (UML) Diagramas definidos pela UML
A linguagem de modelagem unificada (UML) Para que um número tão grande de diagramas para modelar um sistema? Ex: carro.
A linguagem de modelagem unificada (UML) Diagrama de Casos de Uso: Os casos de uso descrevem a funcionalidade do sistema percebida por atores externos. Um ator interage com o sistema, podendo ser um usuário, dispositivo ou outro sistema.
A linguagem de modelagem unificada (UML) 26 Diagrama de Classes: Denota a estrutura estática de um sistema, isto é, as classes, os relacionamentos entre suas instâncias (objetos), restrições e hierarquias.
A linguagem de modelagem unificada (UML) 26 Diagramas de Sequência: mostram a colaboração dinâmica entre um número de objetos, sendo seu objetivo principal mostrar a sequência de mensagens enviadas entre objetos. É um gráfico bidimensional, onde a dimensão vertical representa o tempo e a dimensão horizontal os diferentes objetos.
O processo de desenvolvimento de software Compreende todas as atividades necessárias para definir, desenvolver, testar e manter um produto de software. Objetivos: - definir quais as atividades a serem executadas; - quando, como e por quem serão executadas; - prover pontos de controle para verificar o andamento do desenvolvimento; - padronizar a forma de desenvolver software.
Atividades típicas de um processo de desenvolvimento Existem vários tipos de processos de desenvolvimento. Cada um com suas particularidades em relação ao modo de arranjar e encadear as atividades de desenvolvimento. Entretanto, podem-se distinguir atividades que, com uma ou outra modificação, são comuns à maioria dos processos existentes.
Levantamento de requisitos Corresponde à etapa de compreensão do problema aplicada ao desenvolvimento de software. Objetivo principal: que usuários e desenvolvedores tenham a mesma visão do problema a ser resolvido. Nessa etapa, os desenvolvedores, juntamente com os clientes, tentam levantar e definir as necessidades dos futuros usuários do sistema.
Levantamento de requisitos Essas necessidades são denominadas requisitos. Um requisito é uma condição ou capacidade que deve ser alcançada ou possuída por um sistema para satisfazer um contrato. Os requisitos de um sistema são identificados a partir de um domínio. Domínio: a parte do mundo real que é relevante.
Levantamento de requisitos O produto do levantamento de requisitos é o documento de requisitos. As principais seções de um documento de requisitos são: requisitos funcionais, não-funcionais e normativos.
Levantamento de requisitos Requisitos funcionais: definem as funcionalidades do sistema. o sistema deve permitir que cada professor realize o lançamento de notas das turmas nas quais lecionou. o sistema deve permitir que um aluno realize a sua matrícula nas disciplinas oferecidas em um semestre.
Levantamento de requisitos Requisitos não funcionais: declaram as características de qualidade que o sistema deve possuir e que estão relacionadas às suas funcionalidades. Confiabilidade: tempo médio entre as falhas, recuperação de falhas, etc. Desempenho: requisitos que definem tempos de resposta esperados para as funcionalidades do sistema.
Levantamento de requisitos Portabilidade: restrições sobre as plataformas de hardware e de software nas quais o sistema será implantado e sobre o grau de facilidade para transportar o sistema para outras plataformas. Segurança: limitações sobre a segurança do sistema em relação à acessos não autorizados. Usabilidade: requisitos que se relacionam ou afetam a usabilidade do sistema, como facilidade de uso e a necessidade ou não de treinamento do usuários.
Levantamento de requisitos Requisitos normativos: declaração de restrições impostas sobre o desenvolvimento do sistema. Por exemplo: a adequação a custos e prazos; aspectos legais; regras de negócio; limitações sobre a interface com o usuário; etc.
Levantamento de requisitos um sistema será útil para seus usuários se atender aos requisitos definidos e se esses requisitos refletirem as necessidades dos usuários. O documento de requisitos não deve conter informações sobre soluções técnicas que serão adotadas para o desenvolvimento do sistema. O documento de requisitos serve como um termo de consenso entre a equipe técnica e o cliente.
Análise As principais ferramentas da UML para realizar análise são: o diagrama de casos de uso e o diagrama de classes.
Projeto Na fase de projeto, determina-se como o sistema funcionará para tender aos requisitos, de acordo com os recursos tecnológicos existentes. A fase de projeto considera os aspectos físicos e dependentes de implementação. Consiste em duas atividades principais: o projeto da arquitetura e o projeto detalhado.
Projeto Projeto da arquitetura: consiste em distribuir as classes de objetos relacionadas do sistema em subsistema e seus componentes. Diagrama UML usado: diagrama de implementação. Cliente: Browser <<HTTP>> Servidor da aplicação <<ODBC>> BD corporativo <<LAN>> Impressora
Projeto Projeto detalhado: são modeladas as colaborações entre os objetos de cada módulo com o objetivo de realizar as funcionalidades dos módulo. Também é realizado o projeto da interface com o usuário, o projeto do banco de dados e os algoritmos a serem utilizados no sistema. Diagramas UML: diagramas de classes, diagramas de casos de uso, diagramas de interação, diagramas de estados e diagramas de atividades.
Implementação e testes Implementação: nessa fase o sistema é codificado, ou seja, ocorre a tradução da descrição computacional obtida na fase de projeto em código executável mediante o uso de uma ou mais linguagens de programação. Testes: nessa fase são realizadas verificações no sistema construído, levando-se em consideração a especificação feita na fase de projeto. O resultado dessa fase são os relatórios de testes, com informações sobre os erro detectados.
Implantação O sistema é empacotado, distribuído e instalado no ambiente do usuário. Os manuais do sistemas são escritos. Os usuários são treinados. Em alguns casos é feita a migração de dados e sistemas preexistentes.
O componente humano O desenvolvimento de software é uma tarefa altamente cooperativa. Uma equipe de desenvolvimento de software pode envolver vários especialistas. EX: gerente, analistas, projetistas, programadores, clientes e grupos de avaliação da qualidade.
O componente humano Gerente de projeto: profissional responsável pela gerência ou coordenação das atividades necessárias para a construção do sistema. Analistas: profissional que deve ter conhecimento do domínio do negócio para definir os requisitos do sistema a ser desenvolvido. Projetistas: profissional cuja função é: avaliar as alternativas de solução do problema resultante da análise e gerar a especificação de uma solução computacional detalhada.
O componente humano Arquitetos de software: profissional responsável por elaborar a arquitetura do sistema como um todo. Programadores: profissional responsável pela implementação do sistema. Especialista de domínio: profissional que possui conhecimento acerca da área ou do negócio em que o sistema em desenvolvimento estará inserido. Avaliadores de qualidade: profissionais que asseguram a adequação do processo de desenvolvimento e do produto de software sendo desenvolvido aos padrões de qualidade estabelecidos pela organização.