Archive for the Introdução a Engenharia de Software Category

A engenharia do como

Posted in Introdução a Engenharia de Software, processo de produção de software with tags , , on June 11, 2015 by José Augusto Fabri

A engenharia pode ser caracterizada como a arte de aplicar os conhecimentos, advindos das mais variadas áreas de conhecimento, na criação ou aperfeiçoamento de materiais, estruturas, máquinas, aparelhos, sistemas ou processos.

Já a ENGENHARIA DE SOFTWARE pode ser considerada uma área da Ciência da Computação que tem como objetivo a especificação, desenvolvimento e manutenção de sistemas de software. Atualmente, a ENGENHARIA DE SOFTWARE,                também estabelece uma relação estreita com outras áreas do conhecimento, tais como: Gerência de Projetos; Teoria da Qualidade; Gestão de Conhecimento.

Ao analisar ambas as definições é possível perceber que todas tratam o que fazer e não como fazer. Este fato é estendido aos livros, modelos de qualidade, disciplinas, consultorias e cursos ligados  à ENGENHARIA seguem o mesmo raciocínio, relatam o que e não como.

Afirmo isto com legitimidade, pois participo de diversas consultorias e trabalho dentro de um curso de engenharia de software que contrapõe a afirmação apresentada acima. A prova desta contraposição está ligada ao feedback que recebo de vários alunos e clientes (empresas que nos contratam, via Fundação, em consultorias). Estes feedbacks estão armazenados em minha base histórica de projetos, compartilho alguns com vocês.

  • O método de trabalho delineado pela sua equipe para nossa empresa alterou nossa forma de trabalho. Vocês executaram conosco, de forma prática, o método proposto, todos perceberam como fazer para estabelecer métricas de qualidade. A outra consultoria dizia-nos apenas o que fazer”. (feedback obtido após a implantação de um processo em uma empresa).
  • Professor, em sua disciplina sempre você apresenta como trabalhar a engenharia de software, você vai além do campo teórico, sempre embuti a prática em todas as aulas – esta constatação também pode ser estendida a todos os demais professores” (feedback obtido no final de 2014, após ministrar aulas de introdução a engenharia de software, no curso de Bacharelado em Engenharia de Software da Universidade Tecnológica Federal do Paraná).

Todos nós, profissionais que trabalhamos diretamente com as Engenharias, devemos relatar para toda a comunidade, acadêmica e empresarial, como fazer e não somente o que fazer.

O como fazer gera mais positividade, ou seja, a percepção do processo é real e todos entendem passo a passo aquilo o que está sendo construído. Possibilitam os envolvidos a receber um conjunto de conhecimentos mais sólidos.

Importante: O como fazer provê um aprendizado mais rápido e com maior qualidade.

Saia da esfera teórica e atinja a prática, durante a realização de seu trabalho, de suas aulas, de suas consultorias e na concepção de seus livros e materiais – foque mais o como.

Acredito que estamos perdendo este horizonte. As nossas universidades são, em sua grande parte, teóricas. A indústria necessita de pessoas que resolvem problemas de forma rápida e consistente.

Enfim, que tal praticar mais a engenharia do como e menos a engenharia do que?

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

Utilizando o Mindstorms ev3 no ensino fundamental e médio

Posted in gestão do conhecimento, Introdução a Engenharia de Software with tags , , , on June 2, 2015 by José Augusto Fabri

mindstorms

(Projeto coordenado por Marília Gabriela de Souza Fabri)

Pessoal, este texto destina aos diretores de escolas (públicas ou privadas) e professores que desejam utilizar o Mindstorms (robô apresentado na foto) no ensino fundamental e médio.

No texto, nós professores do Laboratório de Inovação (LabInov) da Universidade Tecnológica Federal do Paraná, campus Cornélio Procópio  (UTFPR-CP), estamos trabalhando com alguns projetos que envolvem alunos de escolas públicas e privadas no ensino de conceitos abstratos como física, programação de computadores, lógica e matemática.

Os objetivos dos projetos estão diretamente ligados a ideia de potencializar o raciocínio abstrato dos alunos e implementar técnicas para melhorar o desenvolvimento cognitivo.

