Escolar Documentos
Profissional Documentos
Cultura Documentos
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 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.
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.
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
Eficiente
O consumidor no pode esperar A empresa quer investir pouco em recursos computacionais (CPU, memria, rede)
Reusvel
Vrias empresas precisam usar partes de um mesmo sistema
Produtividade
Custo de desenvolvimento reduzido
A empresa consumidora quer investir pouco em software A empresa produtora tem que oferecer software barato
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.
Acidentes
M qualidade dos mtodos, linguagens, ferramentas, processos, e modelos de ciclo de vida Falta de qualificao tcnica
Atividades
Modelagem do negcio Elicitao de requisitos Anlise e Projeto Implementao Testes Distribuio Planejamento Gerenciamento Gerncia de Configurao e Mudanas Manuteno
...
Modelo Cascata
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
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.