+ Sistemas de Informação I Processo de software I Ricardo de Sousa Britto rbritto@ufpi.edu.br
+ O que é Engenharia de Software n Definição dada pela IEEE [IEE93]: n Aplicação de uma abordagem sistemática, disciplinada, e quantificável, para o desenvolvimento, operação e manutenção de software. n O estudo de abordagens sistemáticas, disciplinadas e quantificáveis.
+ ES como uma Tecnologia em Camadas Ferramentas Métodos Processo Foco na Qualidade
+ Foco na Qualidade n Qualquer abordagem de engenharia deve se apoiar no compromisso com a qualidade. n A cultura de processo contínuo de aperfeiçoamento leva a abordagens cada vez mais efetivas para a ES. n A base em que a ES se apoia é o foco na qualidade.
+ Camada de Processo n É o alicerce da engenharia de software. n O processo de ES funciona como um adesivo que mantém unidas as outras camadas. n O processo define um arcabouço que deve ser estabelecido para a utilização das tecnologias existentes. n Formam a base para controle de projetos e estabelecem o contexto onde são aplicados os vários métodos.
+ Camada de Métodos n Fornecem técnicas para a construção dos softwares. n Abragem um amplo conjunto de tarefas: n Comunicação n Análise de requisitos n Modelagem de projeto n Construção de programas n Testes e manuntenção
+ Camada de Ferramentas n Fornecem apoio automatizado ou semi-automatizado para o processo e para os métodos. n Engenharia de software apoiada por computador: Utiliza ferramentas que dão apoio ao desenvolvimento.
+ Arcabouço de Processo n Estabelece um alicerce para um processo de software por meio de: n Atividades de Arcabouço: Aplicáveis a todos os projetos de software. n Atividades Guarda-chuva: Aplicáveis durante todo o processo de software.
+ Arcabouço de Processo Processo de software Arcabouço de processo Atividades Guarda-chuva Atividade de arcabouço 1 Ação de ES 1.1 Conjunto de tarefas Ação de ES 1.k Conjunto de tarefas Atividade de arcabouço n Ação de ES n.1 Conjunto de tarefas Ação de ES n.k Conjunto de tarefas
+ Atividade de Arcabouço n Preenchida por um conjunto de ações de ES, que são coleções de tarefas relacionadas. n Cada ação é preenchida por tarefas de trabalho individuais que realizam alguma parte do trabalho determinado pela ação.
+ Atividade de Arcabouço n Para exemplificar, podemos determinar um arcabouço de processo genérico, com as seguintes atividades: n Comunicação (Interação com cliente) n Planejamento (Planejamento de tarefas, recursos, riscos, cronograma) n Modelagem (Criação de modelos) n Construção (Geração de código e testes) n Implantação (Entrega de software a cliente)
+ Ações de Engenharia n Para exemplificar uma ação de engenharia, usaremos a atividade de Modelagem do arcabouço genérico. n Ela é composta por duas ações de ES: n Análise - Levantamento, elaboração, negociação, especificação e validação de requisitos (modelos de análise). n Projeto Projeto de dados, projeto arquitetural, projeto de interface e projeto de componentes (modelo).
+ Conjuntos de Tarefas n Cada ação de ES é representada por um número diferente de conjuntos de tarefas. n Cada conjunto é na realidade uma coleção de: n tarefas de trabalho de ES n produtos de trabalho relacionados n pontos de garantia de qualidade n Marcos de projeto n O conjunto escolhido é o que melhor se adapta ao projeto e a equipe envolvida no projeto.
+ Atividades Guarda-chuva n Atividades que servem de apoio às atividades de arcabouço. n Atividades típicas dessa categoria: n Acompanhamento e controle de projeto de software (avaliação de progresso) n Gestão de risco (Avaliação de riscos) n Garantia de qualidade de software (Definição de atividades para garantia de qualidade) n Revisões técnicas formais (Descobrir e remover erros) n Medição (Medidas para satisfação de usuário) n Gestão de configuração de software (Gerencia efeitos de modificação no software) n Gestão de reusabilidade (Critérios para reutilização de componentes) n Preparação e produção do produto do trabalho ( Criação de modelos, documentos, registros, formulários)
+ Modelos de Processo n Modelos prescritivos: Enfatizam a definição, identificação e aplicação detalhada de atividades e tarefas de processo (Modelo em Espiral). n Modelos ágeis: Enfatizam a agilidade do projeto utilizando abordagens mais informais, enfatizando manobrabilidade e adaptabilidade (Scrum).
+ Modelos Prescritivos de Processo n Propostos originalmente para se colocar ordem no caos no desenvolvimento de software. n Historicamente esses modelos fornecem uma estrutura útil para o trabalho de ES. n São chamados de prescritivos porque prescrevem um conjunto de elementos de processo e um fluxo de trabalho.
+ Modelo em Cascata n O modelo em cascata ou ciclo de vida clássico, sugere uma abordagem sistemática e sequêncial. n É o paradigma mais antigo da ES. n Críticas a esse modelo levantaram a existência de determinados problemas: n Fluxo sequêncial é muito raro no desenvolvimento de softwares modernos. n Dificuldade por parte do cliente de estabelecer os requisitos do sistema. n Demora na disponibilização de versões beta de um software.
+ Modelo em Cascata Comunicação I Planejamento II Modelagem III Construção IV Implantação V I. Iniciação de projeto e levantamento de requisitos. II. Estimativas, cronogramação e monitoração. III. Análise e projeto. IV. Codificação e teste. V. Entrega, manuntenção e feedback.
+ Modelo em Cascata n A natureza linear desse modelo leva a estados de bloqueio, nos quais membros da equipe as vezes tem que esperar os outros. n O tempo gasto em espera as vezes pode exceder o tempo gasto produtivamente. n Uma vez que atualmente o desenvolvimento de software é muito rápido e dinâmico, esse modelo se torna inadequado. n Pode servir em situações onde os requisitos são fixos e o trabalho deve seguir ate o fim de modo linear.
+ Modelo em Cascata M M M M Projetos reais raramente seguem o fluxo sequencial que o modelo propõe Logo no início é difícil estabelecer explicitamente todos os requisitos. No começo dos projetos sempre existe uma incerteza natural Uma versão executável do software só fica disponível numa etapa avançada do desenvolvimento
+ Modelo em Cascata n O modelo Cascata trouxe contribuições importantes para o processo de desenvolvimento de software: n o processo de desenvolvimento de software deve ser sujeito à disciplina, planejamento e gerenciamento; n a implementação do produto deve ser postergada até que os objetivos tenham sido completamente entendidos.
+ Modelo Incremental n Combina elementos do modelo em cascata, aplicando-os de maneira iterativa. n Cada sequência linear produz incrementos de software passíveis de serem entregues.
+ Modelo Incremental
+ Modelo Incremental n Se o primeiro incremento tiver sucesso, pode se contratar pessoas extras pra equipe. n Os incrementos podem ser planejados para gerir riscos. n Se a equipe não possui conhecimento de determinada ferramenta, no primeiro incremento pode não se usá-la.