A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Problemas e Práticas Recomendadas no Desenvolvimento de Software

Apresentações semelhantes


Apresentação em tema: "Problemas e Práticas Recomendadas no Desenvolvimento de Software"— Transcrição da apresentação:

1 Problemas e Práticas Recomendadas no Desenvolvimento de Software

2 Objetivos deste módulo
Levantar problemas enfrentados na prática do desenvolvimento de software Discutir boas práticas para o desenvolvimento de software Desenvolvimento de software com UML

3 Desenvolvimento de software com UML
Realidade de hoje Grande demanda para desenvolvimento de aplicações não triviais Rápida evolução tecnológica Tempo de desenvolvimento deve ser curto Falta de tempo para amadurecimento dos profissionais Equipes grandes A economia de hoje está cada vez mais dependente de software, a demanda para o desenvolvimento de aplicações complexas tem crescido de forma assustadora. Isso significa boas notícias para os engenheiros de software. Por outro lado, vários fatores têm tornado a prática de desenvolvimento de software cada vez mais complexa. A rápida evolução das tecnologias envolvidas, o tempo de desenvolvimento cada vez mais curto, o tamanho das equipes e falta de tempo para amadurecimento das mesmas são os principais desafios enfrentados pelos profissionais da área. Vários sistemas têm enfrentado o problema da baixa qualidade do software desenvolvido. Desenvolvimento de software com UML

4 Desenvolvimento de software com UML
Problemas Software que não atende aos requisitos Software com bugs Tempo e orçamento estourados Grande esforço no trabalho em equipe Vários problemas têm sido encontrados na prática do desenvolvimento de software, dentre eles os mais relevantes são: requisitos não atendidos, erros e defeitos nos programas e tempo de desenvolvimento e orçamento ultrapassando estimativas. Devido ao tamanho e complexidade dos sistemas atualmente, desenvolvimento de software é um esforço de equipe. Isso significa um desafio de comunicação entre os integrantes. Desenvolvimento de software com UML

5 Desenvolvimento de software com UML
O que fazer? Seguir um conjunto de práticas e orientações para minimizar os problemas encontrados Não existe uma solução mágica para acabar com todos os problemas da prática de desenvolvimento de software, que envolve tantas variáveis. Apesar disso, é importante que um conjunto de práticas e orientações validadas por especialistas da área sejam seguidas para minimizar os problemas encontrados. Desenvolvimento de software com UML

6 Problemas encontrados (sintomas)
Entendimento não preciso das necessidades dos usuários Dificuldade na mudança de requisitos Módulos que não se encaixam perfeitamente Dificuldade de manutenção de sistemas Descoberta tardia de sérios problemas no projeto Software de qualidade pobre Performance inadequada Membros do time não conseguem acompanhar mudanças Processo de construção de versões não confiável Um levantamento dos problemas envolvidos na produção de software deve ser feito buscando os seus sintomas. Nesta transparência são listadas os principais sintomas levantados. Desenvolvimento de software com UML

7 Por que esses problemas acontecem? (causas)
Gerência de requisitos insuficiente Comunicação ambígua e insuficiente Arquiteturas frágeis Complexidade dos sistemas Inconsistência entre requisitos, projeto e implementação não detectadas Testes insuficientes Avaliação subjetiva da situação dos projetos Redução de risco tardia (desenv. cascata) Propagação de mudanças descontrolada Automação insuficiente A experiência do pessoal da Rational identificou causas para os sintomas levantados na transparência anterior. Dentre as causas mais relevantes, podemos citar: gerência insuficiente de requisitos, arquiteturas frágeis, testes insuficientes e avaliação subjetiva. Gerência insuficiente de requisitos pode trazer sérios problemas como, por exemplo, a equipe nunca chegar ao fim do projeto. Avaliação subjetiva é mais conhecida como o problema de que sempre 90% do projeto está pronto, mas os outros 10% nunca são alcançados. Desenvolvimento de software com UML

8 Tratando as causas para eliminar os sintomas
Entendimento não preciso das necessidades dos usuários Dificuldade na mudança de requisitos Módulos que não se encaixam perfeitamente Dificuldade de manutenção de sistemas Descoberta tardia de sérios problemas no projeto Software de qualidade pobre Performance inadequada Membros do time não conseguem acompanhar mudanças Processo de construção de versões não confiável Gerenciamento de requisitos insuficiente Comunicação ambígua e insuficiente Arquiteturas frágeis Complexidade dos sistemas Inconsistência entre requisitos, projeto e implementação não detectadas Testes insuficientes Avaliação subjetiva da situação dos projetos Redução de risco tardia (desenv. cascata) Propagação de mudanças descontrolada Automação insuficiente Para cada um dos sintomas dos problemas envolvidos no desenvolvimento de software, existe pelo menos uma causa correspondente. Para resolver estes problemas, as causas dos sintomas devem ser atacadas. Por exemplo, a descoberta tardia de sérios problemas no projeto pode ser resolvida com uma maior execução de testes e reduzindo os riscos desde o início do projeto. Desenvolvimento de software com UML Fonte: Rational

