Archive for the processo de produção de software Category

Graduação em Engenharia de Software na UTFPR

Posted in Ferramentas, gestão de projetos, gestão do conhecimento, Introdução a Engenharia de Software, mercado produtor de software, processo de produção de software, qualidade de software on June 4, 2014 by José Augusto Fabri

modeloA Universidade Tecnológica Federal do Paraná – Campus Cornélio Procópio oferece, a partir do segundo semestre de 2014, o curso de Bacharelado em Engenharia de Software. Atualmente o profissional desta área é um dos mais procurados no Brasil e no Mundo. Veja o projeto pedagógico do curso neste link.

Na figura ao lado você encontra o modelo que norteou todo o desenvolvimento do projeto pedagógico.

Informações adicionais:
Titulação Conferida: Bacharel em Engenharia de Software.
Modalidade de Curso: Ensino presencial
Local de Oferta: Universidade Tecnológica Federal do Paraná Campus Cornélio Procópio.
Coordenação e Unidade Executora: Coordenadoria de Engenharia de Software
Duração do curso: 08 semestres letivos.
Regime escolar: Semestral, com a matrícula realizada por disciplina.
Número de vagas: 88 vagas por ano, com 44 vagas ofertadas em cada semestre.
Turno previsto: Noturno.

José Augusto Fabri – fabri@utfpr.edu.br

Requisitos Sistêmicos e a Semiótica

Posted in processo de produção de software on April 30, 2014 by José Augusto Fabri

A Semiótica tem como objetivo mapear conceitos sobre a semiose (fenômenos culturais caracterizados pelo seu significado e significante) e a concepção dos signos. Ambos os conceitos são derivados da palavra grega σημεῖον (sēmeion) – que significa signo. A teoria que alicerça a semiótica foi utilizada pela primeira vez, em 1670, como disciplina de um curso de medicina por Henry Stubbes (físico Inglês) com o objetivo de estudar a interpretação dos sinais.

A semiótica possuir uma maior abrangência quando alinhada a linguística, ciência esta que tem como objetivo estudar o sistema sígnico (de significados) da linguagem verbal.

A semiótica tem como objetivo mapear todo e qualquer sistema sígnico – Artes visuais, músicas, fotografia, cinema, culinária, vestuário, gestos, religião, ciência, etc.

Outro aspecto importante e caracteriza a semiótica por meio da interpretação dos sistemas sígnico em dois planos complementares: 1 – a forma (significante – aquilo que representa algo); 2 – o conteúdo (significado do que é indicado pelo significante).

Se analisarmos os conceitos que alicerçam a semiótica é possível estabelecer uma relação direta com a concepção dos requisitos em qualquer ambiente sistêmico, pois este ambiente, também é caracterizado pela sua forma e pelo seu conteúdo. A forma caracteriza a representatividade do sistema dentro de um, ou mais, contextos. Esta representatividade se traduz em uma série de conteúdos que podem ser materializados por um conjunto de signos pré-estabelecidos.

Vamos a um exemplo prático:

O sistema universitário possui uma representação concreta dentro dos contextos de ensino, pesquisa e extensão. Este sistema pode significar ascensão social, desenvolvimento de uma nação e melhoria contínua de uma determinada região. O referido sistema é composto de vários objetos que norteiam o seu conteúdo, destaco aqui, professores, pesquisadores, teses, dissertações, artigos científicos, projetos de pesquisa, equipamentos, laboratórios, etc. Dentro da engenharia de software esses objetos podem ser representados por um conjunto símbolos pré-estabelecidos. Os símbolos utilizados na representação devem atacar diretamente os dois planos citados – a forma (significante – aquilo que representa algo) e o conteúdo (significado do que é indicado pelo significante).

Enfim, podemos usufruir dos vários pressupostos da semiótica para explicitar requisitos implícitos, este á um assunto para um bom trabalho de pesquisa.

O lúdico aplicado na melhoria de um processo de software

Posted in processo de produção de software, qualidade de software on March 31, 2014 by José Augusto Fabri

Várias pessoas questionam o motivo que me levou a construir bonecos e pipas durante os programas de melhoria de processo. O texto abaixo justifica a utilização de tais práticas.

Vários programas de melhoria de processo são abortados durante a sua implementação. Este problema é recorrente em empresas do segmento produtivo de software, pois os responsáveis pela implementação dos referidos programas encaram os modelos de qualidade (CMMI e MPS-BR) como uma “camisa de força, ou seja, as formas de implementação das áreas chaves do processo, propostas pelos referidos modelos, são interpretadas como verdade absoluta.

Durante a melhoria de um processo de software os colaboradores de uma determinada empresa devem alterar a sua forma de trabalho. Novas atividades ou tarefas devem ser inseridas na estrutura do processo, formulários que antes não eram preenchidos passam a ser e, principalmente, aspectos ligados à produtividade e qualidade são questões de suma importância.

