terça-feira, 19 de abril de 2011

Tenho visto em algumas empresas e ando me perguntando: Será que o empresariado brasileiro está alienado ou não tem o profissionalismo adequado para tocar um negócio?
Vejo administradores colocando de lado processos definidos e reconhecidos no mercado, boas práticas de gerenciamento de projeto, análise de negócios, e assim por diante.
O pior é ver administradores gastando dinheiro em ferramentas de sistema, treinamento sem avaliar o retorno possível.



Em minhas consultorias sempre exponho aos empresários a necessidade em avaliar o custo benefício do benefício feito pela empresa dele.
Coloco em suas indagações o  objetivo do investimento feito. O que ele espera de retorno? Em quanto tempo ele espera esse retorno? Ele acha que basta um investimento financeiro? Onde fica o comprometimento da equipe? Como exigir comprometimento da equipe se não há condições adequadas de trabalho e ferramentas disponíveis?
Dentre as técnicas aprendidas, as ferramentas experimentadas o mais difícil é mostrar a uma pessoa que acha ter em seu feeling a única ferramenta necessária para administrar, pessoas incrédulas em processos e treinamentos.
Por outro lado aponto também a má qualificação de mão de obra em todos os lugares. Por mais esforço apresentado por um colaborador em determinada empresa a falta de capacitação técnica é extrema, a falta de profissionais gabaritados é um caso sério.
Estou pensando em alguma forma de expressar estas considerações em formas  mais precisas e mensuráveis.
continua em breve...

quarta-feira, 13 de abril de 2011

Metodologia e Análise de Sistemas

1       INTRODUÇÃO

Desde o início da humanidade o ser humano vem acumulando conhecimento e o repassando às gerações futuras.
Com a evolução dessas gerações a quantidade de informação gerada foi crescendo de forma exponencial. Calcula-se que em 40 mil anos de humanidade tenha criado menos dados do que os últimos três anos, segundo a revista Teradata Magazine [www.teradatamagazine.com] baseando-se em pesquisa de Universidade de Berkeley.
Em 2009 o total de informação chegava a 500 exabytes (  bytes) e em 2010 esse valor já saltava para 1000 exabytes de informação gerada no total. E a previsão é de dobrar esse nível de informação circulando a cada seis meses.
Delimitando o nosso universo de estudo ao mundo corporativo partimos da Revolução Industrial como linha demarcatória das nossas mudanças.
Antes da Revolução Industrial as organizações da época, por volta do final século VXII, eram empresas pequenas e com mão de obra executando suas tarefas com muita proximidade entre os envolvidos, tudo isso devido à concentração da produção, multiplicação da capacidade produtiva do homem e o melhor aproveitamento das máquinas e processos.
A Revolução Industrial trouxe aos produtores facilidades para a expansão de suas produções nunca antes vista. Desta forma a quantidade de funcionários aumentou e o tamanho de suas fábricas também.
Com esse movimento crescente a administração da empresa criou vida própria com necessidades de controles e definições de processos distintos daqueles antes utilizados exclusivamente para a produção. Pois antes a mesma pessoa fazia todas as etapas dentro de uma empresa, porém com o seu crescimento isso ficou impraticável e cada um teve a sua tarefa ou tarefas específicas da sua área.
Viajando um pouco mais adiante no tempo chegamos a um momento em que as empresas ultrapassaram uma estrutura suportada por controles e processos manuais.
Isso ocorreu na década de 1950, momento de explosão dos mainframes para controle dos sistemas de estoques, processo de alto custo e lento, porém mais rápido do que controle manual.
 De acordo com a apostila Metodologia de análise de sistemas, página 8 temos a definição: “A definição de Sistema sugerida pelo American National Standards Institute (ANSI) é: Sistema, para processamento de dados, é o conjunto de pessoas, máquinas e métodos organizados de modo a cumprir um certo número de funções específicas.”.
A partir deste conceito podemos delimitar um pouco mais nosso objeto de estudo restringindo a nossa atuação ao estudo dos processos utilizados nas organizações para controlarmos as operações e demais tarefas e assim garantirmos a eficiência dos mesmos.
Até agora estivemos discursando sobre processos, métodos, tarefas, empresas, informação. Mas como controlamos isso de forma adequada, rápida, eficiente? Qual a implicação do volume de dados comentado no início do texto?

