Title: Engenharia de Software Respostas do Question
1Engenharia de SoftwareRespostas do
Questionário 01
2Engenharia 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.
3Custo 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.
4Questões freqüentes sobre engenharia de software
- O que é software?
- O que é engenharia de software?
- Qual é a diferença entre engenharia de software e
ciência da computação? - Qual é a diferença entre engenharia de software e
engenharia de sistemas? - O que é processo de software?
- O que é modelo de processo de software?
- O que são métodos da engenharia de software?
- Quais são os custos da engenharia de software?
- O que é Ferramenta CASE (Computer-Aided Software
Engineering)? - Quais os atributos de um bom software?
- Quais os desafios chave enfrentados pela
engenharia de software?
51. 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).
62. 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).
73. 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
infra-estrutura 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.
84. 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.
95. 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.
10Exemplos 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) - Para projetos realizados individualmente ou por
pequenas equipes, com duração de seis meses a um
ano. - XP eXtreme Programming
- 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
116. 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)
127. 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
13Associações entre Modelos, Métodos, Processos,
Fases, Artefatos e Projetos
148. 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.
159. 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).
1610. 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
- Software deve poder ser alterado para atender as
mudanças de necessidades. - Segurança e Confiabilidade
- Software deve ser confiável e seguro física e
logicamente. - Eficiência
- 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.
1711. 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
- Antigos, mas ainda úteis são os sistemas que
devem ser mantidos e aprimorados - Heterogeneidade
- 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.
18Sí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).
19Sí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.