Baixe o app para aproveitar ainda mais
Prévia do material em texto
Análise de sistemas Henrique Pontes Gonçalves de Oliveira Dados Internacionais de Catalogação na Publicação (CIP) (Jeane Passos de Souza - CRB 8ª/6189) Oliveira, Henrique Pontes Gonçalves de Análise de sistemas / Henrique Pontes Gonçalves de Oliveira. -- São Paulo: Editora Senac São Paulo, 2019. (Série Universitária) Bibliografia. e-ISBN 978-85-396-2925-1 (ePub/2019) e-ISBN 978-85-396-2926-8 (PDF/2019) 1. Desenvolvimento de sistemas 2. Gestão de projetos : Desenvolvimento de sistemas 3. Planejamento de projetos : Desenvolvimento de sistemas 4. Requisitos : Engenharia 5. Lógica de programação I. Título. II. Série 19-998t CDD – 003 005.13 BISAC COM051000 COM051010 Índice para catálogo sistemático: 1. Desenvolvimento de sistemas 003 2. Lógica de programação 005.13 M at er ia l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . ANÁLISE DE SISTEMAS M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Henrique Pontes Gonçalves de Oliveira Administração Regional do Senac no Estado de São Paulo Presidente do Conselho Regional Abram Szajman Diretor do Departamento Regional Luiz Francisco de A. Salgado Superintendente Universitário e de Desenvolvimento Luiz Carlos Dourado M at er ia l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . Editora Senac São Paulo Conselho Editorial Luiz Francisco de A. Salgado Luiz Carlos Dourado Darcio Sayad Maia Lucila Mara Sbrana Sciotti Jeane Passos de Souza Gerente/Publisher Jeane Passos de Souza (jpassos@sp.senac.br) Coordenação Editorial/Prospecção Luís Américo Tousi Botelho (luis.tbotelho@sp.senac.br) Márcia Cavalheiro Rodrigues de Almeida (mcavalhe@sp.senac.br) Administrativo João Almeida Santos (joao.santos@sp.senac.br) Comercial Marcos Telmo da Costa (mtcosta@sp.senac.br) Acompanhamento Pedagógico Ana Claudia Neif Sanches Yasuraoka Designer Educacional Jackeline Duarte Kodaira Revisão Técnica Marcelo Marçula Colaboração Ana Paula Pigossi Papalia Coordenação de Preparação e Revisão de Texto Luiza Elena Luchini Preparação de Texto ASA Comunicação e Design Revisão de Texto Mariana Paixão Projeto Gráfico Alexandre Lemes da Silva Emília Correa Abreu Capa Antonio Carlos de Angelis Editoração Eletrônica Cristiane Marinho de Souza Ilustrações Cristiane Marinho de Souza Imagens iStock Photos E-pub Ricardo Diana Proibida a reprodução sem autorização expressa. Todos os direitos desta edição reservados à Editora Senac São Paulo Rua 24 de Maio, 208 – 3o andar Centro – CEP 01041-000 – São Paulo – SP Caixa Postal 1120 – CEP 01032-970 – São Paulo – SP Tel. (11) 2187-4450 – Fax (11) 2187-4486 E-mail: editora@sp.senac.br Home page: http://www.editorasenacsp.com.br © Editora Senac São Paulo, 2019 Sumário Capítulo 1 Desenvolvimento de sistemas, 9 1 Sistemas de software: definição, 10 2 Desenvolvimento de software como um projeto, 15 3 Paradigmas de desenvolvimento: estruturado e orientado a objeto, 18 Considerações finais, 23 Referências, 24 Capítulo 2 Ciclo de vida de desenvolvimento de sistemas – análise, projeto e construção, 27 1 Etapas genéricas de desenvolvimento de sistemas, 29 2 Análise de sistemas, 31 3 Projeto de sistemas, 34 4 Construção: criação de módulos e banco de dados, integração, 36 Considerações finais, 40 Referências, 42 Capítulo 3 Ciclo de vida de desenvolvimento de sistemas – testes, implantação de sistemas e tipos de manutenção, 43 1 Tipos de testes, 44 2 Implantação de sistemas, 50 3 Tipos de manutenção, 53 Considerações finais, 55 Referências, 56 Capítulo 4 Planejamento e gestão de projetos, 57 1 Planejamento e gestão de projetos, 58 2 Estudo de viabilidade: financeira e técnica, 60 3 Dimensionamento do projeto: tempo e recursos, 64 4 Planos de gerenciamento: de riscos, de pessoas, da qualidade e de configuração, 66 Considerações finais, 71 Referências, 73 Capítulo 5 Modelos de desenvolvimento de sistemas, 75 1 Modelo sequencial, 76 2 Modelo iterativo, 78 3 Modelo incremental, 83 Considerações finais, 84 Referências, 86 Capítulo 6 Metodologias de desenvolvimento de sistemas, 87 1 Metodologias tradicionais, 89 2 Metodologias ágeis, 91 3 Metodologias de microsserviços, 99 4 DevOps, 101 Considerações finais, 103 Referências, 104 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. M at er ia l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . Capítulo 7 Requisitos, 107 1 Requisitos: definições, 108 2 Requisitos funcionais, 109 3 Requisitos não funcionais, 110 4 Atributos dos requisitos, 112 5 Documento de especificação de requisitos, 114 Considerações finais, 119 Referências, 120 Capítulo 8 Engenharia de requisitos, 123 1 Análise de sistemas, 124 2 Engenharia de requisitos, 126 3 Identificação dos requisitos, 129 Considerações finais, 132 Referências, 133 Capítulo 9 Ferramentas de desenvolvimento – diagrama de caso de uso, 135 1 Diagrama de caso de uso, 136 Considerações finais, 148 Referências, 149 Capítulo 10 Ferramentas de desenvolvimento – diagrama de classes, 151 1 Diagrama de classes: conceito, 152 2 Principais elementos do diagrama de classes, 154 Considerações finais, 162 Referências, 163 Capítulo 11 Ferramentas de desenvolvimento – diagramas de atividades e de sequência, 165 1 Diagrama de atividades, 166 2 Diagrama de sequência, 173 Considerações finais, 179 Referências, 180 Capítulo 12 Lógica de programação – estrutura sequencial, 181 1 Representação de algoritmos, 182 2 Estrutura sequencial: características, 187 3 Comandos: início e final de programa, entrada e saída de dados, 188 4 Variáveis: tipos e declarações, 189 5 Comando de atribuição de valores, 191 6 Operadores aritméticos, 192 Considerações finais, 193 Referências, 195 Capítulo 13 Lógica de programação – estrutura de decisão simples e aninhada, 197 1 Estrutura de decisão: características, 198 2 Operadores relacionais, 198 3 Comandos de decisão: simples e aninhada, 199 Considerações finais, 206 Referências, 206 Capítulo 14 Lógica de programação – estrutura de decisão composta, 207 1 Comandos de decisão: condições compostas, 208 2 Operadores lógicos, 210 Considerações finais, 212 Referências, 212 7 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Capítulo 15 Lógica de programação – estrutura de repetição controlada por contador, 213 1 Estruturas de repetição: características, 214 2 Repetição controlada por contador, 214 Considerações finais, 217 Referências, 218 Capítulo16 Lógica de programação – estrutura de repetição controlada pelo resultado de operação ou pelos dados do sistema, 219 1 Estruturas enquanto/faça/fim- -enquanto, 220 2 Pseudocódigo, 221 3 Fluxograma, 221 4 Diagrama de Chapin, 222 5 Estruturas repita/até que, 222 6 Pseudocódigo, 223 7 Fluxograma, 223 8 Diagrama de Chapin, 224 9 Variável acumuladora, 224 10 Marcadores ou flag, 225 Considerações finais, 226 Referências, 227 Sobre o autor, 229 9 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Capítulo 1 Desenvolvimento de sistemas Ao longo dos últimos 30 anos, os sistemas de software vêm exer- cendo um papel fundamental e crítico na nossa sociedade. Atualmente, eles estabelecem uma dependência em empresas, indivíduos, governo, ou seja, em todos os organismos da sociedade moderna. O grau dessa dependência está atrelado às características e aos serviços oferecidos por sistemas computadorizados. 10 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . Mas o que são sistemas de software? Como são produzidos? Quais são seus principais paradigmas de desenvolvimento? Neste capítulo, abordaremos uma breve história dos sistemas de software, seus principais conceitos, suas características, os tipos de software e suas aplicações. Também vamos abordar como são os pro- jetos de desenvolvimento de software, as principais atividades e etapas, e faremos uma breve conceituação dessas etapas: (1) métricas, (2) es- timativas, (3) análise de riscos, (4) planejamento e (5) controles. Por fim, apresentaremos os conceitos dos dois principais paradig- mas de programação de software: (1) estruturado e (2) orientado ao objeto, considerando seus conceitos e uma comparação básica entre eles, abordando suas vantagens e desvantagens e as linguagens apro- priadas a cada um dos casos. 1 Sistemas de software: definição O surgimento dos primeiros sistemas de software ocorreu na déca- da de 1950; sua evolução foi densa e rápida e, desde então, seu pro- gresso é constante, continuando a ser a tecnologia mais importante no contexto mundial (PRESSMAN, 1995; PRESSMAN, 2016). Podemos classificar essa evolução até os tempos atuais em cinco eras, conforme apresentado na figura 1. 11Desenvolvimento de sistemas M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Figura 1 – Cronologia da evolução do software Primeira era1950 Orientação Batch Distribuição limitada Software customizado Segunda era Multiusuário Tempo real Banco de dados Produto de software 1960 Terceira era1970 Sistemas distribuídos “Inteligência” embutida Hardware de baixo custo Impacto de consumoQuarta era PCs poderosos Tecnologia orientada ao objeto Sistemas especialistas Redes neurais artificiais Computação paralela 1980 Quinta era1990 Sistemas abertos Software baseado em componentes Wireless Model Driven DevelopmentTempos atuais Internet, intranet, groupwares Computação em nuvem Tecnologias móveis Computação ubíqua e pervasiva 2010 Atuais Fonte: adaptado de Pressman (1995), Albertin (2009), Guerra e Colombo (2009). A definição de sistemas de software apresenta algumas variações de acordo com diferentes autores, pesquisadores ou profissionais da área. Vejamos a seguir duas definições: São programas de computadores, em suas diversas formas, e a documentação associada. Um programa é um conjunto de solu- ções algorítmicas, codificadas numa linguagem de programação, executado numa máquina real. Software é um produto conceitual e lógico. (LEITE, 2006) 12 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . São programas de computador e documentação associada, os sis- temas de software são abstratos e intangíveis, não são restringidos pelas propriedades dos materiais e nem governados pelas leis da física ou pelos processos de manufatura. (SOMMERVILLE, 2007) Para fins didáticos, podemos considerar a definição de Pressman como a mais adequada: Software são instruções (programas de computador) que, quando executadas, produzem a função e o desempenho desejados; es- truturas de dados que possibilitam que os programas manipulem adequadamente a informação; e documentos que descrevem a operação e o uso dos programas. (PRESSMAN, 1995) 1.1 Principais características dos sistemas de software Para que possamos compreender melhor em que consiste um software, precisamos analisar suas principais características. No qua- dro 1, observa-se uma síntese delas. Quadro 1 – Principais características de um software CARACTERÍSTICA DESCRIÇÃO Invisibilidade O software é invisível e não visualizável. • A realidade do software não é inerentemente incorporada no espaço. • O software não tem representação geométrica pronta, assim como a Terra tem mapas, os chips de silício têm diagramas e os computadores têm esquemas de conectividade. Complexidade Softwares são mais complexos para seu tamanho do que talvez qualquer outra construção humana. • Uma ampliação de uma entidade de software não é apenas uma repetição dos mesmos elementos em tamanhos maiores; ampliação é necessariamente um aumento no número de elementos diferentes. • Na maioria dos casos, os elementos interagem entre si de alguma forma não linear, e a complexidade do todo aumenta muito mais do que linearmente. (cont.) 13Desenvolvimento de sistemas M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. CARACTERÍSTICA DESCRIÇÃO Mutabilidade A entidade de software está constantemente sujeita a pressões por mudança. • Em parte, isso acontece porque o software de um sistema incorpora suas funções. E são estas funções que, na maioria dos softwares, sofrem constantes pressões por mudança. • Em parte, é porque o software pode ser mudado mais facilmente, é puro material de pensamento, infinitamente maleável. • Todo o software bem-sucedido é alterado. • As pressões por mudanças nas funções vêm principalmente de usuários que gostam da função básica e criam novos usos. Conformidade O software deve obter sua identidade e estar em conformidade tão logo seja colocado em produção. • Deve estar em conformidade porque é percebido como o mais adaptável. • Muita complexidade vem da aceitação para outras interfaces; essa complexidade não pode ser simplificada por qualquer redesenho do software sozinho. Inalterabilidade O software não se desgasta no sentido físico. • O software não é sensível aos problemas ambientais (ex.: poeira, vibrações, excesso de uso, temperatura, etc.), como são os hardwares. • Os softwares se deterioram devido a suas falhas e suas correções e melhorias que levam a novas falhas inerentes ao seu tempo de utilização. Essas alterações levam a um novo ciclo de erros, ou seja, o software está se deteriorando devidoàs mudanças. Reusabilidade O componente de um software deve ser projetado de forma que possa ser utilizado em programas diferentes. • O desenvolvimento de um software, na sua maioria, é realizado utilizando “componentes”. • Esses componentes podem ser algoritmos de rotinas, sub-rotinas, interfaces, estrutura de banco de dados, entre outros. • Os softwares são armazenados no que chamamos de “bibliotecas”. Fonte: adaptado de Brooks Jr. (1986) e Pressman (1995). 1.2 Principais atributos de um sistema de software Um sistema de software deve ter um conjunto de atributos especí- ficos de acordo com sua aplicação. Sommerville (2007) define quatro atributos essenciais de um sistema profissional de software: (1) manu- tenibilidade, (2) confiança e proteção, (3) eficiência e (4) aceitabilidade. 14 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . Quadro 2 – Principais atributos de um software ATRIBUTOS DESCRIÇÃO Manutenibilidade O software deve ser escrito de forma que possa evoluir para atender às necessidades dos clientes. Esse é um atribulo crítico, porque a mudança de software é um requisito inevitável de um ambiente de negócios em mudança. Confiança e proteção A confiança do software inclui uma série de características como confiabilidade, proteção e segurança. Um software confiável não deve causar prejuízos físicos ou econômicos no caso de falha de sistema. Usuários maliciosos não devem ser capazes de acessar ou prejudicar o sistema. Eficiência O software não deve desperdiçar os recursos do sistema, como memória e ciclos do processador. Portanto, a eficiência inclui capacidade de resposta, tempo de processamento, uso de memória, etc. Aceitabilidade O software deve ser aceitável para o tipo de usuário para o qual foi projetado. Isso significa que deve ser compreensível, usável e compatível com outros sistemas usados por ele. Fonte: adaptado de Sommerville (2007). 1.3 Principais tipos de softwares Atribuir tipos para as aplicações de software se tornou uma tarefa complicada, pois conforme a complexidade do software aumenta, de- saparecem as suas divisões em compartimentos. Pressman (2016) in- dica os seguintes tipos de softwares e suas principais características: a. Software de sistema. b. Software de aplicação. c. Software científico e de engenharia. d. Software embarcado. e. Software para linha de produtos. f. Aplicações web/aplicativos móveis. g. Software de inteligência artificial. 15Desenvolvimento de sistemas M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. PARA SABER MAIS Recomendamos a leitura da obra Engenharia de software: uma aborda- gem profissional, de Roger S. Pressman, 8ª edição, páginas 6 e 7, para consultar as principais características sobre os principais tipos de software listados. 2 Desenvolvimento de software como um projeto Conceitualmente, projeto significa um empreendimento, ou seja, é um trabalho que tem como objetivo a criação de um produto, neste caso, um software, envolvendo um esforço temporário e não repetitivo e um determinado grau de incerteza na sua realização. Esse trabalho nor- malmente é executado por pessoas e está condicionado a prazo, custo, escopo e qualidade, como qualquer empreendimento. Essas atividades precisam ser planejadas, programadas, monitoradas e controladas. De acordo com Martins (2002) e Fernandes (1995), um projeto de software é a junção dos seguintes itens: Objetivos + Atividades + Prazos + Recursos envolvidos + Riscos e incertezas No desenvolvimento de um software, a maioria das questões são inerentemente de qualificação. Nesse sentido, é necessário fazer as seguintes perguntas: “Quais são os requisitos?”, “Qual é a técnica de pro- gramação e teste?”. Porém, os problemas do desenvolvimento do software não são exclusivamente de qualificação. Existem também inúmeras questões quantitativas como: “Quanto tempo levará o desenvolvimento?”, “Quanto dinheiro será despendido?”, “Qual será o risco?”. Para um gerente de projeto de desenvolvimento de software, normal- mente as questões quantitativas são as mais preocupantes e as mais 16 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . urgentes. O gerenciamento eficaz dos parâmetros quantitativos de um projeto resulta em controle (DE MARCO, 1989). PARA PENSAR “Se você não pode medir, não pode gerenciar” – frase de Peter Drucker, considerado o pai da administração moderna. Nascido na Áustria, em 1909, Peter Ferdinand Drucker foi escritor, professor, consultor e trouxe uma nova perspectiva no âmbito da gestão. A gestão de projetos representa a primeira camada do processo de engenharia de software, ou seja, abrange todo o processo de seu desen- volvimento. Para conduzir um projeto de software de sucesso, devemos conhecer o escopo do trabalho a ser feito, os riscos que podem ocorrer, os recursos adequados, as tarefas a serem executadas, os principais marcos de entrega a serem acompanhados, o esforço planejado e reali- zado e o plano a ser cumprido (PRESSMAN, 1995). O gerenciamento de projeto de desenvolvimento de software com- preende as seguintes atividades: (1) medição, (2) estimativa, (3) análise de riscos, (4) programação de atividades e (5) monitoramento e controle. 2.1 Medição O processo é medido em um esforço para melhorá-lo e garantir sua qualidade. A medição do software é efetuada por diferentes razões, a saber: (1) indicar a qualidade do produto; (2) avaliar a produtividade das pessoas que produzem o produto; (3) avaliar os benefícios derivados de novos métodos e ferramentas de software; (4) formar uma linha básica para estimativas; (5) ajudar a justificar os pedidos de novas ferramentas ou treinamento adicional. 17Desenvolvimento de sistemas M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. 2.2 Estimativa A estimativa é um componente da atividade de planejamento do pro- jeto. No planejamento de desenvolvimento de um software deve conter as principais estimativas: esforço humano exigido, duração cronológica do projeto e custos. 2.3 Análise de riscos A análise de riscos refere-se ao levantamento e à administração dos riscos envolvidos durante todo o projeto de desenvolvimento de softwa- re. A análise de riscos é um processo que deve ser descrito para que se possa agir quando o risco acontece. Deve-se atribuir a cada risco levantado a sua identificação, a estratégia de resposta, a prioridade, a probabilidade de sua ocorrência e seus impactos. 2.4 Programação de atividades A programação de atividades é a definição das tarefas que devem ser executadas ao longo do desenvolvimento do software. Devem ser atribuídos para cada tarefa: prazos, responsáveis, recursos e sua inter- dependência com outras tarefas. 2.5 Monitoramento e controle As atividades de monitoramento e controle são estabelecidas quando a programação do projeto se inicia. Essa atividade normalmenteé realiza- da pelo gerente do projeto, muitas vezes por meio de ferramentas de con- trole. Cada tarefa definida na programação é monitorada para que ocorra dentro do esperado, considerando prazo, custo, escopo e qualidade. Caso a tarefa não seja cumprida de acordo com sua programação, ações de- vem ser tomadas pelo gerente do projeto, como reorganizar tarefas, redi- recionar recursos, entre outras. 18 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . 3 Paradigmas de desenvolvimento: estruturado e orientado a objeto De acordo com o dicionário Michaelis da Língua Portuguesa (2014), o termo “paradigma” refere-se a algo que serve de exemplo ou modelo; padrão. Analogamente, paradigmas de desenvolvimento de software são padrões de resolução problemas que se relacionam a determina- dos gêneros de programas e linguagens (TUCKER; NOONAN, 2009). 3.1 Paradigma de desenvolvimento estruturado Antes de 1975, a maior parte das empresas de software não utiliza- va nenhuma técnica específica; cada indivíduo trabalhava do seu pró- prio jeito. Grandes avanços foram feitos aproximadamente entre 1975 e 1985, com o desenvolvimento do assim chamado paradigma clássico ou estruturado (SCHACH, 2010). Para Schach (2010), no início de sua utilização, essas técnicas sur- giram de forma intensa e promissoras, porém, com o surgimento de softwares cada vez maiores e complexos, algumas dificuldades come- çaram a se manifestar, principalmente na manutenção pós-produção do produto de software. Outra limitação importante do paradigma estru- turado reside no fato de que suas técnicas são orientadas a operações ou a atributos (dados), mas não às duas ao mesmo tempo, pois os com- ponentes fundamentais do produto de software são as operações dos produtos e os atributos sobre os quais essas operações agem, ou seja, têm como foco principal a operação e as transformações dos dados. Basicamente, o paradigma de desenvolvimento estruturado é com- posto de quatro técnicas principais: (1) análise de sistemas estruturada, (2) análise de fluxo de dados, (3) programação estruturada e (4) testes estruturados. A seguir, vamos detalhar um pouco mais sobre a progra- mação estruturada de software. 19Desenvolvimento de sistemas M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. 3.1.1 Programação estruturada A programação estruturada determina uma técnica do desenvol- vimento estruturado de software que facilita o entendimento de pro- gramas por meio de um número limitado de mecanismos básicos de verificação da execução de programas. Qualquer software, indepen- dentemente de sua complexidade, de sua aplicação e da linguagem de programação na qual será codificado, pode ser desenvolvido por meio desses mecanismos básicos. O princípio básico de programação estruturada é que um programa é composto de blocos elementares de código que se interligam por meio de três mecanismos básicos, que são: (1) Sequência (2) Seleção (3) Iteração (repetição) Cada uma dessas construções tem um ponto de início (o topo do bloco) e um ponto de término (o fim do bloco) de execução (BRAGA; RICARTE, 2005). A seguir, confira detalhes sobre as definições básicas de cada mecanismo. • Sequência: nesse mecanismo são implementadas as etapas de processamento essenciais para descrever uma funcionalidade específica. Um exemplo básico seria um fluxograma, em que é executada a “etapa 1” e, após a sua finalização, a “etapa 2” é ini- ciada, e assim sucessivamente. • Seleção: é o mecanismo em que um fluxo a ser percorrido de- pende de uma escolha. Existem duas formas básicas para essa escolha: utilização das condicionais “se” e “senão”. 20 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . • Iteração: é a execução de comandos de forma repetida em que, ao final de cada execução, a condição é reexaminada e enquanto seja considerada verdadeira a execução do programa continua. No quadro 3, podemos observar as principais características da pro- gramação estruturada: Quadro 3 – Principais características da programação estruturada PARADIGMA PRINCIPAIS VANTAGENS PRINCIPAIS DESVANTAGENS LINGUAGENS Estruturado • Os problemas podem ser desmembrados em vários subproblemas. • Boa legibilidade. • Os dados são separados das funções. • Mudanças na estrutura dos dados acarretam alteração em todas as funções relacionadas. • Gera sistemas difíceis de serem mantidos. • “C” • Basic • Cobol • Pascal 3.2 Paradigma de desenvolvimento orientado a objeto O paradigma de desenvolvimento orientado a objetos considera igualmente importantes tanto os atributos quanto as operações. Uma maneira simplista de compreender um objeto é vê-lo como um artefato de software unificado que incorpora tanto os atributos quanto as opera- ções realizadas sobre os atributos (SCHACH, 2010). As principais características do paradigma de desenvolvimento orientado a objeto são: • Detalhes de como os atributos de um objeto são armazenados não são conhecidos externamente ao objeto. • A manutenção pós-produção é mais rápida e fácil, pois é efetuada por objetos. A chance de aparecerem erros de regressão é muito reduzida. 21Desenvolvimento de sistemas M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. • O desenvolvimento também é bem facilitado devido ao objetivo ter uma equivalência com um produto físico. Essa característica de um objeto e seu equivalente no “mundo real” deriva na produ- ção de softwares de melhor qualidade. • Os objetos projetados são unidades independentes, pois tanto os atributos como suas operações são incluídos no mesmo objeto. Se todas as operações realizadas nos atributos de um objeto fo- rem incluídas nesse mesmo objeto, então ele pode ser considera- do uma entidade conceitualmente independente. • O paradigma orientado ao objeto reduz o nível de complexidade de um produto de software, pois produz unidade menores e inde- pendentes; consequentemente, simplifica o desenvolvimento e a manutenção. • A reutilização é um ponto forte no uso do paradigma orientado a objeto. Como os objetos são entidades independentes, eles po- dem ser utilizados em novos produtos de software. A seguir, vamos detalhar um pouco mais sobre a programação orien- tada a objeto de software. 3.2.1 Programação orientada a objeto A programação orientada a objeto (POO) fornece um modelo no qual um programa é uma coleção de objetos que interagem entre si, passando mensagens que transformam seu estado. Nesse sentido, a passagem de mensagens permite que objetos de dados se tornem ati- vos. Essa característica ajuda a distinguir melhor a POO das demais. A classificação de objetos, a herança e a passagem de mensagens são componentes fundamentais da POO (TUCKER; NOONAN, 2009). 22 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc ação a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . O paradigma orientado a objeto é fundamentado em quatro pilares principais: (1) abstração, (2) encapsulamento, (4) herança e (5) polimor- fismo. Esses quatro pilares são essenciais no entendimento de qual- quer linguagem orientada a objetos. No quadro 4, podemos observar as principais características da pro- gramação orientada a objetos. Quadro 4 – Principais características da programação orientada a objetivos PARADIGMA PRINCIPAIS VANTAGENS PRINCIPAIS DESVANTAGENS LINGUAGENS Orientado a objetos – POO • Alteração de um módulo não incorre na modificação de outros módulos. • Quanto mais um módulo for independente, maior a chance de reutilização em outra aplicação. • Bem estabelecido. • Flexível e eficiente. • Exige formas de pensar relativamente complexas, de difícil compreensão se comparado ao estruturado. • Pode possuir baixo desempenho se comparado a códigos estruturados similares. • Smalltalk • Python • Ruby • C++ • Object Pascal • Java • C# • Oberon • Ada • Eiffel • Simula • NET 3.3 Comparativo entre os paradigmas estruturado e orientado a objetos Uma diferença significativa entre os dois paradigmas de desenvolvi- mento está no ciclo de vida de desenvolvimento. No projeto estruturado, o processo passa uma única vez por cada etapa (salvo a necessidade de manutenção), de forma única para todo o produto, tornando a transição entre cada etapa mais trabalhosa. No ciclo de vida do projeto orientado por objetos, o processo passa por todas as etapas de cada objeto a ser de- senvolvido, sendo mais suave a transição entre as etapas, tornando mais ágil o desenvolvimento do produto. No próximo capítulo, será estudado, de forma mais detalhada, o ciclo de desenvolvimento de um sistema. 23Desenvolvimento de sistemas M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. De qualquer forma, os paradigmas não devem ser classificados como “melhor” ou “pior”, “certo” ou “errado”. Cada paradigma determina uma forma particular de abordar os problemas e de formular respecti- vas soluções, possibilitando a escolha do paradigma mais adequado para analisar e resolver cada problema. Ambos os paradigmas têm suas vantagens e desvantagens. Considerações finais Neste capítulo, vimos que um sistema de software é um produto complexo e sua evolução, desde seu surgimento até os dias atuais, foi relativamente rápida. Sua definição pode ser apresentada de várias for- mas, da mais simples à mais complexa, dependendo da sua finalidade, do tipo e da quantidade de componentes utilizados. Verificamos que existe uma grande quantidade de tipos de sistemas de software, de di- fícil categorização, a qual depende de sua aplicabilidade e seu objetivo, que vão desde softwares básicos para simples operações a sistemas complexos de engenharia, sistemas gerenciais e funcionais a sistemas de inteligência artificial. Devido ao software ser um produto não físico, suas principais características se baseiam em propriedades de difícil tangibilidade. Um software de alta qualidade tem que garantir pelo me- nos quatro atributos: (1) facilidade na sua manutenção, (2) segurança, (3) eficiência e (4) aceitação pelo usuário/cliente. O gerenciamento de um projeto de desenvolvimento de software é uma atividade complexa e composta de cinco etapas principais: (1) de- finição de métricas de controle, (2) estimativas das atividades, (3) análi- se dos possíveis riscos conhecidos e desconhecidos, (4) planejamento das atividades e plano de respostas aos riscos mapeados e (5) contro- le e monitoramento de todas as tarefas para que sejam realizadas de acordo com o planejamento, as atividades e as respostas aos riscos. 24 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . Vimos também que o desenvolvimento de um software pode ser concebido, principalmente, por meio de dois paradigmas: (1) o modelo estruturado e (2) o orientado a objeto. Ambos os paradigmas apresen- tam vantagens e desvantagens, sendo possível inferir que um paradig- ma não seja “melhor” que o outro. O melhor paradigma é aquele que se adapte à linguagem de programação utilizada, ao conhecimento do pro- gramador e, principalmente, à finalidade do software a ser desenvolvido. Referências ALBERTIN, Alberto L. Administração de informática: funções e fatores críticos de sucesso. 6. ed. São Paulo: Atlas, 2009. BRAGA, Denise B.; RICARTE, Ivan L. M. Letramento e tecnologia. Projeto Linguagem e letramento. CEFIEL/IEL/Unicamp: Campinas, 2005. BROOKS JR., Frederick P. No silver bullet: essence and accidents in software engineering. IEEE Computer, 1987. DEMARCO, Tom. Controle de projetos de software: gerenciamento, avaliação, estimativa. Rio de Janeiro: Campus, 1989. FERNANDES, Aguinaldo A. Gerência de software através de métricas: garan- tindo a qualidade do projeto, processo e produto. São Paulo: Atlas, 1995. GUERRA, Ana C.; COLOMBO, Regina M. T. Tecnologia da Informação: qualidade de produto de software. Brasília: PBQP Software, 2009. JÉZÉQUEL, J.-M.; MEYER, B. Design by contract: the lessons of Ariane. Computer, v. 30, n. 1, p. 129-130, 1997. LEITE, Jair C. Engenharia de software: ciclos de vida. Universidade do Rio Grande do Norte, 2006. MARTINS, José Carlos Cordeiro. Gestão de projetos de desenvolvimento de software: PMI-UML. Rio de Janeiro: Brasport, 2002. MICHAELIS Dicionário prático da língua portuguesa. 2. ed. São Paulo: Melhoramentos, 2014. 25Desenvolvimento de sistemas M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. MONTEALEGRE, Ramiro; KEIL, Mark. De-escalating information technology pro- jects: lessons from the Denver International Airport. Mis Quarterly, p. 417-447, 2000. PRESSMAN, S. Roger. Engenharia de software. 3. ed. São Paulo: McGraw-Hill, 1995. ______. Engenharia de software: uma abordagem profissional. 8. ed. Rio de Janeiro: McGraw-Hill, 2016. SCHACH, Stephen R. Engenharia de software: os paradigmas clássico e orien- tado a objetos. 7. ed. Porto Alegre: AMGH Editora, 2010. SOMMERVILLE, Ian. Engenharia de software. 8. ed. São Paulo: Pearson Addison-Wesley, 2007. TUCKER, Allen; NOONAN, Robert. Linguagens de programação: princípios e pa- radigmas. 2. ed. Rio de Janeiro: McGraw-Hill, 2009. 27 Capítulo 2 Ciclo de vida de desenvolvimento de sistemas – análise, projeto e construção O estudo do ciclo de desenvolvimento de sistemas surgiu em meados dos anos de 1960. Trata-se de um modelo sequencial de eta- pas dispostas em degraus, também conhecido como “modelo cascata” de desenvolvimento de software. Genericamente, esse ciclo é compos- to de seis etapas principais – (1) análise, (2) projeto de sistemas, (3) construção, (4) testes, (5) implantação e (6) manutenção – e cada uma delas é composta de várias atividades. Cada etapa produz um produto ou insumo que é a entrada da eta- pa seguinte, a qual se inicia com a finalização da anterior. Em qualquer M aterial para uso exclusivo de aluno m atriculado em curso de Educaçãoa Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. 28 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . etapa do processo, pode-se voltar a alguma etapa anterior, conforme necessário, lembrando da necessidade de refazer as etapas seguintes até o ponto da pertinência de retrocesso. Cada etapa cumpre um objetivo no processo de desenvolvimento de um software. Nasce, basicamente, na análise da necessidade, seguindo pela definição do projeto, sua construção ou codificação, na realização dos testes e finaliza-se com a implantação e manutenção do produto. Neste capítulo, vamos apresentar, de forma genérica, as seis prin- cipais etapas e abordar, com mais detalhes, as três primeiras etapas desse ciclo: (1) análise, (2) projeto e (3) construção, destacando seus objetivos e suas principais características. A etapa da análise consiste em dois grupos de atividades principais: (1) a análise de sistemas ou engenharia de sistemas e (2) a análise de requisitos. Na análise de sistemas, basicamente, é efetuada a identifica- ção da melhor solução para atender à necessidade do cliente por meio de diversos estudos, viabilidade técnica e econômica, atribuição de fun- ções aos componentes do sistema (principalmente hardware, software, base de dados e pessoas) e o estabelecimento de restrições de custos e prazo (PRESSMAN, 1995). Já análise de requisitos será estudada com mais profundidade nos capítulos 7 e 8. Na etapa de projeto, inicia-se a parte técnica do desenvolvimento da aplicação, que consiste na elaboração da especificação técnica do sis- tema, composta, principalmente, de definições da estrutura de dados, de procedimentos de processamento, de arquitetura de software e de interfaces. Concluída a etapa do projeto, é gerado um documento de especifica- ção, que é a entrada para o início da construção do sistema. Na etapa de construção, são tratados os conceitos de criação dos módulos do siste- ma e banco de dados e o processo de integração de seus componentes, explorando seus principais tipos, suas características e sua usabilidade. 29Ciclo de vida de desenvolvimento de sistemas – análise, projeto e construção M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. 1 Etapas genéricas de desenvolvimento de sistemas Conforme mencionado, o ciclo de vida de desenvolvimento de software contém seis etapas principais, que são: (1) análise, (2) projeto de sistemas, (3) construção, (4) testes, (5) implantação e (6) manuten- ção, as quais estão contidas em um ciclo de vida tradicional ou clássico, também conhecido como “modelo cascata”. Vale ressaltar que, de acor- do com a necessidade, pode-se voltar a qualquer etapa, cumprindo as etapas subsequentes novamente e, por esse motivo, utiliza-se o termo “ciclo”. Para Pressman (2010), esse modelo propõe um tratamento se- quencial e ordenado para o desenvolvimento de um software. O modelo cascata surgiu em meados dos anos 1960, consolidando- -se nos anos 1970, e é considerado um grande avanço nas atividades de desenvolvimento de um software. Os programas se tornaram mais claros, escritos mais rapidamente e mais fáceis de modificar (TENÓRIO; VALLE, 2013). Na figura 1, é apresentado o modelo de ciclo de vida clás- sico ou “modelo cascata”. Figura 1 – Modelo de ciclo de vida clássico Análise Projeto Construção Testes Implantação Manutenção Fonte: adaptado de Pressman (2010), Audy e Prikladnicki (2007). 30 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . 1.1 Análise A etapa de análise é constituída, basicamente, de duas grandes ati- vidades: (1) a análise de engenharia de sistemas ou, simplesmente, análise de sistemas, e (2) a análise de requisitos de software (que será estudada nos capítulos 7 e 8). A análise de sistemas abrange todos os elementos do sistema e não apenas no software, principalmente no levantamento das necessidades do cliente, no estudo de viabilidade técnica e econômica do desenvolvi- mento, nas propostas de alternativas para a solução e nas atribuições de funções aos componentes do sistema. 1.2 Projeto O projeto de software é um processo composto de várias atividades e é a primeira etapa do núcleo técnico no processo de desenvolvimento do software. Nessa etapa, são elaboradas as especificações da solução proposta e definida na etapa de análise. 1.3 Construção A etapa de construção inicia-se após a conclusão da etapa de proje- to. Na etapa de construção, são executadas as atividades de programa- ção, criação de módulos, banco de dados, integração de componentes, codificação, entre outras especificações definidas na etapa do projeto. A codificação é o processo que transforma o programa escrito em uma determinada linguagem em uma forma legível de entendimento pelo hardware, conhecida como “linguagem de máquina”. 31Ciclo de vida de desenvolvimento de sistemas – análise, projeto e construção M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. 1.4 Teste O processo de realização de testes concentra-se nos aspectos ló- gicos internos do software, garantindo que todas as instruções recebi- das tenham sido testadas de acordo com os resultados esperados. A realização dos testes também visa buscar defeitos de função, lógica, implementação, como também sua relação com outros componentes da solução. Normalmente, os testes devem ser realizados em ambiente exclusivo similar ao de produção. 1.5 Implantação A implantação é a etapa em que o software é instalado no hardware em ambiente de produção e disponibilizado para o cliente solicitante e seus usuários. Nessa etapa, são realizadas todas as conexões (inter- faces) com outros sistemas, hardwares, base de dados, conforme as especificações; também são realizadas importações ou migrações de dados, quando necessário. 1.6 Manutenção A manutenção é a atividade realizada após a implantação do softwa- re em produção. As atividades de manutenção decorrem sob demanda em consequência de erros e falhas não detectados na fase de testes, especificações interpretadas de forma incorreta, novas funcionalidades, entre outras necessidades de alterações. 2 Análise de sistemas A análise de sistemas é a atividade que compõe a maior parte das atividades de entendimento do problema até a sua respectiva solução. 32 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . Nessa etapa, é estabelecida a solução mais viável para atender às ne- cessidades da solução. São identificadas as necessidades funcionais eos requisitos técnicos para todos os componentes do sistema. Essa vi- são de sistemas é essencial quando o sistema deve fazer interface com outros elementos, como hardware, pessoas e banco de dados. Segundo Pressman (1995), os principais objetos da etapa de análise de sistemas são: 1. a identificação da necessidade do sistema; 2. a avaliação da concepção do sistema quanto à sua realização; 3. a realização da análise da viabilidade econômica e técnica; 4. a atribuição das funções ao hardware, ao software, às pessoas, ao banco de dados e aos demais elementos do sistema; e, por fim, 5. o estabelecimento das restrições de prazo e de custo. 2.1 Identificação da necessidade do sistema Identificar a necessidade do sistema é o primeiro passo do processo de análise de sistemas. Nessa etapa é que o analista ou engenheiro de software se reúne com o cliente solicitante do produto. Esse cliente pode ser formado por gerentes do cliente, usuários finais, fornecedores, ou seja, todos os principais envolvidos e impactados pelo novo sistema. Nessa etapa, deve-se definir, primeiramente, as informações gerais do sistema: quais informações serão produzidas e devem ser forneci- das, quais funções deverão ter o sistema, o desempenho esperado, en- tre outras. Essa atividade não é trivial como parece e, portanto, deve ser efetuada com muita cautela e exaustivamente por meio de várias “rodadas” de conversas. O principal problema encontrado nessa fase é a comunicação, ou seja, o entendimento entre o analista e o cliente. 33Ciclo de vida de desenvolvimento de sistemas – análise, projeto e construção M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. 2.2 Avaliação da concepção do sistema quanto à sua viabilidade Nesta etapa, são efetuados os estudos de viabilidade econômica, técnica, legal e a análise de alternativas. Na viabilidade econômica, é avaliado o custo do desenvolvimento comparado aos benefícios ge- rados pelo novo sistema. Na viabilidade técnica, é verificado se o am- biente tecnológico da organização (hardware, software e pessoas) está preparado para receber o novo produto, e, na viabilidade legal, deve ser feita uma investigação, principalmente sobre restrições legislativas e contratuais. Nessa etapa, também deve ser realizada uma avaliação so- bre alternativas para o desenvolvimento do software, levando em consi- deração as inviabilidades identificadas para a solução inicial. 2.2.1 Análise da viabilidade econômica A análise econômica é basicamente a realização do estudo da via- bilidade econômica do produto. Trata-se de um estudo de custo x be- nefício, ou seja, efetuar o levantamento dos custos diretos e indiretos para o desenvolvimento e confrontá-los com todos os benefícios que o sistema proporcionará. Esse resultado deve ser avaliado pela orga- nização, levando em consideração seu planejamento estratégico. Esse estudo também não é trivial, pois existem muitos critérios que variam de acordo com o sistema solicitado e seus benefícios, muitas vezes, são intangíveis, sendo necessária uma avaliação subjetiva. 2.2.2 Análise da viabilidade técnica Na análise da viabilidade técnica, devem ser levantadas as tecno- logias, os recursos necessários, as metodologias, os processos e os algoritmos que serão utilizados, deve ser efetuada a análise de riscos relacionados e avaliada o quanto essas questões tecnológicas impac- tam no custo final do desenvolvimento do sistema. 34 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . 2.3 Atribuição das funções ao hardware, ao software, às pessoas, ao banco de dados e aos demais elementos do sistema Nessa etapa, são atribuídas as funções a cada elemento do sistema, principalmente ao hardware, ao software, às pessoas, ao banco de da- dos e a outros componentes associados, com suas características de desempenho e interface exigidas. 2.4 Restrições de prazo e de custo No projeto de desenvolvimento de software devem ser estabelecidas algumas restrições, dentre elas, as mais importantes são as de prazo e custo. Essas restrições servem para fixar uma meta de desenvolvi- mento; são estabelecidas de acordo com o planejamento estratégico da organização e são consideradas métricas e estimativas no gerencia- mento do projeto. 3 Projeto de sistemas Uma boa definição para projeto de sistemas surgiu nos anos 1950, porém segue uma definição clara, objetiva e muito atual: “[...] o processo de se aplicar várias técnicas e princípios ao propósito de se definir um dispositivo, um processo ou um sistema com detalhes suficientes para permitir sua realização física” (TAYLOR, 1959). A etapa do projeto é a primeira da fase técnico-central do processo de desenvolvimento de software e suas atividades iniciam tão logo a etapa de análise de sistema é finalizada. A importância da fase de proje- to está diretamente relacionada à qualidade do sistema. 35Ciclo de vida de desenvolvimento de sistemas – análise, projeto e construção M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Essa etapa concentra a especificação de quatro atributos: 1. Estrutura de dados 2. Procedimentos 3. Arquitetura de software 4. Definição de interfaces No quadro 1, há a descrição dos elementos que compõem o projeto de software. Quadro 1 – Elementos que compõem o projeto de software ATRIBUTO DEFINIÇÃO E CARACTERÍSTICAS Estrutura de dados Representação do relacionamento lógico entre elementos de dados individuais. Em conjunto com a estrutura de programa, é essencial para a definição da arquitetura de software. Impacta diretamente o projeto procedimental final. Estabelece organização, métodos de acesso, grau de associatividade e alternativas do processamento dos dados. Existem vários métodos para a organização de dados, porém é importante compreender os métodos clássicos e os conceitos fundamentais das hierarquias de informação. Procedimentos Hierarquia de controle relacionada à sequência de processamentos. Tem como objetivo descrever em detalhes a operação de cada elemento do software individualmente. Focaliza nos detalhes do processamento de cada módulo individualmente. Especifica processamento, sequência de eventos, pontos de decisão, operações repetitivas e organização de dados. Sua representação é disposta em camadas. Arquitetura de software É a estrutura ou a organização de componentes de programa Define como esses componentes interagem e a estrutura de dados que são utilizadas por esses componentes. Indica as duas características mais importantes do software: (1) a estrutura hierárquica dos componentes procedimentais e (2) a estrutura de dados. Resulta de um processo de divisão em partições que relaciona componentes do software a questões levantadas na análise de requisitos. (cont.) 36 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . ATRIBUTO DEFINIÇÃO E CARACTERÍSTICAS Interfaces Representa o fluxo de informaçãoque entram e saem de um sistema. Define como são transmitidos os dados entre os componentes definidos na arquitetura. No projeto de interface, temos três tipos essenciais de interface: interface com o usuário, interfaces externas para outros sistemas ou dispositivos, interfaces internas entre vários componentes do sistema. Fonte: adaptado de Pressman (2010) e Pressman (2016). Após a conclusão da etapa do projeto, deve ser elaborado um do- cumento de especificação do projeto. Não existe um padrão para a re- dação desse documento, pois isso depende da metodologia utilizada. Porém todas as definições sobre o projeto devem estar contidas nesse documento, detalhadamente, de forma a ser possível iniciar a etapa de construção do sistema. 4 Construção: criação de módulos e banco de dados, integração 4.1 Modularidade A concepção da modularidade na construção de software é utilizada desde a década de 1960 como uma solução aos softwares “monolíti- cos”, os quais apresentavam dificuldades de compreensão e em suas atividades de manutenção. Na criação de módulos, o software é segmentado em componentes nomeados e direcionados, que são integrados para atender aos requi- sitos estabelecidos. São considerados três tipos de módulos dentro da estrutura de um programa, conforme descritos no quadro 2. 37Ciclo de vida de desenvolvimento de sistemas – análise, projeto e construção M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Quadro 2 – Tipos de módulo TIPO DE MÓDULO DESCRIÇÃO Módulo sequencial O módulo sequencial é consultado e executado sem interrupção pelos aplicativos. Módulo incremental O módulo incremental pode ser interrompido antes da sua conclusão e retomado no ponto de sua interrupção. Módulo paralelo O módulo paralelo é executado simultaneamente com outros módulos em ambientes com multiprocessadores. Fonte: adaptado de Pressman (2010). A modularidade dispõe de resultados positivos em curto prazo, pois, ao segregar um problema maior em problemas menores, as respecti- vas soluções serão identificadas com um esforço relativamente menor. Porém, quanto maior o número de módulos criados no desenvolvimen- to do sistema, maior será a quantidade de interfaces entre os módulos a serem desenvolvidas. 4.2 Banco de dados Genericamente, podemos descrever um banco de dados como um conjunto de dados que se relacionam. Para que esses dados sejam ar- mazenados, organizados, acessados ou manipulados, são necessários programas que processam essas atividades. Esses programas são co- nhecidos como sistemas de gerenciamento de banco de dados (SGBD). Segundo Silberschatz, Sundarshan e Korth (2016, p. 1), “um sistema de banco de dados é uma coleção de dados inter-relacionados e um conjunto de programas que permitem aos usuários acessar e modificar esses dados”. Na figura 2, podemos observar a representação de um sistema de banco de dados. 38 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . Figura 2 – Sistema de banco de dados Programas softwares Usuário Sistemas de gerenciamento de banco de dados Banco de dados Os sistemas de banco de dados são armazenados em hardwares, que podem ser desde equipamentos de pequeno porte, como pendri- ves, computadores de mão, entre outros, até máquinas de grande porte, denominadas mainframes. Os objetivos principais de um sistema de banco de dados são: for- necer aos usuários uma visão dos dados transformados para uma utili- zação prática e amigável, ou seja, não apresentar os dados como estão gravados no banco de dados e, também, tornar os dados independentes das aplicações em que são utilizados, mantendo a independência na sua forma de armazenamento e nas estratégias de acesso. Com relação aos tipos de banco de dados, podemos destacar quatro modelos principais: (1) relacional, (2) entidade/relacionamento, (3) ba- seado em objetos e (4) semiestruturado. No quadro 3 estão descritas suas principais características. 39Ciclo de vida de desenvolvimento de sistemas – análise, projeto e construção M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Quadro 3 – Principais modelos de banco de dados MODELO CARACTERÍSTICAS Relacional Trata-se do modelo de dados mais utilizado. Utiliza uma coleção de tabelas para representar os dados e suas relações, cada tabela possui colunas, cada uma com um nome único. O modelo relacional é um exemplo de modelo baseado em registros. Cada tipo de registro define um número fixo de campos ou atributos. Vale lembrar que registros são as linhas de dados formados por vários campos. Por exemplo, imagine uma tabela com os seguintes campos: “nome”; “cidade”; “estado”. O 1o registro poderia ser a linha: Renato; Santos; São Paulo; o 2º registro, Douglas, Bauru, São Paulo. E assim sucessivamente. Entidade/relacionamento (ER) O modelo ER foi desenvolvido para facilitar o projeto de banco de dados. O modelo de dados ER utiliza 3 elementos básicos: entidades, relacionamento e atributos. Entidades: é uma “coisa” ou “objeto” baseado no mundo real que é distinguível de todos os outros objetos. Por exemplo, cada pessoa em uma empresa pode ser uma entidade. Relacionamentos: é uma associação entre várias entidades. Atributos: são propriedades descritivas de um conjunto de entidades. Baseado em objetos O modelo combina características do modelo de dados orientado a objetos e do modelo relacional. Como a programação orientada a objetos tornou-se a metodologia dominante, isso levou ao desenvolvimento de um modelo de dados também orientado a objetos, que pode ser visto como uma extensão do modelo ER com noções de encapsulamento e identidade do objeto. Semiestruturado Os dados são armazenados de forma não estruturada. Permite a especificação dos dados, em que itens de dados individuais do mesmo tipo podem ter diferentes conjuntos de atributos. Isso é o oposto dos modelos de dados mencionados anteriormente, em que todos os itens de dados de determinado tipo precisam ter o mesmo conjunto de atributos. Fonte: adaptado de Silberschatz et al. (2016). Os modelos de banco de dados são definidos de acordo com a apli- cação a ser construída e suas características, como paradigma de de- senvolvimento, quantidade de informações, estratégia de acesso, tec- nologia utilizada, entre outras. 40 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . 4.3 Integração A integração é uma atividade do processo de desenvolvimento do software que tem como objetivo agrupar os componentes do sistema que foram desenvolvidos separadamente, compondo um único siste- ma. Também pode ser a integração de um novo software desenvolvido com um outro sistema já existente. São como um “quebra-cabeça”, em que todas as peças se juntam uma com as outras, formando uma peça única, ou seja, um único produto. A integração pode ser efetuada por meio de duas maneiras: a integração simultânea e a incremental. Naintegração simultânea, todos os componentes são agrupados em uma única vez; na incremental, os componentes são integrados um por vez. Do ponto de vista técnico e funcional, a integração incremental é a melhor estratégia por três motivos principais: (1) não há necessidade de todos os componentes do sistema estarem prontos para que seja efe- tuada a integração, (2) otimiza a realização dos testes e (3) facilita a lo- calização de erros, já que os componentes são integrados um a um. Na integração simultânea, a ocorrência de riscos é bastante alta e possui muitas desvantagens que são o inverso das vantagens da integração incremental. A abordagem simultânea é utilizada, basicamente, para o desenvolvimento de sistemas de pequeno porte. Considerações finais Neste capítulo, vimos que no processo de desenvolvimento de um software é indicado que se cumpra algumas etapas essenciais para a entrega de um produto de qualidade. O conjunto dessas etapas é co- nhecido como ciclo de vida de desenvolvimento de sistemas e essas etapas são genericamente conhecidas como: análise, projeto, constru- ção, testes, implantação e manutenção. Também estudamos com mais detalhes as três primeiras etapas. 41Ciclo de vida de desenvolvimento de sistemas – análise, projeto e construção M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Na etapa da análise, se realiza, basicamente, estudo para a concep- ção do produto final, levantamento das necessidades, viabilidade, veri- ficação das opções de solução, identificação de processos e métodos. Em síntese, a etapa da análise consiste em identificar o melhor caminho para a criação da aplicação. A realização da etapa do projeto consiste em elaborar a especifi- cação técnica de como a solução identificada será construída. Talvez seja a etapa mais importante de todo o ciclo de desenvolvimento. Não devemos poupar tempo e esforço nessa fase, pois sua realização de forma completa e detalhada resultará na entrega de um produto com a qualidade desejada. Na sequência, é realizada a construção da solução definida e espe- cificada. Nessa etapa, são criados, principalmente, os módulos de de- senvolvimento, o banco de dados e a realização da integração. Vimos que o conceito de modularidade tem como objetivo principal dividir em componentes o desenvolvimento do sistema, facilitando a identificação de problemas. Porém, quanto mais módulos criados, maior a necessi- dade do desenvolvimento de interfaces. A modularidade é um conceito que deve ser utilizado com cautela e moderação. O banco de dados é um dos principais componentes de um sistema; é nele que ficam armazenados todos os dados e informações neces- sárias para a utilização do sistema. Associada ao banco de dados, se faz necessária a utilização de um sistema que executará as funções de manipulação dos dados, o qual chamamos de sistema de gerenciamen- to de banco de dados, conhecido pela sigla SGBD. Por último, vimos a atividade de integração que consiste na realização da união de todos os componentes desenvolvidos, gerando um único sistema que também pode ser a integração de um novo componente a um sistema já existen- te. O processo de integração é uma atividade de alta complexidade, de- vido, principalmente, à grande variedade de tecnologias compreendidas na concepção dos diversos componentes. 42 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . Cada etapa produz um insumo que é a entrada para a realização das atividades da etapa seguinte. Se cada etapa for realizada da me- lhor forma possível, a etapa seguinte será realizada com mais facilida- de e qualidade, e assim sucessivamente, garantindo um produto final de sucesso. Referências AUDY, Jorge L. N.; PRIKLADNICKI, Rafael. Desenvolvimento distribuído de software. Rio de Janeiro: Elsevier, 2007. PRESSMAN, S. Roger. Engenharia de software. 3. ed. São Paulo: McGraw-Hill, 1995. _____. Engenharia de software. 6. ed. São Paulo: McGraw-Hill, 2006. _____. Engenharia de software: uma abordagem profissional. 8. ed. São Paulo: McGraw-Hill, 2016. SILBERSCHATZ, Abraham; SUNDARSHAN, S.; KORTH, Henry F. Sistema de ban- co de dados. 6. ed. Rio de Janeiro: Elsevier Brasil, 2016. TAYLOR, E. S. An interim report on engineering design. Massachusetts Institute of Technology, 1959. TENORIO, Fernando G.; VALLE, Rogerio. Fábrica de software. São Paulo: FGV, 2013. 43 Capítulo 3 Ciclo de vida de desenvolvimento de sistemas – testes, implantação de sistemas e tipos de manutenção Dando continuidade ao capítulo anterior, no qual estudamos, generi- camente, o ciclo de vida clássico de desenvolvimento de software e suas três primeiras etapas – (1) análise, (2) projeto e (3) construção –, neste capítulo, vamos estudar mais detalhadamente as três últimas etapas do ciclo de desenvolvimento – (4) testes, (5) implantação e (6) manu- tenção –, assim como seus principais tipos, objetivos e características. M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. 44 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . Na etapa de testes, são realizados diversos tipos de verificação, com o objetivo de minimizar ao máximo falhas de codificação, processamento, de- sempenho, entre outros, bem como investigar se suas funcionalidades es- tão de acordo com as necessidades levantadas e acordadas com o cliente. Ao final da etapa de testes, inicia-se a fase de implantação, considera- da a mais crítica de todo o ciclo, pois é nessa fase que o software desen- volvido é colocado em produção no ambiente do cliente e dos usuários, o que pode paralisar todos os processos funcionais do cliente, causando vários danos. Nessa fase, são realizadas diversas atividades inter-rela- cionadas, mobilizando diversas pessoas das áreas técnicas e funcionais, bem como outros indivíduos envolvidos na solução proposta. Intuitivamente, podemos pensar que, após o software ser colocado em produção, finaliza-se o ciclo de desenvolvimento, mas não: todo sof- tware, após ser colocado em produção, quase que imediatamente inicia a etapa de manutenção, em que são efetuadas correções ou melhorias em decorrência de falhas técnicas ou funcionais que não foram identifi- cadas na fase de testes. Também é nessa fase que são implementadas novas funcionalidades solicitadas pelo cliente, bem como adaptações necessárias em decorrência de alterações nos ambientes técnicos ou do cliente. 1 Tipos de testes Depois que o software é construído, passamos para a etapa se- guinte do ciclo de vida de desenvolvimento de sistemas, que é testar o que foi construído. Os principais objetivos da etapa de testes são descobrir erros funcio- nais e de codificação, bem como garantir que os requisitos solicitados estejam funcionando corretamente. Para Pressman (2006), a etapa de testes é um conjunto de atividades que são planejadas com antecedên- cia e realizadas sistematicamente, o que deve ser suficientemente fle- xível parapossibilitar uma abordagem de teste sob medida e de acordo 45Ciclo de vida de desenvolvimento de sistemas – testes, implantação de sistemas e tipos de manutenção M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. com a complexidade do software construído. A melhor estratégia para a execução dos testes é realizá-los a partir do menor componente possí- vel, expandindo até o seu maior nível, ou seja, de dentro para fora, seme- lhantemente ao formato espiral, conforme ilustrado na figura 1. Figura 1 – Modelo espiral de testes Teste de validação Teste de sistemas Teste de integração Teste de unidade Código Projetos Requisitos Engenharia de sistemas Fonte: adaptado de Pressman (2006, p. 291). Os principais tipos de testes são: 1. Teste de unidade 2. Testes de integração: a. Testes de integração descendente b. Testes de integração ascendente c. Testes de regressão d. Teste “fumaça” e. Teste de validação 3. Testes de sistema: a. Testes de recuperação 46 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . b. Testes de segurança c. Testes de esforço d. Testes de desempenho e. Testes de usabilidade f. Testes de disponibilidade 1.1 Testes de unidade O teste de unidade ou testes unitários relacionam-se ao nível mais baixo na escala de testes e são executados nos menores componentes do código desenvolvido, tendo como objetivo garantir que eles estejam de acordo com as especificações, considerando suas características e sua funcionalidade. Os testes unitários analisam o funcionamento de um componente do sistema que possa ser testado separadamente. Normalmente, e, na sua maioria, os testes unitários são realizados pe- los desenvolvedores (RIOS; MOREIRA, 2006). Os principais objetivos dos testes unitários são detectar erros rela- cionados a falhas de lógica, estrutura de dados erradas ou simplesmen- te erros de programação, por exemplo, erro de sintaxe. Para a realização dos testes unitários, não é necessário que o sistema esteja finalizado, pois os componentes do software são testados separadamente. A im- portância dos testes unitários na estratégia de testes como um todo está no fato de evitar que possíveis erros surjam em uma fase mais avançada da construção software, eliminando, assim, retrabalhos que possam consumir mais recursos. 1.2 Testes de integração Os testes de integração são realizados com o objetivo de verificar se os componentes testados separadamente (testes unitários) funcionam sem erros juntos, ou seja, são realizados para garantir que as interfaces 47Ciclo de vida de desenvolvimento de sistemas – testes, implantação de sistemas e tipos de manutenção M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. entre os componentes funcionem corretamente, bem como o proces- samento dos dados, conforme as especificações. Segundo Pressman (2016, p. 297), o teste de integração é [...] uma técnica sistemática para construir a arquitetura do softwa- re enquanto, ao mesmo tempo, conduz testes para descobrir erros associados às interfaces, sendo seu objetivo, a partir de compo- nentes testados no nível de unidade, construir uma estrutura de programa determinada pelo projeto. Podemos classificar os testes de integração em quatro subtipos principais (RIOS; MOREIRA, 2006; PRESSMAN, 2006): a. Integração ascendente: são testes executados agrupando os componentes de forma ascendente, de baixo para cima, iniciando pela estrutura mais inferior do programa até chegar ao módulo de controle principal. É bastante utilizado para o desenvolvimento de sistemas de grande porte, pois cada equipe de desenvolvimento é responsável pela construção de um subsistema. b. Integração descendente: é o contrário do subtipo anterior, tratan- do-se de uma estratégia incremental. A vantagem dessa estra- tégia é que alguns resultados podem ser demonstrados anteci- padamente antes da construção de componentes de níveis mais baixos. Um problema que pode surgir nesse tipo de teste é a ne- cessidade da construção de um componente de nível mais baixo para que seja testado componentes de níveis superiores. c. Regressão: os testes de regressão são realizados a cada com- ponente acrescentado no sistema, para garantir que essa adição não modifique o que já foi testado com sucesso, pois novos com- ponentes agregam novas interfaces, fluxo de dados, controles, etc., e essas alterações podem causar efeitos colaterais no sub- conjunto que já foi testado. 48 Análise de sistemas Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . d. Teste “fumaça”: é uma estratégia utilizada quando um software é desenvolvido em um prazo crítico. É uma espécie de marca-pas- so, em que os testes são realizados em uma frequência estabe- lecida, exemplo: de 15 em 15 minutos é realizado um teste. O ob- jetivo do teste “fumaça” é proporcionar uma avaliação constante pela equipe de desenvolvimento. 1.3 Teste de validação O teste de validação inicia ao término dos testes de integração. Nesse tipo de teste, são avaliados os requisitos do sistema, ou seja, o teste é avaliado de acordo com as especificações solicitadas pelo clien- te, suas funcionalidades. Basicamente, é a aceitação, pelo cliente, do sistema desenvolvido. Normalmente, são utilizados dois processos nesse tipo de teste: (1) o teste realizado no ambiente do desenvolvedor executado pelo cliente final, em que o desenvolvedor registra as ocorrências, chamado de “tes- te alfa”, e (2) o teste realizado no ambiente do usuário e realizado pelo cliente, no qual o cliente registra as ocorrências e encaminha para o desenvolvedor providenciar os ajustes, chamado de “teste beta”. 1.4 Testes de sistemas Os testes de sistemas são considerados o último estágio da etapa de testes. Consistem na realização de testes do software relacionando- -se com os outros elementos (hardware, rede, dados, indivíduos, etc.) para verificar se o software está adequado para ser utilizado no seu am- biente final. Durante os testes de sistemas, são efetuados testes com diferentes finalidades. Os testes mais importantes que compõe os tes- tes de sistemas são: 49Ciclo de vida de desenvolvimento de sistemas – testes, implantação de sistemas e tipos de manutenção M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. a. Testes de recuperação: é basicamente um teste de resiliência. Trata-se da avaliação do quanto o software é capaz de se recupe- rar na ocorrência de falhas. O teste de recuperação é executado por meio da exposição do software a uma série de falhas de funciona- mento e o quanto demora para voltar a funcionar corretamente. b. Testes de segurança: verifica se os mecanismos de segurança projetados para o software vão funcionar satisfatoriamente, de- fendendo o software contra invasões indesejáveis por
Compartilhar