Podemos dizer que as organizações atuais imersas em um mercado de extrema competição necessitam de enorme agilidade e restrito tempo de resposta, com essa visão é impossível mantermos controles manuais de todas as áreas da empresa e ao mesmo tempo atendermos a esses requisitos.
Dessa forma estendeu-se a utilização de sistemas não apenas para o controle dos estoques, mas também a toda a empresa de forma a interliga-la de forma sinérgica para a máxima obtenção e utilização dos seus recursos.
Esse ramo da ciência foi definido como Análise de Sistemas e com seu auxílio apresentaremos técnicas e métodos para auxiliar na administração de uma organização.

1.1      A ANÁLISE DE SISTEMAS

Para desenvolvermos uma análise adequada, primeiro é necessário definirmos os nossos métodos, ou caminhos a seguir, nessa questão temos a definição de metodologia, que é o estudo, análise e avaliação dos métodos utilizados na análise.
São de metodologias que o Analista de Sistema se baseia para todo o trabalho de análise e avaliação dos processos e ferramentas existentes na empresa.
O Analista é responsável por implantar a metodologia de controle da implantação ou desenvolvimento da ferramenta, documentar todo esse processo e fazer com que o desenvolvedor (área técnica) entenda em sua linguagem todo o processo transmitido pelo usuário final (regra de negócio) e possa entregar o qual lhe foi pedido.
Em nosso discurso abordaremos as principais metodologias utilizadas, as suas formas de utilização e todas as implicações possíveis.


2       DESENVOLVIMENTO

Após uma explanação inicial sobre nosso universo de estudo discorreremos sobre as questões técnicas do nosso tema apresentando as metodologias mais difundidas, as ferramentas mais eficientes e reconhecidas do mercado.

2.1      Engenharia de software

RUP, esta sigla tem um significado muito importante no desenvolvimento de software. Processo Racional Unificado é o representante do método de desenvolvimento denominado Iterativo e Incremental.
Em linhas gerais o método é um avanço em relação ao modelo de Ciclo de vida, ou Cascata, pois permite realinhamentos no decorrer do desenvolvimento, não aguardando fases de validação e entrega para perceber desvios e erros de projeto.
Um ponto relevante a apontar neste tópico são os marcos delimitadores do processo, concepção, elaboração, construção e transição. Em cada um deles, ou melhor, ao “passarmos” de um para o outro checamos se o previsto foi cumprido ou não e essa forma permite ajustar de maneira mais eficiente e proativa o andamento do projeto.
Os marcos denominados acima são marcos de tempo e ocorrem em ciclos. Dentro destes ciclos há tarefas a executar para alcançar os objetivos definidos.
Levantamentos de Requisitos, Análise de Requisitos, Projeto, Implementação, Testes e Implantação. São estas as tarefas a cumprir em cada fase, ou iteração.
Uma imposição, obrigatoriedade a ser cumprida. Pode ser dividido em funcionalidade do sistema (Funcional) ou característica de qualidade (Não funcional), este é o Requisito, seu levantamento começa a delimitar as obrigações funcionais que o novo sistema deve atender, bem como ser confiável, segurança, etc.
Um sistema que atende às solicitações previstas pelos usuários quando da sua concepção é um sistema de elevada qualidade e deve-se a isso requisitos bem definidos.
Essa definição ajuda a definir o escopo, delimita em um documento os itens participantes e não participantes do desenvolvimento do sistema.
Sem levar em consideração o “como será feito” devemos propor uma estratégia de solução para estes requisitos através de modelos ou protótipos. Esse processo é denominado como Análise de requisitos, tudo isso para melhor entender como os requisitos farão parte da solução.
A fase do “como”, mencionada anteriormente é a fase do Projeto. Nesta fase faremos diagramas diversos e elaboraremos um projeto detalhado, com auxílio do UML para especificar como tudo será implantado levando em consideração todas as variáveis internas e externas de um sistema.
Em seguida chegamos à fase de Implementação e não há uma diferença clara entre a fase de projeto e esta. A codificação em uma linguagem de programação específica é a diferença apontada.
Em seguida vamos aos testes e implantação, os quais conferem se todas as funcionalidades foram implantadas e a distribuição para o usuário, respectivamente.
Ferramenta CASE são sistemas de software agindo em conjunto com as metodologias, não só para cuidar da implementação, mas sim da questão da produtividade.

