Você está na página 1de 48

Engenharia de Software I

Captulo 1 Introduo Engenharia de Software

PUC Minas So Gabriel Prof. Claudiney Vander Ramos

Leitura recomendada
Captulo 1 (Software and Software Engineering) do livro Software Engineering A Practioners Approach (de Roger Pressman) Captulo 1 (Introduction) do livro Software Engineering (de Ian Sommerville)

O que a Engenharia de Software?


Estudo ou aplicao de abordagens sistemticas, econmicas e quantificveis para o desenvolvimento, operao e manuteno de software de qualidade. Engenheiros de software devem adotar uma abordagem sistemtica e organizada para seu trabalho e usar ferramentas e tcnicas/mtodos apropriados dependendo do problema a ser solucionado, das restries de desenvolvimento e dos recursos disponveis

Engenharia de Software: Abrangncia


E.S. possui 3 elementos fundamentais:
mtodos: como fazer ferramentas: apoio automatizado aos mtodos. Procedimentos: elo de ligao entre os mtodos e os procedimentos

Existem diversos Paradigmas de Engenharia de Software:


abordagens que envolvem estes mtodos, ferramentas e procedimentos

O que software?
Programas de computador e documentao associada Produtos de software podem ser desenvolvidos para um cliente particular ou podem ser desenvolvidos para um mercado geral

Caractersticas do Software - 1
O Software desenvolvido ou projetado por engenharia, no manufaturado no sentido clssico:
Custos so concentrados no trabalho de engenharia. Projetos no podem ser geridos como projetos de manufatura. Fbrica de Software!

Caractersticas do Software - 2
Software no desgasta!
Software no sensvel aos problemas ambientais que fazem com que o hardware se desgaste. Toda falha indica erro de projeto ou implementao: manuteno do SW mais complicada que a do HW.

Caractersticas do Software - 3
A maioria dos softwares feita sob medida e no montada a partir de componentes existentes. Esta situao est mudando:
Orientao a objetos. Reusabilidade o Santo Graal(diminui custos e melhora projetos).

Aplicaes de Software
Software Bsico: compiladores, editores simples, drivers, componentes do SO. Software de Tempo Real: monitora/analisa/controla eventos do mundo real Software Comercial: controle de estoque, vendas etc. Acessam bancos de dados.

Aplicaes de Software (cont...)


Software Cientfico ou de Engenharia: intenso processamento de nmeros. Software Embutido: celulares, micro-ondas, injeo eletrnica. Software de Computador Pessoal: processador de texto, planilha, jogos, apresentaes etc. Software de Inteligncia Artificial: sistemas especialistas, redes neurais e aprendizado.

Uma Crise no horizonte


A industria de Software tem tido uma crise que a acompanha h quase 30 anos. Problemas no se limitam ao software que no funciona adequadamente, mas abrange:
desenvolvimento, testes, manuteno, suprimento, etc.

Perguntas que a Engenharia de Software quer responder:


Porque demora tanto para concluir um projeto (no cumprimos prazos)? Porque custa tanto (uma ordem de magnitude a mais)? Porque no descobrimos os erros antes de entregar o software ao cliente? Porque temos dificuldade de medir o progresso enquanto o software est sendo desenvolvido?

Causas bvias
No dedicamos tempo para coletar dados sobre o desenvolvimento do software - resulta em estimativas a olho. Comunicao entre o cliente e o desenvolvedor muito fraca. Falta de testes sistemticos e completos.

Causas menos bvias


O Software desenvolvido ou projetado por engenharia, no manufaturado no sentido clssico (caracterstica 1). Gerentes sem background em desenvolvimento de SW. Profissionais recebem pouco treinamento formal. Falta investimento (em ES). Falta mtodos e automao.

Mitos do Software - Administrativos


Um manual oferece tudo que se precisa saber. Computadores de ltima gerao solucionam problemas de desenvolvimento. Se estamos atrasados, basta adicionar programadores e tirar o atraso (chamado conceito de hordas de mongois).

Mitos do Software - do Cliente


Uma declarao geral suficiente para comear a escrever programas. Mudanas podem ser facilmente acomodadas em um projeto (ver figura pg. 28).

