engenharia de software respostas do questionário 01

19
Engenharia de Software Respostas do Questionário 01

Upload: cora-schroeder

Post on 31-Dec-2015

22 views

Category:

Documents


0 download

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

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.