Instituto Federal de So Paulo (IFSP) Bragana Paulista SP Brasil Anlise e Desenvolvimento de Sistemas ADS
Resumo. Este artigo descreve de forma sucinta a importncia da engenharia de software na atualidade, de forma em que o desenvolvimento de software se destaca na sociedade contempornea. Valorizando sempre a preocupao com a qualidade do produto, o software. Descreve tambm os processos e modelos de processos no desenvolvimento de software para atingir o objetivo de qualidade de software. Abstract. This article describes briefly the importance of software engineering today, where the development of software is well-known and used over the world. Highlights the concern with the quality of product software. Describes the processes and process models in software development reach the goal of software quality. 1. A criao Nos ltimos anos, o desenvolvimento de aplicativos e software em geral aumentou significantemente, devido a sua grande importncia na sociedade contempornea. O uso cada vez maior de computadores pessoais e nas diversas reas do conhecimento humano tem gerado uma crescente demanda por solues que automatizem os diversos processos. Na rea de desenvolvimento de software iniciantes tem o costume de confundir desenvolvimento com programao, pois estes esto em fase de aprimorar suas habilidades no raciocnio logico na resoluo de pequenos problemas. Mas quando se deparam com problemas mais complexos requerem maior conhecimento e habilidades j que o uso de uma abordagem individual, centrada na programao no mais indicado. Segundo Falbo (Prof. COPPE/UFRJ), com intuito de melhorar a qualidade do software em geral e aumentar a produtividade no desenvolvimento de tais produtos, surgiu a engenharia de software. o estabelecimento responsvel pelas tcnicas e praticas para o desenvolvimento de software cobrindo uma ampla rea de aplicaes e diferentes tipos de dispositivos, tais como sistemas de informao corporativos, sistemas e portais Web, aplicaes em celulares. 2. Engenharia de Software A imposio de mtodos sistemticos com o uso adequado de ferramentas e tcnicas diretamente levada pela engenharia de software, assim pode ser levado em considerao o problema a ser resolvido, as necessidades dos clientes e os recursos disponveis. Durante os ltimos anos, essa rea com suas diferentes disciplinas tm amadurecido intensamente, atravs da proposio de novos mtodos e tcnicas que possibilitem o desenvolvimento de softwares mais confiveis, de melhor qualidade, com custo reduzido e alta produtividade. A rea est fundamentada, sobretudo na cincia da computao e na matemtica. A motivao os desenvolvedores usarem dos processos descritos pela Engenharia de Software definitivamente a qualidade. Todos os processos descritos nas diferentes tcnicas e formas de desenvolvimentos buscam o mesmo objetivo, a qualidade do software, qualidade que vai desde a produo at a entrega do produto (software). necessrio, segundo Falbo (2005), que a qualidade seja incorporada ao produto ao longo de seu processo de desenvolvimento. E que, de fato, a qualidade dos produtos de software depende fortemente da qualidade dos processos usados para desenvolv-los e mant-los. Segundo Falbo, um processo de software pode ser classificado quanto ao seu propsito em: Tcnicas de Desenvolvimento: so as atividades relacionadas diretamente ao processo de desenvolvimento do software, assim, que podem contribuir diretamente para o desenvolvimento do produto de software que ser entregue ao cliente. So exemplos de atividades de desenvolvimento: especificao e anlise de requisitos, projeto e implementao Procedimentos de gerncia: so relacionadas ao acompanhamento gerencial do projeto e ao planejamento, assim como realizao de estimativas, elaborao de cronogramas, anlise dos riscos do projeto etc. Processor de Garantia da Qualidade: so sempre relacionadas com a garantia da qualidade do produto em desenvolvimento e do processo de software utilizado, tais como revises e inspees de produtos (intermedirios ou finais) do desenvolvimento.
3. Processos de Software A fim de manter a qualidade da produo de um software e garantir tambm um software de qualidade preciso seguir algumas normas, algumas regras comuns a todos aqueles que querem ter seu software com certificado de qualidade. O processo de software definido, por Macoratti.net, como um conjunto de atividades uniformizadas a serem aplicadas sistematicamente que se encontram agrupadas em fases, cada uma das quais com os seus intervenientes com responsabilidades, que possui diversas entradas e produz diversas sadas. Isto , define quem faz o qu, quando e como para atingir certo objetivo. 3.1 Fases de um processo de software Para Schwartz (1975) as principais fases de um processo de software so: Especificao de Requisitos: traduo da necessidade ou requisito operacional para uma descrio da funcionalidade a ser executada. Projeto de Sistema: traduo destes requisitos em uma descrio de todos os componentes necessrios para codificar o sistema. Programao (Codificao): produo do cdigo que controla o sistema e realiza a computao e lgica envolvida.
Verificao e Integrao (Verificao): verificao da satisfao dos requisitos iniciais pelo produto produzido. A escolha de um modelo de ciclo de vida (ou modelo de processo) o ponto departida para a definio de um processo de desenvolvimento de software. Um modelo de ciclo de vida organiza as macro atividades bsicas, estabelecendo precedncia e dependncia entre as mesmas. Cada atividade deve ser associada tcnicas, ferramentas e critrios de qualidade, entre outros, formando uma base slida para o desenvolvimento. Embora diferentes projetos requeiram processos com caractersticas especficas para atender s suas particularidades, possvel estabelecer um conjunto de ativos de processo a ser utilizado na definio de processos de software de uma organizao. Sendo estas sequncias de fases citadas logo acima, no precisam ser necessariamente executas nesta ordem e muito menos somente estas, podem ser adicionadas outras fases conforme a demanda do projeto. 3.1.1 Atividades do processo de software Nas fases de procedimento do software definido so executadas as atividades bsicas para que sejam atingidos os objetivos propostos. Segundo Pressman (1997) estas atividades constituem um conjunto mnimo para se obter um produto de software, sendo elas. Especificao Engenharia de Sistema: estabelecimento de uma soluo geral para o problema, envolvendo questes extra software. Anlise de Requisitos: levantamento das necessidades do software a ser implementado. A Anlise tem como objetivo produzir uma especificao de requisitos, que convencionalmente um documento. Especificao de Sistema: descrio funcional do sistema. Pode incluir um plano de testes para verificar adequao. Projeto Projeto Arquitetural: onde desenvolvido um modelo conceitual para o sistema, composto de mdulos mais ou menos independentes. Projeto de Interface: onde cada mdulo tem sua interface de comunicao estudada e definida. Projeto Detalhado: onde os mdulos em si so definidos, e possivelmente traduzidos para pseudocdigo. Implementao Codificao: a implementao em si do sistema em uma linguagem de computador. Validao Teste de Unidade e Mdulo: a realizao de testes para verificar a presena de erros e comportamento adequado a nvel das funes e mdulos bsicos do sistema. Integrao: a reunio dos diferentes mdulos em um produto de software homogneo, e a verificao da interao entre estes quando operando em conjunto. Manuteno e Evoluo Nesta fase, o software em geral entra em um ciclo iterativo que abrange todas as fases anteriores. Desta forma as atividades relacionadas a um processo de software esto diretamente vinculadas com a produo do software como produto final. Mantendo o propsito principal que a qualidade. Traveses da organizao destas atividades concentram-se energias das pessoas envolvidas em atividades especificas sempre focando as pessoas na qualidade.
3.1.2 Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade dedar resposta s situaes a analisar, porque s na altura em que enfrentamos o problema que podemos escolher o modelo. Modelo cascata: tem como principal caracterstica a sequncia de atividades onde cada fase transcorre completamente e seus produtos so vistos como entrada para uma nova fase. Modelo espiral: srie de pequenos ciclos, cada um finalizando um verso de um software executvel. O modelo em espiral assume que o processo de desenvolvimento ocorre em ciclos, cada um contendo fases de avaliao e planejamento, onde a opo de abordagem para a prxima fase (ou ciclo) determinada. Modelo de do processo de desenvolvimento iterativo e incremental: mais prtico dividir o trabalho em partes menores ou iteraes. Cada iterao resultar num incremento. O princpio subjacente ao processo incremental e iterativo que a equipa envolvida possa refinar e alargar paulatinamente a qualidade, detalhe e mbito do sistema envolvido. Modelo de Prototipagem: ideia bsica deste modelo que ao invs de manter inalterados os requisitos durante o projeto e codificao, um prottipo desenvolvido para ajudar no entendimento dos requisitos. Este desenvolvimento passa por um projeto , codificao e teste, sendo que cada uma destas fases no executada formalmente.
4. Estimativas Antes mesmo de serem iniciadas as atividades tcnicas de um projeto, o gerente e a equipe de desenvolvimento devem estimar o trabalho a serem realizados, os recursos necessrios, o tempo de durao e, por fim, o custo do projeto. Apesar das estimativas serem um pouco de arte e um pouco de cincia, esta importante atividade no deve ser conduzido desordenadamente. As estimativas podem ser consideradas a fundao para todas as outras atividades de planejamento de projeto Para alcanar boas estimativas de prazo, esforo e custo, existem algumas opes, segundo Falbo: 1.Postergar as estimativas at o mais tarde possvel no projeto. 2.Usar tcnicas de decomposio. 3.Usar um ou mais modelos empricos para estimativas de custo e esforo. 4.Basear as estimativas em projetos similares que j tenham sido concludos. Quando se fala em estimativas, est-se tratando na realidade de diversos tipos de estimativas: tamanho, esforo, recursos, tempo e custos. Geralmente, a realizao de estimativas comea pelas estimativas de tamanho. A partir delas, estima-se o esforo necessrio e, na sequncia, alocam-se os recursos necessrios, elabora-se o cronograma do projeto (estimativas de tempo) e, por fim, estima-se o custo do projeto. 5. Implantao e testes muito importante, segundo Falbo que haja padres organizacionais para a fase de implementao. Esses padres devem ser seguidos por todos os programadores e devem estabelecer, dentre outros, padres de nomes de variveis, formato de cabealhos de programas e formato de comentrios, recuos e espaamento, de modo que o cdigo e a documentao a ele associada sejam claros para quaisquer membros da organizao. Ainda que padres sejam muito importantes, deve-se ressaltar que a correspondncia entre os componentes do projeto e o cdigo fundamental, caracterizando-se como a mais importante questo a ser tratada. O projeto o guia para a implementao, ainda que o programador deva ter certa flexibilidade para implement-lo como cdigo Aps a implantao hora dos testes, teste uma atividade de verificao e validao do software e consiste na anlise dinmica do mesmo, isto , na execuo do produto de software com o objetivo de verificar a presena de defeitos no produto e aumentar a confiana de que o mesmo est correto Porem, mesmo se um teste no detectar defeitos, isso no quer dizer necessariamente que o produto um produto de boa qualidade. Muitas vezes, a atividade de teste empregada pode ter sido conduzida sem planejamento, sem critrios e sem uma sistemtica bem definida, sendo, portanto, os testes de baixa qualidade.
6. Definio Engenharia de software a disciplina do conhecimento humano que tem por objetivo definir e exercitar processos, onde humanos esto atuando como mquinas, mtodos, os denominados planos de processos, ferramentas e ambientes, que so mquinas apoiando processos e mtodos. para construo de software que satisfaa necessidades de cliente e usurio dentro de prazos e custos previsveis. Atravs de processos de software, que descrevem atividades padronizadas sendo estas aplicadas sistematicamente e agrupadas em fases, cujas quais possuem diferentes entradas e diversas sadas como soluo, juntamente com pessoas altamente capacitadas as equipes de desenvolvimento conseguem manter uma qualidade do software. imprescindvel o desenvolvimento de software nos dias atuais sem o uso da engenharia de software. A concorrncia devido a globalizao, e o crescente do numero de usurios de computadores trazem aos desenvolvedores uma rdua tarefa de criar aplicativos (solues) com qualidade e adequado as necessidades dos usurios. Referncias Bibliogrficas Falbo, Ricardo: http://www.inf.ufes.br/~falbo/download/aulas/es-g/2005- 1/NotasDeAula.pdf PRESSMAN, R. S., Software engineering: A practitioner's approach. 4th. ed. McGraw-Hill, 1997. p. 22-53. SCHWARTZ, J. I., Construction of software. In: Practical Strategies for Developing Large Systems Menlo Park: Addison-Wesley, 1st. ed., 1975.Macoratti.net O processo de Software, http://www.macoratti.net/proc_sw1.html