2.2      Metodologias

Com o intuito em agilizar, estabelecer ordem, padrões, visando maior qualidade utilizaremos metodologias reconhecidas e consagradas no mundo para nos auxiliar com o desenvolvimento.
Metodologia estruturada. Com um nível de detalhe profundo esta metodologia utiliza diversas ferramentas para elaborar um modelo abstrato do negócio.
Entre elas: DFD, ou Diagrama de Fluxo de Dados, são os fluxos do sistema. DER Diagrama de Entidade e Relacionamento, estabelece a estrutura no banco de dados. E completando com uma Ferramenta CASE para estabelecer o conjunto acima citado.
Metodologia Ágil. Criado com o “Manifesto Ágil em 2000” tem por base não carregar toda carga de documentação e demanda gerencial gasta com controles e processos, visa um desenvolvimento mais limpo e rápido, baseia-se no modelo cascata.
Metodologia Orientada a Objetos
Ao invés de estruturamos todo o processo, nesta metodologia, o processo baseia-se em uma coleção de objetos. A cada dia recebe mais adeptos na preferência em relação à estruturada.

2.3      Modelagem

Modelagem é uma parte muito importante no desenvolvimento de um software. Modelos são utilizados para vislumbrar uma análise mais detalhada, gerenciar as complexidades, facilitar a comunicação entre os envolvidos no projeto, com um modelo torna-se mais fácil predizer o comportamento do sistema e assim reduzir custos no desenvolvimento.
Ao efetuar a modelagem de um sistema deve-se atentar ao modelo escolhido e isso mudará de acordo com o foco pretendido, se for por banco de dados um DER será o escolhido, agora se quiser privilegiar os processos, fluxos e algoritmos serão mais precisos.
O nível de precisão é outro fator a considerar e pode variar de acordo com a necessidade de maior ou menor detalhe.
Sempre é importante utilizar sempre vários modelos independentes para o procedimento, isto garante maio precisão ao que se estuda, lembrando-se de utilizar a realidade como universo de pesquisa, para servir de estudo paralelo ao que se espera do projeto. Fazer um modelo não representativo do estudo não traz vantagem.
UML – É uma linguagem de modelagem criada pelo “três amigos” Booch, Rumbaugh e Jacobson e tem como meta proporcionar as melhores práticas de notações já existentes, muitas delas desenvolvidas por eles próprios.
A UML prega a todos os sistemas a possibilidade de ser descrito sob a ótica das cinco visões: Casos de Uso, Projeto, Implementação, Implantação e Processo.
Alan Kay estabeleceu os princípios do paradigma da Orientação de Objetos: 
- qualquer coisa é um objeto;
- objetos dependem de outros objetos para realizar tarefas, a partir de requisições;
- A Classe agrupa objetos similares.
- A classe é um repositório para o comportamento associado ao objeto.
- Classes são organizadas em hierarquias.
No paradigma estruturado os elementos principais são dados e processos onde os processos interferem nos dados para alcançar o objetivo esperado.
Já no paradigma por objetos cada objeto possui seus dados e seus processos definidos para sua classe e interagem com outros objetos para alcançar o objetivo.
Aos objetos é esperada a capacidade de reagir a estímulos, Ter mecanismo de encapsulamento, polimorfismo e herança.

2.4      Linguagens orientadas a objeto

Iniciou na década de 1960 com a Simula, foi baseada na linguagem Algol60.
Após ela houve: Simula I, Simula 70, Small Talk e Eiffel, este último chama a atenção por não ter se baseado em outro linguagem, apenas nos preceitos da orientação a objeto.
C++, baseada em Simula, Object Pascal e mais recentemente o Java, vindo do C++, onde foram compilados objetos de C++. São divididos em aplicações Java e Applets, os primeiros tem acesso à máquina e o segunda apenas à memória e arquivos, sendo geralmente interpretados pelo browsers.

2.5      casos de uso

