Engenharia de Software
Respostas do Questionário 01
Engenharia de Software




As economias de todos os países desenvolvidos são
dependentes de software.
Mais e mais sistemas são controlados por software.
Engenharia de software preocupa-se com as teorias,
modelos, métodos, processos e ferramentas para os
desenvolvedores de software.
As despesas com software representam uma fração
significativa do PIB em todos os países desenvolvidos.
Custo de Software



O custo de software geralmente domina o custo dos
sistemas e o custo de software em um PC geralmente
são maiores que o custo de hardware.
Software custa mais para ser mantido do que para ser
desenvolvido. Para sistemas com um ciclo de vida
longo, o custo de manutenção é muitas vezes superior
ao custo de desenvolvimento.
A engenharia de software preocupa-se com o custo
efetivo do desenvolvimento de software.
Questões freqüentes sobre
engenharia de software
1. O que é software?
2. O que é engenharia de software?
3. Qual é a diferença entre engenharia de software e ciência da
computação?
4. Qual é a diferença entre engenharia de software e engenharia de
sistemas?
5. O que é processo de software?
6. O que é modelo de processo de software?
7. O que são métodos da engenharia de software?
8. Quais são os custos da engenharia de software?
9. O que é Ferramenta CASE (Computer-Aided Software
Engineering)?
10. Quais os atributos de um bom software?
11. Quais os desafios chave enfrentados pela engenharia de software?
1. O que é software?


Programas de computador e toda a documentação a
eles associada.
Produtos de software podem ser desenvolvidos para um
cliente em particular (personalizados) ou podem ser
desenvolvidos para o mercado em geral (genéricos).
2. O que é engenharia de software?



É uma disciplina da engenharia que se ocupa de todos
os aspectos da produção e da manutenção de software.
Tem engenheiros de software como protagonistas.
Os engenheiros de software devem adotar uma
abordagem sistemática e organizada ao seu trabalho e
devem usar ferramentas e técnicas apropriadas,
dependendo do problema a ser resolvido, das restrições
e dos recursos disponíveis (premissas).
3. Qual é a diferença entre engenharia de
software e ciência da computação?



Ciência da Computação se ocupa da teoria e dos
fundamentos; engenharia de software se ocupa das
práticas para desenvolver e entregar software de
qualidade.
As teorias da Ciência da Computação são insuficientes
para atuar como suporte completo à Engenharia de
Software.
São complementares, pois a primeira fornece infraestrutura de software para que a segunda se ocupe da
solução de problemas complexos de alto nível que
requerem uma solução baseada em software.
4. Qual é a diferença entre engenharia de
software e engenharia de sistemas?



Engenharia de Sistemas (suportados por computador)
se ocupa de todos os aspectos do desenvolvimento de
sistemas baseados em computadores, incluindo
hardware, software, peopleware e o processo de
engenharia.
Engenheiros de Sistemas cuidam da especificação,
desenho arquitetônico, integração e desenvolvimento
de sistemas.
A Engenharia de Sistemas é anterior a Engenharia de
Software.
5. O que é processo de software?


É um conjunto de atividades cujo objetivo é desenvolver ou evoluir
um produto de software.
Atividades que fazem parte de todos os processos (de
desenvolvimento) de software:
•
•
•
•


Especificação – o que o sistemas deve fazer e quais as suas
restrições (requisitos).
Desenvolvimento – produção de um software.
Validação – verificar que o software é o que o cliente deseja.
Evolução – modificar o software em resposta às novas demandas.
Define o ciclo de vida (fases) de um software, usando modelos e
métodos de software.
Trata-se de uma metodologia para desenvolver software.
Exemplos de Processos de
Software



Processo Unificado (Jacobson, Booch, Rumbaugh)
RUP – Rational Unifided Process (Rational/IBM)
PRAXIS – Processo para Aplicativos eXtensíveis
InterativoS (Wilson de Pádua Paula Filho)
•

XP – eXtreme Programming
•


Para projetos realizados individualmente ou por pequenas
equipes, com duração de seis meses a um ano.
Projetos cujos requisitos mudam com muita freqüência,
orientados a objetos, desenvolvido por equipes de até 12
desenvolvedores, com processo incremental (ou interativo).
SEA UP (SEA Tecnologia)
MetoDeS – Desenvolvida por Alunos como TCC
6. O que é modelo de processo de
software?


Uma representação simplificada e abstrata de um processo de
software, apresentada a partir de uma perspectiva específica.
Exemplos de perspectivas de processo são:
•
•
•

