A Engenharia de Software e a Otimização dos Resultados organizacionais

Por Anderson Márcio da Paz Santos | 31/05/2011 | Tecnologia

Resumo

Este artigo aborda a relação entre Engenharia de Software e o desenvolvimento das empresas especializadas no desenvolvimento de Softwares, demonstrando os aspectos positivos da implementação dos seus conceitos.

Palavras-Chave
Engenharia de software, otimização de resultados, software, sistemas computacionais.

1- Introdução
Estamos inseridos em um mundo voltado para o capital. O capitalismo atingiu um status tal que interfere diretamente em nosso dia a dia. As pessoas tem seus hábitos influenciados pela busca do capital, para realização pessoal e para sua satisfação. Para atingir estes objetivos de uma maneira mais rápida é primordial aproveitarmos o tempo da melhor maneira possível. Aquele velho ditado vem com muita força neste momento: "tempo é dinheiro". O tempo se tornou o mandante das nossas vidas. Quem melhor o aproveita, tem melhor desempenho e alcança melhores resultados. A informática veio como a chave entre as necessidades humanas de agilidade a o ato de poder alcançá-la. A demanda por recursos informatizados então se torna crescente de maneira exponencial; como também enormes se tornam as exigências sobre o mercado desenvolvedor de soluções digitais que tornem a vida das pessoas mais "fácil". Daí a necessidade de dar uma contrapartida a demanda crescente trabalhando em cima das organizações que suprem o ansioso mercado digital implementando técnicas, teorias, que auxiliem na obtenção dos resultados. Para isso utilizamos a Engenharia de Software.
Podemos ilustrar a situação que engloba a necessidade homem de rapidez, agilidade, objetividade e a relação das soluções digitais da seguinte forma: outrora, para pesquisarmos sobre um determinado tema precisávamos ler um livro; para isto tínhamos que pesquisar em uma biblioteca de universidades, em bibliotecas públicas, dentre outras; teríamos que procurar em fichários enormes, classificados por ordem alfabética, por tema ou por autores; procurar o livro na prateleira; encontrarmos se estiver disponível para consulta ou para empréstimo; quando finalmente o lermos, poderia não ser aquilo que estávamos procurando; Hoje para todo este processo podemos usar programas, sistemas informatizados de busca, que em segundos nos direcionam para temas dos mais variados possíveis.
Dificilmente ficamos sem informação, em um curto espaço de tempo temos acesso a diversos conteúdos. Assim como neste exemplo, e como em tantos outros, um produto tem ajudado o mundo do capital a se tornar ainda mais poderoso, a se tornar ainda mais um sucesso mundial. Este produto são os Softwares. Os softwares são utilizados pelas mais diversas áreas de conhecimento. Tudo que se entende como forma de otimizar processos, atividades, relacionamentos, pode ser gerido e melhorado empregando sistemas informatizados. Daí a grande importância e a fundamental atenção que deve-se ter nas organizações que buscam desenvolver estes Softwares da melhor maneira possível, fazendo com que este mundo do capital seja abastecido plenamente. Para este objetivo, com o intuito de atingir plena satisfação dos clientes e melhor rentabilidade das empresas desenvolvedoras, é que vamos analisar uma área de estudo que vem alavancando este mercado, a Engenharia de Softwares.

2- Fundamentação Teórica

Os softwares fazem parte de um contexto chamados de sistemas computacionais, que são compostos das seguintes partes:
? software, no caso, programas de computador, estruturas de dados, e documentação associada que serve a efetivar os métodos, procedimentos ou
processo de controle lógico;
? hardware, que são os dispositivos eletrônicos que definem as capacidades de um computador e dispositivos eletromecânicos que oferecem funcionalidades ao ambiente externo;
? pessoal, usuários/operadores do hardware e do software;
? bancos de dados, uma coleção de informações organizada sistematicamente, acessada através do software;
? documentação, manuais, formulários e outros documentos que podem auxiliar no conhecimento do uso e operação do sistema;
? procedimentos, as regras que especificam o uso específico de cada elemento do sistema computacional.
(Engenharia de Software, Capítulo 6 - CONCEITOS BÁSICOS, Prof° Vitório Bruno Mazzola, INE/CTC/UFSC)

