Prévia do material em texto
MCG241 – Sistemas de Informação Profa. Laura Emmanuella A. dos S. Santana lauraemmanuella@macae.ufrj.br Processo de Desenvolvimento de Sistemas Objetivos • De#inir engenharia de software • Apresentar modelos de processo de desenvolvimento de sistemas • Apresentar metodologias ágeis no desenvolvimento de sistemas • Permitir que o aluno compreenda o processo de desenvolvimento de sistemas de informação e o papel do cliente e gestor nesse processo 2 O que é engenharia de software? Engenharia de software • Conjunto de ferramentas, métodos e processos para o desenvolvimento de software com foco em sua qualidade • Visa tratar o desenvolvimento de software como uma atividade de engenharia • Desenvolvimento de modo sistemático, seguindo processos bem definidos 4 Processo de desenvolvimento de software Processo de Desenvolvimento de Software 6 • Dados levantados no Chaos Report (estudo clássico feito pelo Standish Group) sobre projetos de desenvolvimento de software mostram o grande percentual de projetos entregues fora do esperado ou cancelados entre 2011 e 2015 • Successful: Projetos de software que foram entregues dentro do prazo, dentro do orçamento e com funcionalidades completas • Challenged: Projetos que foram entregues fora do prazo, fora do orçamento ou com funcionalidades incompletas • Failed: Projetos cancelados 7 Processo de Desenvolvimento de Software • Um processo de desenvolvimento de software é um conjunto de atividades, parcialmente ordenadas, com a finalidade de obter um produto de software • É estudado dentro da área de Engenharia de Software, sendo considerado um dos principais mecanismos para se obter software de qualidade e cumprir corretamente os contratos de desenvolvimento • Prazos, orçamento e funcionalidades 8 Exemplo de pro8issionais envolvidos • Gerente de Projeto • Responsável pela coordenação das atividades necessárias à construção do sistema • Define orçamento, prazos, processo de desenvolvimento, cronograma de execução de atividades, recursos, etc... • Especialista do domínio (negócio) • Possui conhecimento acerca da área em que o sistema estará inserido • Muitas vezes é o cliente usuário do sistema • Analista de Sistema • Interage com o especialista do domínio para obter conhecimento acerca dos requisitos do sistema • Responsável pelo levantamento e análise dos requisitos • Arquiteto de software • Elabora a arquitetura do sistema como um todo • Toma decisões sobre quais subsistemas compõem o sistema como um todo e quais são as interfaces entre esses subsistemas • Programador • Implementa o sistema 9 Principais atividades do processo de desenvolvimento de software Principais atividades do processo de desenvolvimento de software 11 Levantamento de requisitos Análise Projeto (Design) Implementação Testes Implantação Levantamento de requisitos • A equipe tenta entender o domínio que deve ser automatizado pelo sistema • Estudo exploratório das necessidades do usuário • Objetiva o desenvolvimento de um sistema correto, através do levantamento dos requisitos funcionais e não funcionais, que permite aos desenvolvedores entenderem “o que o sistema deve fazer” e algumas restrições que devem ser obedecidas • Técnicas adotadas: • Entrevistas com o especialista e usuários, leitura de textos referência sobre o domínio, comparação com sistemas já existentes,... 12 Análise • Os requisitos são descritos e re?inados, consolidando o entendimento do sistema e permitindo a construção de modelos conceituais do sistema (diagramas que mostram as principais funcionalidades do sistema e como elas se relacionam entre si e com os usuários) • A análise não leva em conta o ambiente tecnológico a ser utilizado, ou seja, não entra em detalhes de implementação • O foco de interesse nessa atividade é tentar construir uma estratégia de solução sem se preocupar com a maneira como essa estratégia será realizada 13 Projeto (Design) • Aos modelos construídos na fase de análise são adicionadas restrições tecnológicas, como por exemplo: • Arquitetura física do sistema, padrão de interface gráfica, algoritmos específicos, gerenciador de banco de dados • Produz uma descrição computacional do que o software deve fazer de uma maneira coerente com a descrição feita na análise 14 Implementação • Na implementação, o sistema é codi#icado, 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 • EI o resultado concreto da disciplina de projeto em termos de componentes, scripts, código fonte e executáveis 15 Teste • Veri#ica-se o resultado da implementação através de testes tanto das versões intermediárias quanto as versões #inais do sistema • Diversas atividades de testes são realizadas para veri#icação do sistema construı́do, levando-se em conta a especi#icação feita nas fases de análise e projeto • Um possıv́el produto dessa fase são os relatórios de testes, que apresentam informações sobre erros detectados no software 16 Implantação • O sistema é empacotado, distribuı́do e instalado no ambiente do usuário • Os manuais do sistema são escritos, os arquivos carregados, os dados são importados para o sistema e os usuários treinados para utilizar o sistema corretamente • Em alguns casos, nesse momento também ocorre a migração de sistemas de software e de dados preexistentes 17 Modelos de processo de desenvolvimento de software Modelos de desenvolvimento de software • O processo de desenvolvimento de sistemas envolve diversas atividades • A forma como essas atividades são encadeadas para a construção do sistema é chamada de modelo de ciclo de vida • Há diversos modelos de ciclo de vida e a diferença entre eles está na maneira como as várias atividades são encadeadas 19 Modelos de desenvolvimento de software • Exemplos de modelos • Cascata • Iterativo e incremental • Ágil (evolução do iterativo e incremental) 20 Modelo em cascata • Modelo mais antigo e mais amplamente usado por muito tempo • Abordagem sequencial • O resultado de uma fase é a entrada da fase seguinte 21 Modelo em cascata 22 Problemas do modelo em cascata • Projetos reais raramente seguem o Cluxo sequencial que o modelo propõe • Logo no início é diCícil estabelecer explicitamente todos os requisitos. No começo dos projetos sempre existe uma incerteza natural por parte do cliente • O cliente deve ter paciência. Uma versão executável do software só Cica disponível numa etapa avançada do desenvolvimento (na implantação) 23 Modelo iterativo e incremental • Processo de desenvolvimento de software iterativo, baseado em re?inamentos e incrementos sucessivos a Kim de convergir para um sistema adequado • Em cada iteração incrementa-se um pouco mais o produto, baseando-se na experiência obtida nas iterações anteriores e no feedback do usuário • Cada iteração pode ser considerada um miniprojeto de duração Kixa, sendo que cada um destes inclui suas próprias atividades de análise de requisitos, projeto, implementação e testes 24 Modelo iterativo e incremental 25 Modelo iterativo e incremental • Em cada iteração é escolhido um pequeno subconjunto de requisitos, os quais são rapidamente projetados, implementados e testados pelos usuários • Isso leva a uma realimentação rápida - baseada em dados concretos de usuários, desenvolvedores e testes – que possibilita modi#icar ou adaptar a compreensão dos requisitos do projeto 26 Metodologias ágeis 27 O que é? • Metodologias ágeis são conjuntos de práticas que proporcionam uma forma de gerenciar projetos mais adaptável às mudanças • Elas são estruturadas em ciclos curtos sendo que, a cada novo ciclo, é entregue um conjunto de funcionalidades pré-determinado • Portanto, as metodologias ágeis têm como principal restrição o tempo e são caracterizadaspor produzirem entregas rápidas e frequentes • E? importante ressaltar que as metodologias ágeis partem do pressuposto que a condução do projeto será feita por uma equipe pequena e autogerenciável • Essa equipe normalmente será sênior, multidisciplinar e concentrada em um único local • Todo o esforço da equipe será empregado na qualidade da solução apresentada, que deverá acrescentar alto valor para o cliente do projeto 28 Motivação • Insatisfação com a metodologia aplicada no desenvolvimento de software que levava muito tempo desenvolvendo documentação antes de implementar e entregar o software ao cliente e quando o software era entregue ao cliente algumas funcionalidades já não reCletiam mais a necessidade do cliente • Devido à alta mudança nos requisitos ao longo do tempo, ou seja, quanto mais demora a entrega, maiores as chances de os requisitos terem mudado 29 Motivação • Necessidade de diminuir o tempo de entrega e o custo na produção • Custo era alto devido o longo processo de produção, ferramentas muito caras para modelagem do software e muitos pro#issionais envolvidos 30 O manifesto ágil • O Manifesto AI gil é uma declaração de princı́pios que fundamentam o desenvolvimento ágil de software 31 Vídeo: h3ps://www.youtube.com/watch?v=j5mCirZD-0s https://www.youtube.com/watch?v=j5mCirZD-0s Documentação no desenvolvimento tradicional • Documentação tradicional é diferente da documentação ágil • Documentação tradicional • É insumo para a implementação do software, ou seja, é feita antes da geração de código • É detalhada, pois será entregue ao cliente junto com o software • Manutenção difícil e custo alto • Após todo o detalhamento de documentação sobre uma funcionalidade, a funcionalidade é implementada e apresentada ao cliente. Se o cliente precisar modificar aquela funcionalidade, toda a documentação deverá ser refeita ou alterada, podendo gerar inconsistência • Muito tempo para especificar as funcionalidades antes de implementar (lembre que as funcionalidades geralmente sofrem alterações por parte do cliente que nem sempre tem certeza do que quer e passa a ter quando vê o software em funcionamento) 32 Vídeo: https://www.youtube.com/watch?v=3Smbhnmue7Y https://www.youtube.com/watch?v=3Smbhnmue7Y Documentação no desenvolvimento ágil • Documentação ágil • EQ resultado da implementação, ou seja, após a funcionalidade ser implementada e validada pelo cliente, é gerada alguma documentação mıńima quando o cliente contrata essa entrega (software + documentação) • Documenta-se sempre que o benefıćio superar o custo • Algumas vezes pode-se criar desenhos para auxiliar no entendimento da solução, mas descartá-los depois, eliminando o custo da manutenção desse documento • Ao invés de vasta documentação, prioriza-se a comunicação verbal entre os membros da equipe • Equipes pequenas • Trabalhando no mesmo espaço 4ísico • Pequenos incrementos no software de cada vez • Participação muito próxima do cliente 34 Resumo sobre a documentação no desenvolvimento ágil 36 SCRUM Imagens retiradas do vı́deo: https://www.youtube.com/watch?v=XfvQWnRgxG0 37 https://www.youtube.com/watch?v=XfvQWnRgxG0 O que é? • O Scrum é uma ferramenta que contém processos e técnicas de gestão ágil para o desenvolvimento de projetos de software • Quando usar? 38 Práticas fundamentais 39 Papéis No Scrum, as pessoas envolvidas no projeto podem assumir três papéis: product owner, scrum master e development team • O product owner é o responsável por gerenciar o conjunto de funcionalidades e características que o produto deve ter (Product Backlog). Portanto, o product owner atua como representante do cliente • O scrum master é o responsável por disseminar o scrum pela organização, garantindo que ele esteja sendo aplicado de forma correta. Portanto, atua como um facilitador • Já o development team é a equipe de desenvolvedores responsável por entregar as funcionalidades do produto e o produto Jinal 40 41 42 Tipos de reuniões • O scrum tem como base 4 tipos de reunião • A primeira reunião é o sprint planning (reunião de planejamento da sprint), que ocorre no primeiro dia da sprint e é o momento em que criamos o backlog da sprint • O backlog da sprint nada mais é do que o conjunto de funcionalidades e caracterı́sticas selecionadas do backlog do produto, que deve ser entregue ao Xinal da sprint • Nessa reunião, o product owner vai explicar e esclarecer as dúvidas sobre os itens que estão no backlog e o development team vai decompor os itens em ações 43 44 Tipos de reuniões • Todos os dias é realizado o daily scrum, uma reunião de alinhamento em que o time conta o que foi feito no dia anterior, planeja o que será feito no dia e elenca elementos e situações que podem impedir a realização do que foi planejado para o dia • Nesse ponto, o time pode levantar dificuldades e riscos que precisam ser removidos pelo scrum master, que deve atuar na proteção da produtividade da equipe, para alcançar os objetivos estabelecidos no planejamento do sprint 45 Daily Scrum 46 Tipos de reuniões A cada conclusão de sprint é feita também a sprint review que, como o próprio nome já diz, trata-se do momento em que o scrum team veriKica se o que foi feito está de acordo com os requisitos do produto e, se necessário, atualiza o backlog 47 Tipos de reuniões Outra reunião feita após a conclusão de uma sprint é a sprint retrospective, em que o scrum team verifica possíveis pontos do processo que podem ser melhorados. 48 Resumo