9 Boas práticas eliminam as causas
Gerenciamento de requisitos insuficiente Comunicação ambígua e insuficiente Arquiteturas frágeis Complexidade dos sistemas Inconsistência entre requisitos, projeto e implementação não detectadas Testes insuficientes Avaliação subjetiva da situação dos projetos Redução de risco tardia (desenv. cascata) Propagação de mudanças descontrolada Automação insuficiente Desenvolvimento iterativo Gerência de requisitos Arquitetura baseada em componentes Modelagem visual Verificação de qualidade Controle de mudanças As causas por sua vez são eliminadas através do uso de boas práticas. As práticas aqui listadas são recomendadas pela Rational. Fonte: Rational Desenvolvimento de software com UML

10 Boas Práticas da Engenharia de Software (recomendadas pela Rational)
Desenvolvimento iterativo Gerência de requisitos Arquitetura baseada em componentes Modelagem visual Verificação de qualidade Controle de mudanças Desenvolvimento de software com UML

11 Prática 1: Desenvolvimento iterativo
Diminuir riscos: esclarecendo os requisitos no início do desenvolvimento evitando a descoberta tardia de problemas no projeto, resultando em orçamento ultrapassado e/ou cancelamento de projetos O tempo e dinheiro gastos implementando um projeto incorreto NÃO são recuperáveis Desenvolvimento de software com UML

12 Desenvolvimento cascata atrasa redução de riscos
Requirements Analysis Design System Testing Code & Unit Testing Subsystem T E M P O R I S C O O grande problema do desenvolvimento cascata é que os riscos do projeto são adiados para a fase final do desenvolvimento, onde é mais custoso realizar alterações no mesmo. A fase de testes de todo o sistema, onde a maioria dos problemas são detectados, é realizada apenas na última etapa do desenvolvimento. A descoberta tardia de defeitos de projeto, em geral, resulta em orçamento estourado e, em alguns casos, cancelamento do projeto. Fonte: Rational Desenvolvimento de software com UML

13 Aplicação do modelo cascata iterativamente
T E M P O R A/P I T/I Iteração 3 Iteração 2 Iteração 1 Iterações no início devem atacar maiores riscos Versão executável é produzida ao final de cada iteração Cada iteração inclui integração e teste O processo iterativo propõe a aplicação do desenvolvimento cascata de forma iterativa, isto é, o sistema é desenvolvido por incrementos (subconjuntos da funcionalidade do sistema). Em geral, uma iteração deve durar entre 2 semanas a 2 meses, dependendo da duração total do projeto. Desenvolvimento de software com UML Fonte: Rational

14 Desenvolvimento iterativo acelera redução de riscos
Modelo Cascata O maior benefício do desenvolvimento iterativo é a redução de riscos nas iterações iniciais antes que grandes investimentos tenham sido feitos no projeto. Iterativo Iteração | Iteração | Iteração | Iteração | Iteração | Iteração | Iteração | T E M P O Desenvolvimento de software com UML Fonte: Rational

15 Características do modelo iterativo
Riscos críticos são resolvidos antes que grandes investimentos sejam realizados Permite feedback dos usuários desde cedo Testes e integração são atividades contínuas Pequenos objetivos, foco em curto-prazo Progresso é medido de forma mais concreta Implementações parciais podem ser implantadas No desenvolvimento iterativo, ao final de cada iteração é produzida uma versão do sistema. As características do desenvolvimento iterativo são listadas nesta transparência. Desenvolvimento de software com UML

16 Boas Práticas da Engenharia de Software (recomendadas pela Rational)
Desenvolvimento iterativo Gerência de requisitos Arquitetura baseada em componentes Modelagem visual Verificação de qualidade Controle de mudanças Desenvolvimento de software com UML

