190 likes | 291 Views
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.
E N D
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 • 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?
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 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.
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) • 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
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 • 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.
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.
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, eXtremeProgramming – 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.