engenharia de software jarbas thaunahy santos de almeida home page: e-mail:...

34
Engenharia de Engenharia de Software Software Jarbas Thaunahy Santos de Almeida Jarbas Thaunahy Santos de Almeida Home page: Home page: www.professorjarbas.com.br e-mail: e-mail: [email protected] MSN: MSN: [email protected] Faculdade de Tecnologia de Mauá Tecnologia em Informática e Negócios

Upload: internet

Post on 22-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Engenharia de Engenharia de SoftwareSoftware

Jarbas Thaunahy Santos de AlmeidaJarbas Thaunahy Santos de Almeida

Home page: Home page: www.professorjarbas.com.bre-mail: e-mail: [email protected]

MSN: MSN: [email protected]

Faculdade de Tecnologia de Mauá

Tecnologia em Informática e Negócios

Page 2: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

A importância do softwareA importância do software

Atualmente, uma grande parte da população Atualmente, uma grande parte da população mundial depende de aplicações de mundial depende de aplicações de software para realizar suas operações software para realizar suas operações diárias. Se alguns sistemas de uso global diárias. Se alguns sistemas de uso global deixarem de funcionar, deixarem de funcionar, aproximadamente 40% da população aproximadamente 40% da população mundial sofrerá as conseqüências do mundial sofrerá as conseqüências do problema (Reed, 2000). problema (Reed, 2000).

Page 3: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

A importância do softwareA importância do software

O principal objetivo da engenharia de O principal objetivo da engenharia de software é, sem dúvida, melhorar a software é, sem dúvida, melhorar a qualidade do software. A qualidade de qualidade do software. A qualidade de produtos de software, entretanto está produtos de software, entretanto está fortemente relacionada à qualidade do fortemente relacionada à qualidade do processo de software. (Fuggetta, 2000).processo de software. (Fuggetta, 2000).

Page 4: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

A importância do softwareA importância do software

Para muitos engenheiros de software, a qualidade do processo de software é tão importante quanto à qualidade do produto. Assim, na década de 90 houve uma grande preocupação com a modelagem e melhorias no processo de software. (Rocha, 2001).

Page 5: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

SoftwareSoftware

Consiste em um conjunto de Consiste em um conjunto de informações em diferentes níveis de informações em diferentes níveis de abstração e em um conjunto de abstração e em um conjunto de transformações e decisões transformações e decisões associadas a essas transformações. associadas a essas transformações.

Page 6: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

SoftwareSoftware

A engenharia de software, embora A engenharia de software, embora possua várias definições, segundo possua várias definições, segundo Pressman (2000) é uma disciplina que Pressman (2000) é uma disciplina que pode ser vista, de forma objetiva, como pode ser vista, de forma objetiva, como o estabelecimento e o uso dos o estabelecimento e o uso dos princípios básicos da engenharia com a princípios básicos da engenharia com a finalidade de desenvolver software de finalidade de desenvolver software de maneira sistemática e econômica, maneira sistemática e econômica, resultando em um produto confiável e resultando em um produto confiável e eficiente. eficiente.

Page 7: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Engenharia de softwareEngenharia de software

Elementos fundamentais:Elementos fundamentais:

MétodosMétodos

FerramentasFerramentas

ProcedimentosProcedimentos

Page 8: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

MétodosMétodos

Envolvem um amplo conjunto de tarefas que incluem: Envolvem um amplo conjunto de tarefas que incluem:

1. planejamento e estimativa de projeto,1. planejamento e estimativa de projeto,

2. análise de requisitos de 2. análise de requisitos de softwaresoftware e de sistemas, e de sistemas,

3. projeto da estrutura de dados,3. projeto da estrutura de dados,

4. arquitetura de programas e algoritmo de 4. arquitetura de programas e algoritmo de processamento,processamento,

5. codificação, 5. codificação,

6. teste e 6. teste e

7. manutenção. 7. manutenção.

Page 9: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

FerramentasFerramentas

Proporcionam apoio automatizado ou semi-Proporcionam apoio automatizado ou semi-automatizado aos métodos. Atualmente, automatizado aos métodos. Atualmente, existem ferramentas para sustentar cada existem ferramentas para sustentar cada um dos métodos citados anteriormente.um dos métodos citados anteriormente.

Page 10: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

FerramentasFerramentas

