Citações
Software de qualidade é aquele que atende seus requisitos
Processo de software é uma metodologia para as atividades, ações e tarefas necessárias para desenvolver um software de alta qualidade.
Uma ideia proposta por uma série de renomados engenheiros de software: um processo de software deve priorizar flexibilidade, extensibilidade e velocidade de desenvolvimento, acima da alta qualidade.
Quando restrições cruzam múltiplas funções, recursos e informações do sistema, elas são, frequentemente, denominadas restrições cruzadas. (Aspecto)
Atividades Metodológicas
São atividades genéricas que podem ser encontradas em qualquer processo de engenharia de software, ela define 5 passos essenciais:
- Comunicação
- Planejamento
- Modelagem
- Construção
- Entrega
Atividades de Apoio (Umbrella activities)
Essas atividades complementam e auxiliam as atividades metodologicas, são elas:
- Controle e acompanhamento do projeto
- Administração de riscos
- Garantia de qualidade
- Revisões técnicas
- Medição
- Gerenciamento de configuração de software
- Gerenciamento da reusabilidade
- Preparo e produção de artefatos
Fluxo de Processo
Todo o processo de engenharia de software segue um dos quatro tipos de fluxo de processo:
- Linear
- Iterativo
- Evolucionário
- Paralelo
Padrões de Processo
Nome do Padrão
Forças
Tipo (Padrão de estágio, tarefas ou fases)
Contexto inicial
Problema
Solução
Contexto Resultante
Padrões relativos
Usos conhecidos e exemplos
Avaliação e aperfeiçoamento dos processos de software
- SCAMPI (CMMI)
- CBA IPI (CMM)
- SPICE (ISO/IEC15504)
- ISO 9001:2000
Modelos de Software
Modelo de Processo Prescritivo
A engenharia de software e o seu “produto” beiram o caos, ao mesmo tempo que está tudo organizado, está muito próximo também de surpresas. O modelo de processo prescritivo tenta trazer ordem ao caos através de um conjunto de elementos de processo como, atividades metodologicas, ações de engenharia, tarefas, produtos de trabalho, garantia de qualidade, etc.Todos os modelos de processo de software (listados abaixo) podem acomodar as atividades metodologicas genéricas (comunição, planejamento, modelagem, construção e entrega).
Os modelos de processo prescritvos são conhecidos como modelos tradicionais.
####
- Modelo em cascata
Também conhecido como ciclo de vida clássico e waterfall model. Existe uma variação desse modelo chamado Modelo V, em que a segunda parte existem testes que validam o software e se necessário pode-se corrigir antes de entregar o produto.
- Adia identificação de riscos
- Atrasa os testes do sistema
- Difícil entrega parcial do produto
- Difícil lidar com mudança de requisitos
####
- Incremental
O modelo incremental aplica sequencias lineares, de forma escalonada, a medida que o tempo vai avançando. Cada sequência linear gera “incrementais” (entregáveis/aprovados/liberados) do software. Exemplo do editor de textos, a cada incremento, novas funcionalidades são adicionadas.
####
Evolucionário (espiral e prototipação)
Prototipação (Problemas conhecidos)
O cliente enxerga o prototipo como o software já pronto, e exige que com algumas modificações ele se torne operacional, constantemente a gerência de desenvolvimento aceita.
Na pressa de apresentar um protótipo, o engenheiro de software opta por ferramentas como liguagem de programação, sistema operacional que lhe são mais intimas simplesmente. Após um tempo, pode se acomodar com tais escolhas e o projeto acaba adotando definitivamente essas tecnologias, que podem não ser as ideais.
Espiral
Parecido com o incremental, o software evolui a cada volta na espiral.
Concorrente
Define uma rede de processos que são ligados e possuem estados como concluido, aguardando modificações, em exame, inativo, etc.
Modelo de Processo Especializado
Baseado em Componentes
Esse modelo desenvolve aplicações a partir de componentes de software pré-empacotados.
As atividades de modelagem e construção desse modelo começam com a identificação de possíveis candidatos a componentes.
Métodos formais
Através de análise matemática são facilmente descobertos problemas no software como ambiguidade, incompletude e inconsistência
- Desvantagens: consome muito tempo e dinheiro, poucos desenvolvedores capacitados, dificil comunicação com o cliente.
PSP (Personal Software Process)
O PSP enfatiza a medição pessoal do todo o processo desde o planejamento até a entrega do software. Com esses dados de medição coletados, o engenheiro de software pode trabalhar em melhorar as partes falhas do processo executados por ele mesmo. O PSP não foi largamente adotado pelo setor, os motivos têm mais a ver com a natureza humana e com a inércia organizacional do que propriamente com o processo desenvolvido por Watts Humphrey.
- Planejamento
- Projeto de alto nível
- Revisão de projeto de alto nível
- Desenvolvimento
- Autópsia
TSP (Team Software Process)
Os principais objetivos do TSP são:
- Equipes auto-dirigidas
- Mostrar gerentes como treinar e manter equipes
- Acelerar o aperfeiçoamento dos processos de software
- Fornecer orientações para melhorias a organizações
- Preparar universitário para trabalhar em equipe a nivel industrial
As atividades metodológicas do TSP são:
- Lançamento do projeto
- Projeto de alto nivel
- Implementação
- Integração e testes
- Autópsia
Assim como o PSP, essa metodologia induz a equipe a se auto-avaliar, atraves de medições do processo e do produto. —————————–
UP (Unified Process)
É uma metodologia de processo. Foi criado pelo mesmos autores da UML. Possui três características chave:
- Dirigido por casos de uso
- Centrado na arquitetura
- Iterativo e incremental
Fases do RUP
- Concepção (comunicação e planejamento)
- Elaboração (comunicação e modelagem)
- Construção (construção)
- Transição (última parte da construção e primeira parte da atividade de entrega)