51
Introdução a Engenharia de Software Aécio Costa

Introdução a Engenharia de Software - aeciocosta.com.br de Software... · “Programas de computador e documentação associada. ... Invisibilidade e intangibilidade O que se vê

Embed Size (px)

Citation preview

Introdução a Engenharia de Software

Aécio Costa

Introdução a Engenharia de Software

“Engenharia é a arte, a ciência e a técnica de bem conjugar os conhecimentos especializados (cient í ficos) de uma dada área do saber com a sua viabilidade t é cnico-econ ô mica, para produzir novas utilidades e/ou transformar a natureza, em conformidade com idéias bem planejadas.”

(SOFTEX, 2010)

Introdução a Engenharia de Software

E o que Software tem haver com isso?

Introdução a Engenharia de Software

Uma pesquisa da IBM, em 1994, constatou o seguinte:

55% dos sistemas custam mais do que o esperado 68% ultrapassam o cronograma do projeto 88% tiveram que ser substancialmente reprojetados

(SOFTEX, 2010)

Introdução a Engenharia de Software

Para cada 6 novos sistemas colocados em opera ç ã o, 2 s ão cancelados;

A probabilidade de cancelamento chega a 50% para os maiores sistemas;

Em m é dia, os projetos ultrapassam o cronograma em 50% do tempo;

Os sistemas t ê m 3/4 de seu todo tidos como “falhas operacionais”.

(Bureau of Labor Statistics, 1997 )

Introdução a Engenharia de Software

Introdução a Engenharia de Software

E porque de tudo isso?

Introdução a Engenharia de Software

Introdução a Engenharia de Software

Therac-25 (1985-87)

Máquina de radioterapia com software controlador: O dispositivo responsável por sincronizar o hardware

é removido, mas o software não possui sincronismo. O software falha na tarefa de manter invariantes

essenciais: o feixe de elétrons ou o feixe mais forte de radiação e a chapa se interferem na geração de raios X.

O problema só foi detectado três semanas depois de várias vítimas fatais.

Introdução a Engenharia de Software

Ariane 5 (1996)

Introdução a Engenharia de Software

O foguete explodiu 40 segundos após a sua decolagem; Foi aproveitado um pacote de software de navegação do Ariane 4

que não tinha erros: No módulo Sistema de Referencial Inercial uma conversão de

valores de 64-bits para 16-bits causou um operando inv álido que o interrompeu.

A falha no SRI levou o computador de bordo a modificar a trajetória do foguete levando à ruptura de juntas e isto causou a ativação da auto-destruição.

Introdução a Engenharia de Software

Destruição do foguete e carga avaliada em US$ 500 milhões

Introdução a Engenharia de Software

Sistema de Triagem

Aeroporto de Denver Custo do projeto: US$ 4,9 bilhões 100 passageiros por dia 1200 vôos 53 milhas quadradas 94 portões de embarque e desembarque 6 pistas de pouso / decolagem

Introdução a Engenharia de Software

Erros no sistema automático de transporte de bagagens Custo: US$ 193 milhões Atraso na abertura do aeroporto. Custo total estimado em

US$ 360 milhões. Inauguração prevista para outubro de 1993 Em junho de 1994 o sistema ainda não estava funcionando,

causando um prejuízo estimado de US$ 1,1 milhão/dia No começo de 1995 foi instalado um controle manual de

bagagem. US$ 86 milhões para consertar o sistema.

Introdução a Engenharia de SoftwareAtividade

Problemas causados por Software Erros de Software Causas Prejuízos Valores Empresa

Envio por email Título: Problemas causados por software Nome da Dupla Sem anexos

Dupla Debate em Sala

Introdução a Engenharia de Software

O que é software?

“Programas de computador e documentação associada.”

Cliente Específico Mercado em Geral

(SOMMERVILLE, 2011)

Introdução a Engenharia de Software

Características de Software

ComplexidadeMuitas regras, diversos desenvolvedores!Software é mais complexo do que qualquer outro produto construídos por

seres humanos.

Invisibilidade e intangibilidadeO que se vê são as consequências da execução do software.

18

Introdução a Engenharia de Software

Produção sob medida e Conformidade

Cada usuário é um cliente, que usa o software à sua maneira.

