Prévia do material em texto
UNIP EaD Projeto Integrado Multidisciplinar Cursos Superiores de Tecnologia PROJETO DESENVOLVIMENTO SISTEMA LINGUAGEM C VENDA DE INGRESSOS DE TEATRO PIM –IV RIO VERDE – GO 2018 UNIP EaD Projeto Integrado Multidisciplinar Cursos Superiores de Tecnologia PROJETO DESENVOLVIMENTO SISTEMA LINGUAGEM C VENDA DE INGRESSOS DE TEATRO PIM –IV ALUNO: FERNANDO ANTONIO OTONI JUNIOR RA: 1834988 CURSO: SUP. TEC. EM ANALISE DE SISTEMAS DESENVOLVIMENTO DE SISTEMAS SEMESTRE: 2º RIO VERDE GO 2018 RESUMO O presente trabalho tem como principal objetivo desenvolver um sistema de venda de ingressos para teatro, contendo uma tabela de descontos seguindo alguns critérios de ordem etária e social, o sistema será desenvolvido na Linguagem de programação (C++), que atendera todos os requisitos solicitados Palavras-Chave : Engenharia de Software, Linguagem de Programação , Sistemas ABSTRACT The presente work has as manin objective to develop a system of ticket saless for theater with a discount table following some criteria of age and social order, the system wil be developed in the language of Programming (C++), that will meet all the request requirments Keywords: Software Engineering, Programming Language, Sistems SUMÁRIO RESUMO....................................................................................................................02 ABSTRACT................................................................................................................03 SUMÁRIO...................................................................................................................04 1.INTRODUÇÃO........................................................................................................05 2. HISTÓRIA DA PROGRAMAÇÃO.........................................................................06 3. LINGUAGEM DE MODELAGEM..........................................................................08 4. HISTÓRIA DO C/C++............................................................................................09 4.1 FIGURA 1 -C-C++..........................................................................................10 4.2 FIGURA 2 –C++.............................................................................................11 5. ENGENHARIA DE SOFTWARE...........................................................................12 5.1 OBJETIVOS DA ENGENHARIA DE SOFTWARE.........................................13 5.2 DEFINIÇÕES DE ENGENHARIA DE SOFTWARE........................................13 5.3 MODELOS DE SOFTWARE...........................................................................14 6. INCREMENTAL, ESPIRAL, PROTOTIPAÇÃO E CASCATA.............................16 6.1 O MODELO INCREMENTAL.........................................................................16 6.2 FIGURA1........................................................................................................16 6.3 O MODELO ESPIRAL...................................................................................18 6.4 FIGURA 2.......................................................................................................18 6.5 MODELO PROTOTIPAÇÃO..........................................................................19 6.6 FIGURA3........................................................................................................19 6.7 MODELO CASCATA, LINEAR OU CLÁSSICO............................................22 6.8 FIGURA 4.......................................................................................................22 CONSIDERAÇÕES FINAIS.....................................................................................24 REFERÊNCIAS........................................................................................................25 5 INTRODUÇÃO A evolução do tempo e das maquinas, e softwares vem acontecendo rapidamente e tomando espaço em todos os níveis de hardware e software desde um simples eletrodoméstico como por exemplo uma cafeteira até os mais evoluídos como tvs, computadores, telefones, tablets e outros, em todos existem desde um pequeno software CLP (controlador logico programável), até a mais avançada linguagem de programação, linguagem esta que tornam os equipamentos mais acessíveis e funcionais com várias funcionalidade, com isso acompanhamos uma transformação na forma de agir e pensar, no estilo de vida, nos desejos, na conduta e nas atitudes sociais, políticas e econômicas. Essa evolução em alguns casos é tão rápida que se torna difícil de acompanhar, a internet em si movimenta o mundo dos negócios e estabelece novas formas de gerenciamentos, tecnologias que visam o aumento da capacidade produtiva com os menores custos e expansão dos negócios para além das fronteiras nacionais, mostrando que a cada vez mais, se gera novas informações e rapidamente exigindo maturidade intelectual e preparação para continuar no mundo tecnológico. Muitos aspectos de vida social, profissional e pessoal foram afetados pelas novas tecnologias, desde a agricultura até a construção civil em resumo todas as áreas profissionais se beneficiam com a evolução tecnológica. Desta forma, não há como pensar nas relações entre as pessoas nas empresas sem a mediação dos meios rápidos de informação, tais como e-mails, mensagens, imagens e outras diversas ferramentas presentes na era digital a internet das coisas. Estas mudanças trouxeram consigo amplos modelos de negócios, levando as organizações a encontrarem novas formulas de trabalho, novas formas de planejar, bem como levaram a arrumar novas ferramentas que permitissem a otimização de recursos e maximização da produtividade. E assim o desenvolvimento assume o papel principal de otimização e evolução ininterrupta e continua para satisfazer e atender cada cliente. 6 2. HISTÓRIA DA PROGRAMAÇÃO A linguagem de programação usadas para a comunicação com o computador são constituídas de comandos, que quando utilizados corretamente, executam uma ação. A programação nos computadores não tem uma data correta de início, tudo começou na década de 30, com os primeiros computadores elétricos. Em 1948, konrad Zuse publicou sua criação, a linguagem de programação Plankalbul. Na época, ainda não tinha muita utilidade, então foi esquecida, antes da programação passar para o computador, eram usados cartões de papelão que eram perfurado, criando códigos. Foi na década de 50 que as primeiras linguagens de programação modernas surgiram, Fortran (1955), Lisp, a List Processor e Cobol, a Common Business Oriented Language, também apareceu na mesma época a Algol60. Os paradigmas da programação foram criados, em sua maioria, na década de 70, nesta época surgiram: Simula: inventada nos anos 1960 por Nvgaard e Dahl foi a primeira linguagem a suportar o conceito de classes. C: uma das primeiras linguagem de programação de sistemas, criado por Dennis Ritchie e Ken Thompson, tem uma das maiores influenciasno mundo atual. Prolog: projetada em1972, foi a primeira linguagem de programação com paradigma lógico. Pascal: outra importante linguagem, embora atualmente esteja quase sem uso. Nos anos 80 surgiu a linguagem C++, que se tornou tão importante quanto o C, entre outras: C++: criada para ser compatível com o C, o C ++ foi muito importante, pois é mais simples e dinâmico. Perl: uma boa linguagem, ótima para trabalhar em níveis de sobrecarga grande. 7 Nos anos 90, a internet surgiu como um furacão, e mudou totalmente o rumo da programação, as linguagens Java e Javascript foram criadas nesta época, ambas relacionadas com a internet surgiu também o Visual Basic e Object Pascal. Java: linguagem relativamente simples, orientada para objetos, que foi criada com a ideia de revolucionar as linguagens de programação PHP: muito importante para o desenvolvimento de aplicativos para web, esta linguagem está cada vez mais tomando conta dos web sites. A programação está em todas os equipamentos eletrônicos atuais, cada programa, cada página na internet, está escrita em alguma linguagem de programação, com o tempo as linguagens vêm se unindo, formando linguagens mais fortes e com mais funções. E assim passou por um grande processo, porém bastante rápido, estas linguagens estão ficando cada vez mais fáceis de interpretar e escrever. 8 3.LINGUAGEM DE MODELAGEM Durante muitos anos, o maior problema para utilização de modelos de software foi a falta de uma linguagem de modelagem comum. As diferentes notações e linguagens foram desenvolvidas visando software com características especificas. Por exemplo, desenvolvedores de software de controle e tempo real utilizavam notações como Statecharts e redes de Petri; desenvolvedores de sistemas de banco de dados utilizavam Diagramas Entidades- Relacionamento (DER); e desenvolvedores de sistemas de informação utilizavam Diagramas de Fluxo de Dados (DFD); como parte de metodologias estruturadas. Com o surgimento do paradigma de programação orientada-a-objetos, o número de métodos com suas notações associadas aumentou bastante, vindo somar-se aos diversos já existentes. No final da década de 90, o OMG (Object Management Group), incentivou a criação de uma linguagem padrão para métodos orientados a objetos. A UML que unificou diferentes notações já existentes foi aprovada para ser um padrão da indústria de software. 9 4. HISTÓRIA DO C / C++ O C++ é uma linguagem de programação de nível, médio, baseada na linguagem C. O desenvolvimento da linguagem começou na década de 80, por Bjarme Stroustrup. O objetivo do desenvolvimento desta linguagem era melhorar uma versão do núcleo Unix. Para desenvolver a linguagem, foram acrescentados elementos de outras linguagens de vários níveis, na tentativa de criar uma linguagem com elementos novos, sem trazer problemas para a programação. No início do desenvolvimento, a linguagem usava um pré-processador, mais Stroustrup criou um compilador próprio, com novas características. A primeira versão oficial do C++ em 1985, juntamente com o livro The C++ Progamming Language, que esclareceu vários pontos sobre o C++. Em 1989 foi lançada uma segunda versão da linguagem, com acréscimo das características: Herança múltipla, classes abstratas, métodos estáticos, métodos constantes e membros protegidos, incrementando também um suporte de orientação a objeto. Um ano depois foi lançado o livro The Annotated C++ Reference Manual, que se tornou uma base. O C++ tem uma enorme variedade de códigos, pois além de seus códigos, pode contar com vários da linguagem C. Esta variedade possibilita a programação em alto e baixos níveis. O C++ apresenta grande flexibilidade, embora seja bom, este fato faz com que a programação seja muito mais cuidadosa para não termos erros. Alguns fatos sobre o C++: O C++ é uma linguagem para ser tão eficiente quanto o C, porém com novas funções. É uma linguagem que suporta múltiplos paradigmas. A linguagem da liberdade para o programador escolher as opções, mesmo sendo a opção errada. Muitos códigos podem ser transferidos para C facilmente, pois o C++ foi criado para ter compatibilidade com o C. 10 A linguagem não tem privilégios para alguns grupos de programadores, os comandos são feitos para todas as especialidades de programadores. Alguns dos mais conhecidos programas sãos feitos em C++, ou parte do seus códigos são nessa linguagem, alguns deles são: Adobe, Photoshop. Mysql, Mozila Firefox, Internet Explorer, Microsoft Windows entre vários outros. A linguagem C é mais complicada e tem de ter mais atenção a erros de logica, porém é mais fácil corrigir erros que em C++, pois muitas das sintaxes do C++ são sutis, e quando se erra alguma coisa mínima, o código simplesmente não funciona, ou em caso de erros menores, o código passa a apresentar problemas muito difíceis de identificar 4.1 Figura C / C++ 11 4.2 Figura C++ 12 5. ENGENHARIA DE SOFTWARE Engenharia é a atividade em que os conhecimentos científicos e técnicos e a experiência pratica são aplicados para exploração dos recursos naturais, para o projeto, construção e operação de objetos uteis (origem Wikpédia, a enciclopédia livre). Como cada vez mais as empresas vem automatizando seus serviços e criando suas próprias plataformas digitais, a profissão engenheiro de software foi considerada a 2ª melhor da área de TI em crescimento e remuneração, segundo o site especializado em carreiras de tecnologia (CareerCast). O software consiste na “parte logica” do computador que inclui sistema operacional e programas, então basicamente estes profissionais projetam e guiam o desenvolvimento de programa, aplicativos e sistemas de forma que atendam aos requisitos e cumpram as funções determinadas. Essas definições são suficientes para designar tudo aquilo que envolve engenharia. Para entender melhor o que é engenharia, propomos que você faça uma pesquisa para responder as seguintes questões: Qual a diferença entre o desenvolvimento de um produto de forma artesanal e o desenvolvimento seguindo os princípios de engenharia? Em outras palavras, qual a diferença entre o trabalho de um artesão e o de um Engenheiro? Qual a diferença entre cozinhar e fazer engenharia de alimentos? O que as diferentes engenharias (Civil, mecânica, elétrica/eletrônica, química, ambiental, etc), tem em comum? Uma engenharia não é uma atividade especifica. Um engenheiro é aquele que tem o conhecimento cientifico e a experiência para desempenhar uma ou mais das diversas atividades de engenharia. Além disso, a atividade de engenharia não pode prescindir da garantia da qualidade do produto, da conformidade as normas, e do planejamento e gerenciamento de custos prazos. 13 5.1 OBJETIVOS DA ENGENHARIA DE SOFTWARE A engenharia de software tem por objetivo a aplicação de teoria, modelos, formalismo e técnicas e ferramentas da ciência da computaçãoe áreas afins para a produção (desenvolvimento), sistemas de software. Associado ao desenvolvimento, é preciso também aplicar métodos, técnicas e ferramentas para o gerenciamento do processo de produção. Isto envolve planejamento custos e prazos, montagem da equipe e garantia de qualidade do produto e do processo. Finalmente, a engenharia de software visa a produção da documentação formal do produto, do processo, dos critérios qualidade e dos manuais de usuários finais. 5.2 DEFINIÇÕES ENGENHARIA DE SOFTWARE Diversos autores apresentam definições para engenharia de software, apresentaremos três das que considero complementares. A engenharia de software é a disciplina envolvida com a produção e manutenção sistemática de software que são desenvolvidos com custos e prazos estimados. Disciplina que aborda a construção de software complexo com muitas partes interconectadas e diferentes versões por uma equipe de analistas, projetistas, programadores, testadores, etc. O estabelecimento e uso de princípios de engenharia para a produção economicamente viável, de software de qualidade que funcione em maquinas reais. A primeira destas definições enfatiza que a engenharia visa não apenas o desenvolvimento, mas também a manutenção do produto. Além disso, ela ressalta, a importância da estimativa d custos e prazos de desenvolvimento. A Segunda definição enfatiza a complexidade do produto e do processo. O software é formado por diversos componentes interconectados e o seu desenvolvimento é realizado por uma equipe com diferentes funções e especialidades, cujo trabalho precisa ser gerenciado. 14 A terceira ressalta que o desenvolvimento de software deve seguir os princípios comuns as todas engenharias e deve visar a qualidade. 5.3 MODELOS DE SOFTWARE Modelos são essenciais em qualquer atividade de engenharia, o software, por ser um artefato invisível e conceitual, mas do que qualquer outro artefato, precisa ser construído com base em modelos. Existem vários modelos de processors de software (ou paradigmas de engenharia de software), cada um representa uma tentativa de colocar ordem em uma atividade inerentemente caótica. Diagramas são as formas mais utilizadas de modelagem na engenharia de software. Um protótipo também é um tipo de modelagem de software que vem sendo utilizado para apoiar diversos métodos de desenvolvimento. Modelos de software são construídos para uma visualização do sistema a ser construído, permitindo uma melhor compreensão e entendimento. Eles podem também ser utilizados para a especificação e para a documentação do software. O modelo quando utilizado para especificação possibilita uma descrição precisa do que será desenvolvido pelos programadores. A documentação através de modelos deve refletir o que foi desenvolvido e será a base para as atividades de manutenção. De acordo Booch, Rumbaungh r Jacobsonm, alguns princípios devem ser seguidos: A escolha de qual modelo construir tem uma profunda influência em como um problema é atacado e como uma solução é delineada. Todo modelo pode ser expresso em diferentes níveis de precisão. Os melhores modelos estão conectados a realidade. Nenhum modelo único é suficiente. Todo sistema não trivial é melhor abordado através de um conjunto pequeno de modelos proximamente independentes, 15 O uso de modelos em ambientes integrados de desenvolvimento de software vem sendo utilizado para auxiliar a construção de software. Algumas ferramentas permitem que o código seja gerado a partir de modelos. Esta abordagem é conhecida como desenvolvimento dirigido por modelos e tem como base o uso de arquiteturas dirigidas por modelos que são construídas utilizando a UML (Linguagem de Modelagem Unificada). Na área de Engenharia de Software, a Linguagem de Modelagem Unificada ( do inglês, UML Unified Modeling Language), é uma linguagem de modelagem que permite apresentar um sistema de forma padronizada (com intuito de facilitar na compreensão pré-implemental). A UML (Unified Modeling Language) não é uma metodologia de desenvolvimento, o que significa que ela não diz para você o fazer primeiro e em seguida ou como projetar seu sistema ela lhe auxilia a visualizar seu desenho e a comunicação entre objetos (e em certos casos a identificação dos processos). Basicamente, a UML permite que desenvolvedores visualizem os produtos de seus trabalhos em diagramas padronizados. Junto com uma notação gráfica, a UML também especifica significados, isto é semântica, é uma notação independente de processos, embora o RUP (Rational Unified Process) tenha sido especificamente desenvolvido utilizando a UML. É importante distinguir entre um modelo e um diagrama (ou conjunto de diagramas) de UML, o último é uma representação gráfica da informação do primeiro, mas o primeiro pode existir independentemente. O XML (XML Metada Interchange), na sua versão corrente disponibiliza troca de modelos, mas não de diagramas. Os objetivos da UML são: especificação, documentação, estruturação para sub visualizar e maior visualização logica do desenvolvimento completo de um sistema de informação 16 6. INCREMENTAL, ESPIRAL, PROTOTIPAÇÃO E CASCATA 6.1 O MODELO INCREMENTAL 6.2 Figura 1 Barry Boehm sugeriu em vista as limitações da abordagem tradicional, que o desenvolvimento de sistemas de informação poderia sere administrado uma serie de incrementos. Assim poderia haver uma serie de ciclos de vida tradicionais para cada incremento. 17 O modelo incremental foi desenvolvido através da combinação entre os modelos linear e prototipação. O desenvolvimento é dividido em etapas, denominadas “incrementos”, que produzirão incrementalmente o sistema, até sua versão final. Em cada incremento é realizado todo o ciclo do desenvolvimento de software, do planejamento aos testes do sistema já em funcionamento. Cada etapa produz um sistema totalmente funcional, apesar de ainda não cobrir todos os requisitos. O modelo incremental apresenta diversas vantagens para o desenvolvimento de um software, especialmente se os requisitos não estão claros inicialmente. Por exemplo: quando o modelo incremental é utilizado, o primeiro incremento é normalmente constituído do núcleo dos sistemas. Isto é, os requisitos básicos são implementados e os detalhes suprimidos. Esse produto será entregue para uma avaliação, que poderá detectar, inicialmente, problemas que poderiam ser de dimensões muito maiores se detectados somente na entrega do produto final. Outra vantagem para o desenvolvedor é que, em contato com o sistema, o cliente esclarece seus requisitos e suas prioridades para os próximos incrementos, além de contar com serviços da versão já produzidas. Outras vantagens são: A construção de um sistema menor é sempre menos arriscada que a construção de um grande; Se um grande erro é cometido, apenas o ultimo incremento é descartado; Reduzindo o tempo de desenvolvimento de um sistema, as chances de mudanças nos requisitos do usuário durante o desenvolvimento são menores. 18 6.3 O MODELO ESPIRAL 6.4 Figura 2 Seguindo a mesma linha do modelo incremental, foi proposto o modelo EPS (Boehm 1988)- Evolutionary Spyral Process. Este modelo baseia-se em quatro principais atividades:Determinação dos objetivos, alternativas e restrições; Analise de risco e prototipação; Validação e verificação; Planejamento da faze seguinte; Esta concepção tende a criar um roteiro de atividade e etapas para ser uma maturidade do processo evolutivo de desenvolvimento de sistemas complexos e obter, ao final um produto em sua forma mais completa possível. Problema do modelo espiral: 19 O modelo espiral, por suas características de avaliação e planejamento baseadas em risco, exige que se tenha gerentes e técnicos experientes. As tarefas gerenciais para acompanhamento e controle do projeto tornam-se mais difíceis, uma vez que o modelo em espiral pode levar ao desenvolvimento em paralelo de múltiplas partes do projeto, cada uma sendo abordada de modo diferenciado. É necessário o uso de técnicas especificas para estimar e sincronizar cronogramas, bem como para determinar os indicadores de custos e progresso mais adequados. 6.5 MODELO PROTOTIPAÇÃO 6.6 Figura 3 Baseado no desenvolvimento de um protótipo com base no conhecimento dos requisitos iniciais para o sistema. O desenvolvimento é feito obedecendo a realização das diferentes etapas de análise de requisitos, o projeto, a codificação e os testes. Não necessariamente esta etapas devem ser realizadas de modo muito explicito ou formal. 20 A definição de todos os requisitos necessários ao sistema pelo cliente ou usuário geralmente é uma tarela muito difícil. É quase impossível prever como o sistema irá afetar o funcionamento das práticas de trabalho, como será a interação com outros sistemas e que operações dos usuários devem ser automatizadas. Mas para poder testar os requisitos de uma forma mais eficiente, seria necessário a utilização de um protótipo do sistema. Um protótipo é uma versão inicial de um sistema de software, que é utilizada para mostrar conceitos, experimentar opções do projeto e, em geral, para conhecer mais sobre os problemas e suas possíveis soluções. O desenvolvimento rápido de um protótipo é essencial para que os custos sejam controlados e os usuários possam fazer experiências com o protótipo no início do processo de software Um protótipo de software apoia duas atividade do processo de engenharia de requisitos: Levantamento de requisitos – Os protótipos de sistemas permitem que os usuários realizem experiências para ver como o sistema apoia seu trabalho. Eles obtém novas ideias para os requisitos e podem identificar pontos positivos e negativos do software. Eles podem então, propor novos requisitos de sistema. Validação de requisitos- O protótipo pode revelar erros e omissões nos requisitos propostos. Uma função descrita em uma especificação pode parecer útil e bem definida. Contudo, quando essa função é utilizada com outras, os usuários muitas vezes acham que sua visão inicial era incorreta e incompleta. A especificação de sistema pode então ser modificada para refletir sua compreensão alterada dos requisitos. Na maioria dos projetos, o primeiro sistema construído dificilmente será usável. Ele pode ser muito lento, muito grande, desajeitado em uso, ou todos os três. A questão administrativa, não é se deve construir um sistema-piloto e jogá-lo fora. Isso será feito. A única questão é se deve planejar antecipadamente a construção de algo que se vai jogar fora ou prometer entregar isso aos clientes. O protótipo pode ser oferecido ao cliente em diferentes formas: Protótipo em papel; 21 Modelo executável em PC retratando a interface homem-máquina capacitando o cliente a compreender a forma de interação com o software; Protótipo de trabalho que implementa um subconjunto dos requisitos indicados; Programa existente (pacote) que permita representar toda ou parte das funções desejadas para o software a construir. Vantagens da Prototipação: Modelo de desenvolvimento interessante para alguns sistemas de grande porte que representam um certo grau de dificuldade para exprimir rigorosamente os requisitos; É possível demonstrar a realizabilidade através da construção de um protótipo de sistema; É possível obter uma versão, mesmo simplificada do que será o sistema, com um pequeno investimento inicial; A experiência adquirida no desenvolvimento do protótipo vai ser de extrema utilidade nas etapas posteriores do desenvolvimento do sistema real, permitindo reduzir o seu custo e resultado num sistema melhor concebido; Problemas de prototipação; Quando informações que o produto precisa ser reconstruído, o cliente exige que alguns acertos sejam aplicados para tornar o protótipo um produto; muito frequentemente, a gerencia de desenvolvimento de software cede. O desenvolvimento muitas vezes faz concessões de implementação afim de colocar um protótipo em funcionamento rapidamente. Depois de algum tempo, o desenvolvedor pode familiarizar-se com essas opções e esquecer-se de todas as razões pelas quais elas são inadequadas- a opção menos ideal se tornou então parte integrante do sistema. 22 6.7 MODELO CASCATA, LINEAR OU CLÁSSICO 6.8 Figura 4 O modelo cascata descreve um método de desenvolvimento que é linear e sequencial. Na primeira vez que uma fase de desenvolvimento é completada, o desenvolvimento prossegue para a próxima fase e não há retorno. A vantagem do desenvolvimento cascata é que ele permite controle departamental e gerencial. Um planejamento pode ser atribuído com prazo final para cada estágio de desenvolvimento e um produto pode prosseguir no processo de desenvolvimento, teoricamente se entregue no prazo. O desenvolvimento move do conceito, através do projeto (design), implementação, teste, instalação, descoberta de defeitos e termina com a operação e manutenção. Cada fase de desenvolvimento prossegue em uma ordem estrita, sem qualquer sobreposição ou passos iterativos (Pressman, 2006). A desvantagem do desenvolvimento em cascata é que ele não permite muita flexibilidade ou revisão. A primeira vez que uma aplicação está em estágio de teste é muito difícil retornar e mudar alguma coisa que não foi bem pensada no estágio conceitual. 23 O modelo cascata inicia de uma abordagem orientada a projetos para a engenharia de software. O projeto é considerado é uma tarefa claramente delineada para a qual os resultados desejados podem ser determinados completamente e sem ambiguidade. Pressman (1995) aponta alguns problemas identificados neste ciclo da vida: Os projetos reais raramente seguem o fluxo sequencial que o modelo propõe. Alguma iteração sempre ocorre e traz problemas na aplicação do paradigma Muitas vezes é difícil para o cliente detectar todas as exigências explicitamente. O ciclo de vida clássico exige isso e tem dificuldade de acomodar a incerteza natural que existe no começo de muitos projetos. O cliente deve ter paciência. Uma versão de trabalho dos programas não estará disponível até um ponto tardio do cronograma do projeto. Um erro crasso, se não for detectado até que o programa de trabalho seja revisto, pode ser desastroso. Peters (2001) aponta vantagens e desvantagens: Vantagens: Permitir a gerencia do baseline, que identifica um conjunto de documentos produzidos como resultado de cada fase do ciclo de vida. Desvantagens: Não é capaz de estabelecercomo efetuar engenharia reversa de um sistema existente e faltam noções de prototipação rápida e desenvolvimento incremental. 24 CONSIDERAÇÕES FINAIS Após analisar diversos fatores, a linguagem de programação definida foi a C++, por seus softwares serem livres (gratuitos), contém uma gama de recursos e são bem intuitivos e com diversas Library (bibliotecas). Após a escolha da linguagem, o modelo de software escolhido nesse sistema foi o cascata, que para ser desenvolvido leva-se em consideração vários fatores primordiais para sua confecção, sendo assim, pode- se dizer que todas as variações do modelo cascata contam com o mesmo conceito básico, que é a ideia de uma etapa oferecer a saída que serão utilizadas como entrada para aproxima etapa. O desenvolvimento de um sistema através da técnica, linguagens e modelos de programação e software, é um procedimento imprescindível para um resultado satisfatório tanto para o cliente como para o desenvolvedor 25 REFERENCIAS ENGENHARIA- Pesquisa, Engenharia de Software, http://engenhariadesoftware.blogspot.com/2007/02/o-que-engenharia-de-software.html ENGENHARIA- Pesquisa, Modelos de Softwares, http://engenhariadesoftwareuesb.blogspot.com/2012/12/fffrrrrr.html ENGENHARIA- Pesquisa, Modelos de Softwares, http://engenhariadesoftwareuesb.blogspot.com/2012/12/processo-de-software.html ENGENHARIA- Pesquisa, Modelos de Softwares, http://engenhariadesoftwareuesb.blogspot.com/2012/12/blog-post.html ENGENHARIA- Pesquisa, Modelos de Softwares, https://www.unicesumar.edu.br/blog/o-que-e-engenharia-de-software/ ENGENHARIA- Pesquisa, Modelos de Softwares, https://www.conhecimentogeral.inf.br/uml/ INFO ESCOLA- Pesquisa , Historia da Programação, https://www.infoescola.com/informatica/historia-da-programacao/ INFO ESCOLA- Pesquisa , Avanço tecnoclógico, https://www.portaleducacao.com.br/conteudo/artigos/educacao/avanco-tecnologico-dos- meios-de-comunicacao-e-mudancas-inseridas-nas-sociedades/44031 INFO ESCOLA- Pesquisa , UML, https://www.conhecimentogeral.inf.br/uml/