Mapa mental
CAPÍTULO 2 Engenharia de software
Contenido del mapa
CAPÍTULO 2 Engenharia de software
• Pessoas, negócios e governos dependem, cada vez mais, de software para a tomada de decisões estratégicas e táticas, assim como para controle e para operações cotidianas. Se o software falhar, as pessoas e as principais empresas poderão ter desde pequenos inconvenientes até falhas catastróficas. Depreende-se, portanto, que um software deve apresentar qualidade elevada.
• À medida que o valor de uma aplicação específica aumenta, a probabilidade é de que sua base de usuários e longevidade também cresçam. À medida que sua base de usuários e seu tempo em uso forem aumentando, a demanda por adaptação e aperfeiçoamento também vai aumentar. Depreende-se, portanto, que um software deve ser passível de manutenção.
2.1 Definição da disciplina
- O IEEE define engenharia de software como a aplicação de uma abordagem sistemática, disciplinada e quantificável no desenvolvimento, operação e manutenção de software, assim como o estudo dessas abordagens. A engenharia de software é uma tecnologia em camadas, fundamentada em um compromisso com a qualidade organizacional, promovido por filosofias como a gestão da qualidade total e o Seis Sigma, que incentivam a melhoria contínua dos processos.
- A base dessa disciplina é a camada de processos, que integra e coordena as diversas tecnologias de engenharia de software para permitir um desenvolvimento racional e pontual. O processo estabelece uma metodologia que define a aplicação de métodos técnicos, a produção de artefatos e a gestão de qualidade e mudanças.
- Os métodos da engenharia de software envolvem várias tarefas técnicas, incluindo comunicação, análise de requisitos, modelagem de projeto, construção de programas, testes e suporte. Esses métodos são regidos por princípios básicos que incluem atividades de modelagem e técnicas descritivas.
- As ferramentas de engenharia de software oferecem suporte automatizado ou semiautomatizado aos processos e métodos. Quando integradas, essas ferramentas criam um sistema de suporte ao desenvolvimento de software, conhecido como engenharia de software assistida por computador.
- Os métodos da engenharia de software envolvem várias tarefas técnicas, incluindo comunicação, análise de requisitos, modelagem de projeto, construção de programas, testes e suporte. Esses métodos são regidos por princípios básicos que incluem atividades de modelagem e técnicas descritivas.
- A base dessa disciplina é a camada de processos, que integra e coordena as diversas tecnologias de engenharia de software para permitir um desenvolvimento racional e pontual. O processo estabelece uma metodologia que define a aplicação de métodos técnicos, a produção de artefatos e a gestão de qualidade e mudanças.
- 2.2 O processo de software
- O processo é definido como um conjunto de atividades, ações e tarefas realizadas na criação de um artefato. Atividades têm objetivos amplos, como comunicação com os envolvidos, e são aplicáveis independentemente do projeto. Ações, como o projeto arquitetural, envolvem tarefas que produzem artefatos de software importantes, enquanto tarefas se concentram em objetivos menores e bem-definidos, como testes de unidade, gerando resultados tangíveis.
- Na engenharia de software, um processo não é uma prescrição rígida, mas uma abordagem adaptável que permite à equipe de software selecionar e executar ações e tarefas apropriadas. O objetivo é sempre entregar software pontualmente e com qualidade que satisfaça os patrocinadores e usuários.
- 2.2.1 A metodologia do processo
- Uma metodologia de processo estabelece a base para um processo completo de engenharia de software ao identificar atividades metodológicas essenciais para todos os projetos, independentemente de tamanho ou complexidade. Além disso, engloba atividades de apoio aplicáveis ao processo inteiro. A metodologia genérica de engenharia de software inclui cinco atividades principais:
- 1. Comunicação: Envolve a colaboração com o cliente e outros envolvidos para entender os objetivos e reunir requisitos que definam as funções do software.
- 2. Planejamento: Cria um "mapa" (plano de projeto de software) que define as tarefas técnicas, riscos, recursos necessários, produtos resultantes e cronograma de trabalho.
- 3. Modelagem: Utiliza modelos para esboçar o projeto, compreendendo melhor as necessidades do software e como resolvê-las.
- 4. Construção: Combina a geração de código e testes para identificar e corrigir erros na codificação.
- 5. Entrega: O software, completo ou como um incremento parcial, é entregue ao cliente para avaliação e feedback.
- 4. Construção: Combina a geração de código e testes para identificar e corrigir erros na codificação.
- 3. Modelagem: Utiliza modelos para esboçar o projeto, compreendendo melhor as necessidades do software e como resolvê-las.
- 2. Planejamento: Cria um "mapa" (plano de projeto de software) que define as tarefas técnicas, riscos, recursos necessários, produtos resultantes e cronograma de trabalho.
- 1. Comunicação: Envolve a colaboração com o cliente e outros envolvidos para entender os objetivos e reunir requisitos que definam as funções do software.
- 2.2.2 Atividades de apoio
- As atividades metodológicas do processo de engenharia de software são complementadas por diversas atividades de apoio, aplicadas ao longo de todo o projeto para ajudar a equipe a gerenciar e controlar o progresso, a qualidade, as alterações e os riscos. As atividades de apoio típicas incluem:
- 1. Controle e Acompanhamento do Projeto: Permite à equipe avaliar o progresso em relação ao plano e tomar medidas necessárias para cumprir o cronograma.
- 2. Administração de Riscos: Avalia riscos que podem afetar o resultado ou a qualidade do produto/projeto.
- 3. Garantia da Qualidade de Software: Define e conduz atividades para garantir a qualidade do software.
- 4. Revisões Técnicas: Avaliam artefatos de engenharia de software para identificar e eliminar erros antes que eles se propaguem.
- 5. Medição: Define e coleta medidas do processo, projeto e produto, auxiliando na entrega do software de acordo com os requisitos e podendo ser usada com outras atividades.
- 6. Gerenciamento da Configuração de Software: Gerencia os efeitos das mudanças ao longo do processo.
- 7. Gerenciamento da Capacidade de Reutilização: Define critérios para a reutilização de artefatos e estabelece mecanismos para obter componentes reutilizáveis.
- 8. Preparo e Produção de Artefatos de Software: Envolve atividades necessárias para criar artefatos como modelos, documentos, logs, formulários e listas.
- 7. Gerenciamento da Capacidade de Reutilização: Define critérios para a reutilização de artefatos e estabelece mecanismos para obter componentes reutilizáveis.
- 6. Gerenciamento da Configuração de Software: Gerencia os efeitos das mudanças ao longo do processo.
- 5. Medição: Define e coleta medidas do processo, projeto e produto, auxiliando na entrega do software de acordo com os requisitos e podendo ser usada com outras atividades.
- 4. Revisões Técnicas: Avaliam artefatos de engenharia de software para identificar e eliminar erros antes que eles se propaguem.
- 3. Garantia da Qualidade de Software: Define e conduz atividades para garantir a qualidade do software.
- 2. Administração de Riscos: Avalia riscos que podem afetar o resultado ou a qualidade do produto/projeto.
- 1. Controle e Acompanhamento do Projeto: Permite à equipe avaliar o progresso em relação ao plano e tomar medidas necessárias para cumprir o cronograma.
- 2.2.3 Adaptação do processo
- O processo de engenharia de software não é rígido nem deve ser seguido à risca; ele precisa ser ágil e adaptável ao problema, ao projeto, à equipe e à cultura organizacional. Isso implica que o processo adotado para um projeto pode ser muito diferente do adotado para outro. As principais diferenças podem incluir:
- Fluxo Geral: A sequência de atividades, ações e tarefas e suas interdependências. Definição de Ações e Tarefas: O grau de detalhamento das ações e tarefas dentro de cada atividade metodológica. Artefatos de Software: Quais artefatos são identificados e exigidos. Garantia da Qualidade: A forma de aplicar as atividades de garantia da qualidade. Acompanhamento e Controle: A maneira de aplicar as atividades de acompanhamento e controle do projeto. Detalhamento e Rigor: O grau geral de detalhamento e rigor da descrição do processo. Envolvimento do Cliente e Envolvidos: O grau de envolvimento do cliente e de outros interessados no projeto. Autonomia da Equipe: O nível de autonomia dado à equipe de software. Organização da Equipe: O grau de prescrição sobre a organização da equipe.
- 2.3 A prática da engenharia de software 2.3.1 A essência da prática
- No livro "How to Solve It", George Polya delineou a essência da resolução de problemas e da prática da engenharia de software em quatro passos:
- 1. Compreender o Problema (comunicação e análise): Identificar os envolvidos e suas necessidades. Determinar os dados, funções e recursos necessários. Dividir o problema em partes menores e compreensíveis. Representar o problema graficamente, se possível.
- 2. Planejar uma Solução (modelagem e projeto de software): Reconhecer padrões de problemas semelhantes e soluções anteriores. Reutilizar elementos de soluções já implementadas. Definir subproblemas e suas soluções imediatas. Criar um modelo de projeto que guie a implementação.
- 3. Executar o Plano (geração de código): Seguir o projeto elaborado como um mapa. Adaptar-se a desvios inesperados e melhorias no caminho. Garantir que o código-fonte corresponda ao modelo de projeto. Revisar e validar o projeto e o código.
- 4. Examinar o Resultado (testes e garantia da qualidade): Implementar uma estratégia de testes para cada componente da solução. Validar o software contra as necessidades e solicitações dos envolvidos. Realizar testes suficientes para identificar e corrigir o maior número possível de erros.
- 3. Executar o Plano (geração de código): Seguir o projeto elaborado como um mapa. Adaptar-se a desvios inesperados e melhorias no caminho. Garantir que o código-fonte corresponda ao modelo de projeto. Revisar e validar o projeto e o código.
- 2. Planejar uma Solução (modelagem e projeto de software): Reconhecer padrões de problemas semelhantes e soluções anteriores. Reutilizar elementos de soluções já implementadas. Definir subproblemas e suas soluções imediatas. Criar um modelo de projeto que guie a implementação.
- 1. Compreender o Problema (comunicação e análise): Identificar os envolvidos e suas necessidades. Determinar os dados, funções e recursos necessários. Dividir o problema em partes menores e compreensíveis. Representar o problema graficamente, se possível.
- 2.3.2 Princípios gerais
- David Hooker propôs sete princípios essenciais para a prática da engenharia de software, conforme descrito no livro "How to Solve It". Esses princípios são:
- A razão de existir: Um sistema de software deve agregar valor real aos seus usuários. Todas as decisões devem ser tomadas com este princípio em mente, assegurando que cada requisito, funcionalidade ou escolha de plataforma realmente contribua para o valor do sistema.
- Mantenha a simplicidade (KISS - Keep It Simple, Stupid): Projetos de software devem ser o mais simples possível, sem sacrificar funcionalidades importantes. Simplicidade facilita a compreensão e manutenção do sistema, evitando complicações desnecessárias.
- Mantenha a visão: Uma visão clara é crucial para o sucesso do projeto. A falta de uma visão pode resultar em um projeto incoerente e mal integrado. Um arquiteto responsável deve assegurar a integridade conceitual do sistema.
- O que um produz, outros consomem: Sistemas de software raramente são usados isoladamente. É importante projetar, especificar e implementar o sistema de maneira que seja compreensível e utilizável por outros, como usuários, mantenedores e documentadores.
- Esteja aberto ao futuro: Sistemas de software devem ser projetados para durar e se adaptar a mudanças. Isso envolve preparar-se para diversas possibilidades, evitando projetos limitados e focando em soluções gerais.
- Planeje com antecedência visando a reutilização: Reutilização de código e design economiza tempo e esforço. Para alcançar isso, é necessário planejamento e previsão, criando componentes reutilizáveis que aumentem o valor do sistema.
- Pense: Reflexão antes da ação quase sempre produz melhores resultados. Analisar cuidadosamente cada etapa do desenvolvimento não só melhora a qualidade do trabalho, mas também oferece valiosa experiência e conhecimento para futuras atividades.
- Planeje com antecedência visando a reutilização: Reutilização de código e design economiza tempo e esforço. Para alcançar isso, é necessário planejamento e previsão, criando componentes reutilizáveis que aumentem o valor do sistema.
- Esteja aberto ao futuro: Sistemas de software devem ser projetados para durar e se adaptar a mudanças. Isso envolve preparar-se para diversas possibilidades, evitando projetos limitados e focando em soluções gerais.
- O que um produz, outros consomem: Sistemas de software raramente são usados isoladamente. É importante projetar, especificar e implementar o sistema de maneira que seja compreensível e utilizável por outros, como usuários, mantenedores e documentadores.
- Mantenha a visão: Uma visão clara é crucial para o sucesso do projeto. A falta de uma visão pode resultar em um projeto incoerente e mal integrado. Um arquiteto responsável deve assegurar a integridade conceitual do sistema.
- Mantenha a simplicidade (KISS - Keep It Simple, Stupid): Projetos de software devem ser o mais simples possível, sem sacrificar funcionalidades importantes. Simplicidade facilita a compreensão e manutenção do sistema, evitando complicações desnecessárias.
- A razão de existir: Um sistema de software deve agregar valor real aos seus usuários. Todas as decisões devem ser tomadas com este princípio em mente, assegurando que cada requisito, funcionalidade ou escolha de plataforma realmente contribua para o valor do sistema.
- David Hooker propôs sete princípios essenciais para a prática da engenharia de software, conforme descrito no livro "How to Solve It". Esses princípios são:
- No livro "How to Solve It", George Polya delineou a essência da resolução de problemas e da prática da engenharia de software em quatro passos:
- O processo de engenharia de software não é rígido nem deve ser seguido à risca; ele precisa ser ágil e adaptável ao problema, ao projeto, à equipe e à cultura organizacional. Isso implica que o processo adotado para um projeto pode ser muito diferente do adotado para outro. As principais diferenças podem incluir:
- As atividades metodológicas do processo de engenharia de software são complementadas por diversas atividades de apoio, aplicadas ao longo de todo o projeto para ajudar a equipe a gerenciar e controlar o progresso, a qualidade, as alterações e os riscos. As atividades de apoio típicas incluem:
- Uma metodologia de processo estabelece a base para um processo completo de engenharia de software ao identificar atividades metodológicas essenciais para todos os projetos, independentemente de tamanho ou complexidade. Além disso, engloba atividades de apoio aplicáveis ao processo inteiro. A metodologia genérica de engenharia de software inclui cinco atividades principais:
- O processo é definido como um conjunto de atividades, ações e tarefas realizadas na criação de um artefato. Atividades têm objetivos amplos, como comunicação com os envolvidos, e são aplicáveis independentemente do projeto. Ações, como o projeto arquitetural, envolvem tarefas que produzem artefatos de software importantes, enquanto tarefas se concentram em objetivos menores e bem-definidos, como testes de unidade, gerando resultados tangíveis.
- O IEEE define engenharia de software como a aplicação de uma abordagem sistemática, disciplinada e quantificável no desenvolvimento, operação e manutenção de software, assim como o estudo dessas abordagens. A engenharia de software é uma tecnologia em camadas, fundamentada em um compromisso com a qualidade organizacional, promovido por filosofias como a gestão da qualidade total e o Seis Sigma, que incentivam a melhoria contínua dos processos.
Información
- Descripción
- engenharia de software Mapa Mental sobre CAPÍTULO 2 Engenharia de software, creado por Bruno Mateus el 07/08/2024.
- Creado por
- Bruno Mateus
- Visitas
- 1
- Valoración