Mitos do Software - do Profissional


Um programa est terminado ao funcionar. Quanto mais cedo escrever o cdigo, mais rpido terminarei o programa. S posso avaliar a qualidade de um programa em funcionamento. A nica coisa a ser entregue em um projeto o programa funcionando.

Objetivos da Engenharia de Software


Controle sobre o desenvolvimento de software dentro de custos, prazos e nveis de qualidade desejados Produtividade no desenvolvimento, operao e manuteno de software Qualidade versus Produtividade Permitir que profissionais tenham controle sobre o desenvolvimento de software dentro de custos, prazos e nveis de qualidade desejados

Caractersticas da Engenharia de Software


A Engenharia de Software se refere a software (sistemas) desenvolvidos por grupos ao invs de indivduos usa princpios de engenharia ao invs de arte, e inclui tanto aspectos tcnicos quanto no tcnicos

O que um software de qualidade?


O software que satisfaz os requisitos solicitados pelo usurio. Deve ser fcil de manter, ter bom desempenho, ser confivel e fcil de usar Alguns atributos de qualidade
Manutenibilidade
O software deve evoluir para atender os requisitos que mudam

Eficincia
O software no deve desperdiar os recursos do sistema

Usabilidade
O software deve ser fcil de usar pelos usurios para os quais ele foi projetado

Qualidade de Software (um exemplo para o Varejo)


Correto
A loja no pode deixar de cobrar por produtos comprados pelo consumidor

Robusto e altamente disponvel


A loja no pode parar de vender

Eficiente
O consumidor no pode esperar A empresa quer investir pouco em recursos computacionais (CPU, memria, rede)

Qualidade de Software (um exemplo para o Varejo)


Amigvel e fcil de usar
A empresa quer investir pouco em treinamento

Altamente extensvel e adaptvel


A empresa tem sempre novos requisitos (para ontem!) A empresa quer o software customizado do seu jeito (interface, teclado, idioma, moeda, etc.)

Reusvel
Vrias empresas precisam usar partes de um mesmo sistema

Qualidade de Software (um exemplo para o Varejo)


Aberto, compatvel, de fcil integrao com outros sistemas
A empresa j tem controle de estoque, fidelizao, etc.

Portvel e independente de plataforma (hw e sw)


A empresa j adota uma determinada plataforma

Baixo custo de instalao e atualizao


A empresa tem um grande nmero de PDVs

Produtividade
Custo de desenvolvimento reduzido
A empresa consumidora quer investir pouco em software A empresa produtora tem que oferecer software barato

Tempo de desenvolvimento reduzido


Suporte rpido s necessidades do mercado

Software Barato
Nem tanto resultado de baixos custos de desenvolvimento, mas principalmente da distribuio dos custos entre vrios clientes. Reuso, extensibilidade e adaptabilidade so essenciais para viabilizar tal distribuio.

Importncia da Engenharia de Software


Qualidade de software e produtividade garantem:
Disponibilidade de servios essenciais Segurana de pessoas Competitividade das empresas
Produtores Consumidores

Mas, na realidade, temos a Crise de Software...


25% dos projetos so cancelados o tempo de desenvolvimento bem maior do que o estimado 75% dos sistemas no funcionam como planejado a manuteno e reutilizao so difceis e custosas os problemas so proporcionais complexidade dos sistemas

Causas da Crise de Software


Essnciais
Complexidade dos sistemas Dificuldade de formalizao

Acidentes
M qualidade dos mtodos, linguagens, ferramentas, processos, e modelos de ciclo de vida Falta de qualificao tcnica

Elementos e Atividades da Engenharia de Software


Elementos
Modelos do ciclo de vida do software Linguagens Mtodos Ferramentas Processos

Atividades
Modelagem do negcio Elicitao de requisitos Anlise e Projeto Implementao Testes Distribuio Planejamento Gerenciamento Gerncia de Configurao e Mudanas Manuteno

Atividades e Artefatos da Engenharia de Software


