Introdução à Engenharia de Software
Introdução à Engenharia de Software
Introdução à Engenharia de Software
Agenda
Introdução
Conceitos Básicos
Responsabilidade Profissional e Ética
Bibliografia
Introdução à Engenharia de Software
Introdução
Objetivos
Introduzir a Engenharia de Software e explicar a sua importância Responder questões importantes sobre a Engenharia de Software Introduzir questões profissionais e éticas sobre a Engenharia de
Introdução à Engenharia de Software
Introdução
A evolução do poder computacional permitiu um aumento na possibilidade
de novas aplicações, o que aumentou a complexidade dos softwares
desenvolvidos.
As economias de todas as nações desenvolvidas são dependentes de
software.
Mais e mais sistemas são controlados por software.
Engenharia de software está relacionada com teorias, métodos e
ferramentas para o desenvolvimento profissional de software (custo baixo
e alta qualidade).
Introdução à Engenharia de Software
Conceitos Básicos
Software
Programas de computadores, suas configurações e suas documentações Produtos de software podem ser desenvolvidos para um cliente em
particular ou podem ser desenvolvidos para o mercado em geral
Produtos de software podem ser
Genérico: desenvolvido para ser vendido para uma grande quantidade de
clientes
Sob Encomenda: desenvolvido para um cliente em particular, seguindo
especificações particulares
Software é abstrado e intangível
Não é limitado por materiais ou controlado por leis físicas ou por
Introdução à Engenharia de Software
Conceitos Básicos
Engenharia de Software
É uma disciplina da engenharia que se preocupa com todos os aspectos
da produção de software
Desenvolvimento de software Gestão do projeto de software
Desenvolvimento de ferramentas, métodos e teorias que apóiem a produção
de software
Os engenheiros de software devem adotar uma abordagem sistemática e
organizada em seu trabalho e usar técnicas e ferramentas apropriadas aos problemas a serem resolvidos, às restrições de desenvolvimento e de recursos disponíveis
Introdução à Engenharia de Software
Conceitos Básicos
Engenharia de Software X Ciência da Computação
A ciência da computação se preocupa com as teorias e fundamentos
referentes aos computadores e sistemas de software.
A engenharia de software se preocupa com os problemas práticos da
produção de software
Teorias da ciência da computação nem sempre podem ser aplicadas a
Introdução à Engenharia de Software
Conceitos Básicos
Engenharia de Software X Engenharia de Sistemas
A engenharia de sistemas se preocupa com todos os aspectos do
desenvolvimento de sistemas baseados em computadores, incluindo hardware, software e processo. A engenharia de software é parte deste processo
Os engenheiros de sistemas estão envolvidos nas especificações dos
sistemas, nos projetos arquiteturais e nos desenvolvimentos e integrações dos sistemas
Introdução à Engenharia de Software
Conceitos Básicos
Processos de Software
Um conjunto de atividades que objetivam o desenvolvimento ou evolução
de software
Atividades fundamentais em todos os processos de software são:
Especificação: o que o sistema deve fazer e as restrições de desenvolvimento Desenvolvimento: construção do sistema de software
Validação: checagem de que software é o que o cliente quer
Evolução: alteração do software em resposta a mudanças no negócio do
Introdução à Engenharia de Software
Conceitos Básicos
Modelo de Processos de Software
Uma representação simplificada de um processo de software,
apresentada sobre uma determinada perspectiva
Exemplo de perspectivas de processos são:
Modelo de workflow: mostra uma seqüência de atividades
Modelo de fluxo de dados ou de atividade: um conjunto de atividades que
realizam alguma transformação de dados
Modelo papel/ação: mostra os papéis e as tarefas que elas devem realizar
Modelos gerais ou paradigmas (ciclos de vida)
Introdução à Engenharia de Software
Conceitos Básicos
Custos de Engenharia de Software
Aproximadamente 60% dos custos são custos de desenvolvimento, 40%
são custos de testes. Para softwares personalizados, os custos da evolução frequentemente excedem os custos de desenvolvimento
Os custos variam dependendo do tipo do sistema em desenvolvimento e
dos atributos de sistema, tais como desempenho e confiabilidade
A distribuição do custo dependem do modelo (ciclo de vida) de
Introdução à Engenharia de Software
Conceitos Básicos
Métodos de Engenharia de Software
É uma abordagem estruturada para o desenvolvimento de software,
cujo objetivo é facilitar a produção de software de alta qualidade, apresentando uma boa relação custo/benefício
Análise Estruturada (Orientado às funções) e Análise Orientada a Objetos
Componente de um método:
Descrição do modelo: descrições dos modelos de sistema a serem
desenvolvidos e a notação utilizada para definir esses modelos
Regras: restrições que sempre se aplicam a modelos de sistemas
Recomendações: Heurísticas que caracterizam a boa prática de projeto nesse
Introdução à Engenharia de Software
Conceitos Básicos
CASE (
Computer-Aided Software Engineering – Engenharia de Software com auxílio de Computador)
Sistema de Software que têm o objetivo de prover suporte automatizado
às atividades de um processo de software. Ferramentas CASE são freqüentemente usadas para dar suporte a métodos
Upper-CASE:
Ferramentas que dão suporte as atividades iniciais de um processo, como
requisitos e projetos
Lower-CASE:
Ferramentas que dão suporte as atividades finais de um processo, como
Introdução à Engenharia de Software
Conceitos Básicos
Atributos de um bom software
Os produtos de software têm uma série de atributos que refletem a
qualidade do software
O software deve atender aos atributos necessários ao negócio do cliente,
como funcionalidade e desempenho
Manutenibilidade
O software deve ser fácil de manter: corrigir e evoluir
Confiabilidade
O software deve ser seguro, confiável, tolerante a erros
Introdução à Engenharia de Software
Conceitos Básicos
Principais desafios enfrentados pela Engenharia de Software
Heterogeneidade
Sistemas são distribuídos e abertos à integração com outros computadores e
incluem um mistura de hardwares e softwares
Entrega
Existem uma pressão crescente para entregas rápidas de software e
mudanças constantes
Confiança
Como os software estão relacionados a todos os aspectos da nossa vida, é
Introdução à Engenharia de Software
Responsabilidade Profissional e Ética
Construir software compreende mais que simplesmente a aplicação de
técnicas e habilidades. Os engenheiros de software devem ser honestos e
éticos
O comportamento ético é mais que a aplicação correta da lei, como em:
Confidencialidade: guardar confidencia quando as informações dos
clientes e das empresas
Competência: não aceitar serviços que não possam executar
Direitos de propriedade intelectual: obedecer as leis de propriedade
intelectual, patentes de direitos autorais