Algumas empresas alteram a sua cultura de trabalho durante a execução do plano de melhoria de processo. Trabalhar, como consultor, dentro de um ambiente permeado por estas situações requer certo “jogo de cintura”. É necessário sair do trivial, treinamentos e possíveis alterações na forma de trabalho devem ser implementadas com parcimônia. Técnicas diferenciadas, com foco nas áreas chaves do processo, devem ser atacadas com eficiência e eficácia. A motivação dos envolvidos se caracteriza como um fator crítico de sucesso.

Dentro deste prisma acredita-se que os aspectos inerentes à melhoria de processo de software são suportado por questões ligadas ao ensino e aprendizagem. Ambos ocorrem em duas vias, hora os membros de uma consultoria (em melhoria de processo) compartilham o seu conhecimento com os envolvidos no ambiente produtivo – o ensino – em outros momentos são os envolvidos que agregam ao portfólio da consultoria – a aprendizagem.

Para compor um ambiente de ensino e aprendizagem (de mão dupla) altamente motivador, é necessário trabalhar o conceito do lúdico. A motivação tem como foco proporcionar prazer por meio do desenvolvimento de uma determinada atividade, e uma das formas de obter esse prazer é utilizar o referido conceito.

Salienta-se que os envolvidos com o aspecto produtivo de software, na maioria das empresas, são oriundos de vários ambientes. A diversidade na formação, na origem regional, no aspecto cultural e, principalmente, na experiência caracteriza-se como uma constante. Este fato alinha-se diretamente com uma dos principais pressupostos relacionados a aprendizagem.

“a aprendizagem humana pressupõe uma natureza social específica e um processo por meio do qual os aprendizes penetram, de forma diferenciada, dada a sua diversidade, na vida intelectual daqueles que o cercam” (Vygosky (1991)).

De posse do pressuposto destacado e assumindo que todos os envolvidos em um programa de melhoria de processo concebem representações sobre um determinado objeto (forma de trabalho, formulário a ser preenchido, padrão a ser seguido) por meio de suas práticas sociais (a diversidade na formação, na origem, na cultura, na experiência), e essas representações são delineadas a partir do grau de interesse e de qualidade (da informação obtida ou do produto gerado) proporcionadas pelo objeto; concluí-se que os atores sociais imersos no processo de ensino e aprendizagem estabelecem um relacionamento de simbolização/interpretação para com o objeto manipulado. É, justamente, este relacionamento que configura o significante e o significado do objeto.

O significante caracteriza-se como o signo linguístico é uma “imagem acústica” – sua consistência está na forma do objeto. O significado provê ao ator questões relacionadas ao conteúdo – o que eu posso fazer com o objeto.

O significado é assimilado por meio de uma rede de conhecimento pré-estabelecida pelos atores (envolvidos em um programa de melhoria de processo) é, esse tipo de rede que se encontra a origem e a permanência da simbolização/interpretação dos objetos.

Diversos teóricos da área pedagógica (diSessa et. al. (1982, 1983, 1985, 1988, 1993). Smith et. al. (1993), Clement (1983), McCloskey (1983), Resnick (1983)) têm como premissa que as concepções prévias devem ser compreendidas como parte ativa do desenvolvimento da simbolização/interpretação. Durante a institucionalização (ou melhoria) de um processo, para um determinado meio (ambiente produtivo de software), num mesmo tempo e num mesmo espaço (células produtivas do ambiente – por exemplo: célula de teste) teremos, para cada colaborador diferentes formas de simbolização/interpretação.

Dentro do contexto delineado, é possível delimitar a construção do conhecimento nos aspectos primitivos fenomenológicos, estruturas elementares obtidas por abstrações simples, fracionadas, que se relacionam entre si, com o objetivo de promover um determinado significado.

Segundo Kishimoto (1999), as técnicas lúdicas podem se relacionar de forma perspicaz com as estruturas elementares obtidas pelas abstrações. Estas técnicas são criadas com o objetivo de estimular o processo de aprendizagem. De nada adianta institucionalizar, durante o programa de melhoria de processo, questões ligada à produtividade, qualidade e gerência, se estas não se constituem conceitualmente para todos os envolvidos com o ambiente produtivo de software. Não se espera, por parte dos envolvidos, concepções alternativas sobre as questões delineadas, se estes não estiverem engajados no programa de melhoria. É necessário seduzir  o que lhes é apresentado, que encontrem o verdadeiro significado das atividades/tarefas (do processo), para que possam compreender a importância de um programa de melhoria. As práticas lúdicas vão de encontro à sedução supracitada.