O software deve ser desenvolvido conforme o ambiente. N ã o é o ambiente que deve se adaptar ao software.

19

Introdução a Engenharia de Software

MutabilidadeExiste sempre uma pressão para se fazer mudanças em um software.

Não tem prazo de validadeNão é sens ível a problemas ambientais. A Obsolescência ocorre devido à

evolução do hardware e, consequetemente da tecnologia.

O custo final do software é basicamente o custo do projeto de desenvolvimento.

20

Introdução a Engenharia de Software

Tipos de Software

BÁSICO: coleção de programas escritos para dar apoio a outros programas

TEMPO REAL: software que monitora, analisa e controla eventos do mundo real

Introdução a Engenharia de Software

Tipos de Software

CIENT Í FICO E DE ENGENHARIA: S ã o softwares que auxiliam as aplicações cient í ficas. Caracterizado por algoritmos de processamento de números

COMERCIAL ou EMPRESARIAL: sistemas de opera ç ões comerciais e tomadas de decisões administrativas

22

Introdução a Engenharia de Software

Tipos de Software

EMBUTIDO ou EMBARCADO: usado para controlar produtos e sistemas para os mercados industriais e de consumo

DE COMPUTADOR PESSOAL: envolve processamento de textos, planilhas eletrônicas, diversões, etc.

Introdução a Engenharia de Software

Tipos de Software

DE INTELIGÊNCIA ARTIFICIAL: faz uso de algoritmos n ão num é ricos para resolver problemas que n ã o sejam favor á veis à computação ou à análise direta

24

Introdução a Engenharia de Software

Formas do Software

Introdução a Engenharia de Software

Mitos do Software

O estabelecimento de objetivos gerais é suficiente para se começar a escrever programas.

Dê a uma pessoa técnica um bom livro de programação e você terá um programador.

Mudan ç as no software podem ser feitas facilmente porque ele é "flexível".

Introdução a Engenharia de Software

Mitos do Software

Até que o programa esteja "rodando" não é possível verificarmos a sua qualidade.

Uma vez que o programa esteja escrito e funcionando, nosso trabalho está feito.

Um projeto é bem sucedido se conseguirmos um programa funcionando corretamente.

Introdução a Engenharia de Software

Categorias de Tamanho de Softwares

Win 95: teve 11 milhões de linhas e 200 programadores Nestscape: teve 3 milhões de linhas e 120 programadores

Introdução a Engenharia de Software

Categorias de Tamanho de Softwares

Win 95: teve 11 milhões de linhas e 200 programadores

Nestscape: teve 3 milhões de linhas e 120 programadores

Introdução a Engenharia de Software

Atributos de um Software de Qualidade

O software que satisfaz os requisitos solicitados pelo usu ário. Deve ser fácil de manter, ter boa performance, ser confiável e fácil de usar.

Introdução a Engenharia de Software

Atributos de um Software de Qualidade

Integridade

O Software deve garantir que a informa ç ã o manipulada mantenha todas as características originais estabelecidas pelo proprietário da informação, incluindo controle de mudanças e garantia do seu ciclo de vida (nascimento,manutenção e destruição).

Disponibilidade

O Software deve resistir a falhas mantendo serviços disponibilizados o máximo de tempo possível.

Introdução a Engenharia de Software

Atributos de um Software de Qualidade

Eficiente

O software não deve desperdiçar os recursos do sistema.

Usabilidade ou Aceitabilidade

O software deve ser fácil de usar pelos usuários para os quais ele foi projetado.

Introdução a Engenharia de Software

Atributos de um Software de Qualidade

Manutenibilidade

O software deve evoluir para atender os requisitos que mudam.

Reusabilidade

Processo de se utilizar cópias ou extensão de funcionalidades de um componente do software pré-existente em várias outras partes do sistema.

Introdução a Engenharia de Software

Atributos de um Software de Qualidade

Interoperabilidade

Software deve ser capaz de ser executado em qualquer plataforma de hardware ou software de forma transparente.

Extensibilidade

Capacidade que o sistema tem em crescer pela adi ç ã o de novos componentes externos.

Introdução a Engenharia de Software

Atributos de um Software de Qualidade

Adaptabilidade

