IMPACTO DAS MUDANÇAS NO DESENVOLVIMENTO DE SOFTWARE
De acordo com um relatório gráfico da IBM em 2015. Ele demostra o custo que o
software sofre após perceber uma defeito em cada estágio, dados esses estágios A
FASE DO DESENHO, IMPLEMENTAÇÃO, TESTES e a MANUTENÇÃO
A fase de desenho (concepção) 1%↑
Implementação(construçã/codificação) 6,5%↑
Teste(homologação) 15%↑
Manutenção (entrega) 100%↑
Depois que o software já está rodando em um sistema produtivo, ele tem um custo de
100% as vezes esse custo e impacto pode ser ainda maior, ex: um sistema ecommerce
sai fora do ar o impacto é ainda maior, imagina o tanto de dinheiro que a empresa
irá perder com as pessoas migrando para a outra plataforma.
MAS AFINAL, O QUE É ENGENHARIA DE SOFTWARE?
Engenharia de software é a aplicação de uma
abordagem sistemática, disciplinada e quantificável no desenvolvimento, na operação
e na manutenção de software; isto é, a aplicação de engenharia ao software.
" Ou seja durando o desenvolvimento, nós podemos saber se a qualidade, o custo e o
prazo se ele está respeitando ao estimado determinado no início do projeto. "
Enfim a engenharia de software, ela não só se concentra na criação, ela vai até a
manutenção.
PREOCUPAÇÕES DA ENGENHARIA DE SOFTWARE?
Sistematizar o processo de criação e manutenção de software.
PRINCIPAIS METAS DA ENGENHARIA DE SOFTWARE!
1- melhora a qualidade de produtos e software
2-aumentar a produtividade do pessoal técnico
3-aumentar a satisfação dos clientes
Sende esses os principais problemas!
CAMADAS DA ENGENHARIA DE SOFTWARE
Existem 4 camadas da engenharia de software
1-FOCO NA QUALIDADE
Esta camada é a base de todas as outras e foca na garantia da qualidade do
software. Inclui práticas e padrões para assegurar que o produto final atenda aos
requisitos e seja confiável.
2-PROCESSOS
Envolve a definição e gestão dos processos de desenvolvimento de software. Isso
inclui metodologias como Agile, Scrum e Waterfall, que ajudam a organizar e
controlar as etapas do desenvolvimento.
3-METODOS
Refere-se às técnicas e abordagens utilizadas para o design, implementação e teste
do software. Exemplos incluem programação orientada a objetos, design de algoritmos
e técnicas de teste de software.
Proporciona os detalhes de como vai ser a construção do software.
Alguns Métodos:
• Planejamento e estimativa ao projeto.
• Análise de requisitos de sistema e de software.
• Projeto de estrutura de dados
• Algoritimo de processamento
• Codificação
• Teste
• Manutenção
Refere-se às técnicas e abordagens utilizadas para o design, implementação e teste
do software. Exemplos incluem programação orientada a objetos, design de algoritmos
e técnicas de teste de software.
4- FERRAMENTAS
Esta camada abrange as ferramentas e ambientes de desenvolvimento que suportam os
processos e métodos. Exemplos incluem IDEs (Ambientes de Desenvolvimento
Integrado), sistemas de controle de versão e ferramentas de automação de testes
Elas dá suporte automatizado ao métodos
ex:
Eclipse e outros IDE's (Codificação)
Sonar Code (Qualidade De Código)
Selenium (Testes)
MODELOS DE PROCESSO DE ENGENHARIA DE SOFTWARE
O QUE SÃO OS MODELOS DE PROCESSO DE
ENGENHARIA DE SOFTWARE?
Quando se trabalha na elaboração de um produto ou sistema, é importante seguir uma
serie de passos previsíveis. Um roteiro que nos ajude a criar um resultado de alta
qualidade e dentro do prazo estabelecido. Esse Modelo é denomido de "Processo de
software". Os modelos são deferente roteiros para o desenvolvimento de software. Ou
seja um Modelo são roteiros que determinam passos a serem seguidos ex: roteiros
seria os passo(tópicos)de um modelo. O modelo seria etapas(manutenção)
QUAL MODELO USAR?
O modelo deve ser escolhido de acordo com:
• Natureza do projeto e do produto
•○ Métodos e ferramentas utilizados
• Controles e Produtos intermediários
desejados
Ou seja, com base na análise desses critérios, será definido qual modelo será ideal
para desenvolver o software específico.
TIPOS DE MODELOS
• MODELO CASCATA(clássico)*mais ultilizado
• MODELO PROTÓTIPAÇÃO
• MODELO ESPIRAL
MODELO CASCATA:
Quando um projeto, tem requisitos que já são bem conhecidas e se tem uma previsão
de poucas mudanças ao longo do desenvolvimento esse modelo é o mais recomendado.
Esse modelo é baseado em etapas que a cada etapas concluídas, geram entradas para a
próxima etapa.
Existe 4 fluxo de processo ou maneira de uso do modelo cascata são eles:
•FLUXO PROCESSO LINEAR
Executa o modelo em modo de sequência
•FLUXO DE PROCESSO INTERATIVO
Repete uma ou mais das atividades antes de prosseguir para a seguinte, exemplo um
processo na modelagem pode se repetir dentro dela mesmo.
•FLUXO DE PROCESSO PARALELO
Executa uma ou mais atividades em paralelo com outras atividades. Ex: a comunicação
e planejamento trabalham juntas e se ligam diretamente com a modelagem
•FLUXO DE PROCESSO EVOLUCIONÁRIO
Executa as atividades de uma forma “circular”. Cada volta pelas cinco atividades
conduz a uma versão mais completa do software. Ao chegar na entrega, é apresentado
o projeto a comunicação, para ver se era realmente aquilo que era esperado, caso
contrário se entra novamente produção.
VANTAGENS: São muito bons para desenvolvimento que não terá muitas manutenções.
DESVANTAGES: não é um modelo muito flexível a mudanças, é um modelo que precisa das
etapas anteriores para poder partir para a próxima etapa.
O modelo cascata possuí 5 etapas são elas:
• COMUNICAÇÃO/ANÁLISE:
Levamento de sistemas, levamentos de necessidades do cliente, são feitos
questionários, entrevistas com cliente
• PLANEJAMENTO:
Estimativas, cronogramas,meios de acompanhamento do projeto, decisões se deve ou
não continuar com o projeto
• MODELAGEM:
Os requisitos definidos na fase de comunicação de maneira geral, são detalhados
nessa fase. É nessa fase também que é ultilizado a linguagem UML. Então o software
é desenhado, as funcionalidades, funções, integrações,base de dados.
• CONSTRUÇÃO:
As instruções são codificadas em linguagem de programação, testes são feitos
• EMPREGO/MANUTENÇÃO:
O software é entregue e é oferecido suporte para eventuais melhorias ou consertos
*Geralmente no modelo cascata tem uma fase, onde o cliente é homologado, ele
análisa e ver se ele concorda se era aquilo que ele esperava, o modelo cascata
também é necessário ter todo os requisitos logo no início do projeto.
PROTOTIPAÇÃO:
O modelo de desenvolvimento de software por prototipação é uma abordagem que se
concentra na criação de protótipos, ou seja, versões iniciais e simplificadas do
software, antes de construir a versão final. Este método é especialmente útil
quando os requisitos do projeto não são completamente conhecidos ou estão sujeitos
a mudanças frequentes
Quando você se tem alguma ou várias duvidas, sobre os requisitos do software e se
aquela idéia que surgiu do cliente, atende a necessidade dele
VANTAGENS:
rápidas validações de idéias, quando uma idéia não está muito clara.
Feedback Contínuo: Permite a coleta de feedback constante dos usuários, melhorando
a qualidade do produto final.
Redução de Riscos: Identifica problemas e limitações cedo no processo de
desenvolvimento.
Melhor Entendimento dos Requisitos: Ajuda a esclarecer e refinar os requisitos do
sistema.
DESVANTAGENS:
muitas das vezes os clientes entendem que aquele prototipo, é o projeto final, ou a
equipe de desenvolvimente usa daquele prototipo como sistema final.
existe 4 tipos de prototipos:
PROTÓTIPOS DE DESCARTE RÁPIDO: Desenvolvidos rapidamente para mostrar a aparência
visual do requisito.
PROTÓTIPO EVOLUTIVO: Continuamente refinado com base no feedback do usuário.
PROTÓTIPO INCREMENTAL: Desenvolvido em partes, cada uma adicionando funcionalidades
ao protótipo anterior.
PROTÓTIPO EXTREMO: Utilizado em situações de alta incerteza, onde os requisitos são
altamente voláteis
Fases Do Modelo De Prototipação:
• PROJETO RÁPIDO
• MODELAGEM PROJETO RÁPIDO
• CONSTRUÇÃO DE UM PROTÓTIPO
• EMPREGO/ENTREGA E REALIMENTAÇÃO
• COMUNICAÇÃO
Nessa fase é cominicado aos clientes e usúarios finais, se aquilo atende as
necessidades deles ou não
*Geralamente o modelo de prototipação, também é usado junto com o modelo cascata
para assim se ter um projeto com menos defeitos e uma boa qualidade.
MODELO ESPIRAL:
Foi inspirado no modelo cascata e protótipo, onde ele começa com a versão resumida
do software e com base no feedback de usuário é implantado aquela nova
funcionalidade ao projeto principal.
VANTAGENS:
É um modelo muito flexível a mudanças.
Feedback contínuo: Permite o desenvolvimento de protótipos funcionais em cada
ciclo, garantindo que o software atenda às necessidades dos usuários.
DESVANTAGES:
Tem menos previsibilidade, começando com uma pequena versão, porém não tendo uma
previsão final
FASES DO ESPIRAL:
COMUNICAÇÃO
PLANEJAMENTO
MODELAGEM
CONSTRUÇÃO
EMPREGA
MODELO DE DESNVOLVIMENTO BASEADO EM COMPONENTES:
• Os modelo de desenvolvimento baseado em componentes, desenvolve aplicações a
partir de componentes de software pré-empacotados.
O modelo de desenvolvimento baseado em componentes conduz ao:
VANTAGENS
• reúso do software para outros projetos semelhante, produtividade,
• aumento da qualidade, pois os mesmo já foram testados.
• produtividade a equipe de engenharia de software, pode conseguir uma redução de
tempo do ciclo de desenvolvimento e custo do projeto.
DESVANTAGEM
• complexidade na integração do projeto, pois o mesmo componente pode exigir muitos
esforços para garantir a compatibilidade.
• custo inicial pode ser elevando.
• A segurança que os componentes de terceiros fornece, pode ser fraca, trazendo
vulnerabilidade ao projeto.
• depedencia de terceiros pode impactar nas atualizações futuras do projeto, caso
esses componentes não mantiver atualizados.
• O desempenho de terceiros pode não ser tão otimizado quanto as soluções
desenvolvidas especificamente para aquele projeto.
*exemplo de componentes já existentes: SAP: gerenciamento de operações financeiras,
RH, compras, produção e logística.
NOVAS ABORDAGENS:
Com o tempo surgiram novas abordagens, com o intuito de deixar os clientes mais
próximos ao projetos e minimizar ainda mais o tempo de desenvolvimento, e que sejam
ainda mais flexivéis as mudanças, trazendo assim mais sastifação ao cliente e a
qualidade final do produto.
O MODELO DE PROCESSO INCREMENTAL:
é uma abordagem de desenvolvimento de software que divide o projeto em partes
menores e gerenciavéis, chamadas de incrementos. cada incremento é desenvolvido,
testado e entregue de forma indepedente, mas todas se intergram para formar o
sistema completo. ou seja é um modelo cascata, porém com vários modelos, onde cada
modelo é um incremento para a projeto final ex: incremento1 deshboard, incremento2
autenticação
CARACTERISTICAS:
• DESENVOLVIMENTO EM ETAPAS:
O projeto é desenvolvido em etapas menores cada um sendo preparado em sequencia
linear, semelhante ao modelo cascata.
• ENTREGA CONTÍNUA:
Cada incremento resulta em um produto funcional e operacional, mesmo que seja uma
parte do sistema completo.
• FEEDBACK RÁPIDO:
Permite a obteção de feeedback do usuárioa após cada incremento, facilitando
ajustes e melhorias contínuas.
ETAPAS:
• COMUNICAÇÃO
• PLANEJAMENTO
• MODELAGEM(análise, projeto)
• CONSTRUÇÃO(codificação, testes)
• EMPREGO(entrega, realimentação ou feedback)
VANTAGENS:
• Incrementos podem ser entregues regulamente ao cliente e, desse modo, a
funcionalidade do sistema é disponibilizada mais cedo.
• Os incrementos inicias agem como protótipos para esclarecer os requisitos para
incrementos posteriores do sistema.
• Menor risco a falha geral do sistema.
• Os serviços de sistemas de mais alta prioridade tendem a receber mais testes.
DESVANTAGENS:
• Planejamento: requer um planejameto detalhado inicial, para definir os
incrementos e suas dependências
• Complexidade: A integrção de múltiplos incrementos pode ser complexa e exigir um
esforço significativo.
• Custo: pode ser mais caro que os modelos tradicionais, como o modelo cascata por
exemplo, devido à necessidade de testes e integrações contínuas
MÉTODO RUP
O RUP é uma abordagem iterativa e incremental, centrada na arquitetura e guiada pos
casos de uso, com o objetivo de garatir a produção de software de alta qualidade
dentro do prazo estimado e orçamentos previsíveis.
FASES:
• Concepção: estabelecer o domínio de negócio para o sistema
• Elaboração: desenvolver um entendimentodo do domínio do problema e a arquitetura
do sistema.
• Construção: projeto, programação e teste de sistemas
• Transição: implementar o sistema no seu ambiente operacional.
ATIVIDADE
• modelagem de negócio
• requisitos
• análise de design
• implementação
• teste
• implantção
• geren. de config. e mudanças
• gerenciamento de projeto
• ambiente
métodologia de aplicação: enquanto uma equipe de análise de design finalizou o
trabalhando do incremento 1 na fase de elaboração, ela já pode trabalhar no
incremento 2 e mandar o incremento 1 para a fase de construção, onde a equipe de
implementação irá dar inicío a construção do incremento 1.
*O RUP ele é muito baseado em documentações, o que vai na contra mão de um dos
valores do manifesto ágil, onde diz que um software em funcionamento é mais que uma
documentação abrangente.
VANTAGENS:
• Flexibilidade: Adapta-se a diferentes tipos de projetos e tamanhos de equipes.
• Qualidade: Enfatiza a produção de software de alta qualidade através de práticas
bem definidas.
• Gerenciamento de Riscos: Identifica e mitiga riscos desde o início do projeto.
• Documentação: Fornece uma documentação detalhada e estruturada, facilitando a
manutenção e evolução do sistema
DESVANTAGENS:
• Complexidade: Pode ser complexo e exigir um esforço significativo para ser
implementado corretamente.
• Custo: Pode ser mais caro devido à necessidade de treinamento e ferramentas
específicas.
• Tempo: A abordagem iterativa pode levar mais tempo para entregar um produto final
comparado a metodologias mais simples.
CONTINUA!!!!