Workflow (fluxo de trabalho) – seqüência de atividades
Data-flow (fluxo de dados) – fluxo de informações
Role/action (papeis e ações) – quem faz o quê
Modelos de Processos Abstratos são:
•
•
•
•
•
•
Cascata
Evolucionário
Incremental
Transformação Formal
Integração a partir de componentes reutilizáveis
Modelos ágeis (como eXtreme Programing)
7. O que são métodos de engenharia de
software?

Os métodos, de acordo com o SWEBOK, Capítulo
10, são:
•
•
•
•


Abordagem Estruturada
Orientada a Dados
Orientada a Objetos
Baseado em Protótipos
Descrevem modelos, gráficos, diagramas, notações,
regras, restrições, práticas de desenho,
Orientam o processo, recomendando práticas mais
adequadas e atividades a serem seguidas
Associações entre Modelos, Métodos,
Processos, Fases, Artefatos e Projetos
8. Quais os custos da engenharia de
software?




Aproximadamente 60% do custo está no desenvolvimento e 40%
está nos testes. Para software customizado, o custo de evolução
quase sempre supera o custo de desenvolvimento.
Custos variam em função do tipo de sistema que está sendo
desenvolvido e dos requisitos, incluindo performance e nível de
disponibilidade.
Custos de distribuição dependem do modelo de processo de
desenvolvimento usado.
O processo de engenharia de software em si, assim como
qualquer processo de gestão e planejamento, tem um custo e é
importante que os stakeholders estejam a par deles.
9. O que é CASE (Computer-Aided
Software Engineering)?


Sistemas de Software que servem para dar suporte
automatizado às atividades do processo. Ferramentas
CASE devem ser sempre usadas.
Upper-CASE
•

Ferramentas para suportar as atividades desde o início do
processo, incluindo requerimentos e desenho (Jude, DB
Designer, Power Design, Rational Rose).
Lower-CASE
•
Ferramentas para suportar as atividades finais como
programação e depuração e teste de programas (Netbeans,
Eclipse, Ant, JUnit).
10. Quais os atributos de um bom
software?


O software deve fornecer as funcionalidades
requeridas e atender aos requisitos não funcionais
de performance, segurança, confiabilidade,
usabilidade, manutenibilidade, entre outros.
Manutenibilidade
•

Segurança e Confiabilidade
•

Software deve ser confiável e seguro física e
logicamente.
Eficiência
•

Software deve poder ser alterado para atender as
mudanças de necessidades.
Software não deve desperdiçar recursos do sistema.
Usabilidade
•
Software deve ser de fácil utilização para os usuários
para os quais foi desenhado.
11. Quais os grandes desafios da
engenharia de software?


Lidar com sistemas legados, com a cada vez maior
diversidade de tecnologias e demandas por menores
tempos de entrega.
Sistemas Legados
•

Heterogeneidade
•

Antigos, mas ainda úteis são os sistemas que devem ser
mantidos e aprimorados
Os sistemas são distribuídos para várias plataformas e incluem
uma composição de hardware e software.
Entrega
•
Existe forte e crescente pressão para uma entrega mais rápida,
muitas vezes com clientes subestimando a complexidade.
Síntese




Engenharia de Software ocupa-se de todos os aspectos da
produção de software.
Produtos de software consistem de programas (desenvolvidos sob
encomenda ou não) e toda a documentação associada.
Características essenciais são manutenibilidade, segurança e
confiabilidade, eficiência e usabilidade.
O processo de software (ou metodologia) consiste em atividades
que fazem parte de desenvolvimento de produtos de software. As
atividades básicas são: especificação e análise, desenho e
construção, teste e validação e evolução (RUP, PRAXIS, Processo
Unificado, eXtreme Programming – XP, METODES, PDS).
Métodos são maneiras organizadas de produzir software. Incluem
sugestões a serem seguidas, notações, regras, modelos, orientando
o processo de desenvolvimento (Estruturada, Orientada a Dados,
Orientada a Objetos, Baseada em Protótipos).
Síntese


Ferramentas CASE são sistemas de software desenhados para dar
suporte a atividades do processo de software como: organização de
requisitos, produção e consistência de diagramas, rastreamento,
codificação e teste de programas.
Os Engenheiros de Software devem ir além dos aspectos técnicos,
pois, como nos ensina a Teoria Geral de Sistemas, os sistemas são
abertos, influenciando e sendo influenciados pelo meio onde estão
inseridos.
Download

Respostas - vqv.com.br