Aula 02 Engenharia de Software Olá eu sou professor Carlos Veríssimo essa é a aula 2 engenharia de software. O objetivo dessa aula é explicar os conceitos básicos da engenharia de software, seus princípios e a modelagem de requisitos. Temos como conteúdo os princípios que orientam a prática da engenharia de software engenharia e a modelagem de requisitos e atuaremos com exemplos práticos Princípios que orientam a prática de software Vamos falar da natureza só tem interessante nos conhecermos fundamentos da engenharia posso entrar na natureza do software, veja aqui o papel desempenhado pelo software, se nós olharmos ele tem passado por grandes mudanças nos últimos 50 anos e mudou bastante e atualmente deparamos com uma indústria de software porque se vocês olharem, todos os negócios eles envolvem software eles são suportados por software, então ele é um fator dominante na economia, então vamos definir software então são instruções, instruções que nós passamos para o computador, essas instruções tem que ser executadas e não se tem algumas características e desempenho no desenvolvimento e são estruturas que nós chamamos estruturas já não é à toa e quando surgiu o software era chamado de processamentos de dados porque ele atuava diretamente em dados ou especificamente com dados e atua até hoje, então especificamente e aí ele manipula a partir desses dados única informações de forma adequada porque o software tem essa capacidade as características do software o software desde o princípio nós vemos que o software ele é desenvolvido então tem uma engenharia de software, porque você o desenvolve e ele passa por um processo e processo de engenharia, uma coisa interessante notar que o software ele não se desgasta se desenvolve o que acontece é que ele passa não atender mais determinados requisitos, porque o negócio evolue então o software não se desgasta ele fica desatualizado.
Uma outra coisa interessante vocês o nós entendermos em relação ao software existem vários tipos de software você como analista inclusive disciplinas específicas voltadas para esses vários tipos de software por exemplo: sistemas de aplicação, nós temos tantos sistemas voltados para o desenvolvimento de negócio mas temos aplicações hoje nós temos os Apps então é voltado para uma aplicação específica, temos software voltados para a área científica, tem os software embutidos, interessante você nos dias de hoje se vocês olharem, automóvel tem software embutido, celular software embutido, você tem que entender, tem que entender também que existe software específicos para web você desenvolve software para web softwares voltados para a inteligência artificial em cada vez mais nos deparamos com a inteligência artificial nas nossas vidas E no decorrer do curso vocês ouviram ou verão um termo que é software legado quando nós falamos de software legados falamos de software que já foram desenvolvidos já está há algum tempo desenvolvidos e eles precisam dar manutenção, então pra entender os tipos de software, outra coisa interessante é entender a natureza do software quanto os webs apps, a origem desse webs apps estão lá atrás em 1995 a década de 90 quando tratávamos arquivos xml e html onde os software eram páginas estáticas na internet e ai ela evoluiu, evoluiu a ponto de os software agora usam muito rede recursos de rede o software ele também é simultâneo, você tem rodando em várias plataformas se você tem uma carga não previsível porque está na rede você não sabe ou não é exatamente quantas pessoas estão a utilizadas e tenho previsão mas você não consegue ter exato, desempenho por ser online os está na web ele tem que ser bom desempenho, tem que ser rápido você não fica ao navegar faz a requisição de uma página, se a página demora mais que alguns segundos você já muda para outra página então você tem que tomar cuidado a desenvolver e que está disponível aquela famosa ampulheta que fica girando carregando a página usuário não tem muita paciência, disponibilidade e os dados você é hoje app ele já fazem acesso a dados ele já atualizam dados ok então tem que ser desenvolvidos olhando para esse aspecto, uma outra coisa importante é o conteúdo ele tem que ser atrativo para o usuário e o sócio que não seja dessa plataforma ele também tem que haver uma evolução contínua posto que a tecnologia nessa área é muito dinâmica e quais são os desafios que nós falamos em tecnologia dinâmica os grandes desafios que nós estamos ao desenvolver software incorporado no nosso dia a dia, você não faz negócio você não faz vamos dizer assim, nada que não tenha software na sua vida a complexidade desses requisitos então você já viram que o mundo globalizado e já viram o que há mais necessidade muito grande de software completo, então os requisitos são completos e também as empresas hoje elas tratam de forma estratégica nas organizações trata de forma estratégica o software para sustentar o negócio eu tenho que ter o software tem o crescimento da base do usuário, hoje em dia é muito difícil nessa área moderna você vê alguém que não acessa à internet nem que seja para banco, então você tá consultando o seu a sua conta não é a cada vez mais exigente inclusive aí nós temos para tratar de todos nós temos uma engenharia de software, essa engenharia de software temos como uma base importante a qualidade então sempre ao desenvolver o software, lógico que você tem que atender aos requisitos mas nunca perca a vista da qualidade desse software e outra coisa importante que é base para o desenvolvimento de só alguns processos processo maduro é você não só como objetivo como também que você conseguir desenvolver de forma adequada esse software você tem que ter metodologia para o desenvolvimento desse software e óbvio, ferramentas, então essa é uma grande essa pirâmide você tem que prestar atenção ao desenvolver um software, aí nós falamos processo do desenvolvimento de software na engenharia Bom! É importante você entender e um processo você tem um conjunto de ações e tarefas a serem desenvolvidas só que não basta você desenvolver essas ações, essas tarefas de forma desordenada você tem que ter uma metodologia essa metodologia é uma alicerce para você desenvolver de forma madura um só então essa é metodologia ela vem a partir de atividades estruturadas então veja que nós temos aqui processo e você tem esse processos sendo feita de forma as atividades estruturais quanto as atividades da metodologia, vamos entender esse processo de desenvolvimento de software é importante que é tenha uma aplicação desde o princípio na parte de levantamento de requisitos essa comunicação entre desde a os analistas de requisitos e a equipe de desenvolvimento e chegando também no usuário uma outra coisa importante nesse processo é um planejamento então você é planeja ao recurso você é planeja o tempo então ir você planeja também como que você encaixar aqui os requisitos a partir daí modela-se esse software como será modelado esse software e aí você constrói esse software ele é parte da construção importante e uma interação com equipe de desenvolvimento fechamos com o emprego desse software a entrega dele ao usuário final adequado com as necessidades e como foi pedido aqui na fase de requisitos de levantamento de requisitos o outro ponto importante no fundamento da engenharia de software prática da engenharia de software, é importante um software ao ser desenvolvido, você não desenvolve ele, de uma única vez, ele de uma forma de um bloco você é utiliza a técnica de dividir para conquistar para ficar até mais fácil desenvolvimento para você dividir em pequenos problemas, um problema maior ou dividir para conquistar é importante que você é consiga abstrair este o problema de uma forma mais simples é você usa da abstração É importante que você também na engenharia de software você traga soluções efetivas e consistentes para o problema, outro ponto é um foco na transferência dessas informações e você modulariza, se você é perceber quando eu divido para constar o modularizo também, o outro ponto importante a padronização é importante a organização até para aproveitamento o outro em outras soluções que tem semelhança você para padroniza você ganha no desenvolvimento no próximo desenvolvimento. Uma outra coisa importante é você conseguir fazer com que essas soluções, você veja de vários prismas, de outras formas, de formas diferentes, também para você ver se acha alguma solução aqui já desenvolvida, outros pontos importantes pense sempre na manutenção, e isso é importante porque quando a ao desenvolver você tem que pensar que eu só falo que nós falando com ele é se desatualiza e no momento da evolução desse software melhorar eu tenho que ter ele como facilidade na manutenção desse software, então essa são essência da prática da engenharia de software E aí esses princípios que nós vemos no slide anterior eles trazem uma compreensão melhor do problema é importante para o planejamento da solução desse problema uma outra coisa importante na execução do plano eu entender se o projeto está muito fora do que foi planejado, então na execução do plano ele é muito importante o outro ponto que é importante que esses princípios eles trazem na prática esse resultado se atingimos os resultados que o software se propôs a resolver aquele problema então eu vou examinar os resultados do software esses princípios é interações que eles estabelecem artefatos que eu obtenho no decorrer do desenvolvimento de software, outro ponto são regras eles vão trazer como guias para meu o analista, vão trazer um guia para projetar essa implementação, vou trazer um guia para testar essa solução então quando eu pratico esses princípios o consigo fazer com que o software e me seja a pouco mais maduro nesses aspectos mas o problema da implantação do teste da solução desse problema Engenharia e modelagem de requisitos e a modelagem de requisitos ele faz parte de um arcabouço da engenharia de requisitos Nesse arcabouço é interessante aqui eu antes de iniciar qualquer trabalho eu vou modelar veja que a grande importância da modelagem é que eu consigo aplicar para o vários problemas semelhantes é que tem um solução semelhantes esse modelo uma outra coisa importante na modelagem de requisitos é quem é que está envolvido o analista de negócio o analista de requisitos o cliente, gerentes e usuários inclusive os gerentes que darão suporte na gestão desse software, uma outra coisa importante é o que aplicar esses modelos na modelagem de requisitos, então é a partir do momento que eu coloco o modelo eu passo a entender melhor o que o meu cliente quer e note que eu tenho um ganho muito grande porque eu entendo antes de ir aplicar o esforço ao projetar esse essa solução eu entendo ele aí sim eu projeto uma solução.
Um outro ponto importante são as etapas na engenharia de requisitos desde a concepção levantamento de requisitos o refinamento desses requisitos básicos a negociação entre o que o que será implementado que o usuário necessita porque não necessariamente eu consigo implementar tudo naquele momento então há uma negociação e nessa negociação existe a definição das prioridades especificação de problema e a validação, então veja que isso é importante nesse processo e quais são as tarefas da engenharia de requisitos desde a concepção levantamento de requisito a eu elaboro uma solução eu faço aquela negociação que eu comentei no slide anterior com meu cliente passa a especificação para a área técnica, faço uma validação do que foi implementado o que está a ser implementado e aí eu faço a gestão de tudo isso para não perder o controle do requisito então a engenharia de requisitos ela traz esses mecanismos, o processo de engenharia nota que ele tem é agora nós começamos entrar no detalhe e vai desde o início do problema então eu identifico quem são os interessados eu posso esse relacionamento busco a colaboração para para esse resultado para conseguir os resultados sejam melhores é onde eu vou buscar as perguntas iniciais, então se levanta esses requisitos fazendo a coleta organizando a quais são as funções de qualidade disponibiliza edição quais são os cenários de uso quem é que utiliza os artefatos então nesse processo eu faço também o desenvolvimento dos casos de uso para eu entender como que esse usuário irá a interagir com sistema vou passar construção e o modelo de análise e negociação dos requisitos o que vai conter o meu software então eu negocio aqui né a quais são essas condições o que eu vou dar para o usuário que ele vai ganhar então e finalmente eu faço uma validação desses requisitos a partir daí eu defino o meu desenvolvimento de software Exemplos práticos Esse nosso exemplo ele segue o exemplo De uma adaptação do exemplo dado por Pressman que é o painel de controle de segurança de uma casa, veja até como funciona esse painel ele tem aqui onde o usuário ele entrar com algumas informações entrar com senha e aqui nesse painel ligou o usuário consegue ver como que está o ambiente da casa dele do ponto de vista de segurança então nós falamos por exemplo pontos incêndio que esse só se propõe a partir de sensores identificar alguns se tem alguma invasão em áreas monitoradas então é um software para monitoramento de uma residência e quais são os requisitos identificados conforme nós conseguimos olhar aqui na figura quais são os requisitos identificados para este problema, notem que nós temos aqui uma tela de lcd então o software ele terá que mostrar no visor na tela de lcd todas as informações que usuário necessitar, uma outra coisa importante é que tem um teclado usuário deverá ser capaz de utilizar esse teclado para colocar por exemplo a sua senha, o sistema deverá validar essa senha e sendo o usuário correto validando aí o sistema tem que disponibilizar a as várias funções para este usuário, por exemplo e ele usuário poderá de fora de sua casa remotamente, acionar dispositivos na casa ele poderá também de fora monitorar ambientes que existem na casa, os ambiente que já foram programados e a ele poderá também é acionar o alarme e acionar o alarme de emergência então o próprio usuário detectar a partir do software que existe por exemplo alguma anormalidade depois acionar remotamente ai o chamado botão de pânico então esses requisitos, o processo de requisito de software ele tem proporcionar forma de trazer isso à tona isso para que seja modelado Considerações finais Então nós vimos, aqui nessa aula nós compreendemos os princípios dessa prática da engenharia de software e pouco mais maduro compreendemos os fundamentos da engenharia de software, depois a natureza do software, ele passa por várias fases entendemos o processo de desenvolvimento de software e da engenharia E também entendemos como é composto esse Arcabouço da engenharia de Requisitos, as tarefas necessárias para Concluir e completar a engenharia de requisitos que fazem parte deste modelo. Entendendo também o processo de engenharia então como eles são percorridos esse processo e esses mecanismos para que nós consigamos fazer o levantamento de requisito de forma adequada Muito obrigado e até a próxima aula!