Quando as ferramentas são integradas de Quando as ferramentas são integradas de forma que a informação criada por uma forma que a informação criada por uma ferramenta possa ser usada por outra, é ferramenta possa ser usada por outra, é estabelecido um sistema de suporte ao estabelecido um sistema de suporte ao desenvolvimento de software chamado desenvolvimento de software chamado engenharia de software auxiliado por engenharia de software auxiliado por computador (CASE – Computer-Aided computador (CASE – Computer-Aided Software Engineering).Software Engineering).

Page 11: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

ProcedimentosProcedimentos

Constituem o elo que mantém juntos os métodos e as ferramentas e possibilita o desenvolvimento racional e oportuno do software de computador.

Definem a seqüência em que os métodos serão aplicados.

Page 12: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Mitos do softwareMitos do software

Por que demora tanto tempo para Por que demora tanto tempo para que os programas sejam concluídos?que os programas sejam concluídos?

Por que os custos são tão elevados?Por que os custos são tão elevados?

Por que não descobrimos todos os Por que não descobrimos todos os erros antes de entregarmos o erros antes de entregarmos o softwaresoftware aos nossos clientes? aos nossos clientes?

Page 13: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Visão genéricaVisão genérica

Fases do processo de desenvolvimentoFases do processo de desenvolvimento

DefiniçãoDefinição

DesenvolvimentoDesenvolvimento

ManutençãoManutenção

Page 14: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Paradigmas da Paradigmas da engenharia de softwareengenharia de software

O ciclo de vida clássico;O ciclo de vida clássico;

Prototipação;Prototipação;

O modelo espiral;O modelo espiral;

Técnicas de 4ª geração.Técnicas de 4ª geração.

Page 15: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Ciclo de vida clássicoCiclo de vida clássico

Também chamado modelo cascata, o paradigma do ciclo de vida requer uma abordagem sistemática, seqüencial ao desenvolvimento do software, que se inicia no nível do sistema e avança ao longo da análise, projeto, codificação, teste e manutenção.

Page 16: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Ciclo de vida clássicoCiclo de vida clássicoEngenharia

de sistemas

Análise

Projeto

Codificação

Teste

Manutenção

Page 17: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

PrototipaçãoPrototipação

É um processo que capacita o É um processo que capacita o desenvolvedor a criar um modelo do desenvolvedor a criar um modelo do softwaresoftware que será implementado. Pode que será implementado. Pode assumir uma das seguintes formas:assumir uma das seguintes formas:

1.1. Protótipo em papel;Protótipo em papel;

2.2. Protótipo de trabalho;Protótipo de trabalho;

3.3. Programa existente. Programa existente.

Page 18: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

PrototipaçãoPrototipação

Coleta e

refinamento de

requisitos

Projeto

rápido

Construção

do

protótipo

Avaliação do

protótipo pelo

cliente

Refinamento

do

protótipo

Engenharia

do

produto

Início

Fim

Page 19: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Modelo espiralModelo espiral

Foi desenvolvido para abranger as melhores Foi desenvolvido para abranger as melhores características tanto do ciclo de vida características tanto do ciclo de vida clássico como da prototipação, clássico como da prototipação, acrescentando, ao mesmo tempo, um acrescentando, ao mesmo tempo, um novo elemento – a análise de riscos – que novo elemento – a análise de riscos – que falta a esses paradigmas. falta a esses paradigmas.

Page 20: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Modelo espiralModelo espiralPlanejamento Análise de riscos

EngenhariaAvaliação do cliente

Coleta inicial dosrequisitos eplanejamento doprojeto

Análise de riscos baseadanos requisitos iniciais

Análise de riscos baseadana reação do cliente

Protótipo de software inicial

Protótipo nonível seguinte

Sistema construídopela engenharia

Decisão de prosseguir/não prosseguir

Avaliação do cliente

Planejamento baseadonos comentáriosdo cliente

Page 21: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Técnicas de 4ª geraçãoTécnicas de 4ª geração

Abrange um amplo conjunto de ferramentas de software que possuem algo em comum: cada uma delas possibilita que o desenvolvedor de software especifique alguma característica do software num nível elevado.

A ferramenta gera então, automaticamente, o código-fonte, tendo como base a especificação do desenvolvedor.

Page 22: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Técnicas de 4ª geraçãoTécnicas de 4ª geração