Para analisarmos o que entendemos hoje como desenvolvimento de Softwares, temos que compreender como e por que se deram os primeiros passos dos profissionais do mundo digital. Todos os esforços iniciais foram concentrados no desenvolvimento, evolução e melhorias do hardware.
No início do que hoje conhecemos como "era digital" os trabalhos de desenvolvimento de soluções se baseava em ações individuais de mentes criativas, não havia um estudo efetivo sobre a melhor maneira de realizar ou gerir, tudo era feito na base de testes de erros e acertos. Temos que acentuar que as demandas inicialmente eram brandas, a cobrança não era grande, com isso as soluções eram deficitárias. Paralelamente as soluções em hardware cresciam e se desenvolvia consideravelmente, e havia como ocorre até hoje uma necessidade de se obter máquinas cada vez mais rápidas e com maior capacidade de memória.
Em meados da década de 60 até o final da década de 70 o foco passou a ser sistemas (softwares). A partir deste período as soluções digitais eram cada vez mais requisitadas, a cobrança por desempenho, otimização dos resultados era cada vez maior. Consequentemente as dificuldades e desafios que os profissionais enfrentavam estavam cada vez maiores. Precisava-se ter uma sistemática que possibilitasse aos profissionais melhora em seus resultados. Os clientes precisavam de um produto que os atendessem de uma maneira mais significativa. O mercado cada vez maior cobrava uma resposta do "mundo digital", coisa que era muito difícil. Os profissionais daquela época vinham de um período de experimentações, eram "artistas" digitais e não entendiam de processos, de doutrina cartesiana.
Para relacionar as atividades de desenvolvimento de sistemas informatizados a uma otimização de resultados se buscou em um ramo de atividade em que a busca por eficácia já era bastante conhecida. O setor de engenharia, a área da industria, no período pós revolução industrial criou diversas ferramentas sistemáticas que buscaram o aperfeiçoamento dos seus processo produtivos de modo a melhorarem seus resultados, aumentando sua produção e diminuindo desperdícios.
Quando se uniu esta doutrina da engenharia com a atividade empírica dos primóridos da era digital se concebeu a Engenharia de Software. O conceito de Engenharia denota uma ação de criar, analizar, consruir, desenvolver, acompanhar, manter.
O software é um produto personalizado. Por mais que no mercado várias empresas realizam tarefas similares, por mais que profissionais ambicionem sistemas que lhes dê soluções parecidas, os desenvolvedores são cobrados por atender anseios específicos de seus clientes, todos querem uma solução particular, uma assistência personalizada, o que exige uma rotina que possibilite ao profissional ao mesmo tempo atender a demanda reduzindo o tempo de espera e os desperdícios. Esta questão demanda uma busca ainda mais imperiosa a utilização de rotinas que sistematizem o trabalho de desenvolvimento de soluções digitais. Como este produto não é palpável, não é fácil de mensurar, as ferramentas de controle tem que ser rígidas e controladas.
Dentre as definições de Engenharia de software podemos destacar as seguintes:
"Software é a criação e a utilização de sólidos princípios de engenharia a fim de obter software de maneira econômica, que seja confiável e que trabalhe eficientemente em máquinas reais" ( Friedrich Ludwig Bauer, Engenharia de software, 1969)
"O estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais"( Fritz Bauer - 1969)

"Conjunto de métodos, técnicas e ferramentas necessárias à produção de software de qualidade para todas as etapas do ciclo de vida do produto"( Krakowak,1985)

De modo a entendermos as dificuldades encontradas pelas empresas de desenvolvimento de softwares na sua busca em melhoras seus resultados, podemos analisar algumas etapas distintas do processo:

- Definição do escopo do projeto
- Desenvolvimento do projeto
- Acompanhamento
- Melhorias

