40
Conceitos Básicos de Engenharia de Software Objetivo ......... compreender o que é Engenharia de Software e por que ela é importante saber as respostas de perguntas importantes que proporcionam uma introdução à Engenharia de Software compreender questões profissionais e éticas relevantes para os engenheiros de software

FSI_Modulo I - Conceitos Básicos de Engenharia de Software

  • Upload
    ferluge

  • View
    48

  • Download
    7

Embed Size (px)

Citation preview

Page 1: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

1

Conceitos Básicos de Engenharia de Software

Objetivo .........

• compreender o que é Engenharia de Software e por que ela é importante

• saber as respostas de perguntas importantes que proporcionam uma introdução à Engenharia de Software

• compreender questões profissionais e éticas relevantes para os engenheiros de software

Page 2: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

2

Roteiro.........

• O que é um Software ?• Engenharia de Software• Engenharia de Sistemas• Processos de Desenvolvimento• Métodos x Técnicas X Ferramentas• Mitos da Engenharia de Software• Princípios Éticos

O que é um Software ?Definições Preliminares

• Definição

• Impacto Econômico

• Características do Software

• Tipos de Software

Page 3: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

3

• Software é o conjunto de programas, procedimentos e documentação associados a um sistema; especialmente a sistemas computadorizados (Boehm 1991).

• Software é o conjunto de programas de computador, juntamente com a documentação e os dados de configuração necessários à sua operação (Sommerville 2000).

O que é um Software ? Definição

• Software é o conjunto de programas de computador, juntamente com a documentação e os dados de configuração necessários à sua operação (Sommerville 2000). – Documentação do Sistema– Documentação do Usuário– Sites Web para download de informações

– ENGENHEIROS DE SOFTWARE se ocupam de desenvolver produtos de software

O que é um Software ? Definição

Page 4: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

4

• O Software é um transformador de informação –produzindo, gerando, adquirindo, modificando, exibindo ou transmitindo – que pode ser tão simples quanto um único BIT ou tão complexa quanto uma apresentação em multimídia. ..... O software entrega o mais importante produto de nossa época – a informação. (Pressman).

O que é um Software ? Definição

O que é um Software ? Impacto Econômico

um pouco de História....

Comentários sobre o BUG DO MILÊNIO

Page 5: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

5

“O software de computadores tornou-se uma força motora. É o motor que dirige a tomada de decisão nos negócios. Serve de base à moderna investigação científicas e às soluções de problemas de engenharia. É um fator chave que diferencia produtos e serviços modernos. Está embutido em sistemas de todas as naturezas: de transportes, médicos, de telecomunicações, militares, de processos industriais, de produtos de escritório,.... A lista é quase sem fim. O software é virtualmente inevitável no mundo moderno. E, á medida que entramos no século XXI, irá se tornar um motor para novos avanços em tudo, da educação elementar à engenharia genética.” (Pressman)

O que é um Software ? Impacto Econômico

• Companhias ligadas à Internet compõem um mercado de 500 bilhões de dólares (Pressman 2001).

• No começo dos anos 90 pequenas empresas [.com] foram avaliadas em 1 milhão de dólares antes mesmo de produzirem um único centavo em vendas (Pressman 2001).

O que é um Software ? Impacto Econômico

Page 6: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

6

• Entre 1996 e 2002 o setor de tecnologia da informação (TI) cresceu 26% criando 2,6 milhões de empregos e contribuindo com 6 trilhões de dólares (acumulados) para as economias ao redor do mundo.

• O setor de TI já emprega mais de 9 milhões de pessoas, contribui com mais de US$ 700 bilhões em taxas e cerca de US$ 1 trilhão anuais para a economia mundial.

O que é um Software ? Impacto Econômico

• O setor de TI contribui com cerca de US$1 trilhão anuais para a economia mundial.

O que é um Software ? Impacto Econômico

US$ 930 bilhõesTotal

US$ 420 bilhõesServiços de TI

US$ 180 bilhõesSoftware (pacotes)

US$ 330 bilhõesHardware

Page 7: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

7

• Gastos com TI totalizaram cerca de US$ 2,3 trilhões ao redor do mundo.

Valores em bilhões de dólares

O que é um Software ? Impacto Econômico