Coleta de requisitos

Estratégia de

“projeto” Implementação

usando4ª geração

Teste

Page 23: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Obtenção preliminar dos requisitos

Análise derequisitos

PrototipaçãoTécnicas de 4ª geração

Modelo espiral

Projeto

Codificação

Realizaçãode testes

Prototipaçãoenésima iteração

Técnicas de 4ª geração

Modelo espiralenésima iteração

Técnicas de 4ª geração

Sistema operacional

Manutenção

Page 24: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Garantia de qualidade de Garantia de qualidade de softwaresoftware

Todos os métodos, ferramentas e Todos os métodos, ferramentas e procedimentos trabalham na direção procedimentos trabalham na direção de uma meta única: de uma meta única: produzir produzir software de alta qualidade.software de alta qualidade.

O que significa qualidade de O que significa qualidade de software?software?

Page 25: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

SQA – Software Quality AssuranceSQA – Software Quality Assurance

1.1. Métodos e ferramentas de análise, projeto, Métodos e ferramentas de análise, projeto, codificação e teste;codificação e teste;

2.2. Revisões técnicas formais que são aplicadas durante Revisões técnicas formais que são aplicadas durante cada fase de engenharia de software;cada fase de engenharia de software;

3.3. Uma estratégia de teste de múltiplas fases;Uma estratégia de teste de múltiplas fases;4.4. Controle da documentação de software e das Controle da documentação de software e das

mudanças feitas nela;mudanças feitas nela;5.5. Um procedimento para garantir a adequação aos Um procedimento para garantir a adequação aos

padrões de desenvolvimento de software (quando padrões de desenvolvimento de software (quando aplicáveis);aplicáveis);

6.6. Mecanismos de medição e divulgação.Mecanismos de medição e divulgação.

Page 26: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Qualidade de Qualidade de softwaresoftware

Conformidade a requisitos funcionais e de Conformidade a requisitos funcionais e de desempenho explicitamente declarados, a desempenho explicitamente declarados, a padrões de desenvolvimento claramente padrões de desenvolvimento claramente

documentados e a características documentados e a características implícitas que são esperadas de todo implícitas que são esperadas de todo

softwaresoftware profissionalmente desenvolvido. profissionalmente desenvolvido.

Page 27: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Qualidade de Qualidade de softwaresoftware

Os requisitos de Os requisitos de softwaresoftware são a base a partir da qual a são a base a partir da qual a qualidade qualidade é medida. A falta de conformidade aos requisitos é medida. A falta de conformidade aos requisitos significa falta de qualidade.significa falta de qualidade.

Padrões especificados definem um conjunto de critérios de Padrões especificados definem um conjunto de critérios de desenvolvimento. Se os critérios não forem seguidos, o desenvolvimento. Se os critérios não forem seguidos, o resultado quase que seguramente será a falta de resultado quase que seguramente será a falta de qualidade.qualidade.

Há um conjunto de requisitos implícitos que freqüentemente Há um conjunto de requisitos implícitos que freqüentemente não são mencionados (a manutenibilidade, por exemplo). não são mencionados (a manutenibilidade, por exemplo).

Page 28: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Fatores de Qualidade de Fatores de Qualidade de softwaresoftwareMcCallMcCall

Revisãodo

produtoTransição

doproduto

Operação do

produto

Manutenibilidade

Flexibilidade

Testabilidade

Portabilidade

Reusabilidade

Interoperabilidade

Corretitude / Confiabilidade / Eficiência / Integridade / Usabilidade

Page 29: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Revisão do produtoRevisão do produto

Manutenibilidade: o esforço exigido para localizar e reparar Manutenibilidade: o esforço exigido para localizar e reparar erros num programa.erros num programa.

Flexibilidade: o esforço exigido para modificar um programa Flexibilidade: o esforço exigido para modificar um programa operacional.operacional.

Testabilidade: o esforço exigido para testar um programa a Testabilidade: o esforço exigido para testar um programa a fim de garantir que ele execute sua função pretendida.fim de garantir que ele execute sua função pretendida.

Page 30: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Transição do produtoTransição do produto

Portabilidade: o esforço exigido para transferir o programa de Portabilidade: o esforço exigido para transferir o programa de um ambiente de sistema de um ambiente de sistema de hardwarehardware e/ou e/ou softwaresoftware para para outro.outro.