As dificuldades começam logo no início das atividades de desenvolvimento. A definição do escopo do projeto é uma parte essencial, a partir dela todo o projeto é delineado. Neste período as falhas são definitivas para o fracasso, sem uma pré-organização, uma sistematização e documentação desta etapa tods os esforços das etapas seguintes podem ser em vão. Antes do desenvolvimento da estrutura de trabalho no desenvolvimento de softwares os projetos tinham um ciclo de rejeição grande pois as definições inicialmente levantadas do projeto não estavas devidamente registradas e não eram devidamente encaminhadas a execução.
O desenvolvimento não acontecia de forma otimizada, não existiam processo divididos de desenvolvimento para facilitar e agilizar a entrega do produto final. Os prazos dificilmente eram atendidos, os erros e retrabalhos eram constantes o que gerava muita insatisfação.
O acompanhamento do resultado final nem sempre acontecia, e quando acontecia praticamente havia necessidade de se refazer o projeto em campo, unindo as etapas de acompanhamento e melhoria, os custos se elevavam, o tempo e os prazos eram vencidos, a insatisfação aumentava. A falta de doutrina de sistematização fazia com que se perdesse clientes, projetos, dinheiro.
Objetivando mudar este cenário a engenharia de Software implementa mudanças nos processos na forma de aplicação de teorias, modelos, formalismos e técnicas e ferramentas sistemáticas associadas ao desenvolvimento.
A engenharia de Software sinaliza numa visão gerencial aplicando métodos e técnicas de gerenciamento da produção. Em Administração de Empresas associada a Engenharia Industrial estudamos o processo de Qualidade Total. Quando lemos trabalhos de autores de Administração de Empresas como Administração Científica de Frederick Taylor (1856-1915), e na Administração por Objetivos de Peter Drucker (1909-2005) verificamos a intensa necessidade de se implementar rotinas de controle de produção, rotinas de melhoria dos processos, rotinas de acompanhamento da satisfação dos clientes.
Modos de organizações administrativas como o Fordismo, Toyotismo, Taylorismo, atuaram dentro das organizações e influeinciaram todas as outras teorias administrativas que vemos nos dias de hoje. Todas elas surgiram de modo a se aumentar a produtividade e redução de custos. No Fordismo observou-se que os lucros obtidos se tornaram muito maiores, o tempo de montagem de um chassi passou de 12 horas e 8 minutos para 1 hora e 33 minutos. A mais-valia do processo produtivo aumentou na mesma proporção deste ganho de produtividade. Por fim todas tinham como primissa pricipal a otimização. A partir de então ocorreu uma mudança no mundo do capital, o aumento da lucratificade causou o desenvolvimento e crescimento vertiginoso das organizações.
Outro exempro muito significativo de mudança de rotinas, sitematização de processo para busca de resultados, vemos em uma obra escrita a milênios e que vem influenciando nos últimos tempos o mundo dos negócios. Trata-se de "A arte da guerra" de Sun Tzu.
Sun Tzu foi um dos primeiros consultores conhecidos, e disponibilizava para os governantes chineses uma técnica que possibilitava um melhor gerenciamento nas situações de conflito.
Esta técnica de controle e organização foi um fruto de estudos e observações das várias dificuldades encontradas nos campos de batalha. Se trata de uma obra minuciosa, onde são descritos detalhes que orientam e delineiam o caminho dos que a lêem.
No mundo empresarial percebe-se uma "relação" muito próxima as idéias relatadas no livro. As empresas são formadas por um conjunto de fatores sejam eles de organização, comunicação, articulação e gerência de conflitos; todos estes fatores são comuns e fortemente percebidos em situações de guerra ou situações organizacionais.
Temos que ter a consciência que para todos em uma organização só existe um objetivo geral que deve ser perseguido. Todos os objetivos específicos devem convergir e gerar resultados que proporcione a empresa a atingir seu objetivo principal. Quando em uma empresa todos tem plena informação que seus atos são importantes e contribuintes para a empresa aí sim a empresa estará pronta.
A cada ano mais empresas são certificadas, os controles realizados em seus processos são avaliados, auditados tomendo como referência um padrão e as empresas que conseguem atingir uma meta específica ganham um selo de qualidade classificado de acordo com o padrão a que ela se sujeitou ser auditada. Hoje esta sistemática está tão desenvolvida nas empresas que estão sendo agora aplicadas certificações que vão além da rotina diária previamente conhecida. Hoje se certifica por atender demandas ambientais e de sustentabilidade.
Esta visão estratégica retirada das organizações empresariais aliada ao saber sistemático cientifico observado nas engenharia somada ao conhecimento pratico de sistemas vem desenvolvendo as empresas de Software e mudando o cenário da produção digital no mundo.
A engenharia de software visa produção da documentação formal do produto, do processo, dos critérios qualidade e dos manuais de usuários finais. Mas como poderiamos implementar estes objetivos? Como incorporar todas estas fontes de conhecimento nas mais diversas áreas dento da procução de softwares? quais os passos que deveria se seguir para atingir qualidade no desenvolvimento de ferramentes digitais?

Alguns autores dividem o cenário coorporativo para o projeto e desenvolvimento de softwares da seguinte forma:

- Atividades de Desenvolvimento;
- Atividades de Gerência; e
- Atividades de Gerência da Qualidade.

