Engenharia de Software Respostas do Questionário 01

19
Engenharia de Software Respostas do Questionário 01

description

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. - PowerPoint PPT Presentation

Transcript of Engenharia de Software Respostas do Questionário 01

Page 1: Engenharia  de  Software Respostas do Questionário 01

Engenharia de Software

Respostas do Questionário 01

Page 2: Engenharia  de  Software Respostas do Questionário 01

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.

Engenharia de Software

Page 3: Engenharia  de  Software Respostas do Questionário 01

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.

Custo de Software

Page 4: Engenharia  de  Software Respostas do Questionário 01

Questões freqüentes sobre engenharia de software1. 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?

Page 5: Engenharia  de  Software Respostas do Questionário 01

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).

Page 6: Engenharia  de  Software Respostas do Questionário 01

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).

Page 7: Engenharia  de  Software Respostas do Questionário 01

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 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.

Page 8: Engenharia  de  Software Respostas do Questionário 01

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.

Page 9: Engenharia  de  Software Respostas do Questionário 01

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.

Page 10: Engenharia  de  Software Respostas do Questionário 01

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)• 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

Page 11: Engenharia  de  Software Respostas do Questionário 01

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)

Page 12: Engenharia  de  Software Respostas do Questionário 01

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

Page 13: Engenharia  de  Software Respostas do Questionário 01

Associações entre Modelos, Métodos, Processos, Fases, Artefatos e Projetos

Page 14: Engenharia  de  Software Respostas do Questionário 01

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.

Page 15: Engenharia  de  Software Respostas do Questionário 01

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).

Page 16: Engenharia  de  Software Respostas do Questionário 01

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• 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.

Page 17: Engenharia  de  Software Respostas do Questionário 01

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• 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.

Page 18: Engenharia  de  Software Respostas do Questionário 01

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).

Page 19: Engenharia  de  Software Respostas do Questionário 01

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.