O documento discute os métodos ágeis e o gerenciamento do ciclo de vida de aplicações (ALM), apresentando os desafios comuns em projetos de software, as fases do ALM e as disciplinas envolvidas.
Este documento discute estratégias para melhorar a gestão da manutenção de aplicativos de TI por meio de uma abordagem "Lean". Ele sugere (1) organizar o processo em oferta e demanda com base na capacidade de TI, (2) conter a demanda dos usuários por meio de negociações com analistas de negócios, e (3) estabelecer um fluxo de trabalho com prazos garantidos para atender a demanda acordada dentro da capacidade. A contenção da demanda e o cumprimento dos prazos são cruciais para equilibr
Cinco motivos para você não adotar metodologias ágeis - Rafael Prikladnicki F...Flávio Steffens
O documento discute cinco motivos alegados para não adotar metodologias ágeis no desenvolvimento de software e refuta cada um deles. Ele argumenta que as metodologias ágeis são mais adequadas à realidade de projetos de software, que sempre enfrentam incertezas e mudanças. Apresenta também evidências de que projetos ágeis tendem a ser mais produtivos e satisfazer melhor os stakeholders.
O documento discute o tópico da manutenção de software. Ele explica que a manutenção envolve qualquer modificação feita no software após seu lançamento e que inclui correções de erros e novas funcionalidades. Também destaca que a manutenção é um processo contínuo e que as empresas geralmente gastam mais com manutenção do que com desenvolvimento de novos sistemas.
Processos de Desenvolvimento de Software - teoria e práticaRalph Rassweiler
O documento discute os conceitos e aplicações de Processos de Desenvolvimento de Software (PDS), comparando modelos tradicionais como Cascata e RUP com modelos ágeis como SCRUM e XP. Resume que PDS organizam atividades, papéis e artefatos para o desenvolvimento de software, e que não existe um modelo perfeito, sendo importante customizá-los de acordo com cada organização.
O documento apresenta e descreve os principais modelos de processos de desenvolvimento de software, incluindo o modelo em cascata, evolucionário, de desenvolvimento incremental, espiral e prototipação. Destaca as definições, características, vantagens e desvantagens de cada modelo, além de compará-los e discutir a importância da abordagem ágil.
Este documento discute a qualidade de software, abordando os principais motivos de falha em projetos de software, normas e modelos de qualidade, qualidade do processo e do produto de software, e testes de software. Ele fornece estatísticas sobre falhas em projetos de software, fatores que levam ao fracasso, e características de qualidade de produtos de software de acordo com a norma brasileira.
Este documento discute estratégias para melhorar a gestão da manutenção de aplicativos de TI por meio de uma abordagem "Lean". Ele sugere (1) organizar o processo em oferta e demanda com base na capacidade de TI, (2) conter a demanda dos usuários por meio de negociações com analistas de negócios, e (3) estabelecer um fluxo de trabalho com prazos garantidos para atender a demanda acordada dentro da capacidade. A contenção da demanda e o cumprimento dos prazos são cruciais para equilibr
Cinco motivos para você não adotar metodologias ágeis - Rafael Prikladnicki F...Flávio Steffens
O documento discute cinco motivos alegados para não adotar metodologias ágeis no desenvolvimento de software e refuta cada um deles. Ele argumenta que as metodologias ágeis são mais adequadas à realidade de projetos de software, que sempre enfrentam incertezas e mudanças. Apresenta também evidências de que projetos ágeis tendem a ser mais produtivos e satisfazer melhor os stakeholders.
O documento discute o tópico da manutenção de software. Ele explica que a manutenção envolve qualquer modificação feita no software após seu lançamento e que inclui correções de erros e novas funcionalidades. Também destaca que a manutenção é um processo contínuo e que as empresas geralmente gastam mais com manutenção do que com desenvolvimento de novos sistemas.
Processos de Desenvolvimento de Software - teoria e práticaRalph Rassweiler
O documento discute os conceitos e aplicações de Processos de Desenvolvimento de Software (PDS), comparando modelos tradicionais como Cascata e RUP com modelos ágeis como SCRUM e XP. Resume que PDS organizam atividades, papéis e artefatos para o desenvolvimento de software, e que não existe um modelo perfeito, sendo importante customizá-los de acordo com cada organização.
O documento apresenta e descreve os principais modelos de processos de desenvolvimento de software, incluindo o modelo em cascata, evolucionário, de desenvolvimento incremental, espiral e prototipação. Destaca as definições, características, vantagens e desvantagens de cada modelo, além de compará-los e discutir a importância da abordagem ágil.
Este documento discute a qualidade de software, abordando os principais motivos de falha em projetos de software, normas e modelos de qualidade, qualidade do processo e do produto de software, e testes de software. Ele fornece estatísticas sobre falhas em projetos de software, fatores que levam ao fracasso, e características de qualidade de produtos de software de acordo com a norma brasileira.
O documento fornece uma introdução aos métodos ágeis, descrevendo seus princípios e como o Scrum funciona de forma iterativa e incremental, com papéis como Product Owner, Equipe de Desenvolvimento e Scrum Master.
O documento descreve o modelo cascata de engenharia de software, no qual as atividades de desenvolvimento ocorrem de forma sequencial e linear, com a saída de uma etapa servindo como entrada para a próxima. O modelo introduziu disciplina e estrutura ao processo de desenvolvimento, porém também é criticado por ser rígido e não permitir feedback ou modificações entre as etapas. O documento discute também quando o modelo cascata é mais apropriado e quais são seus principais problemas na prática.
Este documento discute vários modelos de ciclo de vida de software, incluindo cascata, prototipação, espiral, incremental, RAD e modelo em V. Cada modelo é explicado brevemente com suas vantagens e desvantagens. O documento fornece uma introdução geral aos principais modelos de ciclo de vida utilizados no desenvolvimento de software.
O documento apresenta os 12 princípios ágeis, princípios esses que visam maximizar a entrega de resultados em projetos utilizando metodologias ágeis. Os princípios enfatizam a entrega contínua de valor ao cliente, aceitação de mudanças, entregas frequentes de software funcionando, colaboração entre times e foco na motivação das equipes.
Metodologias ágeis de desenvolvimento trabalhoRuan Pozzebon
1. O documento apresenta uma pesquisa sobre a metodologia ágil SCRUM para desenvolvimento de software, com o objetivo de explicar suas vantagens em relação às metodologias clássicas. É descrita a revisão bibliográfica realizada sobre SCRUM e outras metodologias ágeis e são apresentados os resultados e conclusões da pesquisa.
2. O documento resume uma pesquisa sobre a metodologia ágil SCRUM para desenvolvimento de software, explicando suas vantagens em relação às metodologias tradicionais. Detal
Este documento descreve vários modelos de processo de desenvolvimento de software, incluindo modelos em cascata, iterativos, incrementais e o modelo espiral. Explica conceitos-chave como fases de engenharia de software e atividades básicas e discute fatores a considerar na seleção do modelo apropriado para cada projeto.
O documento descreve os principais conceitos de engenharia de software, incluindo: (1) as camadas de engenharia de software focadas em qualidade, processos, métodos e ferramentas; (2) os modelos de processo de desenvolvimento de software como linear seqüencial, prototipação, incremental e espiral; (3) o Rational Unified Process (RUP) como um modelo de processo iterativo e incremental baseado em componentes e casos de uso.
A engenharia de software estabelece princípios para desenvolver software de forma eficiente e de qualidade, utilizando métodos, ferramentas e processos adequados a cada projeto. Existem vários paradigmas como cascata, incremental, RAD e orientado a objetos que se adaptam melhor a diferentes situações considerando fatores como prazo, complexidade e riscos. A escolha do modelo ideal deve levar em conta a
O desenvolvimento iterativo e incremental é um processo cíclico de desenvolvimento de software que começa com um planejamento inicial e termina com entregas incrementais entre as iterações, permitindo que o software seja desenvolvido e aprimorado gradualmente.
O documento apresenta os principais paradigmas de engenharia de software, como desenvolvimento clássico (cascata), prototipagem, modelo iterativo e espiral. Discute as etapas do ciclo de vida de desenvolvimento de software, como levantamento de requisitos, análise, projeto, implementação, testes e implantação. Também aborda os pontos positivos e negativos de cada paradigma.
O documento discute os desafios comuns em projetos de software, como requisitos não gerenciados efetivamente e falta de comunicação entre membros da equipe. A solução proposta é o uso do ALM (Application Lifecycle Management) para melhorar a produtividade através de ferramentas como gerenciamento de defeitos, controle de versão e automação de testes. O documento também apresenta o Visual Studio 2013 e o Team Foundation Server como plataformas ALM capazes de integrar todos os membros da equipe e melhorar a visibilidade do status do projeto.
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixCris Fidelix
O documento discute a evolução da preocupação com a qualidade de software ao longo dos anos, desde as décadas de 1950 a 2000. Nos anos iniciais, os erros eram conhecidos apenas após o término do programa. Nos anos 1970 surgiram análise estruturada e teste antes do término. Nos anos 1980 houve primeiras preocupações com padrões de qualidade. Nos anos 1990 surgiram primeiros processos de teste motivados pelo bug do milênio. Nos anos 2000, testes foram estruturados dentro do processo de desenvolvimento e surgiram ferramentas de
O documento apresenta o método Scrum, uma metodologia ágil para desenvolvimento de software. Discute as vantagens das metodologias ágeis em relação às clássicas, como entregas frequentes de funcionalidades e discussões diárias. Também explica os processos, termos e características principais do Scrum, como Sprints curtos e reuniões diárias.
A Evolucao dos Processos de Desenvolvimento de SoftwareRobson Silva Espig
O documento descreve a evolução dos processos de desenvolvimento de software, começando pelo processo cascata e depois apresentando processos iterativos e incrementais como o espiral e o unificado. O processo cascata estabeleceu um ciclo de vida básico mas tem problemas como dificuldade em definir requisitos completos no início e longo tempo até versões utilizáveis. Processos iterativos resolvem isso ao dividirem o trabalho em pacotes menores com entregas parciais frequentes.
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixCris Fidelix
O documento descreve diferentes modelos de desenvolvimento de software, incluindo o modelo cascata, incremental e RAD. O modelo cascata é linear e sequencial, enquanto os modelos incremental e RAD dividem o projeto em incrementos/partes menores com entregas parciais ao cliente.
O documento discute requisitos de software, incluindo a importância de definir claramente o problema, visão do produto e requisitos funcionais e não funcionais. Também aborda processos de engenharia de requisitos como obter, verificar e validar requisitos para garantir que o sistema atenda às necessidades do usuário.
O documento discute a qualidade de software, definindo-a como a conformidade aos requisitos. Apresenta os desafios na construção de software, como alteração de requisitos e comportamento inesperado, e soluções como metodologias e ferramentas automatizadas. Também aborda os conceitos de defeito, falha e seus impactos.
O documento descreve os princípios e métodos ágeis de desenvolvimento de software. Apresenta o Manifesto Ágil de 2001, que valoriza indivíduos, software funcional, colaboração com clientes e resposta à mudança. Também discute exemplos de métodos ágeis como SCRUM, XP, FDD e DSDM.
Fluxograma processo - desenvolvimento de softwareAragon Vieira
O documento descreve o fluxo de trabalho de desenvolvimento de software, incluindo levantamento de requisitos, criação de histórias de usuário, desenvolvimento, testes e implantação em produção. O processo envolve aprovação do cliente, classificação de atividades e tarefas, e testes realizados por desenvolvedores e testadores antes da implantação final.
SQL Server Heterogêneo: SQL Server + BigDataRodrigo Dornel
Este documento apresenta uma introdução sobre bancos de dados heterogêneos, incluindo XML, NoSQL, Hadoop, HDFS, Hive e DocumentDB. Também discute como esses sistemas podem ser usados junto com o SQL Server, demonstrando funcionalidades como JSON, PolyBase e SSIS. O objetivo é mostrar como é possível trabalhar com diferentes tipos e fontes de dados usando ferramentas do SQL Server.
Mentoring para prova MTA - Fundamento de Banco de DadosRodrigo Dornel
The document discusses resources for pursuing a career in information technology focused on database administration. It provides links to Microsoft websites for training, documentation, and virtual labs on SQL Server and Azure. It also lists topics covered in Microsoft technology certification exams.
O documento fornece uma introdução aos métodos ágeis, descrevendo seus princípios e como o Scrum funciona de forma iterativa e incremental, com papéis como Product Owner, Equipe de Desenvolvimento e Scrum Master.
O documento descreve o modelo cascata de engenharia de software, no qual as atividades de desenvolvimento ocorrem de forma sequencial e linear, com a saída de uma etapa servindo como entrada para a próxima. O modelo introduziu disciplina e estrutura ao processo de desenvolvimento, porém também é criticado por ser rígido e não permitir feedback ou modificações entre as etapas. O documento discute também quando o modelo cascata é mais apropriado e quais são seus principais problemas na prática.
Este documento discute vários modelos de ciclo de vida de software, incluindo cascata, prototipação, espiral, incremental, RAD e modelo em V. Cada modelo é explicado brevemente com suas vantagens e desvantagens. O documento fornece uma introdução geral aos principais modelos de ciclo de vida utilizados no desenvolvimento de software.
O documento apresenta os 12 princípios ágeis, princípios esses que visam maximizar a entrega de resultados em projetos utilizando metodologias ágeis. Os princípios enfatizam a entrega contínua de valor ao cliente, aceitação de mudanças, entregas frequentes de software funcionando, colaboração entre times e foco na motivação das equipes.
Metodologias ágeis de desenvolvimento trabalhoRuan Pozzebon
1. O documento apresenta uma pesquisa sobre a metodologia ágil SCRUM para desenvolvimento de software, com o objetivo de explicar suas vantagens em relação às metodologias clássicas. É descrita a revisão bibliográfica realizada sobre SCRUM e outras metodologias ágeis e são apresentados os resultados e conclusões da pesquisa.
2. O documento resume uma pesquisa sobre a metodologia ágil SCRUM para desenvolvimento de software, explicando suas vantagens em relação às metodologias tradicionais. Detal
Este documento descreve vários modelos de processo de desenvolvimento de software, incluindo modelos em cascata, iterativos, incrementais e o modelo espiral. Explica conceitos-chave como fases de engenharia de software e atividades básicas e discute fatores a considerar na seleção do modelo apropriado para cada projeto.
O documento descreve os principais conceitos de engenharia de software, incluindo: (1) as camadas de engenharia de software focadas em qualidade, processos, métodos e ferramentas; (2) os modelos de processo de desenvolvimento de software como linear seqüencial, prototipação, incremental e espiral; (3) o Rational Unified Process (RUP) como um modelo de processo iterativo e incremental baseado em componentes e casos de uso.
A engenharia de software estabelece princípios para desenvolver software de forma eficiente e de qualidade, utilizando métodos, ferramentas e processos adequados a cada projeto. Existem vários paradigmas como cascata, incremental, RAD e orientado a objetos que se adaptam melhor a diferentes situações considerando fatores como prazo, complexidade e riscos. A escolha do modelo ideal deve levar em conta a
O desenvolvimento iterativo e incremental é um processo cíclico de desenvolvimento de software que começa com um planejamento inicial e termina com entregas incrementais entre as iterações, permitindo que o software seja desenvolvido e aprimorado gradualmente.
O documento apresenta os principais paradigmas de engenharia de software, como desenvolvimento clássico (cascata), prototipagem, modelo iterativo e espiral. Discute as etapas do ciclo de vida de desenvolvimento de software, como levantamento de requisitos, análise, projeto, implementação, testes e implantação. Também aborda os pontos positivos e negativos de cada paradigma.
O documento discute os desafios comuns em projetos de software, como requisitos não gerenciados efetivamente e falta de comunicação entre membros da equipe. A solução proposta é o uso do ALM (Application Lifecycle Management) para melhorar a produtividade através de ferramentas como gerenciamento de defeitos, controle de versão e automação de testes. O documento também apresenta o Visual Studio 2013 e o Team Foundation Server como plataformas ALM capazes de integrar todos os membros da equipe e melhorar a visibilidade do status do projeto.
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixCris Fidelix
O documento discute a evolução da preocupação com a qualidade de software ao longo dos anos, desde as décadas de 1950 a 2000. Nos anos iniciais, os erros eram conhecidos apenas após o término do programa. Nos anos 1970 surgiram análise estruturada e teste antes do término. Nos anos 1980 houve primeiras preocupações com padrões de qualidade. Nos anos 1990 surgiram primeiros processos de teste motivados pelo bug do milênio. Nos anos 2000, testes foram estruturados dentro do processo de desenvolvimento e surgiram ferramentas de
O documento apresenta o método Scrum, uma metodologia ágil para desenvolvimento de software. Discute as vantagens das metodologias ágeis em relação às clássicas, como entregas frequentes de funcionalidades e discussões diárias. Também explica os processos, termos e características principais do Scrum, como Sprints curtos e reuniões diárias.
A Evolucao dos Processos de Desenvolvimento de SoftwareRobson Silva Espig
O documento descreve a evolução dos processos de desenvolvimento de software, começando pelo processo cascata e depois apresentando processos iterativos e incrementais como o espiral e o unificado. O processo cascata estabeleceu um ciclo de vida básico mas tem problemas como dificuldade em definir requisitos completos no início e longo tempo até versões utilizáveis. Processos iterativos resolvem isso ao dividirem o trabalho em pacotes menores com entregas parciais frequentes.
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixCris Fidelix
O documento descreve diferentes modelos de desenvolvimento de software, incluindo o modelo cascata, incremental e RAD. O modelo cascata é linear e sequencial, enquanto os modelos incremental e RAD dividem o projeto em incrementos/partes menores com entregas parciais ao cliente.
O documento discute requisitos de software, incluindo a importância de definir claramente o problema, visão do produto e requisitos funcionais e não funcionais. Também aborda processos de engenharia de requisitos como obter, verificar e validar requisitos para garantir que o sistema atenda às necessidades do usuário.
O documento discute a qualidade de software, definindo-a como a conformidade aos requisitos. Apresenta os desafios na construção de software, como alteração de requisitos e comportamento inesperado, e soluções como metodologias e ferramentas automatizadas. Também aborda os conceitos de defeito, falha e seus impactos.
O documento descreve os princípios e métodos ágeis de desenvolvimento de software. Apresenta o Manifesto Ágil de 2001, que valoriza indivíduos, software funcional, colaboração com clientes e resposta à mudança. Também discute exemplos de métodos ágeis como SCRUM, XP, FDD e DSDM.
Fluxograma processo - desenvolvimento de softwareAragon Vieira
O documento descreve o fluxo de trabalho de desenvolvimento de software, incluindo levantamento de requisitos, criação de histórias de usuário, desenvolvimento, testes e implantação em produção. O processo envolve aprovação do cliente, classificação de atividades e tarefas, e testes realizados por desenvolvedores e testadores antes da implantação final.
SQL Server Heterogêneo: SQL Server + BigDataRodrigo Dornel
Este documento apresenta uma introdução sobre bancos de dados heterogêneos, incluindo XML, NoSQL, Hadoop, HDFS, Hive e DocumentDB. Também discute como esses sistemas podem ser usados junto com o SQL Server, demonstrando funcionalidades como JSON, PolyBase e SSIS. O objetivo é mostrar como é possível trabalhar com diferentes tipos e fontes de dados usando ferramentas do SQL Server.
Mentoring para prova MTA - Fundamento de Banco de DadosRodrigo Dornel
The document discusses resources for pursuing a career in information technology focused on database administration. It provides links to Microsoft websites for training, documentation, and virtual labs on SQL Server and Azure. It also lists topics covered in Microsoft technology certification exams.
O documento apresenta Rodrigo Dornel, um especialista em mineração de dados com SQL Server. A palestra irá cobrir introdução à mineração de dados, tarefas comuns, principais algoritmos, análise de resultados e demonstrações práticas usando SQL Server Analysis Services e Excel. O objetivo é mostrar como o SQL Server possui ferramentas poderosas para mineração de dados.
O documento apresenta Rodrigo Dornel e discute como o SQL Server pode interagir com dados não estruturados e sistemas de Big Data, incluindo XML, JSON, NoSQL, Hadoop, HDFS, MapReduce, Hive e PolyBase.
O documento discute como criar indicadores de equipe usando o Visual Studio Team Services (VSTS) e o Power BI. Ele explica como analisar dados no TFS on-premises e no VSTS e como o Power BI oferece uma nova maneira de trabalhar com dados de forma colaborativa na nuvem. O documento também inclui uma demonstração de como extrair dados do VSTS para o Power BI.
Este documento apresenta uma palestra sobre o Office 365 e Power BI. A agenda inclui uma visão geral do Office 365 e Power BI, demonstrações do Power Query e Power Map no Excel, e do Power BI para Sites do Office 365. O documento também discute os benefícios do Power BI para compartilhamento e colaboração de dados atualizados em nuvem.
Metodologia Ágil para Projetos de BI - Pentaho DayMarco Garcia
O documento apresenta uma metodologia ágil para projetos de Business Intelligence (BI) baseada em entregas incrementais e contínuas. A metodologia enfatiza iniciar com mapeamento dos requisitos de negócios, criação de protótipos funcionais o mais rápido possível e validação constante com os usuários. A construção definitiva do projeto deve seguir os mesmos princípios de desenvolvimento incremental e automação dos processos.
O documento apresenta o Power BI, focando na visualização e compartilhamento de dados. Apresenta os produtos, licenciamento e demonstrações do portal, apps, desktop e gateway. Conclui incentivando a participação em eventos da comunidade SQLPASS.
ALM (Application Management Lifecycle) é o processo de gerenciar o ciclo de vida de uma aplicação, desde da sua concepção até o momento em que ela deixa de ser usada. Esta trilha irá discutir técnicas ágeis para a construção e gerencimento de projetos de software, além de apresentar as ferramentas e dicas mais bacanas para que o seu projeto tenha sucesso não só durante a construção, mas também durante a produção.
Como aplicar ALM em projetos de metodologia tradicional e métodos ágeis de forma a obter resultados em Projetos de Desenvolvimento de Software. Ferramentas e suas aplicações em gestão de projetos e gestão de serviços.
O documento discute os problemas no desenvolvimento de software e práticas recomendadas para resolvê-los. Os principais problemas incluem: metodologias inadequadas, gerenciamento de processo deficiente e softwares que mudaram de perfil. As práticas recomendadas são: desenvolvimento iterativo, gerenciamento de requisitos, arquiteturas baseadas em componentes, modelagem visual, controle de qualidade e gerenciamento de mudanças. Essas práticas permitem maior sucesso de projetos, melhor qualidade e menor custo.
O documento descreve os princípios e práticas da metodologia de desenvolvimento de software Extreme Programming (XP). Apresenta os valores, princípios e práticas primárias e secundárias do XP, como programação em pares, integração contínua, testes de unidade e aceitação. Também explica como o XP usa histórias de usuário, planejamento iterativo e feedback constante do cliente para entregar software de forma ágil.
Este documento fornece um resumo conciso sobre Scrum e suas principais características:
[1] Scrum é um framework ágil para gestão e desenvolvimento de projetos que enfatiza a colaboração, adaptabilidade e entrega contínua de valor ao cliente.
[2] Nos projetos Scrum, as equipes autorganizáveis ("times Scrum") estimam o trabalho, planejam sprints curtas e entregam software funcionando frequentemente para obter feedback do cliente.
[3] Os principais papéis no Scrum são o
Produtividade para times de desenvolvimento com visual studio team servicesGuilherme Cardoso
O documento discute os desafios comuns em projetos de desenvolvimento de software, como comunicação deficiente e falta de organização de processos. Ele apresenta o Visual Studio Team Services como uma solução que pode melhorar a produtividade de times de desenvolvimento ao fornecer ferramentas para gerenciamento de requisitos, controle de versão, teste e monitoramento de métricas de código. Por fim, convida o leitor a explorar os recursos do Visual Studio Team Services e referências adicionais.
1) O documento apresenta as qualificações e experiência de Luiz Barboza na área de qualidade de software e serviços.
2) A ementa da disciplina aborda conceitos de qualidade de produto e processo de software, modelos de qualidade e aspectos da qualidade na prestação de serviços.
3) Os objetivos são introduzir conceitos de qualidade de software e serviços para a comercialização de sistemas de informação.
O documento discute os conceitos fundamentais da engenharia de software, incluindo definições, processos, métodos, ferramentas e paradigmas. Aborda tópicos como o ciclo de vida do software, modelos de processo como cascata e maturidade, e as três fases genéricas de especificação, desenvolvimento e manutenção.
O documento discute vários conceitos fundamentais de engenharia de software, incluindo: 1) a definição de software vai além de apenas programas e inclui documentação e dados; 2) existem dois tipos de produtos de software - genéricos e sob encomenda; 3) a engenharia de software surgiu para lidar com sistemas complexos e atualmente abrange uma variedade maior de produtos.
Este documento discute como a arquitetura corporativa e os métodos ágeis podem ser combinados para permitir que as organizações se adaptem rapidamente à mudança. Ele argumenta que a arquitetura é essencial para manter a complexidade sob controle e permitir a agilidade sistêmica, mas que os modelos de arquitetura precisam ser flexíveis e iterativos para apoiar equipes ágeis. Ferramentas como o SAFe podem mapear conceitos de arquitetura corporativa para diferentes níveis da organização e permitir a colabora
O documento discute a importância da qualidade de software e do gerenciamento do ciclo de vida de aplicações (ALM) para garantir a qualidade. Ele apresenta desafios comuns em projetos de software, como a falta de gerenciamento de requisitos e dispersão de ferramentas. A solução proposta é o uso do ALM para integrar as atividades do ciclo de vida, desde requisitos até operações, e melhorar a comunicação entre times.
O documento fornece informações sobre a disciplina de Engenharia de Software ministrada pelo professor Ernesto Bedrikow, incluindo sua formação acadêmica, experiência profissional, ementa, conteúdo programático e dinâmica das aulas.
O documento apresenta os conceitos fundamentais de engenharia de software, incluindo: (1) engenharia de software é o estudo sistemático do desenvolvimento de software; (2) qualidade de software envolve atributos como manutenibilidade, desempenho e usabilidade; (3) a crise de software ocorre devido à complexidade dos sistemas e falta de qualificação.
Introdução à SRE (.Net Vale Tech Saturday - DevSecOps)Igor Abade
O documento introduz o conceito de Site Reliability Engineering (SRE) e fornece diretrizes para equipes implementarem práticas SRE para melhorar a confiabilidade dos sistemas em produção, como definir orçamentos de erro e níveis de serviço.
O documento discute os processos de desenvolvimento de software, comparando modelos como Cascata, Incremental e baseado em componentes. Apresenta as etapas comuns de especificação, projeto, validação e evolução, explicando que não existe um processo ideal e que a padronização agrega qualidade.
Agile e Scrum requerem uma mudança de paradigma na gestão para poder de fato trazer benefícios. Alem de adoptar as praticas, é necessário uma mudança no modo de operação, e isto acarreta uma mudança nas premissas fundamentais usadas na gestão, que mudam os valores e os princípios usados.
Este documento apresenta uma aula introdutória sobre engenharia de software. Ele discute o objetivo da disciplina, o que é software e engenharia de software, características e objetivos da engenharia de software, qualidade de software, a crise do software e atividades e artefatos relacionados à engenharia de software.
Este documento descreve diferentes modelos de processos de produção de software, incluindo:
1) Os modelos prescritivos/clássicos como Cascata, Codificar e Consertar e Programador-Chefe;
2) Os modelos tentam encontrar um equilíbrio entre ordem e adaptabilidade no desenvolvimento de software;
3) Cada modelo possui vantagens e desvantagens dependendo do projeto. O engenheiro de software deve escolher o modelo mais adequado para sua equipe e projeto.
O documento discute o DevOps e como o Application Insights pode ser usado para monitorar aplicações. Ele explica o que é DevOps, sua importância, ferramentas como o Application Insights e demonstra como ele fornece dashboards e métricas para monitorar o desempenho e saúde de aplicações.
O documento descreve o IBM Rational Unified Process (RUP), um processo proprietário de engenharia de software criado pela Rational Software Corporation e agora de propriedade da IBM. O RUP usa uma abordagem orientada a objetos e é projetado para aumentar a produtividade das equipes de desenvolvimento de software. Ele define linhas mestras, fases e princípios como gestão de requisitos, uso de arquitetura baseada em componentes e modelagem visual para guiar o desenvolvimento de software.
Este documento fornece uma introdução aos métodos ágeis de desenvolvimento de software, comparando-os aos métodos tradicionais. Discute princípios como iteratividade, adaptabilidade e envolvimento do cliente. Apresenta o framework Scrum, destacando papéis como Product Owner e Scrum Master, assim como eventos como Sprints e revisões.
O documento discute as vantagens de se trabalhar com ALM (Application Lifecycle Management) na nuvem. Ele descreve como a nuvem permite agilidade, escalabilidade e economia ao longo do ciclo de vida de aplicativos, permitindo ambientes de desenvolvimento e testes sob demanda.
O documento apresenta sobre customizações no Team Foundation Server, incluindo plugins de servidor TFS. Discute porque customizar, o que pode ser customizado e apresenta sobre a API TFS, jobs e plugins, mostrando como criar plugins que se inscrevem em eventos do servidor TFS.
O documento discute a importância dos testes de software para garantir a qualidade e evitar falhas caras e potencialmente catastróficas. Ele fornece dez exemplos históricos de desastres causados por bugs de software que poderiam ter sido evitados com testes adequados, e argumenta que a automação e integração dos testes no ciclo de desenvolvimento de software pode melhorar a qualidade e reduzir os riscos.
Qualidade de Software com Microsoft Visual StudioAdriano Bertucci
O documento discute a importância da qualidade de software e como o Microsoft Visual Studio pode ajudar a alcançar a qualidade. Ele apresenta a equipe responsável pela qualidade, explica porque a qualidade é necessária, discute caminhos para o sucesso de projetos e apresenta ferramentas do Visual Studio para teste e otimização de aplicativos.
O documento apresenta as novidades do Visual Studio 2013, incluindo melhorias na produtividade da IDE, no desenvolvimento para Windows 8.1, Office 365 e Web. Também destaca novas ferramentas como o Analisador de Responsividade de Interface e capacidades expandidas de ALM.
O documento discute como transformar testes manuais em testes automatizados usando o Visual Studio 2012. Ele descreve as vantagens da automação de testes, como reduzir o tempo gasto em testes manuais repetitivos e fornecer evidências objetivas de problemas. O documento também discute como o ALM (Gerenciamento do Ciclo de Vida de Aplicações) pode integrar várias ferramentas de teste e desenvolvimento para melhorar a qualidade e a colaboração na equipe.
O documento discute a importância da qualidade de software e como alcançá-la. Apresenta os desafios comuns entre testadores e desenvolvedores e como a automação de testes com ferramentas como o Visual Studio podem ajudar a superá-los, melhorando a comunicação, reprodutibilidade de defeitos e agilidade.
2. TÍPICO PROJETO DE SOFTWARE
“Nossa equipe não produz o quanto gostaríamos”
“Nosso cronograma está atrasado”
“Nossa equipe de desenvolvimento não se comunica”
“Precisamos nos adequar às novas legislações”
“Não conseguimos garantir a qualidade das soluções”
3. DESAFIOS - PROBLEMAS COMUNS
Requisitos de negócios não são gerenciados de forma efetiva
Ferramentas e dados dispersos
Testes não alinhados aos objetivos de negócios
Falta de orientações e processos definidos
Problemas de comunicação entre os membros da equipe
Visibilidade limitada do status do projeto para tomada de decisões
4. COMO ESTA A SAÚDE DO SEU
PROJETO?
Cronograma e controle de atividades?
Controle de defeitos?
Quais cenários foram testados com sucesso?
Cobertura do código testado?
Rotatividade do código – estabilização?
Requisições de mudanças gerenciadas adequadamente?
Controle sobre que fontes foram alterados por causa de determinado requisito /
correção?
5. SOLUÇÃO? ALM!
ALM (Application Lifecycle Management, Gerenciamento do
Ciclo deVida de Aplicações):
É a coordenação das atividades do ciclo de vida de
desenvolvimento, incluindo:
Requisitos
Modelagem
Desenvolvimento
Testes
Manutenção
Operações
13. FASES DO ALM - OPERAÇÃO
ITIL (InformationTechnology Infrastructure Library)
Gerência de Capacidades
Gerência de Incidentes
Gerência Financeira
Gerência de Configuração
Gerência de serviços de atendimento
Gerência de níveis de serviço
Gerência de problemas
Gerência de distribuição
Gerência de Mudanças
24. ADOÇÃO DO ALM
quais os envolvidos na construção da aplicação;
as expectativas de cada um;
quais as ferramentas utilizam;
como é gasto do tempo deles;
onde estão localizados fisicamente;
quais modelos/processos utilizam no dia-a-dia;
quais os relatórios que utilizam para monitorar o projeto;
qual o modelo de migração da aplicação do ambiente de desenvolvimento para o ambiente de produção;
como são estruturados os projetos dentro da ferramenta de controle de código-fonte;
quais as estratégias de montagem da aplicação;
quais os tipos de testes empregados na construção da aplicação;
como compartilham boas práticas de construção;
27. O CAMINHO DA ENG. DE SOFTWARE
Não é parecida com Engenharia Civil!
Após construir uma casa não é fácil mudar uma parede de lugar!!!
Mas em software, “mudar uma parede de lugar” é sim relativamente fácil...
Tampouco é muito parecida com outras engenharias!!!
Software é flexível!!!
28. ENGENHARIA DE SOFTWARETRADICIONAL
Desenvolvimento ad-hoc de software em geral produz resultados muito ruins;
Especialmente em sistemas grandes
Desejo de criar uma engenharia para que se tenha controle sobre
desenvolvimento de software;
Engenharias tradicionais colocam grande ênfase em projetar antes de construir;
30. QUEREMOS PODER ALTERAR O SOFTWARE
No inicio do projeto, normalmente não se sabe precisamente o que se quer
Software evolui para atender ao negócio
Software nunca fica “pronto”
Obviamente isso só é possível porque software é uma entidade abstrata
31. PORTANTO…
Precisamos parar de tentar evitar mudanças
Mudanças são um aspecto intrínseco da vida do software
Precisamos de uma metodologia de desenvolvimento que nos permita alterar
constantemente o código sem comprometer sua qualidade
32. O QUE QUEREMOS É…
custo
momento em que
funcionalidade é
adicionada
38. PROCESSO DETRABALHO
Analista de
Negócio Gerente de
Projeto
Time de
Desenvolvimento
Test
Operações
Requisição
De Mudança
Cenários
Requerimentos
de Negócio
Bugs
Tarefas
Erros em
Produção
Itens de trabalho são a unidade de
comunicação entre as pessoas do time
Builds
Implantação
39. ITENS DETRABALHO
Descrição
Estado Atual
Atribuição de tarefas
Anexos
Links para outros Itens de Trabalho
Histórico totalmente auditado
Personalizável
Encerrado
Ativo
Solucionado
Encerrado
Ativo
Solucionado
Proposta
Caso de Uso Tarefas Bugs
“Os itens de trabalho são unidades de comunicação
que fazem parte do processo de desenvolvimento”
47. PRATICANDO…
LOTES DE PRODUÇÃO X PRODUTIVIDADE
Qual é o arranjo logístico mais rápido?
Qual equipe apresentou o maior esforço por projeto?
Quais as vantagens de cada abordagem?
Quais as desvantagens de cada abordagem?
Qual a justificativa para manter os grandes lotes?
48. ARTIGOS…
Disserte sobre ALM demonstrando a visão do grupo sobre o assunto e os
principais motivos para se adotar.
O que é agilidade para grupo? Cite os ganhos do uso de um processo ágil no
desenvolvimento de software.
Notas do Editor
Pilar “Pessoas”
Esta figura emprega uma imagem poderosa, a participação das pessoas. Veja que o pilar “pessoas” está presente em todos os níveis. Pessoas bem treinadas e capacitadas formam a cola que une adequadamente as ferramentas e os processos do ALM. Cada uma destas pessoas possui seus objetivos, de uma maneira geral, destacamos:
1 - Analista de Negócios
O objetivo do Analista de Negócios é entender as necessidades e comunicá-las para a equipe do projeto. A sua atuação se concentra junto a usuários, clientes e outros participantes, transformando suas percepções em cenários, modelos e requisitos documentados. Ele também é responsável em administrar as expectativas junto aos participantes do projeto.
2 - Gerente de Projeto
O objetivo do Gerente do Projeto é entregar o projeto dentro do orçamento e prazo acordados. Seu trabalho se concentra no planejamento do projeto, elaboração do cronograma, monitoração das atividades do projeto.
3 - Arquiteto
O objetivo do Arquiteto é desenhar as fundações da aplicação. Inclui estruturar tanto do ponto de vista lógico, como físico como a aplicação funcionará, bem como o seu comportamento no ambiente de produção. Em paralelo, o Arquiteto procura reduzir a complexidade da aplicação, dividindo-a em partes simples. O uso de boas práticas e modelos de mercado ajuda o Arquiteto na execução do seu trabalho.
4 - Desenvolvedor
O objetivo do Desenvolvedor é transformar as especificações em código. O Desenvolvedor também ajuda na criação da especificação física de algumas funcionalidades, estimar tempo para a construção, compilar e preparar a aplicação para a distribuição.
5 - Desenvolvedor de Banco de Dados
O objetivo do Desenvolvedor de Banco de Dados é implementar no banco de dados os requisitos planejados. Assim como o Desenvolvedor, este papel também ajuda na criação da específica física, estimar tempo para construção e supervisionar a construção dos modelos de banco de dados.
6 - Testador
O objetivo do Testador é descobrir problemas na aplicação e informá-los para a correção. O trabalho do Testador consiste em executar testes pré-definidos, coletar as amostras dos resultados e compará-las com o esperado. Uma vez detectado um problema, o Testador deve informar à equipe as condições para reprodução do problema.
7 - Gerente de Operação
O objetivo do Gerente de Operação é suportar o processo de distribuição da nova aplicação para o ambiente de produção e de usuários.
8 - DBA
O objetivo do DBA é suportar a equipe na montagem do banco de dados, e criar os mecanismos para a transferência deste banco de dados para o ambiente de produção. Além disso, o DBA também é responsável em manter diariamente a saúde dos bancos de dados na produção.
9 - Escritório de Projetos
O Escritório do Projeto é um departamento (alguns casos um orgão de staff) que gerencia o portfólio dos projetos da empresa. As funções de um Escritório do Projeto são monitoramento da saúde dos projetos, divulgação de padrões e guias, suportar os gerentes do projeto.
10 - Executivo
Em uma perspectiva ampla, o objetivo do Executivo é buscar o alinhamento estratégico, redução de custo operacional, procura pela eficiência operacional e resultado financeiro.
Pilar “Ferramentas”
Por último, as “ferramentas” são os meios/equipamentos/tecnologias que automatizam e facilitam a condução dos processos pelas pessoas.
Pilar “Pessoas”
Esta figura emprega uma imagem poderosa, a participação das pessoas. Veja que o pilar “pessoas” está presente em todos os níveis. Pessoas bem treinadas e capacitadas formam a cola que une adequadamente as ferramentas e os processos do ALM. Cada uma destas pessoas possui seus objetivos, de uma maneira geral, destacamos:
1 - Analista de Negócios
O objetivo do Analista de Negócios é entender as necessidades e comunicá-las para a equipe do projeto. A sua atuação se concentra junto a usuários, clientes e outros participantes, transformando suas percepções em cenários, modelos e requisitos documentados. Ele também é responsável em administrar as expectativas junto aos participantes do projeto.
2 - Gerente de Projeto
O objetivo do Gerente do Projeto é entregar o projeto dentro do orçamento e prazo acordados. Seu trabalho se concentra no planejamento do projeto, elaboração do cronograma, monitoração das atividades do projeto.
3 - Arquiteto
O objetivo do Arquiteto é desenhar as fundações da aplicação. Inclui estruturar tanto do ponto de vista lógico, como físico como a aplicação funcionará, bem como o seu comportamento no ambiente de produção. Em paralelo, o Arquiteto procura reduzir a complexidade da aplicação, dividindo-a em partes simples. O uso de boas práticas e modelos de mercado ajuda o Arquiteto na execução do seu trabalho.
4 - Desenvolvedor
O objetivo do Desenvolvedor é transformar as especificações em código. O Desenvolvedor também ajuda na criação da especificação física de algumas funcionalidades, estimar tempo para a construção, compilar e preparar a aplicação para a distribuição.
5 - Desenvolvedor de Banco de Dados
O objetivo do Desenvolvedor de Banco de Dados é implementar no banco de dados os requisitos planejados. Assim como o Desenvolvedor, este papel também ajuda na criação da específica física, estimar tempo para construção e supervisionar a construção dos modelos de banco de dados.
6 - Testador
O objetivo do Testador é descobrir problemas na aplicação e informá-los para a correção. O trabalho do Testador consiste em executar testes pré-definidos, coletar as amostras dos resultados e compará-las com o esperado. Uma vez detectado um problema, o Testador deve informar à equipe as condições para reprodução do problema.
7 - Gerente de Operação
O objetivo do Gerente de Operação é suportar o processo de distribuição da nova aplicação para o ambiente de produção e de usuários.
8 - DBA
O objetivo do DBA é suportar a equipe na montagem do banco de dados, e criar os mecanismos para a transferência deste banco de dados para o ambiente de produção. Além disso, o DBA também é responsável em manter diariamente a saúde dos bancos de dados na produção.
9 - Escritório de Projetos
O Escritório do Projeto é um departamento (alguns casos um orgão de staff) que gerencia o portfólio dos projetos da empresa. As funções de um Escritório do Projeto são monitoramento da saúde dos projetos, divulgação de padrões e guias, suportar os gerentes do projeto.
10 - Executivo
Em uma perspectiva ampla, o objetivo do Executivo é buscar o alinhamento estratégico, redução de custo operacional, procura pela eficiência operacional e resultado financeiro.
Na primeira fase, denominada como “Definição”, procura identificar quais as necessidades e motivações que uma empresa tem. Por exemplo, o surgimento de um mercado novo, um problema na linha de produção, busca por informações competitivas ou outras. A etapa ”iniciar” é a responsável em alocar os recursos iniciais (processos, ferramentas e pessoas). Com os recursos alocados pula para a etapa de “definir”. Ela é responsável estruturar a idéia, definir estratégias, métodos e ferramentas para guiar o surgimento de uma nova aplicação. É vital para o sucesso deste empreendimento, que estas duas etapas estejam alinhadas junto ao plano estratégico da empresa e às direções da arquitetura corporativa. Vale destacar que uma boa definição é o resultado de uma comunicação clara e eficaz com todos os envolvidos.
A etapa “escolher” identifica dentro das várias opções de ferramentas, métodos e tecnologias, quais são os adequados. Seja através da construção de uma aplicação própria (aplicações internas), da aquisição de algum pacote externo (aplicações de fornecedores) ou até mesmo de uma união entre ambas. Usam-se várias técnicas para identificar, tais como: técnicas de levantamento, disciplinas de avaliação de retorno de investimentos (ROI – Return Of Investiment) e busca de referências no mercado.
A fase “Construção” é onde ocorre a execução do plano definido nas fases anteriores. Usam-se as disciplinas de gerenciamento de projeto para conduzir o plano. Um conjunto de boas práticas em gerenciamento de projeto é o PMBoK (Project Management Base of Knowledge). O PMBok define várias áreas de atuação dentro de um projeto, cada qual com suas entradas, ações e resultados esperados. Um aspecto relevante do PMBok é a procura pelo equilíbrio entre os três principais aspectos de um projeto: recursos, tempo e funcionalidades/qualidades. O termo “Recursos” pode ser entendido como todos os recursos (pessoas, máquinas,equipamentos, tecnologias) necessários para execução do projeto. “Funcionalidades/qualidade” são os resultados esperados da execução do projeto, tangíveis ou não. E “tempo”, é o período esperado em que o projeto seja executado.
CITAR O TRIANGULO DE PROJETOS
Desde o início da computação, surgiram diversas metodologias e modelos de maturidade. Todas com o propósito direto ou indireto de garantir a entrega da aplicação dentro do tempo acordado, com os recursos planejados e atendendo as funcionalidades esperadas. Um ponto que merece destaque é que não há modelo ou metodologia perfeita, cada empresa deve procurar a que for mais adequada. Em uma avaliação da escolha de uma metodologia, podemos citar alguns fatores que são importantes ter em mãos: qual é taxa de investimento em TI da empresa, organização da equipe, modelo de negócio da empresa, métricas esperadas para o controle do projeto. Na figura 4, podemos ver uma evolução destes modelos.
A fase “operação” se dá no momento em que a aplicação está construída, e vamos distribuí-la, além de mantê-la funcional no ambiente da empresa. Os departamentos da empresa responsáveis em manter a infra-estrutura de TI são os mais envolvidos nesta etapa. Ser capaz de monitorar, governança, suporte de fornecedores, entre outras tarefas tornam a fase de operação mais crítica para organização. Tal como a fase de “construção”, também existem no mercado diversos modelos/frameworks para operacionalizar a infra-estrutura de TI, como, COBIT, MOF,ITIL e ISO 20.000.
Por exemplo, o ITIL [MEN1], envolve algumas disciplinas importantes para o time de infra-estrutura de TI de uma empresa, veja:
- Gerência de capacidades (Capacity management): Identificar e provisionar os recursos necessários de TI em conformidade com as necessidades da empresa;
- Gerência de incidentes (Incident management): O objetivo é restaurar as condições da infra-estrutura de TI o mais rápido possível, procurando minimizar os impactos sobre as operações da empresa;
- Gerência financeira (Financial management): O objetivo é trazer para a empresa os custos mais efetivos dentro de uma infra-estrutura de TI;
- Gerência de configuração (Configuration management): Gerar o inventário de todos os ativos de uma infra-estrutura de TI (hardware e software);
- Gerência de serviços de atendimento (Service desk management): Tratar e gerenciar os incidentes e requisições que uma infra-estrutura de TI sofre durante a sua existência;
- Gerência de níveis de serviços ( SLA management): O objetivo é identificar, monitorar e avaliar os níveis de serviços que foram definidos para uma infra-estrutura de TI;
- Gerência de problemas (Problem management): O objetivo é identificar as raízes dos incidentes que uma infra-estrutura de TI sofre, reduzindo ou evitando que ocorram novamente;
- Gerência de distribuição (Release management): O objetivo é organizar e até automatizar o processo de distribuição de ativos de uma infra-estrutura, seja tanto no aspecto de novas versões, quando nas correções ou evoluções;
- Gerência de mudanças (Change management): O objetivo é controlar o processo de mudanças na infra-estrutura de TI.
Os demais modelos/frameworks também utilizam algumas destas disciplinas. Se uma empresa quer adotar algum destes modelos, deve avaliar qual dos modelos está mais aderente à sua realidade.
Finalmente temos a fase “final”, este é o momento em que a empresa pode evoluir a sua aplicação, substituindo por outra versão ou adicionando novos recursos no ambiente de produção.
Gerenciamento de Requisitos (Requeriments Management)
No contexto de construção de uma aplicação, requisitos são a expressão do que a aplicação deve fazer e o que é esperado dela em momento de execução. Um requisito pode ser entendido como a descrição do comportamento de um sistema, por exemplo, em uma aplicação de comércio eletrônico teríamos um requisito definido “durante a visita de um usuário ao site, o site deve apresentar uma série de sugestões de produtos em conformidade com comportamento de compra do mesmo.”.
O gerenciamento de requisitos é a prática de documentar e manter a rastreabilidade dos requisitos ao longo do ciclo de vida da aplicação. Dentro do gerenciamento de requisitos temos algumas ações:
Documentar os requisitos funcionais e não-funcionais;
Identificar se os requisitos estão aderentes com as necessidades de negócio;
Priorizar os requisitos;
Selecionar os requisitos que serão implementados no projeto ou em fase específica;
Identificar a dependência entre os requisitos;
Mapear os requisitos com a arquitetura;
Mapear os requisitos com as funcionalidades da aplicação;
Verificar se os requisitos foram atendidos e estão em conformidade com as necessidades dos usuários;
Então, pode-se notar que esta disciplina é crucial para o sucesso do projeto.
Gerenciamento da Configuração do Software (Software configuration Management)
O processo de construção de uma aplicação envolve a geração de diversos artefatos (código-fonte, documentos, planilhas, apresentações), os quais podem sofrer diversas modificações durante a sua existência. A disciplina de Configuração de Software é responsável em manter e gerenciar estes diversos artefatos, além gerar a rastreabilidade e versionamento dos mesmos. Podemos destacar algumas ações realizadas por esta disciplina:
Controlar o acesso aos artefatos
Armazenar as múltiplas versões de cada artefato
Rastrear as modificações de cada versão
Comparar versões
Identificar a versão dos artefatos que estão diretamente ligadas uma versão final da aplicação
Restaurar versões especificas dos artefatos basedo em uma versão específica da aplicação
A disciplina de Configuração de Software talvez seja a mais utilizada nas organizações, já que é muito apoiada por ferramentas amplamente disponíveis no mercado. Porém, é importante considerar que a existência unicamente dela não garante um processo de adequado.
Montagem e Integração (Build and Integration)
Em sua maioria, os projetos atuais são compostos de diversos módulos, componentes, controles. A disciplina de Montagem e Integração consiste na prática de unir todos estes componentes em apenas um único pacote, a fim de ser testado e distribuído na infra-estrutura de TI. Algumas ações que a disciplina Montagem e Integração fazem:
Recuperar todos os artefatos do repositório de código-fonte;
Mapear os artefatos com a nova versão da aplicação;
Compilar o código-fonte;
Organizar o código compilado em um específico layout conforme definido;
Criar um pacote de instalação (setup) para ser testado;
Abortar o processo de build caso encontre algum erro ou inconsistência nos artefatos;
É importante considerar que o processo de montagem e integração deve ser visto não apenas como uma tarefa de “compilação”, mas sim, como a integração das diversas partes, garantindo que todas estejam estáveis.
Engenharia de Distribuição (Release Engineering)
A disciplina de Engenharia de Distribuição é responsável por garantir a consistência das diversas versões da aplicação. Sabe-se que uma aplicação durante a sua construção e manutenção, terá várias versões, além de correções. Sem uma engenharia adequada, há um sério risco de indisponibilidade da aplicação, que pode causar perdas financeiras e de imagem para a empresa. A disciplina de Engenharia de Distribuição trabalha fortemente em conjunto com a disciplina de Configuração de Software para garantir que os artefatos estejam devidamente marcados e rastreáveis, tanto na produção como na construção. Destacamos abaixo algumas ações:
Documentação das dependências externas de cada versão;
Minimizar o downtime das atualizações de versões;
Utilização de ferramentas para automatizar a distribuição das versões ou correções;
Tratar rapidamente as falhas de distribuição
Gerenciamento de Defeitos (Defect Management)
A disciplina de Gerenciamento de Defeitos consiste em coletar as ocorrências e tratar como elas serão corrigidas, além, de procurar identificar as suas raízes e evitar que no futuro possam ocorrer novamente. Algumas ações da disciplina de Gerenciamento de Defeitos:
Descrever o comportamento esperado;
Descrever o comportamento ocorrido;
Descrever os passos necessários para reproduzir o defeito;
Priorizar os defeitos conforme a demanda;
Direcionar o defeito para ser corrigido por um desenvolvedor;
Registrar se o defeito foi corrigido;
Teste Unitário, Integrado e de Regressão (Unit Test, Integrated and Regression)
O teste unitário é o teste isolado e exercido apenas sobre um componente, que pode ser uma classe ou um método. Os testes unitários são pequenos programas que testam se os componentes estão gerando o resultado esperado, conforme um conjunto de valores de entrada. Os testes integrados atuam sobre módulos, é uma tarefa normalmente executada pelos programadores. Os testes de regressão verificam se as alterações introduzidas a cada novo build não geraram novos defeitos. O benefício de aplicar estes testes é o de garantir a qualidade do software e sua conformidade com os requisitos definidos. Detectando os defeitos ainda na fase da construção, permite que eles não se perpetuam, reduzindo assim o custo de manutenção. Algumas ações:
Criação de testes unitários para cada componente;
Criação dos testes integrados no nível de módulos lógicos e casos de uso;
Os testes são também considerados artefatos, e assim devem ser armazenados dentro do repositório;
Uso de ferramentas para automatizar a geração de relatórios e logs de erros;
Nos últimos anos, os testes unitários vêem sendo usados amplamente pelos desenvolvedores, devido a sua eficiência em garantir que a aplicação tenha qualidade desde os seus componentes mais primitivos.
Análise de Código (Code Analysis)
A disciplina Análise de Código é responsável em identificar se o código escrito está aderente a padrões e políticas da empresa. Algumas ações realizadas por esta disciplina:
Validar o formato e estilo de codificação;
Verificar a documentação interna do código;
Garantir o uso de “design patterns”;
Detectar problemas de desempenho;
Identificar vulnerabilidades conforme as políticas de segurança;
Garantir a proteção e privacidade das informações que a aplicação manipula;
Identificar a compatibilidade da aplicação em conformidade com normas de mercado;
Teste de Sistema (System Test)
A disciplina Teste de Sistema envolve o teste da aplicação quando completada. Os testes funcionais, conhecidos como testes “de caixa preta”, são executados por esta disciplina. Eles procuram identificar se a aplicação está aderente aos requisitos, além de serem usados como ferramentas para aceitação ou não da aplicação construída. Os testes de sistema são facilitados quando as disciplinas de gerenciamento de requisitos, configuração de software, análise de código e gerenciamento de defeitos são executadas corretamente. Tipicamente algumas ações desta disciplina:
Detectar problemas em desempenho;
Detectar se os requisitos estão presentes na aplicação;
Relatórios de Acompanhamento (Status Reports)
Conforme dito, o ALM preocupa-se em informar a todos os papéis como está o andamento do ciclo de vida da aplicação. Além de relatórios de bugs, re-trabalho, qualidade de código, serve como base os relatórios sobre a taxa disponibilidade da aplicação na produção (SLA), uso de recursos na infra-estrutura de TI, retorno sobre investimento e outros.
Adoção do ALM
Para adotar o ALM, o primeiro passo é determinar o que realmente a empresa precisa. O tamanho da empresa influencia diretamente sobre a estratégia de adoção. Sugira realizar como primeiro passo uma entrevista com os participantes. Nesta entrevista identifique:
quais os envolvidos na construção da aplicação;
as expectativas de cada um;
quais as ferramentas utilizam;
como é gasto do tempo deles;
onde estão localizados fisicamente;
quais modelos/processos utilizam no dia-a-dia;
quais os relatórios que utilizam para monitorar o projeto;
qual o modelo de migração da aplicação do ambiente de desenvolvimento para o ambiente de produção;
como são estruturados os projetos dentro da ferramenta de controle de código-fonte;
quais as estratégias de montagem da aplicação;
quais os tipos de testes empregados na construção da aplicação;
como compartilham boas práticas de construção;
A próxima etapa é a execução de um projeto piloto. Um projeto piloto permite experimentar em ambiente controlado, as diversas tarefas, obstáculos e ações na implantação do ALM. O escopo do projeto piloto deve conter as principais disciplinas do ALM que a empresa necessita. É importante também, que o projeto piloto tenha uma abrangência ampla na empresa, afim que de possa envolver vários papéis. Os resultados esperados do projeto piloto incluem:
Modelos de documentos e processos aderentes à realidade da empresa
Matriz de papéis e responsabilidades
Requisitos de hardware e software para o ambiente de produção
Materiais de treinamento para as equipes que utilizarão o ALM na produção
Com estes resultados em mãos, a empresa terá condições de avaliar o real esforço para implantar o ALM em toda sua estrutura.
A última etapa é a migração do conhecimento gerado no projeto piloto para o seu ambiente de produção. Após a migração, procure avaliar o retorno do investimento, por exemplo, comparando as métricas de bugs detectados e tempo utilizado para resolvê-los antes do ALM e depois.