Notes
Engenharia Aula 1

Content of the notes (1)
Page 1
Engenharia de Software
1. Software
O que é Software?
São programas de computador (Conjunto de instruções de máquina). Apresentam documentação que descreve a operação e funcionalidade dos programas. Quando executados provém funcionalidades e performance. Apresentam estruturas de dados que permitem acessar de modo adequado as informações. Podem ser desenvolvidos para um cliente em particular ou para o mercado em geral
Por que concluir um software leva tanto tempo?
Complexidade: Sistemas de software são abstratos e intangíveis. Não é regido pela lei da física, isso os torna complexos, difíceis de serem compreendidos e custosos para serem alterados
Produzir Software é o mesmo que produzir Hardware?
São atividades bem diferentes, em ambas, alta qualidade é obtida por meio de um bom projeto, mas software não se desgasta.
Como o software é produzido?
Software são desenvolvidos, ou seja, não são manufaturados.
Atributos
Deliberar a funcionalidade requerida, atender os requisitos de tempo de resposta, tempo de processamento e utilização de memória, deve ser manutenível e usável, não podem apresentar impactos de ordem física ou econômicas na ocorrência de falhas
Crise do Software
Expressão usada no final dos anos 60, quando a Engenharia de Software era
praticamente inexistente;
O termo expressava as dificuldades de desenvolvimento de software, causadas
principalmente por:
Custos elevados de desenvolvimento;
Comprometimento de prazos;
Baixa qualidade de software;
Requisitos muitas vezes não atendidos;
Projetos difíceis de serem gerenciados;
Códigos difíceis de serem mantidos.
Processos de Software
Atividades
Especificação de Software, onde os clientes e os engenheiros de
software definem a funcionalidade do software que será
produzido e as restrições em sua operação.
Projeto e Implementação do Software, onde o software é
projetado e programado para atender a especificação.
Validação, onde o software é checado para assegurar que
atende aos requisitos do cliente.
Evolução, onde o software é modificado para atender
necessidades mutáveis do cliente e do mercado.
Qual a diferença entre processo, método e ferramenta?
Processo:
Apresenta o passo-a-passo para o desenvolvimento e manutenção do
software (conjunto de atividades, framework).
Corresponde a uma estrutura geral no qual os métodos e as ferramentas
são empregadas.
Métodos:
Descreve como fazer um determinado passo do processo.
Corresponde aos “Hows-To”.
Ferramenta:
São elementos que tornam mais rápida a execução
dos métodos
Qual é o processo?
1. Coloque o leite em uma panela, junte a farinha
de trigo, a margarina, a gema e o sal.
2. Leve ao fogo e mexa bem com um garfo, até
soltar a massa da panela.
3. deixe esfriar, faça bolinhas, recheie com um
pedacinho de queijo.
4. passe em clara de ovo só misturada e na farinha
de rosca.
5. Leve à frigideira e frite em óleo bem quente
TODO O TEXTO É O PROCESSO.
Qual é o métod ?
1. Coloque o leite em uma panela, junte a farinha de trigo, a
margarina, a gema e o sal.
2. Leve ao fogo e mexa bem com um garfo, até soltar a
massa da panela.
3. deixe esfriar, faça bolinhas, recheie com um pedacinho
de queijo.
4. passe em clara de ovo só misturada e na farinha de
rosca.
5. Leve à frigideira e frite em óleo bem quente
Qual é a ferramenta?
1. Coloque o leite em uma panela, junte a farinha de trigo, a
margarina, a gema e o sal.
2. Leve ao fogo (no fogão) e mexa bem com um garfo, até
soltar a massa da panela.
3. deixe esfriar, faça bolinhas, recheie com um pedacinho
de queijo.
4. passe em clara de ovo só misturada e na farinha de
rosca.
5. Leve à frigideira e frite em óleo bem quente
Modelos de Processos de Software
Correspondem aos paradigmas de desenvolvimento de software. Os primeiros Modelos de Processos de Software foram propostos para trazer
ordem ao caos existente na área de desenvolvimento de software (Crise de
Software). Esses modelos tradicionais trouxeram uma importante contribuição à área
de Engenharia de Software. Mas, software evolui com mudanças e por isso, modelos deve haver um
compromisso entre ordem e flexibilidade para se produzir software.
Modelo Cascata:
Requisitos de um problema são bem conhecidos. Abordagem sequencial e sistemática para o desenvolvimento
do software. Inicia-se com o levantamento de necessidades, avançando pelas
fases de planejamento, modelagem, construção, implantação e
suporte contínuo ao software concluído. Paradigma mais antigo da Engenharia de Software.
Por que esse Nome?
As transições de uma atividade para outra se assemelham
a uma cascata. Esse modelo também é chamado “ciclo de vida clássico de
software”
Quais os Estágios ou fases?
Definição e Análise de Requisitos, Projeto do Software, Implementação e Testes de Unidade, Integração e Testes de Sistema, Operação e Manutenção
Desafios:
O principal desafio do modelo cascata é a dificuldade de
acomodar mudanças após o processo estar em execução.
Aplicação
O modelo é apropriado em sistemas nos quais os requisitos são
bem compreendidos e alterações do escopo do sistema estarão
limitadas durante a fase de design.
Poucos sistemas de negócios têm requisitos estáveis
Desenvolvimento Incremental:
Em várias situações, os requisitos iniciais do software são razoavelmente
bem definidos. Ao invés de liberar o sistema em uma única entrega, particiona-se o
desenvolvimento e a entrega é feita em incrementos. Cada incremento conta com uma funcionalidade do sistema. Requisitos do usuário são priorizados. Incrementos iniciais contém
implementações dos requisitos de prioridade mais alta. Frequentemente, o incremento inicial é um produto essencial, onde os requisitos básicos são
atendidos, porém, muitos recursos complementares ainda não são entregues. Esse produto essencial é utilizado pelo cliente que pode fazer uma avaliação detalhada. Como resultado da avaliação, desenvolve-se um planejamento para implementar-se o
próximo incremento. Foco do modelo é voltado para a entrega de um produto operacional em cada incremento.
Útil no planejamento das equipes de trabalho. (equipes podem evoluir com a aprovação dos
incrementos...)
Desenvolvimento Evolucionário
Software evolui com o tempo. Conforme o desenvolvimento do projeto avança, as necessidades de
negócio e de produto podem mudar, tornando inadequado o fluxo
linear de atividades. Nessas situações, deve-se usar um modelo de processo que tenha sido
projetado para desenvolver software que evolua com o tempo. Modelos evolucionários são iterativos.
Como desenvolver um software que evolui ao longo do tempo ?
Prototipação
Cliente pode definir apenas uma série de objetivos gerais para o
software. Cliente pode não identificar – detalhadamente – os requisitos para
funções e recursos do software. Em outras situações, o desenvolvedor pode não estar suficientemente
seguro quanto à diversas questões relacionadas ao desenvolvimento do
software. Nessas situações, um protótipo é a melhor abordagem.
Auxilia os interessados na compreensão do que será construído.A partir dos aspectos visíveis do software, define-se um “projeto
rápido”, com layout da interface com o usuário, formatos de tela,
relatórios, etc. O protótipo é avaliado pelos envolvidos que – a partir de feedbacks –
permite que se aprimore (refinamento) dos requisitos. (Requisitos
obscuros podem ser elicitados) Protótipo pode servir como “primeiro sistema”, podendo ser também
descartáveis.
Modelo Espiral
Modelo de processo evolucionário que acopla a natureza iterativa da
prototipação com os aspectos sistemáticos e controlado do modelo
cascata.
O software é desenvolvido em uma série de versões evolucionárias.
Engenharia de Software Orientada a Reuso
Na maioria dos projetos de software, há algum reuso de software.
Isto ocorre de maneira informal, onde pessoas têm conhecimento de
designs ou código similar ao que estão necessitando.
Recentemente, o processo de desenvolvimento de software focado no
reuso de software existente tem sido largamente usado.
Esse modelo baseia-se numa larga base de componentes de software
reusável e em um framework de integração para a composição desses
componentes.
Estágios do Processo
Análise de Componentes – A partir da especificação, pesquisa-se por
componentes que possam implementá-la. Modificação de Requisitos – Modifica-se os requisitos à luz dos componentes
descobertos. Caso seja impossível essa modificação, volta-se para o estágio
anterior e pesquisa-se soluções alternativas. Design do Sistema com reuso – Reusa-se um framework existente ou
desenha-se um framework. Se componentes reusáveis não estiverem
disponíveis, novo software pode ser desenhado.
Exemplos - Componentes de Software
Web Services que são desenvolvidos de acordo com padrões de
serviços e são disponíveis para invocação remota.
Collections de objetos que são desenvolvidos como packages para
serem integrados com um framework de componentes tais como
.NET ou JEE.