4.463,12.302,12.226,7Total

1445,41344,61.282,9Telecomunicações

597,1557,5542,3Serviços de TI

81,876,974,2Software (pacotes)

338,8323,3327,4Hardware

200320022001

• O Software é desenvolvido e não manufaturado no sentido clássico. O software não é afetado por problemas de manufatura.

• A abordagem para a gerência deve ser diferente da adotada para gerenciar projetos de manufatura.

• Em ambos os caso o projeto é essencial para um produto de qualidade.

O que é um Software ? Características

Page 8: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

8

• O Software não desgasta (entretanto, deteriora).

O que é um Software ? Características

DESGASTE

MORTALIDADE INFANTIL

DESGASTE

• O Software não desgasta (entretanto, deteriora).

O que é um Software ? Características

CURVA IDEALIZADA

CURVA REAL

MODIFICAÇÃO

Page 9: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

9

• Apesar da indústria estar se movendo em direção à montagem baseada em componentes, a maior parte do software continua a ser construída sob encomenda.– Componentização – Alguns conceitos ......

• Padronização• Reutilização• Encapsulamento• Exemplo – Padrões de Interface

O que é um Software ? Características

• Todo software possui atributos não funcionais relacionados ao comportamento e às propriedades que ele deve exibir.

Atributos essenciais:

• Manutenível: adequação a mudanças. • Confiável: confiabilidade, segurança, proteção. • Eficiente: economia de recursos. • Usável: facilidade de uso / tempo de resposta.

A relevância de cada atributo depende da aplicação.

Sistemas Bancários -- Segurança. Internet --- Velocidade.

Telefonia -- Confiabilidade.

O que é um Software ? Características

Page 10: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

10

• Problemas no processo produtivo de Softwares complexos:– Atender às expectativas dos Clientes / Usuários– Entregue dentro do prazo estabelecido– Entregue dentro do orçamento estabelecido

O que é um Software ? Características

Engenharia de Software está em um estado de aflição crônica

(Pressman, 1977)

• Genéricos: desenvolvidos para o mercado

• Particulares: desenvolvidos para clientes determinados, internos ou externos à organização que produz o software.

– Sommerville aponta o controle da especificação como um diferenciador determinante.

– A definição do usuário também é um fator importante.

O que é um Software ? Tipos de Software

Page 11: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

11

• Genéricos: desenvolvidos para o mercado (sistemas do tipo stand-alone, produzidos por uma organização de desenvolvimento e vendidos no mercado a qualquer cliente capaz de adquiri-los)– Também chamados de “ pacotes de Sotware”– Exemplo: Gerenciadores de Banco de Dados,

processadores de texto, pacotes de desenho, ferramentas de gerenciamento de projetos etc.

• Particulares: desenvolvidos para clientes determinados, internos ou externos à organização que produz o software.

O que é um Software ? Tipos de Software

Software Básico – Software de SistemasProvêem serviços a outros programas (compiladores, gerenciadores de arquivos, componentes de sistemas operacionais, drivers, etc.). Processam estruturas de informação complexas, interagem com hardware, múltiplos usuários.

Tempo RealSão monitores, analisadores ou controladores de eventos do ambiente que devem ter um baixo tempo de resposta ou reação.

Negócios – Software ComercialEvoluíram para sistemas de informação, consistindo de aplicações integradas atendendo a várias áreas da organização.

O que é um Software ? Tipos de Software

Page 12: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

12

Aplicações científicas e de engenhariaPossuem o foco em algoritmos e estruturas de dados ("trituradores de números")

Software embutidoControla ou é usado por outros produtos.

Computadores pessoaisAgendas, controles de orçamento e finanças, editores de texto, etc.

Aplicações para WebAplicações baseadas na Internet com uso de navegadores.

Inteligência artificialAlgoritmos não numéricos, com uso de lógica, reconhecimento de padrões, etc.

O que é um Software ? Tipos de Software

O que é um Software ?

São programas de computador e a documentação associada.

Produtos de Software podem serdesenvolvidos para um cliente específico

ou para o mercado. (Sommerville)

Page 13: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

13

Engenharia de Software

• Definição

• Engenharia de Software x Ciência da Computação

• Histórico

• Situação Atual

Engenharia de SoftwareDefinição