É por meio do lúdico que os envolvidos em um ambiente de melhoria de processo são livres para determinar suas ações. A essência do brincar e a criação de uma nova relação entre os objetos, inerente a uma determinada área chave do processo, podem promover um ganho substancial no tempo e na qualidade de todo programa de melhoria. O brincar se constitui em um processo de extrema importância a favorece as transformações internas de um determinado ambiente.

Por fim, é importante discutir o lúdico como ideia de divertimento, um fazer humano amplo, que vai além de brincadeiras e jogos, traduzindo o sentimento, as atitudes de um sujeito envolvido em uma determinada ação, referindo-se ao prazer da celebração em função de envolvimento efusivo, transpondo a sensação de plenitude que acompanha significados verdadeiros dos brinquedos (em nosso caso, os objetos).

É dentro deste panorama que modelo de processo não pode ser encarado como uma “camisa de força”.

J. A. Fabri – fabri@utfpr.edu.br

A otimização da produtividade em uma empresa de software

Posted in gestão de projetos, processo de produção de software on March 10, 2014 by José Augusto Fabri

Muitos alunos, programadores, engenheiros e empresários me questionam: Como otimizar a produtividade dentro de uma empresa de software?

Minha resposta é direta, o aumento da produtividade está alinhado com o aumento do reuso dos artefato do processo software. Ou seja, mais componentes reutilizáveis dentro do ambiente de produção proporciona menos manutenção de seus produtos e uma melhoria significativa no tempo de produção. Dentro deste contexto você terá maior eficiência, aumentando o valor agregado de seu produto e fortalecendo o seu portfólio. Sua empresa deve se manter no quadrante verde da figura abaixo.

A ausência de um processo e ineficiência na gestão de projetos levam as empresas não praticar plenamente o reuso de software (em todos os níveis: código, artefatos … ). Este fato leva as empresas a trabalharem grande parte do tempo na manutenção corretiva e customizações  das funcionalidades. Ineficiência produtiva, menor valor agregado dos produtos e o enfraquecimento dos portfólios configuram as empresas dentro deste contexto (quadrante vermelho da figura).

reuso-produtividade

Existem empresas de software que desenvolvem para vários domínios do conhecimento, essas, por sua vez, estão impossibilitadas de praticar um alto grau de reuso, e mantém a sua produtividade com um número maior de colaboradores.

Por fim, as empresas que possuem uma base de componentes estável com uma baixa produtividade têm problemas com a prospecção de clientes e fechamento de contratos (quadrante amarelo).

Em qual quadrante se localiza sua empresa?

José Augusto Fabri – fabri@utfpr.edu.br

CMMI – número de certificações – 2013

Posted in processo de produção de software on January 8, 2014 by José Augusto Fabri

CMMI (Capability Maturity Model – Integration ou Modelo de Maturidade em Capacitação – Integração) caracteriza-se como um modelo de referência permeado por práticas (Genéricas ou Específicas) que se relacionam diretamente com a maturidade das das áreas do conhecimento da Systems Engineering (SE – Engenharia de Sistemas), Software Engineering (SW – Engenharia de Software), Integrated Product and Process Development (IPPD – Desenvolvimento Integrado de Processo e Produto) e Supplier Sourcing (SS).

O modelo foi desenvolvido pelo SEI (Software Engineering Institute) da Universidade Carnegie Mellon. Atualmente, o CMMI se caracteriza como uma uma evolução do CMM.

O CMMI é dividido em 5 níveis de maturidade, as empresa classificadas no nível 1 possuem um process ad-hoc, já as emrpesas classificados no nível 5 possuem um processo institucionalizado e otimizado. Geralmente empresas com um processo bem definido, produzem mais e com maior qualidade.

O SEI divulga sistematicamente o número de empresas avaliadas e o número de empresas certificadas. O Figura abaixo apresenta as empresas que possuem um número maior de certificações no nível 5 – classificação efetuada em setembro de 2013.

cmmi sep 2013

O relatório completo sobre as avaliações efetuadas pelos SEI podem ser obtidas neste link.

José Augusto Fabri – fabri@utfpr.edu.br

Metodologia, método, modelo de processo e processo.

Posted in processo de produção de software on December 10, 2013 by José Augusto Fabri

Existem uma ampla discussão científica a respeito das palavras: metodologia e método. Várias pessoas utilizam-nas como sinônimos. Porém, é importante destacar a diferença entre as duas. O método tem relação direta com o processo (como fazer algo?), e a metodologia é área de estudo de vários métodos. Esta definição está embasada na etimologia de ambas as palavras. Metodologia e Método possuem como radical Grego, méthodos = ‘caminho para chegar a um fim’ e logia = ‘estudo de’.

Na Engenharia de Software esta discussão assume um caráter contínuo. Alguns autores assumem que o método caracteriza o processo com uma série de atividades, utilizado na construção de um software, enquanto que uma metodologia se traduz na codificação de um conjunto de boas práticas recomendadas, acompanhada de material de treinamento, programas de educação formal, planilhas e diagramas. Dentro deste contexto, o método de Engenharia de Software pode ser considerado como parte da metodologia.