É o modelo mais importante da UML, ele é responsável por gerenciar os requisitos funcionais do sistema e providenciar a aderência do programador ao processo definido por este requisito e não o contrário.
Sem expor a estrutura e comportamento internos do sistema o caso de uso define a utilização de uma parte da funcionalidade (requisito) do sistema.
O Formato, dividido em descrição contínua, numerada e particionada, é a forma de narrar o caso de uso.
Detalhamento refere-se ao nível granular da informação transmitida, pode ser sucinto ou expandido.
Abstração real ou essencial. Quando a abstração da tecnologia entra (real) ou não (essencial) no relato. Para saber a diferença há a “regra dos 100 anos” se a narrativa for válida com a tecnologia de 100 anos atrás é real, caso contrário é essencial.
Atores é todo e qualquer agente externo interagindo com o sistema, segundo definições UML.
As interações desses atores com o sistema são denominadas Relacionamento e podem ser classificadas como:
- Comunicação; Inclusão; Extensão e Generalização.

2.6      diagramas

São treze tipos divididos nas categorias Estruturais e Comportamentais. Os Estruturais representam as características fixas do sistema, aquelas imutáveis, em relação aos Comportamentais vemos suas respostas frente às solicitações ou suas evoluções.
Diagramas: Classe derivado do DER é utilizado para representar entidades do mundo real, além de elementos de análise e projeto.
Estrutura: Exibe a composição de uma estrutura, utilizados em estruturas complexas.
Componentes: Apresenta as interfaces e as dependências entre componentes em um software.
Instalação: Mostra a arquitetura em tempo de execução, como máquinas virtuais.
Objetos: é uma instância do diagrame de classes e mostra, em determinado momento, o estado do sistema.
Pacotes: Mostra dependências e organiza elementos do modelo.

2.7      a prática

No exemplo prático é demonstrado uma pequena linha de programação  em Java, o famoso ”Hello World”.
Deixemos claro que HelloWorld é apenas uma ramificação em uma hierarquia de classes muito maior. HelloWorld é filha de Applet; Applet é filha de Painel; Painel é filha de Container;Container é filha de Component; e Component é filha de Object, que é a classe-mãe de todas as classes em Java. Portanto, esse modelo corresponde à biblioteca de Java - cada classe-filha estende a classe-mãe imediata.

3       CONCLUSÃO

Em nosso discurso pudemos ver claramente a evolução da sociedade desde a Revolução industrial. Todas as mudanças tecnológicas, seus impactos e avanços bem como o aumento de complexidade na administração de um processo.
Processo amadurecido e tornado robusto ao ponto de não ser possível controlá-lo ao alcance das nossas próprias vistas e braços. Necessitando do apoio de ferramentas igualmente fortificadas ao longo da cadeia de necessidades a qual sustentou e lhe exigiu cada vez mais.
Tanto ao ponto de tornar-se uma metodologia tão grandiosa e diversa que necessita de amplo estudo para estimarmos a relação custo-benefício sobre o nível de detalhe a ser utilizado em cada projeto.
Percebemos a utilização de tais ferramentas sob a ótica do Desenvolvimento de Sistemas, ferramentas imprescindíveis para controle e garantia de um desenvolvimento de sistema conforme solicitado pelo usuário.
Ao entrar no universo de desenvolvimento de sistemas o maior conflito está no entendimento da linguagem do Dono do Negócio e a linguagem do Desenvolvedor.
O Dono do Negócio possui regras específicas e exclusivas relativas ao seu processo, devendo estas serem atendidas pelo sistema proposto em sua completude, sem exceção, os denominados Requisitos.
 Requisitos que são definitivamente a “Alma do Negócio” e as Metodologias de Análise de Sistemas vieram justamente para fortificar a luz ao final do túnel.
Vemos em nosso texto em meio a diagramas, métodos, modelos, linguagens de programação, casos de uso, exemplos e todo o arsenal de ferramenta disponível a possibilidade de estruturarmos um desenvolvimento de software segundo melhores práticas reconhecidas de mercado.
Todos esses recursos voltados para garantir que uma “simples” necessidade do usuário seja satisfeita corretamente por um sistema tal qual foi concebida por este mesmo usuário.

terça-feira, 15 de fevereiro de 2011

Interfaces Gráficas - Holografia