• Engenharia:– Aplicação da ciência e matemática para tornar as

propriedades da matéria e as fontes de energia na natureza úteis ao homem, na forma de estruturas, máquinas, produtos, sistemas e processos (Boehm).

Page 14: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

14

Engenharia de SoftwareDefinição

• Engenharia de Software:– Aplicação da ciência e matemática para tornar as

capacidades de um equipamento computadorizado úteis ao homem via programas de computador, procedimentos e documentação associada (Boehm).

– É a aplicação de princípios científicos para (1) a transformação ordenada de um problema em uma solução de software e (2) a manutenção subseqüente deste software até o fim de sua vida útil (Davis).

– É uma disciplina da engenharia voltada para todos os aspectos da produção de software desde os estágios iniciais até sua manutenção após ele ter sido colocado em uso (Somerville).

Engenharia de SoftwareDefinição

• Engenharia de Software:– O estabelecimento e uso de sólidos princípios de

engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais (Fritz Bauer (1969)).

– É a área interdisciplinar que engloba vertentes tecnológica e gerencial visando a abordar, de modo sistemático, os processos de construção, implantaçãoe manutenção de produtos de software com qualidade assegurada por construção, seguindo cronogramas e custos previamente definidos(Bruno Maffeo (1992)).

Page 15: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

15

Engenharia de SoftwareDefinição

• Engenharia de Software:– Coleção de técnicas que aplicam uma abordagem de

engenharia à construção e ao suporte de produtos software.

– Atividades da Engenharia de Software = Administração, Orçamento, Planejamento, Modelagem, Análise, Especificação, Projeto, Implementação, Testes, Manutenção.(Fenton &Pfleeger (1997) )

Engenharia de SoftwareDefinição

• Engenharia de Software:– É uma disciplina da engenharia (1) voltada para

todos os aspectos da produção (2) de software desde os estágios iniciais até sua manutenção após ele ter sido colocado em uso (Sommerville).

• (1) Engenheiros sempre procuram descobrir soluções para os problemas, mesmo quando não existem teorias aplicáveis e métodos de apoio. Engenheiros precisam trabalhar com restrições organizacionais e financeiras (soluções dentro de restrições)

• (2) Não se dedica somente aos aspectos técnicos, mas também com o gerenciamento do projeto, desenvolvimento de ferramentas e de métodos que dêem apoio à produção do software.

Page 16: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

16

Engenharia de SoftwareDefinição

OBJETIVO DA ENGENHARIA DE SOFTWARE

Auxiliar no processo de produção de software, de forma que o processo dê origem a produtos de alta qualidade, produzidos mais rapidamente e a um

custo cada vez menor.

Engenharia de SoftwareDefinição

Engenharia de Software é uma disciplinada engenharia que se ocupa detodos os aspectos da produção

de software

Page 17: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

17

Engenharia de Softwareou Ciência da Computação

• Ciência da Computação:– Disciplina científica voltada para as teorias e métodos

capazes de explicar e solucionar os problemas subjacentes aos computadores e sistemas de software.

• Engenharia de Software se dedica aos problemas práticos da produção de software.– Engenheiros de Software devem ter algum

conhecimento em Ciência da Computação da mesma maneira que Física é pré-requisito para Engenheiros Elétricos

• Engenharia sem ciência é arte.

Engenharia de Softwareou Ciência da Computação ?

A Ciência da Computação se ocupa dateoria e dos fundamentos;

a Engenharia de Software trata da praticidade de desenvolver e

fornecer software útil.

Page 18: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

18

Engenharia de SoftwareHistórico

Os primeiros anos (50 - meados anos 60) ...Hardware tinha maior importânciaUso do software pelo próprio Programador ou pela OrganizaçãoProjeto existia apenas no cérebro de alguémDocumentação não existia(maioria das vezes)

Segunda era (meados anos 60 - fim década 70)Software como produto Surgia as “softwarehouses”Softwares distribuídos para centenas/milhares de usuários

Engenharia de SoftwareHistórico

surge o conceito da Manutenção de Software ... para

correção de falhasalterações das especificações do usuárioadaptações a novos hardwares

... e com a Manutenção ...os grandes gastos com manutenção as dificuldades em fazer manutenção nos softwares de natureza “personalizada”