Atividades Artefatos Plano de Negcios Modelagem do negcio Plano de Projeto Elicitao de requisitos Plano de Riscos Anlise e Projeto Documento de Requisitos Implementao Testes Mapeamentos A&P Distribuio Documento de Caso de Uso Planejamento Documento de Arquitetura Gerenciamento Classes Gerncia de Configurao e Documento de Testes Mudanas Documento de Validao Manuteno Manual do Sistema

O que um modelo de ciclo de vida de processo de software?


Uma representao abstrata e simplificada do processo de desenvolvimento de software, tipicamente mostrando as principais atividades e dados usados na produo e manuteno de software

Modelos do Ciclo de Vida de Software


Cascata Modelos Iterativos
Espiral Incremental (ex: do RUP)

...

Modelo Cascata

Modelo Cascata na Prtica

Modelos Iterativos
Requisitos de sistema SEMPRE evoluem durante o curso de um projeto. Assim a iterao do processo sempre faz parte do desenvolvimento de grandes sistemas Iteraes podem ser aplicadas a quaisquer dos modelos de ciclo de vida Duas abordagens (relacionadas)
Desenvolvimento espiral Desenvolvimento incremental

Desenvolvimento Espiral
Acrescenta aspectos gerenciais ao processo de desenvolvimento de software. anlise de riscos em intervalos regulares do processo de desenvolvimento de software planejamento controle tomada de deciso O processo representado como uma espiral em vez de uma seqncia de atividades Cada volta na espiral representa uma fase no processo No h fases fixas como especificao ou projeto - voltas na espiral so escolhidas dependendo do que requerido Riscos so avaliados explicitamente e resolvidos ao longo do processo

Desenvolvimento Espiral

Desenvolvimento Incremental
Em vez de entregar o sistema como um todo, o desenvolvimento e a entrega so divididos em incrementos, com cada incremento entregando parte da funcionalidade requerida Requisitos dos usurios so priorizados e os requisitos de mais alta prioridade so includos nas iteraes iniciais Uma vez que o desenvolvimento de um incremento iniciado, os requisitos so "congelados". Embora os requisitos possam continuar a evoluir para incrementos posteriores

Desenvolvimento Iterativo e Incremental (do RUP)

Linguagem
Notao com sintaxe e semntica bem definidas
com representao grfica ou textual

Usada para descrever os artefatos gerados durante o desenvolvimento de software Exemplos: UML, Java

Mtodo
Descrio sistemtica de como deve-se realizar uma determinada atividade ou tarefa A descrio normalmente feita atravs de padres e guias Exemplos: Mtodo para descoberta das classes de anlise no RUP.

Ferramenta CASE
Prov suporte computacional a um determinado mtodo ou linguagem Ambiente de desenvolvimento: conjunto de ferramentas integradas (CASE) Exemplos: Rational Rose, JBuilder

Processo
Conjunto de atividades
bem definidas com responsveis com artefatos de entrada e sada com dependncias entre as mesmas e ordem de execuo com modelo de ciclo de vida

Processo de software
Um conjunto de atividades cujo objetivo o desenvolvimento ou a evoluo do software Conjunto coerente de atividades para especificao, projeto, implementao e teste de sistemas de software

Metodologia
Conjunto de mtodos + processo

Pontos principais
Engenharia de software uma disciplina de engenharia que est envolvida com todos os aspectos da produo de software Produtos de software consistem de programas desenvolvidos e documentao associada. Alguns atributos de qualidade do produto so manutenibilidade, eficincia e usabilidade O processo de software consiste nas atividades que so envolvidas no desenvolvimento de produtos de software

Pontos principais
Mtodos so formas organizadas de produzir software. Eles incluem sugestes para o processo a ser seguido, as notaes a serem usadas, regras que governam as descries do sistema que so produzidas e diretrizes de projeto Ferramentas CASE so sistemas de software que so projetados para suportar as atividades rotineiras no processo de software, como edio de diagramas de projeto e verificao de consistncia dos diagramas

Leitura adicional
Daniel M. Berry. Myths and Realities in Software Development. W. Wayt Gibbs. Software's chronic crisis. Scientific American, September 1994. Alan Joch. How software doesn't work. Byte, December 1995.

Você também pode gostar