Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas de Informação Processo de Software Profa. Ivre Marjorie Aula baseada em material cedido pelo Profº Tadeu Faria e da Profa. Sandra Silveira Leitura Indicada PAULA FILHO, Wilson de Pádua. Engenharia de software: volume 1: produtos. 4. ed. Rio de Janeiro: LTC, 2019. E-book. Capítulo 1 – Engenharia de Software Capítulo 3 – Processos de Software PRESSMAN, Roger. Engenharia de software. 8. Porto Alegre, AMGH, 2016. recurso online Capítulo 3 – Estrutura do processo Software Capítulo 4 – Modelos de Processo Capítulo 3 – Processo de Software SOMMERVILLE, Ian. Engenharia de software. 10. ed. São Paulo (SP): Pearson Prentice Hall, c2019. xii, 756 SOMMERVILLE, Ian. Engenharia de software. 9ª. ed., São Paulo: Pearson Prentice Hall, c2011, capítulo 1. recurso online Software como Produto O software é normalmente visto como um programa que pode ser executado num computador. Entretanto esta visão é limitada. Software é mais do que um programa! Num programa a perspectiva está em como um certa solução é resolvida por algoritmos. A perspectiva de aplicação de software, sistema de informação, o software como produto, está em como ele pode resolver os problemas do usuário. Para que um software possua uma ampla utilidade ele necessita de centenas ou milhares de algoritmos. Atualmente os softwares são bastante complexos e podem ser formados por diversos programas. Engenharia de Software É o produto que os profissionais de software constroem e, depois, mantêm ao longo do tempo. Engloba: (1) AS INSTRUÇÕES (programas de computador) que quando executadas fornecem características, funções e desempenho desejados; Para a Eng de Software, o que é Software? 4 Profº Tadeu Faria - Engenharia de Requisitos(Pressman, 2016) É o produto que os profissionais de software constroem e, depois, mantêm ao longo do tempo. Engloba: (2) ESTRUTURAS DE DADOS que possibilitam aos programas manipular adequadamente as informações Para a Eng de Software, o que é Software? 5 Profº Tadeu Faria - Engenharia de Requisitos(Pressman, 2016) É o produto que os profissionais de software constroem e, depois, mantêm ao longo do tempo. Engloba: (3) A DOCUMENTAÇÃO que descreve o funcionamento e utilização dos programas. Para a Eng de Software, o que é Software? 6 Documentação, aquela parte que os programadores não morrem de amor. Profº Tadeu Faria - Engenharia de Requisitos (Pressman, 2016) Software para a ES Programas Arquivos de código Dados de configuração Arquivos de instalação e reconstrução Documentação Manuais do usuário Manuais do sistema Web sites ES e a Diversidade de Software Aspectos fundamentais de Engenharia de Software aplicam a todos tipos de softwares Devem ser desenvolvidos em um processo gerenciado e compreendido Confiança e desempenho são importantes para todos os tipos de softwares O gerenciamento dos requisitos é essencial Usar o melhor possível os recurso existentes 8 Profº Tadeu Faria - Engenharia de Requisitos Campos de aplicação do software Software de sistema: construídos para atender a outros programas. Ex: sistema operacional, drivers, software de rede, compiladores, editores) Software de aplicação: programas sob medida que solucionam uma necessidade específica de negócio. Software científico/de engenharia Software embutido: residente em um produto ou sistema. Ex: controle do painel de um forno micro- ondas, controle do nível de combustível de automóveis. (Pressman, 2016) Campos de aplicação do software Software para linha de produtos: projetado para atender tarefas comuns de um mercado limitado. Ex: controle de estoques, editores de texto, computação gráfica Aplicações para web: Webapps. Podem ser simplesmente hipertextos conectados como aplicações integradas a bancos de dados corporativos e aplicações comerciais. Software de inteligência artificial: utilizados para solucionar problemas complexos. Ex: robótica, sistemas especialistas, reconhecimento de imagem e voz. (Pressman, 2016) Campos de aplicação do software Aplicações stand-alone. Ex: suíte de escritório, CAD. Aplicações interativas baseadas em transações: executadas em um computador remoto, acessadas pelos usuários a partir de seus computadores. Sistemas de processamento em lotes: sistemas corporativos projetados para processar dados em grandes lotes. Ex: cobrança, pagamento de salário. Jogos Digitais Sistemas para modelagem e simulações Sistemas de coletas de dados compostos por sensores (Pressman, 2016) Software como um produto aplicado ao domínio de utilização. Utilizado pelos usuários com o objetivo de solucionar seus problemas. Diferente de programa fonte que se refere à descrição estática em uma linguagem de programação. Para se referir ao programa fonte utilizamos o termo arquitetura do software ou estrutura do software. Os termos aplicação de software, aplicação e software são usados como sinônimos. Um Engenheiro de Software será envolvido na resolução dos problemas do sistema como um todo e não só do software! (Sommerville, 2011) SI - Aplicação de Software Formas de fornecimento comercial: Feitos por encomenda de um cliente a especificação é controlada pela empresa contratante. Pacotes de softwares aplicativos Produtos de prateleira Podem ser customizados SI - Aplicação de Software (Pressman, 2016) 14 necessidade É concebido a partir de uma necessidade; É desenvolvido e entregue a um cliente; Entra em operação, sendo usado dentro de um processo de negócio e sujeito a manutenção; É retirado de operação no final de sua vida útil Ciclo de vida de Software (PAULA FILHO, 2019, p.7) 16 (PAULA FILHO, 2019, p.303) Ciclos de vida em cascata 17 Ciclos de vida em espiral Métodos ágeis, como o XP ‒ Extreme Programming e o Scrum, geralmente não contêm elementos suficientes para se qualificarem como processos completos. Na prática, os processos deles derivados também utilizam alguma das variantes do modelo em espiral. 18 (PAULA FILHO, 2019, p.68) Ciclo de vida e processo Em engenharia de software, processos podem ser definidos para atividades como desenvolvimento, manutenção, aquisição e contratação de software. Pode-se também definir subprocessos para cada um desses; por exemplo, um processo de desenvolvimento abrange subprocessos de determinação dos requisitos, análise, desenho, implementação e testes. Em um processo de desenvolvimento de software, o ponto de partida para a arquitetura de um processo é a escolha de um modelo de ciclo de vida. 19 (PAULA FILHO, 2019, p.64) Ciclo de vida e processo Exemplificando... as etapas de elaboração de um processo, que compreende desde a fase de escolha do ciclo de vida, até a etapa de especificação do processo de desenvolvimento do software (a atividade a ser realizada, os responsáveis, critérios de entrada, ferramentas etc). Processos “organizam” as atividades do ciclo de vida. 20 Processo Segundo o IEEE, é uma “sequência de passos executados com um determinado objetivo”; Para o CMMI, é “um conjunto de ações e atividades inter-relacionadas realizadas para obter um conjunto especificado de produtos, resultados ou serviços”. 21 (PAULA FILHO, 2019, p.16) É um roteiro que determina quais são as tarefas necessárias e em que ordem elas devem ser executadas para construir softwares de alta qualidade. É a “receita” seguida por um projeto: não é o produto final; não é o projeto. Ele organiza uma atividade que pode, sem controle, tornar-se caótica. Processo de desenvolvimento de software Algumas organizações atuam desenvolvendo e implantando processos definidos e gerenciáveis. Processos são como hábitos: difíceis de se estabelecerem; mais difíceis ainda deserem removidos. É mais fácil definir processos que institucionalizá-los. Processo de desenvolvimento de software Processo de Desenvolvimento de Software 24 “Um processo de desenvolvimento de software pode ser definido como um conjunto de atividades, métodos, práticas e transformações que pessoas utilizam para desenvolver ou dar manutenção em softwares ou em seus produtos associados (projetos, manuais, código)” (CMMI, The Capability Maturity Model: guidelines for improving the software process) Principais atividades do processo de desenvolvimento de software: Especificação de software o que será desenvolvido Desenvolvimento como será desenvolvido Validação do Software Garantir o que o cliente quer Evolução que mudanças ocorrerão depois Profº Tadeu Faria - Engenharia de Requisitos 25 Processo de desenvolvimento de Software Benefícios da implantação de processos Guia para condução do trabalho. Auxiliam na disseminação de boas práticas de trabalho; contribuindo para a transferência de conhecimento da equipe envolvida. Melhoria na comunicação entre os desenvolvedores, gerentes, clientes e usuários. Aumento da precisão no acompanhamento do progresso do trabalho; o que, por outro lado, propicia um aumento do controle do trabalho dos desenvolvedores. Medida da qualidade dos processos; indica a qualidade dos produtos desenvolvidos. Tipos de processos de software Processos dirigidos a planos São processos em que todas as atividades do processo são planejadas com antecedência e o progresso é medido em relação a esse plano. Processos ágeis O planejamento é incremental e é mais fácil modificar o processo para refletir alterações nos requisitos do cliente. Métodos ágeis X Métodos dirigidos a planos 28 (PAULA FILHO, 2019, p.86) 29 Engenharia de Requisitos em diferentes estratégias de desenvolvimento 30 RUP 31 RUP Métodos tradicionais e ágeis Constantes mudanças no cenário da indústria de software reduziram o formalismo das especificações e as organizações passaram a demandar entregas de produtos em menor tempo, com as funcionalidades desejadas e sem defeitos graves. Nesta nova realidade impõe-se que o software seja entregue em tempo hábil, com mais qualidade e que custe menos em relação aos parâmetros praticados com o uso de processos de desenvolvimento tradicionais, que eram lentos na produção de resultados para o cliente. A utilização de práticas ágeis se apresenta como uma realidade que vem atender a esse novo contexto, no mercado de tecnologia da informação. 33 34 Qual o melhor processo de desenvolvimento de software? Não existe processo de software certo ou errado!!! O processo adotado deve ser adaptado ao tipo de software que se está construindo. Exemplo: Software para aplicativo móvel x Software para controlar a contabilidade de uma empresa Na realidade, os processos mais práticos incluem elementos dos processos ágeis e dirigidos a planos. Exemplo - http://criarenet.com/ 36 http://criarenet.com/ Conceitos importantes 37 Projetos Projetos Normalmente, o desenvolvimento de software é feito dentro de um projeto. Todo projeto tem uma data de início, uma data de fim, uma equipe (da qual faz parte um responsável, a que chamaremos gerente do projeto) e outros recursos. Um projeto representa a execução de um processo. 38 Processo X Projeto Processo é uma receita que é seguida por um projeto; o projeto concretiza uma abstração, que é o processo. Não se deve confundir processo (digamos, uma receita de risoto de camarão) com o respectivo produto (risoto de camarão) ou com a execução do processo através de um projeto (a confecção de um risoto de camarão por determinado cozinheiro, em determinado dia). 39 Partes interessadas (stakeholders) “Grupos ou indivíduos que são afetados ou de alguma maneira responsáveis pelo resultado de um empreendimento”. Partes interessadas mais importantes são os clientes e usuários. Outras partes interessadas: os próprios desenvolvedores, os dirigentes da organização fornecedora, os fornecedores de insumos e subcontratados, e as autoridades reguladoras. Partes interessadas podem participar de atividades de especificação, planejamento, decisão, comunicação, revisões e avaliações. 40 Software Pronto 41 Disponível em https://escritoriodeprojetos.com.br/definicao-de-pronto-e-incremento 42 43 Maturidade Um processo é definido quando “tem uma descrição que é mantida”, ou seja, tem documentação que detalha: o que é feito (produto), quando (etapas), por quem (papéis), as coisas que usa (insumos) e as coisas que produz (resultados). Processos podem ser definidos com mais ou menos detalhes, como acontece com qualquer receita. As etapas de um processo podem ter ordenação apenas parcial, o que pode permitir paralelismo entre algumas delas. 44 (PAULA FILHO, 2019, p.62) Maturidade A existência de processos definidos é necessária para a maturidade das organizações produtoras de software. Os processos definidos permitem que a organização tenha um modus operandi padronizado e reprodutível. Isso facilita a capacitação das pessoas e torna o funcionamento da organização menos dependente de determinados indivíduos. Entretanto, não é suficiente que os processos sejam definidos. Processos rigorosamente definidos mas não alinhados com os objetivos da organização são entraves burocráticos, e não fatores de produção. 45 Maturidade Para tornar uma organização mais madura e capacitada, é realmente preciso melhorar a qualidade dos seus processos. Processos não melhoram simplesmente por estarem de acordo com um padrão externo. O critério de verdadeiro êxito dos processos é a medida de quanto eles contribuem para que os produtos sejam entregues aos clientes e usuários com melhor qualidade, por menor custo e em prazo mais curto 46 Maturidade Modelos de capacitação: CMMI (Capability Maturity Model Integration [CMMI10]), do Software Engineering Institute (SEI), da Carnegie-Mellon University. O CMMI é patrocinado pelo Departamento de Defesa americano, que o utiliza para avaliação da capacidade de seus fornecedores de software. MPS.BR (Melhoria de Processo do Software Brasileiro), desenvolvido no Brasil, descrito por um Guia Geral ([SOFTEX12]) e detalhado por uma coleção de guias de implementação e avaliação 47 Processo de Software Filme: ..\..\..\..\Comum\Videos\Engenharia de Software\Empresa FazSite - Problemas processo de desenvolvimento de software.mp4 48 ../../../../Comum/Videos/Engenharia de Software/Empresa FazSite - Problemas processo de desenvolvimento de software.mp4 Glossário Funcionalidade característica do sistema computacional que retrata funções necessárias para a resolução de problemas em um domínio específico. refere-se àquilo que um programa faz e, no caso de software interativo, o que ele deve oferecer para seus usuários. é diferente de funcionamento que se refere a como um software realiza as suas funções. é determinada pelo modelo funcional da aplicação, também chamado de modelo de funcionalidade. Na engenharia de software, o modelo de funcionalidade é elaborado na fase de especificação funcional de software a partir das informações obtidas durante a análise de requisitos. Feature Fonte: Disponível em http://www2.dem.inpe.br/ijar/EngSofconceitos1.html Glossário Interface Aquilo que interliga dois sistemas. Considera-se que uma interface homem-máquina é a parte de um artefato que permite a um usuário controlar e avaliar o funcionamento do mesmo através de dispositivos sensíveis às suas ações e capazes de estimular sua percepção. No processo de interação usuário-sistema a interface é o combinado de software e hardware necessário para viabilizare facilitar os processos de comunicação entre o usuário e a aplicação. Fonte: Disponível em http://www2.dem.inpe.br/ijar/EngSofconceitos1.html Glossário Interface de Usuário A interface de usuário deve ser entendida como sendo a parte de um sistema computacional com a qual uma pessoa entra em contato física, perceptiva e conceitualmente. A interface é tanto um meio para a interação usuário- sistema, quanto uma ferramenta que oferece os instrumentos para este processo comunicativo. Desta forma a interface é um sistema de comunicação. A interface possui componentes de software e hardware. Fonte: Disponível em http://www2.dem.inpe.br/ijar/EngSofconceitos1.html Glossário Usabilidade Qualidade que ao mesmo tempo satisfaz necessidades do usuário, se acopla às suas capacidades e conhecimentos, considera o impacto da tecnologia no contexto de trabalho e integra o usuário em tal contexto. O desafio para usabilidade requer o design de equipamentos integrados ao ambiente de trabalho de maneira a aumentar as capacidades (principalmente as intelectuais) de usuários, considerando-os como pessoas inteligentes capacitadas para compreensão, aprendizado, interpretação e expressão, ao invés de desmerecê-los, considerando-os como "idiotas" destinados a trabalhos mecânicos. Neste sentido, sistemas computacionais devem ser vistos como artefatos cognitivos, ferramentas intelectuais ou mídia, no sentido introduzido no início deste trabalho. (Adler & Winograd, 1992) Fonte: Disponível em http://www2.dem.inpe.br/ijar/EngSofconceitos1.html Glossário Usabilidade A usabilidade é um conceito que se refere à qualidade da interação de sistemas com os usuários e depende de vários aspectos: facilidade de aprendizado do sistema - que é o tempo e o esforço necessários para os usuários atingirem um determinado nível de desempenho; facilidade de uso - que avalia o esforço físico e cognitivo do usuário durante o processo de interação; satisfação do usuário - que avalia se o usuário gosta e sente prazer em trabalhar com este sistema; flexibilidade - que avalia a possibilidade do usuário utilizar o sistema de maneira inteligente e criativa, realizando um maior número de tarefas com as mesmas funções e comandos do sistema ou tarefas que não estavam previstas pelos desenvolvedores. produtividade - se o sistema permite ao usuário ser mais produtivo do que seria se não utilizasse o sistema. Fonte: Disponível em http://www2.dem.inpe.br/ijar/EngSofconceitos1.html Glossário Processo de desenvolvimento define especificamente quem faz o que, quando e como. num processo é preciso definir em detalhes quando e como ações concretas devem ocorrer, quem as realizarão, quais as métricas deverão ser utilizadas para que se possa fazer o controle do processo e dos resultados obtidos. deve ser desenvolvido de acordo com as necessidades e circunstâncias particulares do software que será desenvolvido. não tem por objetivo limitar ou constranger as atividades dos membros da equipe de desenvolvimento, mas permitir que elas sejam feitas de maneira sistemática e controlada de maneira que se possa identificar e corrigir os erros ou mesmo antecipá-los. Fonte: Disponível em http://www2.dem.inpe.br/ijar/EngSofconceitos1.html Bibliografia PRESSMAN, Roger S. Engenharia de Software: Uma abordagem profissional. Sétima edição. MCGRAW HILL - ARTMED. 2011. capítulo 1. SOMMERVILLE, Ian. Engenharia de software. 9ª. ed., São Paulo: Pearson Prentice Hall, c2011, capítulo 1. PAULA-FILHO, Wilson de Pádua. Engenharia de software: fundamentos, métodos e padrões. 2ª. ed., Rio de Janeiro: LTC - Livros Técnicos e Científicos, c2003, capítulo 1. Completar aula com capítulo 6 atividades de ER - verificar referências VETORAZZO, Adriana de Souza. Engenharia de software. Porto Alegre SAGAH 2018 PRESSMAN, Roger S.; MAXIM, Bruce R.; ARAKAKI, Reginaldo; ARAKAKI, Julio; ANDRADE, Renato Manzan de; TORTELLO, João E. N. Engenharia de software : uma abordagem profissional. 8. ed. Porto Alegre: AMGH, 2016. E-book SBROCCO, José Henrique Teixeira de Carvalho. Metodologias ágeis engenharia de software sob medida. São Paulo Erica 2012 WAZLAWICK, Raul Sidnei. Engenharia de software: 56
Compartilhar