Page 19: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

19

Engenharia de SoftwareHistórico

Terceira era (meados da década de 70 - hoje)Redes locais e globais Crescente demanda de acesso “instantâneo”Microprocessadores, computadores pessoais e poderosasworkstations.Microprocessador amplo conjunto de produtos inteligentes(microondas, automóveis, aparelhos médicos ...)Vendas de dezenas/centenas de milhares de cópiasSoftware passa a ser a diferença

Engenharia de SoftwareHistórico

Quarta era (meados de 85 - hoje)Tecnologias orientadas a objetosSistemas especialistas e Softwares de inteligência artificial saíram do papel

Intensificação dos problemas associadosao software de computador.

Page 20: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

20

Engenharia de SoftwareHistórico

• Os problemas e dificuldades para a construção de software adequado existem desde que se começou a construir software.

O termo foi cunhado por ocasião de duas importantes conferências para discutir a “Crise do Software":

• 1969 Conferência da NATO • 1970 Conferência da NATO

Engenharia de SoftwareHistórico

• 1969 Conferência da NATO • 1970 Conferência da NATO

– Encontros para discutir a chamada “ Crise do Software”

– Introdução de novo hardware– Os custos de hardware caiam enquanto os de

software subiam rapidamente– Software passava a apresentar um crescente custo

em relação ao sistema– Software passava a ser bem maior e mais complexo– A abordagem informal de desenvolvimento de

software não estava atendendo

Page 21: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

21

• A sofisticação do software ultrapassou nossa capacidade de construir um software que extraia o potencial do hardware.

• Nossa capacidade de construir programas não pode acompanhar o ritmo da demanda de novos programas.

• Nossa capacidade de manter os programas existentes é ameaçada por projetos ruins e recursos inadequados.

[PRESSMAN]

Como conseguir SOLUÇÕES para esses problemas ?

Engenharia de SoftwareSituação Atual

• Sistemas de software invadiram nossas vidas e o correto/incorreto funcionamento deles pode ser a diferença entre a vida e a morte.

• ( espaçonaves, aeronaves, trens, carros, reatores nucleares, equipamentos hospitalares ... )

Outros tipos de problemas:• Fábrica de software em fase de envelhecimento.

Sistemas de 20 anos, onde pequenas novas modificações fazem com que o mesmo falhe.Sistemas críticos, mas que ninguém conhece a estrutura interna.Sistemas de comportamento estranho - não há nada que os substitua.

Engenharia de SoftwareSituação Atual

Page 22: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

22

• Não dedicamos tempo para coletar dados sobre o processo de desenvolvimento de software. Sem histórico, as estimativas têm sido “a olho” resultados ruins.

• Comunicação entre o cliente e o desenvolvedor é fraca Insatisfação do cliente com o sistema “pronto” éfreqüente.

• Uso indevido ou insuficiente de testes máqualidade de software

Dificuldades atuais ...Para pensar ...

Engenharia de SoftwareSituação Atual

Engenharia de Sistemas

• Disciplina da engenharia voltada para o desenvolvimento e evolução de todos os aspectos de sistemas complexos (em que o software é parte importante).

• Aspectos– Hardware– Políticas e procedimentos– Processos e atividades– Instalação e infra-estrutura– Software

• Atividades– Especificação do sistema– Definição da arquitetura– Integração das partes (componentes)

• Existe uma preocupação menor com a engenharia das partes (i.e., como os componentes são desenvolvidos).

Page 23: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

23

Engenharia de Sistemasx

Engenharia de Software

A ENGENHARIA DE SISTEMAS se ocupa todos os aspectos relacionados ao

desenvolvimento de sistemas com base em computadores, incluindo hardware, software,

e engenharia de processos.A ENGENHARIA DE SOFTWARE

é parte deste processo.

Processos de Desenvolvimento

• Fases

• Custo

• Modelos

Page 24: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

24

Processos de DesenvolvimentoFases

• Conjunto de atividades (e regras de execução) voltadas

para a produção de software.

ATIVIDADESFASES

Evolução

PlanejamentoElaboraçãoExecução

Teste

ConcepçãoCodificaçãoTeste

Construção

ConcepçãoElaboraçãoDefinição

Projeto