Outros autores direcionam a metodologia com base em uma abordagem filosófica do problema. Dentro deste contexto é possível afirmar que a Engenharia de Software é rica em métodos e pobre em metodologias. Dentro desta abordagem temos como abordagem metodológica a metodologia estruturada (embasada pelos pressupostos de Edward Yourdon, Chris Gane e Trish Sarson) e a metodologia Orientada a Objetos.

Já um modelo de processo pode ser definido como uma representação ou abstração das atividades caracterizadas em um processo de software. Geralmente, o modelo norteia a instanciação e o sequenciamento das atividades de um processo de software. Na literatura é possível encontrar vários modelos de processo:

Já o processo (de software) é caracterizado por meio de um conjunto de atividades bem definidas e documentadas que quando aplicadas, sistematicamente, garantem certo grau de qualidade na confecção do produto. Além do conjunto de atividades, o processo possui outros atributos como: matéria prima, mão de obra e recursos. Tais atributos são considerados os insumos do processo de produção. Salienta-se também que o processo deve possuir o conceito de retro-alimentação com o objetivo de garantir o caráter evolutivo do mesmo. Todo o processo é instanciado a partir de um modelo.

No meu ponto de vista temos:

  • Método ou processo ágil.
  • Instanciado a partir do modelo evolucionário.
  • Embasado na metologia estruturada ou orientada a objetos.

Por fim, fica a dica:

Embase corretamente os termos metodologia, método, modelo de processo e processo e os utilize de forma correta.

 José Augusto Fabri – fabri@utfpr.edu.br

Modelagem: do Problema ou do Negócio?

Posted in processo de produção de software on November 11, 2013 by José Augusto Fabri

Dentro de um projeto de desenvolvimento de software, a MODELAGEM DO NEGÓCIO se caracteriza como uma das atividades mais importantes. E por meio dela que as regras e os processos essências de um ambiente sistêmico são caracterizados.  Uma boa modelagem pode proporcionar a otimização do ambiente sistêmico, melhorando o fluxo e a velocidade das informações.  Algumas vezes, com a modelagem, é possível resolver o problema sem a implementação do software.  Neste post vou apresentar um case que valida esta afirmação.

Problema

Uma prefeitura de uma cidade de 60 mil habitantes deseja melhorar o processo de matriculas de alunos em suas creches. A secretaria da educação detectou a seguinte falha:  existem alunos matriculados em duas creches durante o mesmo período letivo. Em determinados dias da semana o pai deixa o aluno na creche A e em outros dias na creche B. Este procedimento diminui o número de vagas. Importante salientar o processo de matricula nas creches não é centralizado.

A modelagem do problema, mapeada na figura abaixo, mostra que o processo de matricula não é centralizado. Não existe uma comunicação entre as creches.

modelagem do problema

Solução proposta pela maioria dos analistas

Desenvolvimento de um software que possibilite a integração de todo o processo de matricula nas creches. As informações sobre o processo estão disponíveis em um servidor de dados e as creches acessam este servidor (via rede) e efetuam o matricula.

O projeto implica em:

  • adquirir o servidor e as estações de trabalho a serem utilizadas pelas creches;
  • proporcionar (via rede) a conexão de todas essas máquinas;
  • estabelecer um protocolo de segurança das informações;
  • implementar as regras contidas no protocolo.

Solução gerada com MODELAGEM DO NEGÓCIO

A MODELAGEM DO NEGÓCIO (vide figura abaixo) provê uma alternativa para resolver o problema.

modelagem do negocio

Centralizar o processo de matricula na secretaria municipal de educação. Diariamente as creches informam, via telefone, se existem vagas (pois o cancelamento da matricula pode ser feito diretamente na creche). A secretaria possui uma planilha eletrônica com as informações de todos os alunos matriculados. Os pais ou responsáveis efetuam a matricula na secretaria. A secretaria consulta a planilha. Se as informações do aluno estiverem cadastradas na planilha, a matricula é recusada.

Este projeto não implica:

  • no desenvolvimento do software;
  • na aquisição do servidor e das estações de trabalho;
  • na conexão das máquinas;
  • no estabelecimento e implementação de um protocolo de comunicação.

Discussão

A MODELAGEM DO NEGÓCIO vai além da modelagem do problema. A modelagem do problema apresenta um retrato da situação atual do processo. A MODELAGEM DO NEGÓCIO deve proporcionar uma alternativa altamente eficaz para cliente, ela deve retratar a melhor forma de execução das regras que compõem o negócio.

Deixe de modelar problema e passe a MODELAR NEGÓCIO!

José Augusto Fabri – UTFPR

Follow

Get every new post delivered to your Inbox.

Join 38 other followers