A etapa de desenvolvimento relaciona diretamente ao produto, sua formatação, seus condicionamentos, sua execução, os recursos necessários, os seus requisitos. Todas as variáves que se relacionam com o produto e a sua manipulação é feita nas condições observadas nesta etapa. Aqui o projeto se torna real e todas as atenções estão voltadas para esta etapa por que daqui se desenvolve o produto final.
Na atividade de gerência ocorre o acompanhamento do projeto. Aqui se estrutura o processo de execução, se elaboram planos, orças estimativas de custos, se controlam os cronogramas, se analisam fatores externos que possam influenciar o projeto, se analisa o mercado e como ele pode mudar os rumos do serviço que está sendo executado. Nesta atividade se tem a visão do risco do negócio e assim pode-se atuar diretamente na execução de modo a se otimizar as atividades. Gerenciamento deve estar diretamente ligado a execução.
A garantia da qualidade está diretamente relacionada a melhoria contínua do processo e ao retorno esperado para o projeto. Nesta atividade se tem uma noção de se o produto final vai atender as expectativas do cliente influenciando ainda na etapa de produção de modo que se tenha um processo mais eficaz.
Assim como dos projetos de engenharia alguns autores dispõem a divisão de toda a estapa produtiva em partes que se relacionam e desenvolvem na seguinte sequência:

? Planejamento
? Especificação
? Desenho
? Implementação
? Validação
? Teste
? Medição
? Manutenção
? Aprimoramento
Para implementação deste conceito do que amplamente foi exposto existem alguns modelos desenvolvidos ao londo do tempo. Cada um deles apresenta características particulares e são empregados nas mais diversas atividades e empresas desenvolvedoras. Todas apresentom soluções para se chegar ao objetivo da otimização do trabalho de desenvolvimento de softwares porém enfocando pontos diferentes.
Dentre os modelos se destacam o modelo Clássico e o Ágil.
O modelo Clássico se caracteriza por ser sequencial, ele é dividido em etapas pré definidas.
Cada etapa só se inicia após o término da anterior. Todos os processos são bem documentados, de modo que sirvam de parâmetro para o decorrer do projeto, e como garantia dos serviços executados. Neste modelo se tem uma pré-definição mais precisa da orçamentação, se consegue estimar as variáveis e os custos envolvidos.
O modelo ágil tem como principal característica a flexibilidade e ainteração constante entre o cliente e o desenvolvedor, o que resulta em um trabalho final mais personalizado, mais em função da vontade do cliente e identificando-se com o cliente.
Pra quem trabalha com projetos de grande porte para instituições rígidas e com maior controle e responsabilidade é desejavel que se utilize o modelo clássico. Ele garante mais confiabilidade ao projeto como um todo.
Porém quando se precisa de uma solução em curto prazo, aplicações mais simples e objetivas pode-se utilizar o modelo ágil pois nos levaria de uma maneira mais simples ao obsetivo.
Exemplos de alguns modelos de processo de software que podem ainda ser cidados:
? - Modelos ciclo de vida
? - Desenvolvimento iterativo e incremental
? - Evolucional ou Prototipação
? - Espiral
? - Componentizado
? - Formal
? - RAD
? - Quarta geração

3- Conclusão

O que é necessário quando se tem o propósito de atender ao cliente e ter eficacia na realização de projetos em engenharia de Software é que deve-se analizar o cenário e planejar bem como agir em cada situação. Realizando este planejamento e agindo com responsabilidade tem-se bons resultados.


4- Bibliografia

1- Mazzola, Vitório Bruno Mazzola, INE/CTC/UFSC ENGENHARIA DE SOFTWARE ? CONCEITOS BÁSICOS, CAP. 6

2- Falbo, Ricardo de Almeida, Engenharia de Software, Notas de Aula, http://www.inf.ufes.br/~falbo/

3- Lessa, Rafael Orivaldo; lessa , Edson Orivaldo Junior, Modelos de Processos de Modelos de Processos de Engenharia de Software, http://xps-project.googlecode.com/svn-history/r43/trunk/outros/02_Artigo.pdf

3- Tzu, Sun. Arte da guerra. 9ª ed. Rio de Janeiro: Paz e Terra, 1996.

4- Wikipédia, http://pt.wikipedia.org/wiki/Engenharia_de_software
5- Engenharia de Software, Capítulo 6 - CONCEITOS BÁSICOS, Prof° Vitório Bruno Mazzola, INE/CTC/UFSC http://www.inf.ufsc.br/~jbosco/ii/IIcap6.doc