Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNOPAR SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DARLENE ALVES DEBONA PROJETO INTEGRADO II CACHOEIRO DE ITAPEMIRIM 2021 DARLENE ALVES DEBONA PROJETO INTEGRADO II Projeto Integrado II apresentado como requisito parcial para aprovação no curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas na Universidade Norte do Paraná (UNOPAR), polo de Cachoeiro de Itapemirim. Disciplinas: Lógica Computacional, Engenharia de Software, Modelagem de dados, Algoritmos e Programação estruturada, Análise e modelagem de sistemas. Tutor a distância: Tiago Barroso dos Santos. CACHOEIRO DE ITAPEMIRIM 2021 SUMÁRIO INTRODUÇÃO ............................................................................................................ 4 PROJETO INTEGRADO II .......................................................................................... 5 CONSIDERAÇÕES FINAIS ...................................................................................... 12 REFERÊNCIAS ......................................................................................................... 13 4 INTRODUÇÃO A presente pesquisa almeja expor conhecimentos, técnicas e ferramentas necessárias para a boa atuação profissional do Analista e Desenvolvedor de Sistemas, elencado noções e fundamentos a respeito das disciplinas estudadas durante o semestre. As disciplinas identificadas neste trabalho são: Lógica Computacional, Engenharia de Software, Modelagem de dados, Algoritmos e Programação Estruturada e Análise e Modelagem de sistemas. O principal objetivo do trabalho é difundir o aparato de informações e ferramentas necessárias para a instrumentalização do profissional na área de programação, baseado nas disciplinas elencadas acima. Os objetivos específicos são: mostrar conceitos das disciplinas estudadas no semestre, expor conhecimento específicos para os profissionais de programação, desenvolver estudos dirigido, analisar possíveis práticas ligadas a teoria e proporcionar um desenvolvimento de pesquisa por parte do estudante. Os conceitos que serão apresentados referente as disciplinas são: lógica indutiva e lógica dedutiva, ferramentas CASE, pseudocódigo; e requisitos funcionais e requisitos não-funcionais. Todos esses conceitos se mostrarão imprescindíveis para que o Analista e Desenvolvedor de Sistemas tenha uma desenvoltura profissional de forma mais eficiente e eficaz. A lógica dedutiva e indutiva são duas partes da lógica que ajudam o programador a estruturar os dados e informações, podendo auxiliar no desenvolvimento dos algoritmos. Da mesma forma, o pseudocódigo é uma ferramenta que também auxilia no desenvolvimento de algoritmos, facilitando esse processo. As ferramentas CASE também podem facilitar o processo de projeto de software, apresentando características que favorecem o bom desenvolvimento do software. A especificação dos requisitos funcionais e dos requisitos não-funcionais também é importante para o bom desenvolvimento do software e para a sua qualidade percebida, porque esses vão ajudar o programador a alcançar os objetivos do cliente. 5 PROJETO INTEGRADO II A análise e desenvolvimento de softwares requer que o profissional disponha de diversos conhecimentos a fim de conseguir exercer seu papel de forma eficiente e prática. Um dos conhecimentos essenciais ao programador é o da Lógica, principalmente por ser a base para a criação de algoritmos. Há dois tipos de lógica em especial que devem ser conhecidas: a lógica indutiva e a lógica dedutiva. Segundo Sàágua (apud VELASCO, 2010, p.74) É habitual, e correto, distinguir dois gêneros de raciocínio: indutivo e dedutivo. A característica mais conspícua dos raciocínios indutivos reside no fato de partirem de certas frases e chegarem a uma outra que generaliza, de algum modo, sobre as frases de que se partiu. Os raciocínios dedutivos têm como característica mais conspícua o fato de o seu propósito ser o de partir de certas frases para chegar a outra que extrai das primeiras informações que elas, de algum modo, já continham. A partir do conceito apresentado, pode-se observar que a lógica indutiva se baseia em certas premissas particulares já conhecidas, que podem resultar em uma afirmação generalizada a respeito de um assunto. Dois exemplos de lógica indutiva seriam o seguinte: Carlos é humano e tem coração / Jonas é humano e tem coração / Logo, todos os humanos têm coração. Joana é engenheira e sabe cálculo / Diego é engenheiro e sabe cálculo / Portanto, todos os engenheiros sabem cálculo. Scheffer (2020) explica que na lógica indutiva partimos de experiências com verdades e fatos que ocorreram para estabelecer uma conclusão geral, sendo que um único contraexemplo pode invalidar todo o raciocínio. Velasco (2010) adverte que é eleito como argumento indutivo os argumentos cuja conclusão pretende-se que seja provavelmente verdadeira. Além disso, Velasco (2010) ainda elucida uma característica distinta da lógica indutiva: caso haja acréscimo de premissas, há modificação na força indutiva, podendo tanto aumentar (com o reforço de premissas), quanto diminuir (usando um contraexemplo). Já os argumentos dedutivos, segundo Velasco (2010), são classificados como tal, quando os argumentos pretendem chegar a uma conclusão que seja uma consequência lógica das premissas, assim garantindo que a verdade das premissas garanta a verdade da conclusão. Scheffer (2020) explica que a lógica dedutiva parte de premissas mais gerais a fim de obter conclusões mais particulares, sendo o 6 contrário da lógica indutiva. Velasco (2020, p.78) afirma que no argumento dedutivo, “o encadeamento das premissas nos obriga (ou deveria fazê-lo) a aceitarmos a conclusão”. Velasco (2010) dá os seguintes exemplos de lógica dedutiva: Todo homem é mortal / Algum Sócrates é homem / Logo, algum Sócrates é mortal Se venta muito, então faz frio / Se faz frio, então fico resfriada / Se venta muito, então fico resfriada Quanto a lógica dedutiva, Velasco (2010) esclarece que os argumentos podem ser classificados como válidos ou inválidos. A autora explica que “se a conclusão for inferida necessariamente das premissas, o argumento é dito válido; se, contrariamente, a suposta verdade das premissas não assegura a verdade da conclusão (embora o pretenda), o argumento é denominado inválido” (VELASCO, 2010, p.84). Já no caso da lógica indutiva, os argumentos podem ser classificados como fortes ou fracos, segundo Velasco (2010). A autora expõe que “um argumento indutivo é forte se, e somente se, dada a suposta verdade das premissas, a conclusão é provável. Se, por outro lado, a conclusão não é provavelmente verdadeira com base na suposta verdade das premissas, então o argumento é dito fraco” (VELASCO, 2010, p.103). Portanto, pode-se observar como a lógica dedutiva e indutiva ocorrem. Essas informações são fundamentais para os programadores, tanto para a criação de algoritmos, quanto para outras abordagens necessárias no ambiente de negócios, principalmente como um analista de sistemas que precisa tomar decisões variadas. É importante conhecer os tipos de lógica e como as utilizar a fim de poder empregar de forma eficiente essa ferramenta. A lógica indutiva pode trazer conclusões baseadas em premissas particulares e que podem ser encontradas por meio de experiências e fatos, mas pode ser facilmente considerada fraca ou forte dependendo da quantidade de premissas ou de suas afirmações. A lógica dedutiva já nos traz conclusões baseadas em premissas mais gerais que nos forçam a chegar à determinada conclusão, podendo ser mais facilmente classificadas como válidas ou inválidas, dependendo do resultado.Uma importante ferramenta para os programadores utilizarem na modelagem de dados é chamado de CASE (Computer Aided Software Engeneering). 7 Werlich (2018, p.147) explica que as ferramentas CASE “são ferramentas que apresentam uma série de serviços que auxiliam no desenvolvimento de software e podem minimizar o tempo de desenvolvimento do software modelado”. Uma das principais características em comum das ferramentas CASE é a possibilidade da representação gráfica de elementos do projeto. Assim, essas ferramentas trazem o benefício da facilidade de produzir um diagrama e de gerar um banco de dados, além de conseguir documentar o sistema que está sendo modelado. Ademais, as ferramentas CASE podem alavancar os resultados de investimentos feitos em banco de dados, em menos tempo e com qualidade, dando suporte ao programador durante todo o processo de modelagem de dados e criação ou modificação de banco de dados. (PRESSMAN, 2016; MONTEIRO, 2004) Existem diversas ferramentas CASE hoje disponíveis no mercado, tendo inclusive opções online, podendo serem pagas ou terem opções sem custo. Werlich (2018) cita algumas dessas ferramentas: Astah, Rational Rose, Genexus, Multicase, Clarify, Oracle Designer, DBDesigner, Erwin, Embarcadero, MySQL Workbench, Draw.IO, Lucidchart e outras. Moreira Bisneto (2011) cita outros exemplos: BrModelo, Microsoft Visio e Sybase Power Designer. Pressman (2016) afirma ser difícil classificar as ferramentas CASE, principalmente pela quantidade e pelas funcionalidades existentes atualmente. Werlich (2018) explica que uma das classificações possíveis é: Lower CASE (suporte nas fases de análise e projeto de sistemas), Upper CASE (suporte nas fases de construção e análise de sistemas) e Integrated CASE (união das duas anteriores). Há ferramentas CASE para todas as etapas dos projetos de software, auxiliando no ciclo de desenvolvimento, na manutenção e na gerência dos projetos de desenvolvimento. As principais características destas são: foco na solução de problemas, geração automática de códigos, padronização de produtos, automação, reengenharia, engenharia reversa, suporte à reestruturação, interoperabilidade entre ferramentas, manutenção de coleção de dados, facilitar a verificação de consistência, documentar, aumentar produtividade, reduzir custos, aumentar qualidade e entre outras. As diferenças entre as ferramentas dependem da parte específica do projeto de desenvolvimento de software ao qual está sendo aplicado, sendo que atualmente há várias ferramentas que possuem uma gama diversificada de atuações. (RAMOS, 2011; WERLICH, 2018) 8 Assim, é possível perceber as características e diferenças de algumas das ferramentas mais utilizadas na modelagem de dados, segundo Werlich (2018). Astah é uma ferramenta para criar diagramas UML, sendo ideal para desenvolvedores Java e há a possibilidade de criar diagramas de entidade-relacionamentos na sua versão Professional. A principal vantagem do Astah é pode criar automaticamente o dicionário de dados. O MySQL Workbench é uma ferramenta CASE gratuita, da empresa Oracle, que gera scripts para o SGBD MySQL, tendo foco na modelagem física do banco de dados e acelerando o processo. Lucidchart é uma ferramenta CASE online, sendo possível criar um modelo gratuito com até 60 objetos, podendo ser útil para pequenos e médios projetos e umas das vantagens dessa ferramenta é poder gerar scripts para os SGBD: MySQL, PostgreSQL, SQL Server e Oracle. O BrModelo é uma ferramenta CASE de código aberto e freeware, que pode ser usada para geração de esquemas conceituais e lógicos de bases relacionais, tendo uma atenção especial para os atributos. (WERLICH, 2018; MOREIRA BISNETO, 2011) Assim sendo, é perceptível a importância do conhecimento das ferramentas CASE para os profissionais de análise e desenvolvimento de softwares, já que essas ferramentas não só facilitam o trabalho, como também podem tornar o processo mais eficiente e eficaz, e com maior qualidade. A utilização de ferramentas CASE na modelagem de dados se torna imprescindível para que o profissional consiga observar a diagramação do software, podendo analisar os menores detalhes e, por fim, conseguir criar um programa que vá atender as necessidades dos clientes. Outro conhecimento necessário aos programadores é o do pseudocódigo. Segundo Rovai (2020), o pseudocódigo é uma forma de escrever os algoritmos em palavras similares ao inglês ou portugol (português), facilitando a interpretação e o desenvolvimento de um programa. Abaixo segue um exemplo de pseudocódigo a fim de calcular a média de faturamento de três meses de uma empresa qualquer, entrando então com três valores e apresentando o valor final da média: algoritmo “media” var valor1, valor2, valor3, soma, media: real inicio Escreval(“Digite o valor do faturamento 1: “) Leia (valor1) 9 Escreval(“Digite o valor do faturamento 2: “) Leia (valor2) Escreval(“Digite o valor do faturamento 3: “) Leia (valor3) soma <- (valor1 + valor2 + valor3) media <- (soma/3) Escreval(“O valor final da média do faturamento da empresa é:” media) fimalgoritmo Elaborado pela autora Como observado, o pseudocódigo nada mais é do que um código escrito de forma mais clara para que haja um maior entendimento do que é necessário, facilitando, posteriormente, a criação dos algoritmos chaves para o software. O pseudocódigo acima é um exemplo simples que mostra como um algoritmo pode ser estruturado a fim de apresentar uma média de faturamento de uma empresa qualquer. Mostra-se uma ferramenta importante para aumentar ainda mais a eficiência do trabalho profissional do programador. Outro conhecimento fundamental para os programadores é a engenharia de requisitos. Segundo Pressman (2016, p.132): “a engenharia de requisitos estabelece uma base sólida para o projeto e para a construção. Sem ela, o software resultante tem grande probabilidade de não atender às necessidades do cliente”. Pressman (2016) explica que a engenharia de requisitos incorpora tarefas e técnicas para concepção, levantamento, elaboração, negociação, especificação, validação e gestão dos requisitos necessários para um software de acordo com as necessidades que o cliente tem. Como se pode observar, uma das etapas da engenharia de requisitos é a especificação de requisitos. De acordo com Pressman (2016), essa etapa se refere ao detalhamento de todos os aspectos do software que deve ser construído antes mesmo de o projeto sequer começar. Werlich (2020) explica que os requisitos podem ser classificados como requisitos funcionais e requisitos não-funcionais. Os requisitos funcionais, de acordo com Werlich (2020), são os requisitos que determinam as funcionalidades específicas do sistema, instituindo os objetivos específico do software e o que ele deve possuir ao final do seu desenvolvimento. Usa- se a sigla RF (Requisito Funcional) seguida de uma numeração para indicar os 10 requisitos funcionais. Pode-se observar alguns exemplos de requisitos funcionais apresentados por Werlich (2020, p.118): [RF0001] – O sistema deve manter os dados pessoais e acadêmicos dos alunos [RF0002] – O sistema deve permitir que o aluno faça a matrícula por disciplina [RF0004] – O sistema deve permitir a visualização das notas cadastradas Já os requisitos não-funcionais, segundo Werlich (2020), são os requisitos que estabelecem restrições sobre as funcionalidades do sistema, estando diretamente relacionados a qualidade que o sistema deve ter e tendo critérios para qualificar os funcionais. Usa-se a sigla RFN (Requisito Não-Funcional). Pressman (2016, p.141) afirma que os requisitos não-funcionais podem ser descritos como “um atributo de qualidade,de desempenho, de segurança ou como uma restrição geral em um sistema”. Pode-se observar alguns exemplos de requisitos não-funcionais apresentados por Werlich (2020, p.119): [RFN0001] – O tempo de espera do aluno para visualizar as notas, não poderá exceder os sete segundos. [RNF0002] – O sistema deverá ser implementado utilizando a linguagem de programação JAVA. [RNF0003] – As notas só poderão ser lançadas por profissionais da empresa com o perfil de professor. Para a identificação e a especificação dos requisitos não-funcionais, há algumas métricas que podem ser utilizadas, conforme explica Werlich (2020). Essas métricas são (WERLICH, 2020, p.120): Velocidade: quantidade de transações realizadas por segundo, tempo de resposta ou atualização do sistema; Tamanho: megabytes ou gigabytes ocupados, quantidade de RAM, quantidade de espaço em disco ou nuvem; Usabilidade: horas necessárias para treinamento, quantidade de telas de ajuda; Confiabilidade: tempo médio para falhar, probabilidade de indisponibilidade, taxa de ocorrência de falhas, disponibilidade; 11 Robustez: percentual de eventos que causam falhas e o tempo necessário para o sistema se reestabelecer, determinar as possibilidades de que os dados sejam corrompidos; Portabilidade: quantidade de adaptações para o sistema funcionar em diferentes plataformas. Deste modo, é explícito que a especificação de requisitos se torna impreterível para o bom desenvolvimento do software de forma a otimizar o projeto e alcançar os objetivos que o software deve cumprir de acordo com as necessidades do cliente. Os requisitos funcionais são a chave para as funcionalidades do sistema e devem ser elaborados de acordo com os objetivos do software. Já os requisitos não- funcionais são necessários para criar exceções, qualificando os funcionais, que estão diretamente ligados a qualidade, a segurança e ao desempenho do software. 12 CONSIDERAÇÕES FINAIS A presente pesquisa pode alcançar o objetivo principal e os objetivos específicos listados no início do trabalho. As disciplinas estudadas no semestre se mostram fundamentais para a instrumentalização do profissional da área de programação, tornando-se imprescindível que os estudantes continuem a buscar novas informações, conhecimentos e ferramentas que podem ser utilizadas para aumentar a qualidade e eficácia de seu trabalho. Além disso, os conhecimentos aqui dispostos também podem favorecer o desenvolvimento de novos estudos e pesquisas, a fim de gerar novas ideias e novas ferramentas que podem ser incorporados ao ambiente profissional posteriormente. Assim sendo, a pesquisa se mostrou de fundamental importância para que o estudo possa se qualificar de forma ainda mais benéfica para o desenvolvimento do aluno. As informações e conhecimentos a respeito das disciplinas relacionadas na pesquisa estão sempre em crescente atualização, mostrando a importância do contínuo estudo e a relevância do trabalho. As ferramentas apresentadas, como a CASE e o pseudocódigo, se apresentam como primordiais para o bom desenvolvimento profissional do programador, podendo ainda facilitar o processo de projeto de software de diversificadas maneiras. Ademais, a lógica é uma matéria necessária não somente na programação, mas também para qualquer área de nossas vidas, podendo ser usadas no processo de tomada de decisão, que envolvem mais do que somente os profissionais da área de programação. Por isso, é fundamental que o conhecimento da lógica seja difundido e exposto para todos. Por fim, a especificação de requisitos funcionais e requisitos não-funcionais também se mostra imprescindível para o bom gerenciamento do projeto de software. A especificação desses requisitos são necessários a fim de alcançar os objetivos que o cliente deseja obter com o software, aumentando, assim, a qualidade percebida pelo cliente. 13 REFERÊNCIAS MOREIRA BISNETO, Rubem Rodrigues. Uma ferramenta CASE para modelagem de bases de dados objeto-relacionais. TCC (Graduação em Ciência da Computação) – Universidade Federal de Pernambuco, 2011, 56f. Disponível em: < https://www.cin.ufpe.br/~tg/2011-2/rrmb.pdf>. Acesso em: 15 outubro 2021. MONTEIRO, Emilio Soares. Projeto de sistemas e bancos de dados. Rio de Janeiro: Brasport, 2004. PRESSMAN, Roger S. Engenharia de software. 8.ed. Porto Alegre: AMGH, 2016. RAMOS, Dênis Paiva. Ambientes de desenvolvimento de software (ADS) e ferramentas CASE: importância e aplicações. Monografia (Especialização em Informática) – Universidade Federal de Minas Gerais, 2011, 61f. Disponível em: < https://repositorio.ufmg.br/bitstream/1843/BUOS-94MPEV/1/denispaivaramos.pdf>. Acesso em: 15 outubro 2021. ROVAI, Kleber Ricardi. Algoritmos e programação estruturada. Londrina: Editora e Distribuidora Educacional S.A., 2020. SCHEFFER, Vanessa Cadan. Lógica computacional. Londrina: Editora e Distribuidora Educacional S.A., 2020. VELASCO, Patrícia Del Nero. Educando para a argumentação: contribuições do ensino da lógica. Belo Horizonte: Autêntica Editora, 2010. WERLICH, Claudia. Modelagem de dados. Londrina: Editora e Distribuidora Educacional S.A., 2018. WERLICH, Claudia. Análise e modelagem de sistemas. Londrina: Editora e Distribuidora Educacional S.A., 2020.
Compartilhar