ElicitaçãoAnáliseDefinição

Especificação

Veri

fica

ção

e Va

lidaç

ão

Ger

enci

amen

toProcessos de Desenvolvimento

Custo• Desenvolvimento tradicional (15-25-20-40)

• Desenvolvimento evolucionário (10-60-30)•

• Esforço (homens-mês) (40-20-40)

– Análise requisitos: de 10 a 25% do esforço total.– Projeto: de 20 a 25% do esforço total.– Codificação: de 15 a 20% do esforço total. – Teste: de 30 a 40% do esforço total

ESPECIFICACAO PROJETO DESENVOLVIMENTO TESTES

ESPECIFICACAO DESENVOLVIMENTO TESTES

ESPECIFICACAO & PROJETO CODIFICACAO TESTES

Page 25: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

25

Processos de DesenvolvimentoCusto

• A exemplificação anterior é válida para softwares personalizados (especificado por um cliente e desenvolvimento por uma empresa de software contratada)

• Existem outros Custos que poderiam ser analisados como, por exemplo:– CUSTOS DE EVOLUÇÃO DE SOFTWARE– CUSTOS DE DESENVOLVIMENTO DE PRODUTOS

Processos de DesenvolvimentoModelos

• Descrição simplificada de um processo de desenvolvimento enfocando uma perspectiva particular.

• Perspectivas comuns:

mostra os papéis desempenhados pelas pessoas.

Papéis-ação

mostra a transformação dos dados (detalhamento das atividades).

Fluxo de dados(atividades)

mostra a seqüência de atividades, com suas entradas, saídas e dependências.

Workflow

Page 26: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

26

Métodos x Técnicas x Ferramentas

• Conceitos

• Métodos, Técnicas e Ferramentas

• Ferramentas

Métodos x Técnicas x FerramentasConceitos

Processo de Software.

Princípios são importantes para o sucesso no desenvolvimento de softwares, mas não são suficientes

para obter produtos de qualidade. É preciso aliar MÉTODOS, TÉCNICAS e FERRAMENTAS apropriadas para se aplicar os princípios no processo de produção

de softwares

Page 27: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

27

Métodos x Técnicas x FerramentasConceitos

• Princípios da Engenharia de Software.

Rigor e Formalidade - O processo de software éuma atividade criativa tendendo naturalmente àimprecisão. O rigor é a abordagem que produz produtos mais confiáveis pelo controle das variáveis envolvidas. Formalidade é o requisito de que o processo seja dirigido e avaliado por leis matemáticas

Métodos x Técnicas x FerramentasConceitos

• Princípios da Engenharia de Software.

Rigor e FormalidadeSeparação de Conceitos (Abstração) - Separar conceitos permite-nos trabalhar com aspectos individuais e diferentes de um mesmo problema. Esta separação facilita o entendimento, focando a atenção em certas características mais significativas

Page 28: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

28

Métodos x Técnicas x FerramentasConceitos

• Princípios da Engenharia de Software.

Rigor e FormalidadeSeparação de Conceitos (Abstração)Modularidade - Consiste na divisão de sistemas complexos em partes menores e mais simples (módulos) com características desejáveis (coesão e acoplamento). Decomposição é o ato de dividir um problema original em subproblemas recursivamente. Composição é o ato de juntar os elementos componentes de um problema até chegar ao sistema completo. Ajuda na manutenção do sistema

Métodos x Técnicas x FerramentasConceitos

• Princípios da Engenharia de Software.

Rigor e FormalidadeSeparação de Conceitos (Abstração)ModularidadeGeneralidade/Especialidade - Soluções genéricas tendem a ser mais caras em termos de recursos e em tempo de desenvolvimento, ao contrário das soluções específicas. No processo de produção de software estas questões devem ser cuidadosamente analisadas

Page 29: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

29

Métodos x Técnicas x FerramentasConceitos

• Princípios da Engenharia de Software.

Rigor e FormalidadeSeparação de Conceitos (Abstração)ModularidadeGeneralidade/EspecialidadeAntecipação de Mudanças - Sistemas de softwares são desenvolvidos enquanto seus requisitos ainda são estão totalmente claros. Quando o sistema éfinalmente liberado, novos requisitos podem ser descobertos e velhos requisitos atualizados através do “feedback” do usuário