Reusabilidade: à medida que um programa (ou partes de um Reusabilidade: à medida que um programa (ou partes de um programa) pode ser reusado em outras aplicações – programa) pode ser reusado em outras aplicações – relacionada ao empacotamento e escopo das funções que o relacionada ao empacotamento e escopo das funções que o programa executa.programa executa.

Interoperabilidade: o esforço exigido para se acoplar um Interoperabilidade: o esforço exigido para se acoplar um sistema a outro.sistema a outro.

Page 31: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Operação do produtoOperação do produto

Corretitude: à medida que um programa satisfaz sua especificação e Corretitude: à medida que um programa satisfaz sua especificação e cumpre os objetivos visados pelo cliente.cumpre os objetivos visados pelo cliente.

Confiabilidade: à medida que se pode esperar que um programa Confiabilidade: à medida que se pode esperar que um programa execute sua função pretendida com a precisão exigida.execute sua função pretendida com a precisão exigida.

Eficiência: a quantidade de recursos de computação e de código Eficiência: a quantidade de recursos de computação e de código exigida para que um programa execute sua função.exigida para que um programa execute sua função.

Integridade: à medida que o acesso ao Integridade: à medida que o acesso ao softwaresoftware ou a dados por ou a dados por pessoas não-autorizadas pode ser controlado.pessoas não-autorizadas pode ser controlado.

Usabilidade: O esforço para aprender, operar, preparar a entrada e Usabilidade: O esforço para aprender, operar, preparar a entrada e interpretar a saída de um programa. interpretar a saída de um programa.

Page 32: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Algumas Métricas utilizadasAlgumas Métricas utilizadas

Auditabilidade: a facilidade com que se pode checar a conformidade Auditabilidade: a facilidade com que se pode checar a conformidade aos padrões. aos padrões.

Inteireza: o quanto a implementação total da função requerida foi Inteireza: o quanto a implementação total da função requerida foi conseguida.conseguida.

Concisão: a compactação do programa em termos de linhas de código.Concisão: a compactação do programa em termos de linhas de código.

Consistência: o uso de técnicas de projeto e documentação uniformes Consistência: o uso de técnicas de projeto e documentação uniformes ao longo do projeto de desenvolvimento de ao longo do projeto de desenvolvimento de softwaresoftware..

Expansibilidade: o quanto o projeto de arquitetura, procedimental e de Expansibilidade: o quanto o projeto de arquitetura, procedimental e de dados podem ser ampliados.dados podem ser ampliados.

Page 33: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

Algumas Métricas utilizadasAlgumas Métricas utilizadas

Independência de Independência de hardwarehardware: o quanto o : o quanto o software software é desvinculado do é desvinculado do hardwarehardware que opera. que opera.

Instrumentação: o quanto o programa monitora sua própria Instrumentação: o quanto o programa monitora sua própria operação e identifica erros que venham a ocorrer.operação e identifica erros que venham a ocorrer.

Modularidade: a independência funcional dos componentes do Modularidade: a independência funcional dos componentes do programa.programa.

Operabilidade: a facilidade de operação de um programa.Operabilidade: a facilidade de operação de um programa.

Simplicidade: o quanto um programa pode ser entendido sem Simplicidade: o quanto um programa pode ser entendido sem dificuldade. dificuldade.

Page 34: Engenharia de Software Jarbas Thaunahy Santos de Almeida Home page:   e-mail: jarbas@professorjarbas.com.br

BibliografiaBibliografia

REED, K. REED, K. Software engineering – a new millenium?Software engineering – a new millenium? IEEE IEEE Software, jul-ago, 2000.Software, jul-ago, 2000.

FUGGETTA, A. FUGGETTA, A. Software process: Software process: a roadmapa roadmap. In: The future . In: The future of software engineering, 2000.of software engineering, 2000.

PRESSMAN, Roger S. PRESSMAN, Roger S. Engenharia de SoftwareEngenharia de Software. São Paulo: . São Paulo: Makron Books, 1995.Makron Books, 1995.

ROCHA, Ana Regina Cavalcanti da.ROCHA, Ana Regina Cavalcanti da. Qualidade de software Qualidade de software. . São Paulo: Prentice Hall, 2001.São Paulo: Prentice Hall, 2001.