Escolar Documentos
Profissional Documentos
Cultura Documentos
Objetivos
Introduzir modelos de processo de software Descrever uma variedade de modelos de processo e quando eles podem ser usados Descrever esboos de modelos de processo para engenharia de requisitos, desenvolvimento de software, teste e evoluo Apresentar a tecnologia CASE para dar suporte s atividades de processo de software
Topics covered
Software process models Process iteration Process activities The Rational Unified Process Computer-aided software engineering
Windows Vista
5000 desenvolvedores (sem incluir pessoal no tcnico); 50 milhes de linhas de cdigo; 16 milhes de linhas de cdigo somente nos ltimos 3 anos; Verses compilveis todos os dias; Testes de regresso; Intervalo de 3 dias para uma mudana submetida aparecer no executvel;
Windows Vista
~1.7 pessoas testando para cada programador; Precisa ter compatibilidade com verses anteriores; Precisa ser instalado em milhares de configuraes diferentes; Imaginem os riscos!!!
Windows Vista
Como organizar as atividades tal que 5000 pessoas possam trabalhar juntas ao mesmo tempo?
Processo de software; Ferramentas de Gerncia de Configurao;
Como testar tanto cdigo? E ainda para tantas plataformas diferentes? Como projetar um sistema com 50 milhes de linhas de cdigo? Como garantir a integridade deste projeto?
Arquitetura / Modular / Projeto de software;
O processo de software
Um conjunto estruturado de atividades requeridas para desenvolver um sistema de software
Especificao Projeto Validao Evoluo
Um modelo de processo de software uma representao abstrata de um processo. Apresenta uma descrio de um processo de alguma perspectiva particular
Desenvolvimento evolucionrio
Especificao e desenvolvimento so entrelaados
Modelo Cascata
Projeto
Cod. Mdulos
Desenvolvimento evolucionrio
Desenvolvimento exploratrio
O objetivo trabalhar com clientes e evoluir o sistema final de um esboo de especificao inicial. Deve comear com os requisitos que esto bem entendidos
Desenvolvimento evolucionrio
Ouvir o Cliente
Desenho e Construo
Avaliao do Cliente
Desenvolvimento evolucionrio
Aplicabilidade
Para sistemas interativos pequenos ou mdios Para partes de sistemas grandes (ex. a interface de usurio) Para sistemas de curto-prazo
Vantagens
Grande interao com o usurio Qualidade da definio da interface
Desenvolvimento evolucionrio
Problemas Falta de visibilidade do processo Sistemas so, em geral, pobremente estruturados Habilidades especiais (ex. em lnguas para rpida preparao de prottipos ) podem ser requeridas Expectativa do usurio pois o prottipo no o real. O cliente v o que parece ser uma verso executvel do software, ignorando que o prottipo funciona de maneira precria O desenvolvedor freqentemente faz concesses na implementao a fim de conseguir rapidamente um prottipo executvel
Iterao do Processo
Requisitos do sistema SEMPRE evoluem no decorrer de um projeto, ento a iterao do processo, onde estgios anteriores so re-trabalhados, sempre parte de um processo para sistemas maiores Iterao pode ser aplicada para qualquer modelo de processo genrico Duas abordagens (relacionadas)
Desenvolvimento incremental Desenvolvimento espiral
Desenvolvimento incremental
Ao invs de entregar o sistema de uma nica vez, o desenvolvimento e a entrega dividida em incrementos com cada incremento entregando parte da funcionalidade requerida Os requisitos dos usurios so priorizados e os requisitos de maior prioridade so includos em incrementos iniciais Uma vez que o desenvolvimento de um incremento iniciado, os requisitos so congelados embora requisitos para incrementos posteriores possam continuar a evoluir
Desenvolvimento incremental
Desenvolvimento espiral
Processo representado como uma espiral ao invs de uma seqncia de atividades com retorno Cada volta na espiral representa uma fase no processo. No existem fases fixas como especificao ou projeto as voltas na espiral so escolhidas de acordo com o que requerido Os riscos so explicitamente cotados e resolvidos durante todo o processo
3-Construir
Desenvolvimento e validao
Um modelo de desenvolvimento para o sistema escolhido, podendo ser qualquer um dos modelos genricos
Extreme programming
Nova abordagem para o desenvolvimento de software baseado no desenvolvimento e entrega de incrementos de funcionalidade bem pequenos Conta com melhoramento constante do cdigo, envolvimento do usurio no time de desenvolvimento e programao em pares Abordado mais adiante
Atividades de Processo
Especificao de Software Projeto e implementao de software Validao de software Evoluo de software
Especificao do Software
O processo de estabelecer que servios so requisitados e quais as restries na operao e desenvolvimento do sistema Processo de engenharia de requisitos
Estudo de viabilidade Elicitao e anlise dos requisitos Especificao dos requisitos Validao dos requisitos
Implementao
Transformar esta estrutura em um programa executvel
Mtodos do Projeto
Abordagens sistemticas para desenvolver um projeto de software O projeto geralmente documentado como uma srie de modelos grficos Modelos possveis
Object model; Sequence model; State transition model; Structural model; Data-flow model.
Programando e Depurando
Transformar um projeto em um programa e remover erros do programa Programao uma atividade pessoal no existe processo de programao genrico Programadores realizam alguns testes de programa para detectar falhas no programa e remover tais falhas no processo de depurao
Validao do Software
Verificao e validao (V & V) pretendem mostrar que um sistema est de acordo com sua especificao e cumpre os requisitos do cliente do sistema Envolve a verificao e a reviso de processos e teste do sistema Teste de sistema envolve a execuo do sistema com cases de teste que so derivados da especificao dos dados reais a serem processados pelo sistema
Testing stages
Teste da Unidade
Os componentes individuais so testados
Teste do Mdulo
Conjuntos de componentes dependentes relacionados so testados
Teste do Sub-sistema
Os mdulos so integrados em sub-sistemas e testados. O foco aqui deve ser no teste da interface
Teste do Sistema
Teste do sistema como um todo. Teste das propriedades emergentes
Teste de Aceitao
Teste com dados do consumidor para verificar que aceitvel
Testing phases
Evoluo do Software
Software hereditariamente flexvel e pode ser mudado. Como os requisitos mudam ao se alterar as circunstncias de negcios, o software que suporta o negcio tambm deve evoluir e mudar Embora tenha havido uma demarcao entre desenvolvimento e evoluo (manuteno), este cada vez mais irrelevante na medida que menos e menos sistemas so totalmente novos
Evoluo do Software
Concepo
Elaborao
Construo
Transio
RUP phases
Concepo
Estabelece o business case para o sistema. Identificar entidades externas que iro interagir e depois definir as interaes.
Elaborao
Desenvolver um entendimento sobre o domnio do problema e a arquitetura do sistema.
Construo
System design, programming and testing.
Transio
Deploy the system in its operating environment.
Static workflows
Workflow Business modelling Requisitos Anlise e projeto Implementation Description Os processos de negcios so modelados usando casos de uso de negcios Os agentes que interagem com o sistema so identificados e os casos de uso so desenvolvidos para modelar os requisitos do sistema Um modelo de projeto criado e documentado usando modelos de arquitetura, modelo de componente, modelo de objeto e de sequncia Os componentes de sistema so implementados e estruturados em subsistemas de implementao. A gerao automatic de cdigo com base nos modelos de projeto ajuda a acelerar esse processo O teste um processo iterative realizado em conjunto com a implementao. O teste de sistema segue o trmino da implementao Uma verso do produto criada, distribuda aos usurios e instalada no local de trabalho Este workflow de apoio gerencia as mudanas do sistema Este workflow de apoio gerencia o desenvolvimento do sistema
Test
Environment / Ambiente Relacionado disponibilizao de ferramentas apropriadas de software para a equipe de desenvolvimento
Case technology
Tecnologia Case tem levado a melhorias significantes no processo de software embora no na ordem de magnitude de melhorias que foram antes previstos
A engenharia de software requer pensamento criativo isto no prontamente automatizvel A engenharia de software uma atividade de grupo e, para grandes projetos, muito tempo utilizado em interaes do grupo. A tecnologia CASE no os suporta de fato
CASE classification
A classificao nos ajuda a entender os diferentes tipos de ferramentas de CASE e seu suporte para atividades do processo Perspectiva Funcional
As ferramentas so classificadas de acordo com suas funes especficas
Perspectiva do Processo
As ferramentas so classificadas de acordo com as atividades do processo que suportam
Perspectiva da Integrao
As ferramentas so classificadas de acordo com sua organizao em unidades integradas
Ambientes
Suporta tudo ou uma parte substancial de todo um processo de software. Normalmente inclui vrias reas de trabalho integradas
Pontos-chave
Processos de software so as atividades envolvidas na produo e desenvolvimento de um sistema de software. Eles so representados num modelo de processo de software. Atividades comuns aos processos de software so especificao, projeto e implementao, validao e evoluo. Modelos genricos de processos descrevem a organizao do processo de software. Modelos de processos iterativos descrevem o processo de software com um ciclo de atividades
Pontos-chave
Engenharia de requisitos o processo de desenvolver uma especificao de software Os processos de projeto e implementao transformam a especificao em um programa executvel A Validao envolve verificar que o sistema cumpre com as especificaes e as necessidades do usurio Evoluo se preocupa em modificar o sistema depois que ele est em uso Tecnologia CASE suporta atividades de processo de software
Pesquisa Captulo 4
Identifique todos os modelos de processos apresentados e construa um quadro comparativo Colocar todas as referncias Individual na prxima aula Mtodo principal Descrio resumida Vantagens e desvantagens Quais os softwares mais apropriados Faa uma anlise crtica de cada modelo Entregar no e-mail Assunto: FES_CAP4 Arquivo: Nome_FES_CAP4
Pesquisa - Apresentao
8 grupos 15 minutos de apresentao 2 apresentadores (mximo) 4 a 6 pginas formato da SBC Temas Frameworks de desenvolvimento (.NET Framework, 2 frameworks em Java e mais um em outra linguagem) Design Patterns CMMI e MPSBR Estimativas (COCOMO, COCOMO II) e Estimativas (APF, Anlise por Caso de Uso) RUP, Ferramentas CASE Testes de Software Estudo de Software House Segurana em Software Entregar antes no e-mail Assunto: FES_AP1 Arquivo: Nome_FES_AP1