Métodos x Técnicas x FerramentasConceitos

• Princípios da Engenharia de Software.

Rigor e FormalidadeSeparação de Conceitos (Abstração)ModularidadeGeneralidade/EspecialidadeAntecipação de MudançasIncrementabilidade - Caracteriza o processo em modo passo a passo, incrementalmente. O objetivo desejado é atingido por aproximações sucessivas. Útil quando os requisitos iniciais não foram todos obtidos antes do início do desenvolvimento da aplicação

Page 30: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

30

Métodos x Técnicas x FerramentasConceitos

Processo de Software.

Os princípios de Engenharia de Software parecem abstratos, mas tornam-se

concretos quando aplicados no processo de produção do software.

Métodos x Técnicas x FerramentasConceitos

Processo de Software.

Na Análise de Sistemas é possível utilizar o rigorpelo uso de modelagem, a separação de

conceitos na construção de modelos que tratam de aspectos distintos como funções e fluxo de informações, a abstração na construção dos modelos. No projeto é interessante o uso de

princípios como rigor e formalidade na implementação e documentação dos modelos

criados na análise, modularidade na construção do sistema e incrementabilidade nos testes

Page 31: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

31

Métodos x Técnicas x FerramentasConceitos

Conjunto de procedimentos bem definidos para a execução de uma tarefa.

Técnica

Conjunto sistematizado de procedimentos, juntamente com regras e orientações de uso, para a execução de certa atividade.

Método

Métodos x Técnicas x FerramentasConceitos

• Observe que a diferenciação entre método e técnica nem sempre é clara, podendo haver situações onde as palavras método e técnica são usadas indistintamente, dependendo do autor.

• Ambos são orientações de "como fazer".

• Em geral a descrição de uma técnica exige uma precisão maior, com o método podendo conter orientações mais vagas.

• Em geral, método se aplica a procedimentos mais amplos e abrangentes (atividades) e técnica a procedimentos mais restritos (tarefas).

Page 32: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

32

Métodos x Técnicas x Ferramentas

• Métodos Funcionais:• Análise Estruturada – 1978• JSD - 1983

• Métodos Orientados a Objetos:• Rumbaugh – 1991• Booch – 1994• UML - 1995

Métodos x Técnicas x Ferramentas

• Componentes usuais dos métodos

organização das atividades.Orientações de uso

boas práticas de construção.Recomendações

para a construção dos modelos.

Regras

notação usada para descrever os modelos produzidos.

Modelos Descritivos

Page 33: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

33

Métodos x Técnicas x FerramentasFerramentas

• São usadas para automatizar parte do processo de desenvolvimento.

• Primeiro deve-se pensar no método, e só após na ferramenta adequada para automatizá-lo.

voltada para aspectos posteriores do desenvolvimento (construção e testes)

lower Case

voltada para aspectos iniciais do desenvolvimento (especificação e projeto).

upper Case

voltada para a integração de diferentes modelos e notações.

i-Case

Métodos x Técnicas x FerramentasFerramentas CASE

CASE Computer-Aided Software Engineering(Engenharia de Software com auxílio

se computador)

Page 34: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

34

Mitos da Engenharia de Software

• Gerência

• Cliente

• Programador

Mitos da Engenharia de SoftwareGerência

O documento pode não ser usado, não ser conhecido, não refletir boas práticas.

Realidade

Um documento de padrões e procedimentos é suficiente para manter o processo em ordem.

Mito

Equipamentos e ferramentas são apenas parte do processo de desenvolvimento. Os métodos são bem mais importantes.

Realidade

Uma boa infra-estrutura em termos de equipamento e ferramentas é suficiente para obter bons resultados.

Mito

Page 35: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

35

Mitos da Engenharia de SoftwareGerência

A incorporação de pessoas a um projeto atrasado pode torna-lo mais atrasado ainda.

Realidade

Os atrasos podem ser combatidos com a adição de pessoas ao projeto.

Mito

Se a organização não sabe como construir e gerenciar software internamente, certamente terá problemas com o desenvolvimento terceirizado.

Realidade

A terceirização resolve os problemas da gerência do desenvolvimento de software.

Mito

Mitos da Engenharia de SoftwareCliente