A quebra do paradigma cultural será com certeza o maior impacto com a implantação efetiva desta tecnologia.
                Conversar com alguém à distância e visualizá-la ao seu lado, assistir um jogo de qualquer modalidade esportiva ocorrendo em um país distante no ginásio ao lado da sua casa, avaliar equipamentos e visualizá-los antes de adquiri-los. Sem dúvida será um divisor de águas do ponto de vista cultural.  
                Encurtar distâncias, diminuir custos, facilitar a vida das pessoas. É sempre por motivos iguais ou semelhantes a estes que a tecnologia está sempre se reinventando e evoluindo, porém nem tudo são flores mudanças geram desconforto retiram pessoas das suas zonas de conforto  mudam seus hábitos, suas formas de agir de se relacionar.
                As relações trabalhistas sempre foram afetadas pela tecnologia e com mais esta também o será.
                Algo como ir a uma lanchonete de fast food e ao invés de interagirmos com um atendente humano uma imagem holográfica nos atende, cobra e libera a entrega do lanche.
                Conferências e simpósios com necessidade de presença dos integrantes ser executado com cada um em seu auditório e ao mesmo tempo visualizar e ser visualizado por todos.
                Haveria grande impacto no transporte, turismo, economia.
                Poderíamos visitar um lugar sem nem ter estado lá, conhecer  pontos turísticos da humanidade sem sair de casa.
                Pessoas com restrições de mobilidade teriam maior facilidade em estudar, trabalhar estar em inclusão social.
                Em síntese uma tecnologia que muda o conceito de presença, de físico versus abstrato trará as mais diversas e impensáveis mudanças causando grande impacto em todas as esferas da sociedade.
                Para isso deve-se pensar em uma metodologia de integração para a sociedade para a transição ser mais tranquila.
Porém  aqueles que anteciparem esta questão e estiverem preparados com certeza sairão na frente.

quarta-feira, 2 de fevereiro de 2011

Análise de requisitos

Tenho participado em implantações de software em empresas e com certa frequência ouço o usuário reclamar sobre a ferramenta implantada. A principal aponta para a não solução do problema. 
Uma única questão paira no ar: Se o objetivo da ferramenta proposta é exclusivamente resolver uma questão, porquê ele fica sem resposta após muito tempo dedicado em análise, planejamento, desenvolvimento, treinamento e outras tarefas?
Isso não tem sido visto apenas em empresas sem processos definidos ou falta de profissionais devidamente capacitados, mas em muitas empresas de diversos tamanhos e com expressividade no mercado em maior ou menor grau de agravo.
Na mesma linha de raciocínio vemos profissionais de análise bem preparados nas técnicas de análise de requisitos e também equipes de desenvolvimento capacitadas e por dentro da documentação elaborada pela equipe de análise.
Estamos no caminho, porém não mitigamos todas as questões ainda.
Antes de qualquer coisa devemos recordar o objetivo macro ao decidirmos desenvolver uma ferramenta para uma organização. Esse objetivo está obrigado a alinhar-se com a missão da empresa, os objetivos globais do negócio para a partir daí prosseguir com os trabalhos. 
Vou exemplificar o anteriormente exposto. 
Uma empresa decide desenvolver dentro de um módulo de vendas um vínculo com o módulo de processo de produção para sugestão de vendas baseado nas quantidades produzidas, pois a variação do volume de insumos empregados na produção é díspar e influi diretamente no preço final e por serem produtos específicos não são elaborados mais de uma vez, todo projeto é um produto novo. 
Essa é a regra de negócio baseada na missão da empresa: “Atender cada projeto único no menor prazo e melhor custo...”.
Nesse universo imagine a possibilidade do usuário da ferramenta e o analista não estarem alinhados à regra e a missão, o que não é impossível, visto a proximidade do usuário da tarefa e desta forma não deve ter toda a visão exposta aqui.
O gestor do negócio muitas vezes não se envolve no projeto como deveria e por esta causa o analista não dispõe de subsídio suficiente para levantar todos esses requisitos e por consequência deixar algo para trás. 
Em decorrência a isso é possível deixar uma informação pelo caminho, não rastrear adequadamente um requisito e isso não ser informado na documentação para o desenvolvedor. 
Por sua vez um documento pouco preciso dá brecha para o desenvolvedor utilizar a imaginação e achar a necessidade de um campo novo e isso pode modificar o escopo do projeto, ou seja, entregar algo que não será útil. 
Desta forma a insistência esta em manter coerência entre a regra de negocio, as necessidades do usuário, acompanhar os requisitos e transmitir tudo isso de forma clara e adequada ao desenvolvedor para que ele possa entregar exatamente o programado sem mais e nem menos.