Refere-se à propriedade de um produto mudar suas caracter ísticas automaticamente de acordo com a “percepção” do Usuário.

Conformidade

O software deve está exatamente como foi projetado.

Introdução a Engenharia de Software

Porque construímos Softwares?

Introdução a Engenharia de Software

Resolução de Problemas

E que Problema!!!

Introdução a Engenharia de Software

E porque aplicar Engenharia em Software é bom?

Controle sobre o desenvolvimento de software dentro de custos, prazos e níveis de qualidade desejados;

Produtividade no desenvolvimento, opera ç ã o e manuten ç ã o de software;

Qualidade versus Produtividade; Permitir que profissionais tenham controle sobre o

desenvolvimento de software dentro de custos, prazos e n íveis de qualidade desejados.

Introdução a Engenharia de Software

Características da Engenharia de Software

A Engenharia de Software se refere a software (sistemas) desenvolvidos por grupos ao invés de indivíduos;

Usa princípios de engenharia ao invés de arte; Inclui tanto aspectos técnicos quanto não técnicos.

Introdução a Engenharia de Software

Definições sobre Engenharia de Software

“É uma disciplina de engenharia que se preocupa com todos os aspectos de produção de software.”

(SOMMERVILLE, 2011)

Introdução a Engenharia de Software

“ É a disciplina que lida com a constru ç ã o de sistemas de software flex íveis, modulares, robustos, confiáveis, usáveis e adequados ao contexto sociot é cnico onde estes sistemas estão inseridos.”

(SOFTEX, 2010)

“Uma disciplina que lida com a construção de sistemas de software que são tão grandes que são construídos por um ou vários times de engenheiros.”

(GHEZZI, JAZAYERI, MANDRIOLI)

41

Introdução a Engenharia de Software

“Uma disciplina cujo objetivo é a produção de software sem falhas, entregue dentro de prazo e or ç amento e satisfazendo as necessidades dos usu á rios. Al é m disso, o software precisa ser facilmente modificável quando as necessidades do usuário mudam.”

(SCHACH)

“O estabelecimento e uso de só lidos princ ípios de engenharia para que se possa obter economicamente software que seja confiável e que funcione eficientemente em máquinas reais.”

(BAUER)

Introdução a Engenharia de Software

Desafios da Engenharia de Software

Lidar com o aumento de diversidade; Demandas pela diminuição do tempo para entrega; Desenvolvimento de software confiável.

Sommerville (2011)

43

Introdução a Engenharia de Software

Como a Engenharia tenta resolver os problemas?

Adotando uma abordagem sistemática e organizada para seu trabalho e usar ferramentas e técnicas/mé todos apropriados dependendo do problema a ser solucionado, das restri ç õ es de desenvolvimento e dos recursos disponíveis.

Introdução a Engenharia de Software

Método ou Técnica

Procedimento formal para produzir algum resultado.

Introdução a Engenharia de Software

Ferramentas

Instrumento ou sistema automatizado utilizado para realizar uma tarefa da melhor maneira.

Introdução a Engenharia de Software

Procedimento

É como uma receita: a combinação de ferramentas e técnicas que, em harmonia, produzem um resultado específico.

Introdução a Engenharia de Software

Introdução a Engenharia de Software

Introdução a Engenharia de Software

Exercício

Individual Entrega e Discussão aula que vem!

Identifique os Atributos de Qualidade no Problema e Justifique.

Introdução a Engenharia de Software

Visa-se resolver problemas de uma empresa do Varejo, existem alguns pontos que o software deve prover.

A loja não pode deixar de cobrar por produtos comprados pelo consumidor;A loja não pode parar de vender;O consumidor não pode esperar;A empresa quer investir pouco em recursos computacionais (CPU, memória, rede);A empresa quer investir pouco em treinamento;A empresa tem sempre novos requisitos (para ontem!);A empresa quer o software customizado do seu jeito (interface, teclado, idioma, moeda, etc.);Várias empresas precisam usar partes de um mesmo sistema;A empresa já tem controle de estoque, fidelização, etc.;A empresa opta por uma determinada plataforma;A empresa tem um grande número de PDVs.

51

Introdução a Engenharia de Software

Elencar quais atributos de Qualidade no software devem existir em cada tópico.