O impacto das mudanças varia segundo a fase me que ocorrem. Quanto mais avançado no projeto uma mudança é proposta, mais difícil e mais cara será sua realização.

Realidade

As mudanças nos requisitos podem ser facilmente absorvidas porque o software é flexível.

Mito

Uma descrição inicial pobre é a causa de grande parte das falhas de projeto de software. Quanto mais formal e detalhada for a descrição do problema e dos objetivos, melhor será a qualidade da solução.

Realidade

Uma descrição sucinta dos objetivos é suficiente para começar a escrever programas.

Mito

Page 36: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

36

Mitos da Engenharia de SoftwareProgramador

Quanto mais cedo você começar a escrever o código mais tempo levará para concluí-lo. Dados da indústria indicam que de 60 a 80% do esforço de codificação se dá após a entrega dos programas.

Realidade

Meu trabalho está concluído tão logo o programa esteja escrito e funcionando.

Mito

As técnicas de revisão estão entre as mais eficientes para identificação de erros.

Realidade

Não se pode avaliar a qualidade dos programas enquanto eles não estiverem 'rodando'.

Mito

Mitos da Engenharia de SoftwareProgramador

O programa é apenas um elemento do software, que inclui também a documentação, os dados de configuração, os guias de operação, etc.

Realidade

O único produto que conta para o projeto é o programa em execução.

Mito

A engenharia de software não tem como objetivo criar documentos, e sim criar qualidade. Uma melhor qualidade resulta em prazos menores.

Realidade

A engenharia de software produz documentação volumosa e desnecessária, atrasando o projeto.

Mito

Page 37: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

37

Engenharia de SoftwarePerguntas incômodas ...

• Por que leva tanto tempo para concluir o software?

• Por que os custos de desenvolvimentos são tão altos ?

• Por que não podemos achar todos os erros antes de entregar o software aos clientes?

• Por que continuamos a ter dificuldades em avaliar o progresso enquanto o software é desenvolvido?

Engenharia de SoftwareDesafios...

Reduzir o tempo para entrega de sistemas em comprometer a qualidade. Entregar no prazo e cumprir orçamento.

Fornecimento

Desenvolver técnicas para construir softwares confiáveis que sejam flexíveis o bastante para lidar com a Torre de Babel da tecnologia.

Heterogeneidade

Manter e atualizar softwares desenvolvidos há muito anos para evitar custos excessivos e prosseguir com a prestação de

serviços essenciais.

Legado

Page 38: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

38

ÉticaPrincípios éticos – Código de Conduta

• ACMAssociation for Computing Machinery

• IEEEInstitute of Electrical and Eletronic Engineers

• BCSBritish Computer Society

ÉticaPrincípios éticos (8) do código da ACM

• PúblicoOs engenheiros de software devem agir de acordo com o interesse público.

• Cliente e EmpregadorOs engenheiros de software devem agir no melhor interesse do seu cliente e do seu empregador, de modo consistente com o interesse público

• ProdutoOs engenheiros de software devem assegurar que seus produtos, bem como as modificações posteriores, satisfazem aos mais altos padrões profissionais possíveis.

Page 39: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

39

ÉticaPrincípios éticos (8) do código da ACM

• JulgamentoOs engenheiros de software devem manter a integridade e a independência de seus julgamentos.

• GerênciaOs gerentes e líderes devem promover e apoiar a abordagem ética na execução de suas tarefas.

• ProfissãoOs engenheiros de software devem promover a integridade e reputação da profissão, de modo consistente com o interesse público.

ÉticaPrincípios éticos (8) do código da ACM

• ColegasOs engenheiros de software devem ser justos e apoiar seus colegas.

• Auto-evoluçãoOs engenheiros de software devem se engajar no aprendizado contínuo da profissão e devem promover uma abordagem ética da prática profissional.

Page 40: FSI_Modulo I - Conceitos Básicos de Engenharia de Software

40

Referências Bibliográficas .......

• Ian Sommerville – Engenharia de Software –Capítulo 01

• Roger Pressman – Engenharia de Software –Capítulo 01

• Denis Alcides Rezende – Engenharia de Software e Sistemas de Informação – Capítulo 01

• Wilson de Pádua Paula Filho – Engenharia de Software – Capítulo 01