Iremos apresentar uma pequena parte de um dos projetos desenvolvidos pelo LabInov.

Projeto: Ensino de geometria plana utilizando a Linguagem Logo e Mindstorms ev3.

Público alvo do projeto: Alunos do ensino fundamental.

Durante a execução deste projeto os alunos tiveram contato direto com os conceitos de introdutório ligados a geometria plana. Foram trabalhados conceitos inerentes a: reta; semireta; segmento; ângulo e propriedades angulares das figuras geométricas.

Abaixo é possível encontrar dois vídeos que trabalham diretamente estes conceitos utilizando a linguagem logo.

Perceba que no primeiro, os alunos do ensino fundamental executam os procedimentos: reta; semireta e segmento. Importante este procedimentos foram implementados pelos próprios alunos

Já o segundo apresenta os alunos implementando procedimentos: quadrado, quadrado1, triângulo e pentágono. No procedimento quadrado os alunos não utilizam o comando repita, comando este que agiliza a construção dos procedimentos. O repita é utilizado para as demais figuras. Por fim é importante ressaltar que na construção do triângulo e do pentágono os alunos percebem que uma das propriedades da figura é dividir 360 (área da circunferência) pelo número de lados que a figura possui. O resultado desta divisão caracteriza o grau que o ângulo deve possuir na composição da figura.

Após apresentar os referidos conceitos utilizando a linguagem Logo, os alunos trabalham diretamente com o Mindstorms (vide vídeos abaixo).

No primeiro vídeo é possível perceber que os alunos inserem dentro de uma estrutura de repetição dois objetos, o primeiro objeto possibilita o robô traçar os lados do quadrado, o segundo proporciona ao mindstorms rotacionar 90º.

O segundo vídeo apresenta o Mindstorms ev3 trançando um quadrado.

Já o terceiro apresenta os alunos interagindo fortemente com Mindstorms.

Por fim, é importante salientar que estou a disposição de todas as escolas do Brasil para realizar apresentações aos alunos, esta apresentação é classificada como um dia diferente da matemática na escola. Basta agendarmos e equalizarmos a forma de deslocamento, que um dos pesquisadores do LabInov vai até a escola.

Marília Gabriela de Souza Fabri

Contato: fabri@utfpr.edu.br

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 e projeto de software x Pentágono Wars

Posted in gestão de projetos, Introdução a Engenharia de Software, processo de produção de software on August 21, 2013 by José Augusto Fabri

Pessoal,

No filme, aquilo que aconteceu com o tanque acontece com cerca de 2/3 dos projetos de software. Problemas na definição do escopo do projeto.

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

Várias formas de especificação de um requisito de software

Posted in gestão do conhecimento, Introdução a Engenharia de Software, processo de produção de software on May 21, 2013 by José Augusto Fabri

Existem diversas formas de se especificar um requisito funcional. Neste post apresento algumas.

Requisito a ser especificado: Efetuar Matricula

a) Linguagem natural

O Aluno se dirige a Secretaria Acadêmica munido dos documentos pessoais e solicita a sua matricula em um determinado curso. A Secretaria Acadêmica confere os documentos do Aluno, conforme estabelecido em seu protocolo. A Secretaria Acadêmica efetua a matricula do Aluno no curso solicitado. A Secretaria Acadêmica encaminha o Aluno para a Tesouraria. O Aluno realiza o pagamento da matricula. A Tesouraria emite o recibo de pagamento para o Aluno. O Aluno retorna a Secretaria Acadêmica e apresenta o recibo. A Secretaria Acadêmica confirma a matricula do Aluno e emite o comprovante de matricula.

b) Caso de Uso

caso de uso - esp2

Especificação do Caso de Uso