17 Prática 2: Gerência de requisitos
Elicitar, organizar e documentar os requisitos do sistema Avaliar mudanças (impacto) Documentar decisões Entrar em acordo com os usuários O desafio encontrado na gerência de requisitos é decorrente do fato de que os requisitos de um sistema, em geral, são muito dinâmicos. A atividade de identificar requisitos é um processo contínuo. Como a mudança não pode ser evitada, deve ser gerenciada. Outra questão importante, no contexto da gerência de requisitos, é a avaliação de esforço para a realização de mudanças solicitadas pelos usuários, permitindo uma análise do impacto das mudanças. A documentação das alterações realizadas nos requisitos é também essencial para evitar problemas futuros. Requisitos sempre MUDAM! Desenvolvimento de software com UML

18 Os requisitos direcionam todo o desenvolvimento
Projeto e implementação Gerência de projeto Gerência de mudanças Testes O documento de requisitos do sistema é muito importante porque ele direciona várias outras atividades do processo: Projeto e implementação - o modelo de projeto (e consequentemente de implementação) é derivado do modelo de casos de uso; Gerência de projeto - o gerente de projeto utiliza o modelo de casos de uso para dividir o desenvolvimento em iterações (definição de que casos de usos são desenvolvidos em que iteração); Testes - os casos de testes são derivados dos casos de uso; A Gerência de mudanças deve identificar que requisitos estão estabilizados e quais têm sofrido grandes modificações. Desenvolvimento de software com UML

19 Boas Práticas da Engenharia de Software (recomendadas pela Rational)
Desenvolvimento iterativo Gerência de requisitos Arquitetura baseada em componentes Modelagem visual Verificação de qualidade Controle de mudanças Desenvolvimento de software com UML

20 Prática 3: Arquitetura baseada em componentes
Arquitetura de Software: definição dos elementos estruturais seus inter-relacionamentos comportamento destes elementos Decisão de como estruturar o projeto Deve levar em consideração os requisitos funcionais e não-funcionais Arquitetura de software consiste no projeto da estrutura do sistema, seus componentes e o relacionamento entre eles. É o artefato mais importante do sistema, porque direciona todo o desenvolvimento. A arquitetura do sistema deve ser implementada e testada. Desenvolvimento de software com UML

21 Prática 3: Arquitetura baseada em componentes
Uma boa arquitetura deve ser: flexível (facilitando manutenibilidade e extensibilidade) baseada em componentes módulos devem ser independentes componentes devem ser reutilizados Uma arquitetura baseada em componentes permite que seus elementos sejam desenvolvidos de forma independente. A mudança em um dos componentes deve ter o mínimo de impacto possível nos outros. Além disso a arquitetura baseada em componentes facilita o reuso. Desenvolvimento de software com UML

22 Boas Práticas da Engenharia de Software (recomendadas pela Rational)
Desenvolvimento iterativo Gerência de requisitos Arquitetura baseada em componentes Modelagem visual Verificação de qualidade Controle de mudanças Desenvolvimento de software com UML

23 Prática 4: Modelagem visual
Facilita entendimento Facilita comunicação entre a equipe Diminui ambigüidade Permite rastreabilidade A criação de modelos facilita o entendimento do sistema sendo modelado, além disso ajuda o time de desenvolvimento a visualizar, especificar, construir e documentar a estrutura e o comportamento do sistema. O uso de uma notação padrão como UML permite que diferentes membros da equipe possam comunicar decisões entre si sem ambigüidades. Modelagem visual ajuda a manter a consistência entre os modelos e gerenciar complexidade de sistemas. O uso de uma ferramenta facilita bastante o trabalho da equipe. Desenvolvimento de software com UML

24 Desenvolvimento de software com UML
Linguagem para especificar, modelar e documentar os artefatos de um sistema Padrão de mercado UML é uma linguagem que serve para especificar, modelar e documentar os artefatos de um sistema. A linguagem UML foi adotada como padrão na indústria de software. Desenvolvimento de software com UML

25 Modelagem Visual usando Diagramas UML
UML possui notação para especificar vários diagramas incluindo: diagramas de casos de uso, para modelar interações do usuário com o sistema; diagramas de classe, para modelar estrutura lógica; diagramas de estado, para ilustrar comportamento; diagramas de interação, também para ilustrar comportamento; diagramas de componentes, para ilustrar estrutura física do software; diagramas de atividades, para ilustrar o fluxo de eventos de um caso de uso. Desenvolvimento de software com UML Fonte: Rational

26 Boas Práticas da Engenharia de Software (recomendadas pela Rational)
Desenvolvimento iterativo Gerência de requisitos Arquitetura baseada em componentes Modelagem visual Verificação de qualidade Controle de mudanças Desenvolvimento de software com UML

