Baixe o app para aproveitar ainda mais
Prévia do material em texto
Trabalho Prático de Engenharia de Software l Curso de Sistemas de Informação – UEMG PASSOS INTRODUÇÃO À ENGENHARIA DE SOFTWARE Matheus Riquelme Guimarães Maia, Moiseis Pereira Paulino, Nayara Reis Barbosa Proença, Nickolas Oliveira Mariano, Renato Soares, Thales Oliveira Nunes Alunos do Curso de Sistemas de Informação – UEMG – Passos Prof.ª Ps. Lucineide Nunes Pimenta Orientadora – Curso de Sistemas de Informação – UEMG – Passos RESUMO O presente artigo tem como objetivo principal uma breve introdução sobre a engenharia de software. Com o avanço da tecnologia e as consequentes mudanças no cenário econômico, social e tecnológico mundial, verifica-se a necessidade de adequação dos softwares às necessidades dos usuários, e o método de planejamento e execução mais eficiente para o seu desenvolvimento, considerando custo, prazo e confiança. O método de pesquisa utilizado no presente trabalho é o bibliográfico. Foram analisados alguns conceitos básicos referentes ao tema. Realizou-se uma abordagem sobre as atividades fundamentais a todos os processos de software, o seu desenvolvimento profissional, a ética na engenharia e os estudos de casos. Ademais, foram analisados também modelos de processo de software, as atividades, bem como a adequação às mudanças ocorridas durante o processo de desenvolvimento. Outros temas analisados no presente trabalho foram a prototipação, a entrega incremental e o modelo espiral de Boehm. Dentro da engenharia de requisitos, verificou-se o estudo de viabilidade, e licitação e análise, especificação e validação. Foi possível verificar a importância de se ter um bom planejamento no desenvolvimento de um software, a importância da confidencialidade e dos direitos de propriedade intelectual, bem como a responsabilidade de se analisar qual o melhor método que atenda ao usuário uma vez que a sociedade depende dos sistemas. PALAVRAS-CHAVE: engenharia de software, engenharia de requisitos, prototipação, entrega incremental, modelo espiral. 1 INTRODUÇÃO Tudo gira em torno da engenharia de software, a suas inovações, ao que ela já e o que ainda vai fazer. É dito que o mundo moderno não existiria sem os computadores, eles são os protagonistas dessa geração. Tudo que é criado, desde mais pequena coisa como um celular até a maior, foi feita ou depende de um software, de um computador. Não se existem leis para um software, apenas maneiras de fazê-lo, teorias e maneiras, mas a tecnologia não se encaixa numa lei da física ou pelos processos de manufatura. O que a faz não ter limites e também, a sua maneira, altamente complexa. Sem a engenharia de software, não teríamos explorado o espaço, não teríamos a Internet ou as telecomunicações modernas. Todas as formas de viagem seriam mais perigosas e caras. A engenharia de software contribuiu muito e ainda irá fazer muito mais. 1.1 Desenvolvimento profissional de software Trabalho Prático de Engenharia de Software l Curso de Sistemas de Informação – UEMG PASSOS A engenharia de software é uma abordagem sistemática para produção de software no foco de questões práticas de custo, prazo e confiança. Dentro do desenvolvimento profissional, a engenharia de software preocupa- se em desenvolver produtos de software. Existem dois tipos de produtos de sistemas são eles: produtos genéricos (sistemas stand-one) usando ferramentas como banco de dados, processamento de texto e pacotes gráficos entre outros. E produto sob encomenda, software usado por uma determinada empresa ou aplicação. A engenharia de produto de software tem o foco de estar em todos os aspectos da produção de software desde os estágios iniciais até os finais e incluindo a manutenção em casos de software já implantado. A importância da engenharia de software dentro da sociedade que depende dos sistemas pode resultar na diminuição do custo financeiro do projeto e a entrega do projeto conforme projetado usando métodos e técnicas da engenharia. Existem quatro atividades comuns e fundamentais a todos os processos de software, são elas: especificação, desenvolvimento, validação e evolução do software. Existem também três aspectos gerais que afetam novos tipos de diferente de software são eles: heterogeneidade, mudança de negócio e social, segurança e confiança. Assim como no mercado busca a necessidade dos clientes e produtos de software, mas não existem técnicas e métodos universais na engenharia de software 1.2 Ética na engenharia de software A ética na engenharia de software, deve aceitar que o trabalho envolve maiores responsabilidades e deve manter padrões normais de honestidade e integridade podemos citar três exemplos de responsabilidade profissional são elas: confidencialidade, competência e direitos de propriedade intelectual, mau uso do computador Existem organizações para desempenhar definições e manuais de prática ética na engenharia de software, são elas ACM , IEEE. 1.3 Estudo de caso Para exemplificar os conceitos de engenharia de software o autor se utiliza de três tipos diferentes de sistemas, com intuito de demonstrar que a prática depende das especificidades de cada aplicação. Os estudos de caso utilizados são: 1. um sistema embutido que tem como características o tamanho físico, capacidade de resposta, gerenciamento de energia, entre outras. Nesse caso um sistema de controle de bomba de insulina; 2. um sistema de informação, que gerencia a inserção e acesso a um banco de dados, que tem como principais características fundamentais a proteção, usabilidade, privacidade e manutenção da integridade dos dados. Nesse caso, um sistema de informação de pacientes para cuidados com saúde mental; 3. um sistema de coleta de dados baseado em sensores, que deve coletar e processar esses dados. Os requisitos principais desse sistema são confiabilidade em condições hostis e manutenibilidade. Esse sistema é uma estação meteorológica no deserto. No primeiro caso, do sistema de controle da bomba de insulina, vale ressaltar, que por se tratar de um sistema que gerencia o nível de insulina no corpo de uma pessoa, obviamente é um sistema crítico de segurança, pois se o sistema falhar, pode prejudicar a saúde do indivíduo. Portanto, trata-se como requisitos essenciais, a disponibilidade do sistema quando requerido e Trabalho Prático de Engenharia de Software l Curso de Sistemas de Informação – UEMG PASSOS a confiabilidade do mesmo para controlar os níveis de açúcar no sangue, além é claro da segurança do sistema. Já no segundo caso, referente ao sistema de informação de pacientes para cuidados com saúde mental, o que está em questão é o gerenciamento de dados. Nesse caso os requisitos do sistema estão atrelados a disponibilidade, confiabilidade dos dados, segurança e manutenibilidade. Também deve cumprir com demandas das leis de proteção de dados e lei de saúde mental, além de garantir que as decisões sejam auditáveis judicialmente. A privacidade nesse caso é um ponto crítico do sistema. O terceiro caso é de uma estação meteorológica no deserto. Esse sistema integra um sistema maior composto pelo sistema da estação meteorológica, pelo sistema de gerenciamento e arquivamento de dados e pelo sistema da manutenção da estação. Além de fazer a coleta dos dados através de sensores e disponibilizá-los na rede através de um sistema via satélite, relativamente lento, esse sistema deve operar em condições adversas, possuir mecanismo de carregamento de baterias, permitir monitoramento reportando defeitos e ainda permitir atualização de software e backup caso haja falha. Entende-se então, que cada software possui requisitos diferentes e por isso, a prática da engenharia de software depende do tipo de sistema que está sendo produzido. 2 PROCESSO DE SOFTWARE 2.1 Modelos de processo de software O processo de softwaresão todos os passos necessários para que a equipe de desenvolvedores consiga obter um software satisfatório e completo. Dessa forma, conseguindo resolver algum problema no mundo real. Para obter tal feito, é necessário que se tome os devidos cuidados no processo em si. Portanto, algumas definições foram feitas para facilitar o desenvolvimento do software. Dentre elas estão, a especificação, implementação, validação e evolução. Essas definições dizem que o software deve ser idealizado, e por isso quanto mais específico for essa idealização, melhor. Por consequência, deverá ser implementado e após isso, validado pelo cliente e por fim, ao decorrer do tempo, o software deve evoluir conforme as necessidades dos clientes. Porém, ao se aplicar esses princípios em situações reais é necessário que haja algumas estratégias para se obter o resultado final. Dessa forma, surgem os modelos de processo de software que tentam simplificar a complexidade de criar um novo software e seu objetivo final de resolver um problema real. Os mais comuns são os modelos em cascata, incremental e orientada em reuso. O primeiro é o mais usado e tem como característica principal o ciclo de vida do software e o planejamento total do ciclo. Já o segundo tem uma ideia de iniciar um esboço e expô-la aos usuários e só então partir dali que se toma uma decisão. Portanto, será dessa forma que se dará prosseguimento em um modelo incremental, incrementando passo a passo ao software. Já o orientado ao reuso tem como principal foco, reaproveitar o que já foi feito com a finalidade de reduzir o tempo. Para isso é necessário especificar mais os componentes e como o usuário irá consumi-los. 2.2 Atividades do processo Nos Processos de Software podemos verificar uma sequência de atividades de natureza técnicas, de colaboração e de gerência; todas com o objetivo de especificar, projetar, implementar e testar o sistema de software, e, também para gerenciar o grande volume de Trabalho Prático de Engenharia de Software l Curso de Sistemas de Informação – UEMG PASSOS informações geradas em um grande projeto de software. Temos quatro atividades básicas: especificação, desenvolvimento, validação e evolução – que são organizadas, diferentemente, conforme o processo de desenvolvimento. Por exemplo, no modelo em cascata são organizadas em sequência, enquanto no modelo incremental são intercaladas. 2.2.1 Especificação de software Conhecida também como engenharia de requisitos, é uma das fases mais críticas na produção de um software. Visa fazer o levantamento e definição dos serviços requisitados do sistema, compreensão do processo e a identificação das restrições relativas à operação e ao desenvolvimento do sistema. Esta fase visa garantir a satisfação e os requisitos exigidos pelos stakeholders. Os requisitos são apresentados em dois níveis: - para usuários finais e clientes, é apresentado uma declaração de requisitos de alto nível, e, - para os desenvolvedores do sistema, é apresentado uma especificação de requisitos mais detalhada do sistema. A engenharia de requisitos possui quatro atividades principais que são: Estudo de viabilidade, Elicitação e análise de requisitos, Especificação de requisitos e Validação de requisitos. 1 – Estudo de viabilidade – nesta fase é feita uma análise sobre a possibilidade de satisfazer as necessidades dos usuários diante das tecnologias disponíveis, bem como, uma análise da viabilidade do ponto de vista financeiro. Deve ser uma análise rápida e barata; 2 – Elicitação e análise de requisitos – esta é a fase, propriamente dita, de levantamento dos requisitos para o sistema, e envolve um entendimento do negócio e das necessidades dos clientes; 3 – Especificação de requisitos – nesta fase há a tradução do que foi levantado na fase anterior em um documento contendo todos os requisitos, que pode conter os requisitos destinados aos usuários - clientes, e aos desenvolvedores; 4 – Validação de requisitos – nesta fase é realizada a verificação dos requisitos quanto ao realismo, consistência e completude. É neste momento que os erros e contradições são descobertos para posteriores adequações. 2.2.2 Projeto e implementação de software Neste estágio há o desenvolvimento de duas atividades: - a elaboração do projeto de software e a implementação do software, ou seja, conversão de uma especificação do sistema em um sistema executável, envolvendo sempre, processos de projeto e programação de software. Um projeto de software é uma descrição da estrutura do software a ser implementado, dos modelos e estruturas de dados usados pelo sistema, das interfaces entre os componentes do sistema e, às vezes, dos algoritmos usados, e é conseguido de forma interativa e por meios de revisões constantes para a correção do projeto. De forma que o feedback de um estágio para outro e constante retrabalho são inevitáveis em todos os processos. A maioria dos softwares interage com outros sistemas de software, incluindo o sistema operacional, o banco de dados, o middleware e outros aplicativos. Estes formam a plataforma de software, o ambiente em que o software será executado, que normalmente, são as entradas essenciais para o processo de projeto. As atividades no processo de projeto podem variar, dependendo do tipo de sistema a ser desenvolvido, p.e, sistemas em tempo real demandam projetos de timing, podendo ou não incluir uma base de dados. Trabalho Prático de Engenharia de Software l Curso de Sistemas de Informação – UEMG PASSOS Há quatro atividades que podem fazer parte do processo de projeto de sistemas de informação: - Projeto de arquitetura, de interface, de componente e de banco de dados. 1. Projeto de arquitetura - neste você pode identificar a estrutura geral do sistema, os componentes principais (ou módulos), seus relacionamentos e como eles são distribuídos; 2. Projeto de interface - no qual você define as interfaces entre os componentes do sistema. Com uma interface precisa, um componente pode ser usado de maneira que outros componentes não precisam saber como ele é implementado. 3. Projeto de componente - no qual você toma cada componente do sistema e projeta seu funcionamento. Trata-se de uma simples declaração da funcionalidade que se espera implementar, com o projeto específico para cada programador, ou poderá ser uma lista de alterações a serem feitas em um componente reusável ou um modelo de projeto detalhado. 4. Projeto de banco de dados - no qual você projeta as estruturas de dados do sistema e como eles devem ser representados em um banco de dados. Essas atividades levam a um conjunto de saídas do projeto, que variam de acordo com o sistema desenvolvido, p.e, sistemas críticos tem como saída documentos detalhados do projeto indicando as descrições precisas e exatas do sistema, por outro lado se for usada uma abordagem a modelos, as saídas podem ser diagramas, e ainda, se for utilizado os métodos ágeis de desenvolvimento as saídas podem ser o código do programa. Nas décadas de 70 e 80 foram desenvolvidos os métodos estruturados para projetos, os quais foram os precursores do UML e do projeto orientado a objetos, e eram relacionados com a produção de modelos gráficos do sistema. Em seguida, surgiu o desenvolvimento dirigido a modelos – MDD (model-driven development), sendo uma evolução dos modelos estruturados, onde os modelos de software são criados em diferentes níveis de abstração. Neste há uma maior ênfase nos modelos de arquitetura com separação entre os modelos abstratos independentes de implementação e específicos de implementação. Programação é uma atividade subjetiva e não existe um processo geral a ser seguido. Alguns programadores começam com componentes que eles compreendem, desenvolvem-nos e depois passam para os componentes menos compreendidos e outros preferem a abordagem totalmenteoposta. Os programadores, na sua atividade de desenvolvimento, fazem testes de defeitos, que é o estabelecimento da existência de defeitos no sistema, e, debugging, que diz respeito à localização e correção desses defeitos. 2.2.3 Validação de software A validação de software – verificação e validação (V&V) - tem o objetivo de mostrar se o software se adequa a suas especificações ao mesmo tempo que satisfaz as especificações do cliente e usuários do sistema. A principal técnica de validação é o Teste de programa, onde o sistema é executado com dados de testes simulados, podendo também, envolver processos de verificação, como inspeções e revisões em cada estágio do processo de software. Os estágios do processo de testes são: 1 – Testes de desenvolvimento – os componentes são testados pelas pessoas que o desenvolveram, independentemente um do outro; 2 – Testes de sistema – esse processo se preocupa em encontrar os erros resultantes das interações inesperadas entre componentes e problemas de interface do componente, bem como, visa mostrar que o sistema satisfaz seus requisitos funcionais e não funcionais, e ainda, testar as propriedades emergentes do sistema. Trabalho Prático de Engenharia de Software l Curso de Sistemas de Informação – UEMG PASSOS 3 – Testes de aceitação – neste o sistema é testado com dados fornecidos pelo cliente e não com os dados advindos de testes simulados. Os processos de desenvolvimento de componentes e testes geralmente são intercalados, e são executados pelos programadores. Dependendo da abordagem, uma técnica diferente é usada para a execução dos testes. O teste de aceitação também pode ser chamado 'teste alfa'. Sistemas sob encomenda são desenvolvidos para um único cliente, o processo de testes-alfa continua até que o desenvolvedor do sistema e o cliente concordem que o sistema entregue é uma implementação aceitável dos requisitos. Quando um sistema está pronto para ser comercializado como um produto de software, costuma-se usar um processo de testes denominado 'teste beta'. Este teste envolve a entrega de um sistema a um número de potenciais clientes que concordaram em usá- lo, para em seguida, relatarem os problemas e erros encontrados. Após esse feedback, o sistema é modificado e liberado para outros testes-beta ou para venda em geral. 2.2.4 Evolução do software A flexibilidade dos sistemas de software é uma das principais razões pelas quais os softwares vêm sendo, cada vez mais, incorporados em sistemas grandes e complexos. Entretanto, as mudanças no software podem ser feitas a qualquer momento durante ou após o desenvolvimento do sistema. Mesmo grandes mudanças são muito mais baratas do que as correspondentes alterações no hardware do sistema. Era costume diferenciar o processo de desenvolvimento e o de evolução do software (manutenção de software), pois, viam o segundo como sendo uma atividade maçante e não criativa. Entretanto, atualmente, há a tendência de considerar o desenvolvimento de software e a manutenção de software como um processo evolutivo, no qual é constantemente alterado durante seu período de vida em respostas às mudanças de requisitos e às necessidades do cliente. 2.3 Lidando com mudanças Em virtude de pressões externas do negócio, mudanças de prioridade no gerenciamento, disponibilidade de novas tecnologias ou outra necessidade de adequação que possa surgir, é necessário que o software de processo acomode as mudanças no software em desenvolvimento. E para que haja uma redução de custos do retrabalho de desenvolvimento do software, podem ser adotadas duas posturas no processo: a prevenção de mudanças e a tolerância a mudanças. A prevenção vai incluir atividades que sejam capazes de antecipar as mudanças possíveis sem que haja retrabalho, se trata da prototipação. Já a tolerância, faz com a que as mudanças sejam de baixo custo, assim havendo a necessidade, são “aplicadas em incrementos que ainda não foram desenvolvidos. Se isso for impossível, então apenas um incremento (uma pequena parte do sistema) deve ser alterado para incorporar as mudanças.” (SOMMERVILLE, 2011, p.29), essa é a entrega incremental. 2.3.1 Prototipação Um protótipo trata-se de uma versão inicial de um sistema de software. Segundo Sommerville, no desenvolvimento do software, a utilização do protótipo pode auxiliar na escolha de projeto, na demonstração de conceitos e na localização e solução de problemas. Ele pode ajudar na antecipação das mudanças, na interpretação e validação dos requisitos de sistema, no processo de engenharia de requisitos, e no estudo de soluções específicas no apoio do projeto de interface de usuário, no projeto de sistema. Trabalho Prático de Engenharia de Software l Curso de Sistemas de Informação – UEMG PASSOS Sommerville (2011, p.30) demonstra, na figura abaixo, um modelo de processo para o desenvolvimento de protótipos: Figura 1 - O processo de desenvolvimento de protótipo1 Os protótipos podem apresentar problemas, como no caso em que o testador não seja um usuário típico do sistema, ou que o tempo de avaliação seja insuficiente. Cumpre ressaltar ainda que ocasionalmente, principalmente quando a entrega da versão final do software está em atraso, os gerentes pressionam os desenvolvedores a finalizarem protótipos descartáveis, o que é uma prática desaconselhável. 2.3.2 Entrega incremental A entrega incremental trata-se da entrega e implantação de um incremento do software ao cliente, para o uso em ambiente operacional, de acordo com a sua ordem de prioridade. Sommerville (2011, p.31) demonstra o processo de entrega na seguinte imagem: Figura 2 - Entrega Incremental2 Deste modo, com a conclusão e entrega do incremento ao cliente, essa parte da funcionalidade do sistema é colocada em uso, possibilitando a experimentação e compreensão da necessidade do usuário para incrementos posteriores, que serão entregues gradativamente e integrados aos já existentes. De acordo com Sommerville a entrega incremental possui uma série de vantagens, dentre elas: 1 Fonte: SOMMERVILLE, Ian. Engenharia de Software. Tradução Ivan Bosnic e Kalinka G. de O. Gonçalves. 9. ed. São Paulo: Prentice Hall, 2011, p.30. 2 Fonte: SOMMERVILLE, Ian. Engenharia de Software. Tradução Ivan Bosnic e Kalinka G. de O. Gonçalves. 9. ed. São Paulo: Prentice Hall, 2011, p.31. Trabalho Prático de Engenharia de Software l Curso de Sistemas de Informação – UEMG PASSOS 1) A utilização de incrementos iniciais gera experiência, o que evita o processo de reaprendizagem quando o sistema completo for entregue; 2) A possibilidade de falhas é menor uma vez que os serviços de maior prioridade são mais testados; 3) Fica mais fácil a incorporação de mudanças no sistema; 4) Os clientes podem obter ganhos com o sistema, antes mesmo da sua entrega completa; Além de vantagens, também existem problemas com a entrega incremental: 1) A dificuldade em identificar os recursos comuns, necessários a todos os incrementos uma vez que os requisitos não são definidos em detalhes até a implementação de pelo menos um deles; 2) A falta de feedbacks úteis dos usuários, uma vez que existe relutância em experimentar um novo sistema incompleto; 3) Conflito com o modelo de compras, já que não é possível detalhar a especificação completa do sistema, até que o último incremento seja desenvolvido; Cumpre destacar ainda que a entrega incremental não é recomendada em alguns casos, como em um grande sistema no qual haja equipes trabalhando em diferentes lugares; em sistemas embutidos, onde o desenvolvimento do software necessita do do desempenho do hardware; e, em alguns sistemas críticos que necessitem da análise de todos os requisitos para que não ocorra o comprometimento com a proteção ou segurança do sistema. 2.3.3 Modelo espiral de BoehmAo contrário de uma sequência, Boehm propôs um modelo de desenvolvimento de software em espiral, com retornos de uma atividade para outra. Deste modo, cada espiral é uma fase do processo de software, e pode-se afirmar que esse modelo faz a combinação de tolerância a mudanças e prevenção uma vez que inclui atividades explícitas de gerenciamento de riscos. Figura 3 - Modelo em espiral de processo de software de Boehm3 Segundo Sommerville, cada volta da espiral divide o desenvolvimento do software em setores: definição de objetivos; avaliação e redução de riscos; desenvolvimento e validação; 3 Fonte: SOMMERVILLE, Ian. Engenharia de Software. Tradução Ivan Bosnic e Kalinka G. de O. Gonçalves. 9. ed. São Paulo: Prentice Hall, 2011, p.33. Trabalho Prático de Engenharia de Software l Curso de Sistemas de Informação – UEMG PASSOS planejamento. E a principal diferença entre esse modelo de desenvolvimento e os outros é o reconhecimento explícito do risco, parte essencial no gerenciamento de projetos, pois é o que encaminha soluções de problemas e mudanças no processo. 2.4 Rational Unified Process (RUP) A Rational é bem conhecida pelo seu investimento em orientação em objetos. A empresa foi a criadora da Unified Modeling Language (UML), assim como de várias ferramentas que a suportam, sendo a mais conhecida o Rational Rose. O Rational Unified Process (RUP) é uma metodologia completa criada pela Rational para viabilizar que grandes projetos de software sejam bem sucedidos. O RUP é na verdade um produto composto de material de referência na forma de páginas HTML, descrevendo toda a metodologia. Um grande problema nos projetos atuais é o grande dinamismo e complexidade dos negócios nos dias de hoje. Cada vez mais os sistemas são complexos e precisam estar prontos em menos tempo. Mais do que isso, as necessidades mudam ao longo do tempo e a especificação de um sistema provavelmente será alterada durante seu desenvolvimento. Além disso, temos tecnologias novas (software e hardware) surgindo a cada dia. Algumas funcionam bem. Outras não. Visando atacar estes problemas, o RUP adota as seguintes premissas básicas: Uso de iterações para evitar o impacto de mudanças no projeto, Gerenciamento de mudanças e Abordagens dos pontos de maior risco o mais cedo possível. Nesta metodologia, o projeto passa por 4 fases básicas. Estas fases são: ● Concepção ● Elaboração ● Construção ● Transição 3 METODOLOGIA O método de pesquisa utilizado é o qualitativo, o qual houve a obtenção de dados descritivos que expressam as ideias desenvolvidas e apresentadas no artigo. Ademais, a metodologia utilizada foi a bibliográfica, através do estudo do livro Engenharia de Software, do autor Ian Sommerville, do ano de 2011, editora São Paulo. 4 RESULTADOS E DISCUSSÃO Com o avanço da tecnologia e as mudanças no cenário econômico, social e tecnológico mundial, existe a necessidade de adequação dos softwares às necessidades específicas dos usuários. Assim, com o presente estudo e análise dos casos foi possível verificar que cada software possui requisitos diferentes, deste modo, a prática da engenharia de software depende do tipo de sistema que está sendo produzido. O método de planejamento e execução deve ser o mais eficiente para o seu desenvolvimento, considerando custo, prazo e confiança. 5 CONCLUSÕES Com a presente pesquisa foi possível analisar alguns conceitos básicos referentes à engenharia de software. Trabalho Prático de Engenharia de Software l Curso de Sistemas de Informação – UEMG PASSOS Realizou-se uma abordagem sobre as atividades fundamentais a todos os processos de software: especificação, desenvolvimento, validação e evolução do software. Ademais verificou-se o desenvolvimento profissional do software, a ética na engenharia e os estudos de casos de sistemas. Foram analisados também modelos de processo de software, as atividades, bem como a adequação às mudanças ocorridas durante o processo de desenvolvimento. Sobre as mudanças necessárias no processo de desenvolvimento do software, verificou-se a prototipação, a entrega incremental e o modelo espiral de Boehm. Por sua vez, sobre a engenharia de requisitos, verificou-se o estudo de viabilidade, elicitação e análise, especificação e validação. Foi possível verificar a importância de se ter um bom planejamento no desenvolvimento de um software, a importância da confidencialidade e dos direitos de propriedade intelectual, bem como a responsabilidade de se analisar qual o melhor método que atenda ao usuário uma vez que a sociedade depende dos sistemas. REFERÊNCIAS BIBLIOGRÁFICAS SOMMERVILLE, Ian. Engenharia de Software. Tradução Ivan Bosnic e Kalinka G. de O. Gonçalves. 9. ed. São Paulo: Prentice Hall, 2011.
Compartilhar