Escolar Documentos
Profissional Documentos
Cultura Documentos
• Engenharia Software
• Processos/Metodologias de Desenvolvimento de Software
• Métodos/Modelação
• Ferramentas
• Trabalho
• Instalação
BOKs (Body of Knowledge)
• SWEBOK (V3.0) - Guide to The Software Engineering Body of Knowledge
• ITIL - Information Technology Infrastructure Library (práticas para a gestão de serviços IT – ITSM)
• …
Engenharia de Software >> Definição
• Software – é mais do que código de um programa de computador. Software é composto por toda a documentação e
configuração associados, necessários para que o programa opere corretamente.
• Engenharia – refere-se ao desenvolvimento de produtos, utilizando métodos e princípios científicos bem definidos.
• Engenharia de Software
– Aplicação sistemática de conhecimento cientifico e tecnológico, métodos e experiência, no desenho,
implementação, teste e documentação de software
– “the application of a systematic, disciplined, quantifiable approach to the development, operation, and
maintenance of software; that is, the application of engineering to software).”
• Liderado pela IEEE Computer Society – era necessário um documento que “transformasse a engenharia
de software numa disciplina legítima e numa profissão reconhecida”.
• Objetivos:
– Promover uma visão consistente da engenharia de software no mundo
– Especificar o âmbito e clarificar as fronteiras entre a engenharia de software e as outras disciplinas relacionadas (Computação, gestão de
projetos, matemática, etc.)
– Prover as bases para o desenvolvimento do currículo, para certificação individual e para licenciamento de material
Engenharia de Software >> KAs (15 - SWEBOK)
Gestão de Configuração do Prática Profissional da Eng.
Requisitos de Software
Software Software
Disciplinas Relacionadas
2. Desenho de Software – processo de definir a arquitetura, componentes, interfaces e outras caraterísticas (“é um processo iterativo através
do qual os requisitos são traduzidos num documento para construção do software.”)
4. Teste de Software – forma de fornecer aos stakeholders informações sobre a qualidade do produto ou serviço testado
5. Manutenção de Software – atividades necessárias para o suporte do software mantendo a relação custo-efeito (cost-effective)
6. Gestão da Configuração do Software – É um conjunto de atividades de apoio que permite a absorção ordenada das mudanças inerentes
ao desenvolvimento de software, mantendo a integridade e a estabilidade durante a evolução do projeto.
7. Gestão da Engenharia de Software – gestão das atividades de planeamento, coordenação, medição, monitorização, controlo e reporting,
de forma a assegurar que o desenvolvimento e manutenção do software são feitos de forma sistemática, disciplinada e quantificada
Engenharia de Software >> KAs (10 - SWEBOK)
8 Processo de Engenharia de Software – Consiste na definição, implementação, medição, gestão, mudança e melhoria no ciclo de
vida do software.
9 Ferramentas e Métodos – trata-se das ferramentas baseadas em computador necessárias para todo o ciclo de vida do software; e
os métodos que estruturam as atividades de forma sistemática com o objetivo de alcançar o sucesso.
11 Praticas dos Profissionais de Engenharia de Software - Esta área preocupa-se com o conhecimento, habilidades e atitudes que os
engenheiros de software devem possuir para praticar engenharia de software de forma profissional, responsável e ética.
12 Economia da Engenharia de Software - Esta área preocupa-se com a a tomadas de decisões dentro do contexto do negócio, de
forma a alinhas decisões técnicas com decisões de negócio.
13 Fundamentos da computação - Esta área cobre tópicos fundamentais que fornecem o background informático necessário para a
prática de engenharia de software (técnicas de resolução de problemas, abstrações, algoritmos e complexidade, etc.
14 Fundamentos Matemáticos - Cobre tópicos fundamentais que fornecem os antecedentes matemáticos necessários para a prática
de engenharia de software (relações e funções; lógica básica proposicional e predicada; técnicas de prova; etc.)
15 Fundamento da Engenharia - Cobre tópicos fundamentais que fornecem os antecedentes de engenharia necessários para a prática
de engenharia de software (métodos empíricos e técnicas experimentais; análise estatística; etc.)
Engenharia de Software >> Camadas
Fornecem apoio automatizado (ou semiautomatizado) para o processo
Ferramentas e para os métodos
Modelos de Processos de Software Conjunto de atividades (e seus resultados) que vão conferir maior
estabilidade, controle e organização no ciclo de desenvolvimento
Funcionalidade
Portabilidade Confiabilidade
ISSO/IEC
6 - Caraterísticas de um Software de Qualidade
9126
Capacidade
Usabilidade
Manutenção
Eficiência
Engenharia de Software >> Atividades de Desenvolvimento
• O custo de manutenção é geralmente muito maior que o custo de desenvolvimento. Faz sentido considerar desenvolvimento
Manutenção e manutenção como atividades contínuas
Processo de Desenvolvimento de Software
Definição
• Conjunto de atividades, métodos, práticas, documentos, política e procedimentos, realizados com a finalidade de obter um
produto de software e seus artefactos (planos de projeto, manuais, etc.).
• Os processos definem:
– O que Fazer – Atividades de desenvolvimento de software e os respetivos produtos
– Quem Faz – papel das pessoas envolvidas
– Quando Fazer cada atividade
– Como Fazer (nem sempre)
Vantagens
• Os processos de desenvolvimento de software são os principais mecanismos para a obtenção de software (produto) de
qualidade.
• Oferecem um roteiro útil para o trabalho de engenharia de software (nenhum modelo de processo é perfeito)
• Padronização dos artefactos (outputs)
• Melhor comunicação da equipa
• Pouca necessidade de capacitação do pessoal (pequena curva de aprendizagem)
Processo de Desenvolvimento de Software
– Sequencial ou Cascata
– Evolucional ou Prototipagem
– Vmodel
– Espiral
– Ágil
Modelos de Processos de Software >> Cascata
• Simples • Iterativo e Incremental
Elicitação de
Requisitos Elicitação de
Requisitos
Projeto
Projeto
Implementação
Implementação
Verificação
Verificação
Manutenção
Manutenção
Modelos de Processos de Software >> Cascata
• Vantagens • Desvantagens
• Quando Aplicar • Em geral, é difícil para o cliente estabelecer todos os requisitos à priori
• Quando os requisitos são bem compreendidos • Uma versão executável somente ficará pronta na fase final do projeto
• Quando há pouca probabilidade dos requisitos mudarem • Difícil identificação de sistemas legados (não acomoda a engenharia
reversa).
2 - Elaborar
1 - Obter
Projeto
Requisitos • O objetivo é entender muito bem os
Rápido
6– requisitos do utilizador e assim, obter uma
Construção do melhor definição dos requisitos do sistema
Produto
• Apropriado para quando o cliente não
definiu detalhadamente os requisitos ou
não os sabe comunicar
5-
3 - Construir • Auxilia o engenheiro de software e o cliente
Refinamento
Protótipo a entenderem melhor o que deve ser
do Protótipo
construído
4 - Avaliar
Protótipo
Modelos de Processos de Software >> Ágile
Modelos de Processos de Software >> Ágile
Modelos de Processos de Software >> Ágile
• Justificação
– As regras de negócios mudam rapidamente
– O software tem que ser adaptado para as novas regras
– Desenvolvimento e entrega rápida são importantes em mercados competitivos
– A entrega rápida pode ser tão (ou mais) desejável que a qualidade
• Manifesto Ágil
– Assinado por 17 desenvolvedores em Utah – Fevereiro de 2001
– 4 Valores e 12 Princípios
(https://www.youtube.com/watch?v=rf8Gi2RLKWQ&feature=youtu.be )
Modelos de Processos de Software >> Ágile
Valores
OBS: É importante notar que não se diz que os itens à direita não são importantes, apenas qual devem ser as prioridades
Modelos de Processos de Software >> Ágile
Princípios
1. A maior prioridade é satisfazer o cliente, através da entrega atempada e contínua de software de valor;
2. Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adequam a mudanças, para que
o cliente possa tirar vantagens competitivas;
3. Entregar software funcionando com frequência, preferencialmente em semanas;
4. Cooperação diária entre pessoas que entendem do ‘negócio’ e desenvolvedores;
5. Projetos surgem através de indivíduos motivados, entre os quais existe relação de confiança.
6. A maneira mais eficaz e eficiente de transmitir informações são através de conversas cara a cara;
7. Softwares funcionais são a principal medida de progresso do projeto;
8. Processos ágeis promovem um ambiente sustentável. Os patrocinadores, desenvolvedores e usuários, devem ser
capazes de manter indefinidamente, passos constantes;
9. Contínua atenção à excelência técnica e bom design, aumenta a agilidade;
10. Simplicidade é essencial. Cultivar a arte de maximizar a quantidade de trabalho que não precisou ser feito;
11. As melhores arquiteturas, requisitos e projetos emergem de equipas auto-organizadas;
12. Em intervalos regulares, a equipa reflete sobre formas de melhorar. Ajustam e otimizam seu comportamento.
Modelos de Processos de Software >> Ágile
Técnicas e Práticas
Para seguir os valores e princípios do manifesto ágil, as diversas metodologias ágeis costumam utilizar as seguintes técnicas e práticas durante todo o processo:
• Equipas que se auto gerem: É importante que a equipa atue em conjunto para tomar as melhores decisões, ao invés de haver um gestor que dita o caminho.
Há um líder que atua como facilitador;
• Comunicação: É essencial a constante comunicação entre a equipa de desenvolvimento e entre esta e a área de negócio;
• Preferência por Equipas Pequenas: É consenso que equipas pequenas são mais produtivas, evitam conflitos e falhas de comunicação;
• Uso de TDD (Test-Driven Development): É uma técnica que permite a realização de testes contínuos e não apenas na conclusão do sistema;
• Planeamento Incremental: Ao invés de planear o software como um todo, o planeamento é feito de forma sistêmica. O todo é determinado, mas o
planeamento é feito por etapas;
• Entregas menores: Uso de incrementos pequenos de software, entrega de novas funcionalidades em meses ou semanas, ao invés de anos;
• Integração sistêmica continua: Sempre que um incremento está pronto, ele é integrado ao sistema como um todo.
Modelos de Processos de Software >> Ágile
Projetar
Especificar Desenvolver Validar
Arquitetura
Não
Definir Validar
produtos do Completo? Integrar
Sistema
Sistemas
Sim
Entregar
Sistema Final • Processos ágeis são geralmente iterativos
• Seguem uma série de incrementos/entregáveis
• Cada incremento inclui uma nova funcionalidade ao sistema
Modelos de Processos de Software >> Ágile
Vantagens
Para o cliente:
• Scrum
• Crystal
Combinação de Modelos
• Os modelos de processos não são mutuamente exclusivos
• Organizações tendem a combinar partes de diferentes modelos em seus processos
Modelação do Software
Definição
A modelação normalmente utiliza alguma notação gráfica e são apoiadas por ferramentas
CASE
A abstração do sistema de software através de modelos A maior dificuldade nesta atividade está no equilíbrio
que o descrevem é um poderoso instrumento para o (tradeoff) entre simplicidade (favorecendo a comunicação) e
entendimento e comunicação do produto final que será a complexidade (favorecendo a precisão) do modelo.
desenvolvido.
Modelação do Software
Exemplos
• Modelos de Contexto
• BPMN – Adequado para a Modelação de processos de Negócios (Business Process Modelling Notation)
• Modelos de comportamento
• Modelos de Objetos
Ferramentas de Software >> CASE
CASE - Computer-Aided Software Engineering – todas as ferramentas baseadas em computadores que auxiliam atividades de
engenharia de software, desde a análise de requisitos e modelação até programação e testes
Classificação
• Front End ou Upper CASE: Apoia as etapas iniciais de criação dos sistemas: as fases de Planeamento, Análise e desenho
• Back End ou Lower CASE: apoia a codificação testes e manutenção da aplicação.
• Integrated CASE (Horizontais): produtos que cobrem todo o ciclo de vida do software, desde os requisitos do sistema até
o controle final da qualidade
Vantagens Desvantagens
• Deploy
Modelação
Ferramentas
Atividades de Cascata
Métodos Desenvolvimento
Camadas
1. Scrum
2. Programação Extrema (extreme programming - XP)
3. Microsoft Solutions Framework (MSF)