27 Prática 5: Verificação de qualidade
Defeitos em projetos de software são 10 a 100 vezes mais caros de corrigir na fase de manutenção Custo Qualidade envolve definir medidas e critérios para determinar que o sistema está em um nível satisfatório de aceitação. Em várias empresas, testes correspondem entre 30 e 50% dos custos de desenvolvimento de um sistema, mesmo assim muitos sistemas são entregues sem que antes sejam testados suficientemente. Defeitos em projetos de software são 10 a 100 vezes mais caros de corrigir na fase de manutenção, além de trazerem uma impressão negativa aos clientes. Dados estes motivos, é importante que os testes sejam realizados desde cedo e de forma contínua. Desenvolvimento Implantação Desenvolvimento de software com UML Fonte: Rational

28 Desenvolvimento Iterativo permite a realização de testes contínuos
Iteração 1 Iteração 2 Iteração 3 R R R A/P A/P A/P I I I T/I T/I T/I O desenvolvimento iterativo permite a realização de testes de forma contínua, sempre no final de cada iteração. Teste realizados de forma eficiente, iniciados desde cedo e continuamente, reduz significativamente o custo de conclusão e manutenção do sistema. Teste Teste Teste TEMPO Desenvolvimento de software com UML Fonte: Rational

29 Testes precisam ser automatizados
À medida que novos requisitos são adicionados ao sistema, novos testes são gerados e executados, isso implica que à medida que a funcionalidade do sistema vai aumentando, o número de testes cresce de forma acentuada, tornando a execução do conjunto de testes uma tarefa muito árdua, se não é feita com o auxílio de uma ferramenta. É importante a realização de todos os casos de testes ao adicionar uma nova funcionalidade ou correção no sistema, a fim de garantir que erros não foram introduzidos no sistema. Esta prática chama-se Testes de Regressão (Regression Testing). Desenvolvimento de software com UML Fonte: Rational

30 Automação de Testes reduz Tempo e Esforço
One Manual Test Cycle 13,000 Tests 2 Weeks 6 People Test Automation O exemplo mostrado acima é derivado de resultados reais de um cliente, segundo a Rational. 13,000 Test 6 hours 1 Person Run More Tests More Often Desenvolvimento de software com UML Fonte: Rational

31 Boas Práticas da Engenharia de Software (recomendadas pela Rational)
Desenvolvimento iterativo Gerência de requisitos Arquitetura baseada em componentes Modelagem visual Verificação de qualidade Controle de mudanças Desenvolvimento de software com UML

32 Prática 6: Controle de mudanças
Como gerenciar vários desenvolvedores, várias iterações, várias versões…? Problemas mais comuns: atualização simultânea notificação incompleta múltiplas versões Mudanças introduzidas no sistema devem ser controladas. É preciso manter a informação de quem mudou o que e quando. O controle de versões, garantia de que um arquivo só pode ser modificado por uma pessoa por vez, e a gerência das diferentes versões do sistema são essenciais para um desenvolvimento organizado, e para evitar possíveis desastres no projeto, como a perda de atualizações e versões. Desenvolvimento de software com UML

33 Prática 6: Controle de mudanças
É preciso ter um controle! Uso de uma ferramenta para gerenciar versões e pedidos de mudanças O uso de uma ferramenta para o controle de versões é essencial em qualquer projeto que envolva mais de uma pessoa. Na realidade, é recomendável em todos os casos. Existem várias ferramentas no mercado que além do controle de versões, oferecem outras funcionalidades bastante interessantes como gerência de pedidos de mudanças e relatórios estatísticos. Desenvolvimento de software com UML

34 As práticas se complementam
Garante envolvimento dos usuários à medida que os requisitos evoluem Gerencia Requisitos Valida decisões de arquitetura desde cedo Usa Arquitetura de Componentes Desenvolve iterativamente Trata complexidade de projeto/ implementação incrementalmente Modela Visualmente Mede qualidade desde cedo e freqüentemente A transparência acima mostra que o desenvolvimento iterativo favorece as outras cinco boas práticas recomendadas neste curso. Verifica Qualidade Evolui versões incrementalmente Controla Mudanças Fonte: Rational Desenvolvimento de software com UML

35 Desenvolvimento de software com UML
Resultado: Diminuição dos problemas Maior sucesso nos projetos tempo orçamento funcionalidade Seguindo as práticas recomendadas neste curso, o resultado é bastante satisfatório: maior sucesso no cumprimento do tempo de desenvolvimento, orçamento e funcionalidade dos projetos de software, enfim equipes mais eficientes. Desenvolvimento de software com UML


Carregar ppt "Problemas e Práticas Recomendadas no Desenvolvimento de Software"

Apresentações semelhantes


Anúncios Google