UseCase: Efetuar Matricula
Sumário: Possibilitar que o aluno, assim que aprovado no processo de seleção (ENEM ou vestibular tradicional) realize sua matricula.
Atores:  Aluno, Secretaria Acadêmica, Tesouraria
Pré-Condições: Aluno aprovado no processo de seleção.
Fluxo Normal: 
1 - Aluno entrega documentação na Secretaria Acadêmica.
2 - Secretaria Acadêmica confere documentação.
3 - Aluno preenche formulário de matricula.
4 - Secretaria Acadêmica solicita que Aluno realize o pagamento da taxa de matricula.
5 - Aluno acessa a Tesouraria para pagamento da taxa de matricula.
6 - Tesouraria entrega recibo para Aluno.
7 - Aluno retorna a Secretaria Acadêmica para efetivar matricula.
8 - Secretaria Acadêmica efetiva a matricula.
9 - Secretaria Acadêmica entrega comprovante de matricula para o aluno.
Fluxo Alternativo: 
2.a - Documentação do aluno incompleta.
2.r - Secretaria Acadêmica solicita ao Aluno que apresente a documentação completa para efetuar matricula.
3.a - Aluno não realiza o pagamento.
3.r - Secretaria Acadêmica não efetiva matricula do aluno.

c) Diagrama de Sequência

diagrama de sequencia

d) Diagrama de Fluxo de Dados

dfd

e) Mapa Conceitual

mapa conceitual  - funcionalidade esp 4

f) Mapa Mental

mapa mental - funcionalidade

É possível estabelecer qual é a melhor forma de especificação?

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

Iteração de projeto ou de produto?

Posted in Ensino de engenharia de software, gestão de projetos, Introdução a Engenharia de Software on October 10, 2012 by José Augusto Fabri

A iteração é uma fatia de tempo definida dentro do projeto em que a equipe de desenvolvimento entrega uma versão estável e executável do produto (em nosso caso – um software). Além da entrega da versão, a iteração prevê também que a equipe disponibilize toda a documentação de apoio, scripts de instalação ou similares, necessários para usar a referida versão. É importante salientar que o executável é demonstrável, permitindo que a equipe apresente o real progresso do projeto aos stakeholders. O objetivo da iteração é obter críticas sobre o trabalho de modo que se possa melhorar compreensão do que necessita ser feito durante a execução (do restante) do projeto. Saliento que a iteração é construída com base nos resultados da iteração precedente, e reflete a um incremento de produto. As iterações possuem um marco definido no cronograma.

Eu, particularmente, classifico uma iteração em 2 tipos.

  • Iteração de projeto (ou pré-iteração): momento em que a equipe de desenvolvimento se reúne para verificar se os artefatos gerados durante a execução do projeto estão consistentes. Por exemplo: a) os pacotes de trabalho estabelecidos na EAP estão elencados no cronograma. b) o processo para a produção foi contemplado durante o desenvolvimento dos artefatos. c) o tempo estabelecido (previsto) para o desenvolvimento do trabalho foi respeitado. d) é necessário (re)planejar alguma fase do projeto. A iteração de projeto tem como objetivo estabilizar (parcialmente ou totalmente) um conjunto de artefatos. Perceba que este tipo de iteração não prevê necessariamente a entrega de um produto executável e sim artefatos que demonstre o progresso da equipe para os stakeholders.
  • Iteração de produto: Este tipo de iteração prevê a entrega de um produto executável, juntamente com todos os artefatos de projeto gerados durante a execução do processo. O produto entregue é estável e utilizável, neste caso ele deve gerar (ou aumentar) o valor agregado para o cliente.

Quando utilizar a iteração de projeto e quando utilizar a iteração de produto?

A de projeto pode ser utilizada pela equipe de desenvolvimento para verificar se o projeto está caminhando como o planejado. É interessante que este tipo de iteração seja sistematizada a aconteça com certa freqüência.

A de produto deve ser utilizada quando novas versões executáveis do produto são estabilizadas. Ela pode acontecer em uma freqüência menor se comparada com a primeira. Importante: Este tipo de iteração também deve ser sistematizada e demarcada no cronograma de execução do projeto.

Para finalizar, questiono: Como desenvolver uma boa iteração (de projeto ou de produto)?

Abraços

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

Dica: Video-Aulas sobre Linguagem C

Posted in Ensino de engenharia de software, Introdução a Engenharia de Software on September 18, 2012 by José Augusto Fabri

Pessoal, compartilho com vocês um link que possui uma série de vídeo-aulas sobre a linguagem C. Vale a pena dar uma olhada.

Abraços

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

Follow

Get every new post delivered to your Inbox.

Join 42 other followers