Trabalho colaborativo a distância

Pessoal,

No vídeo abaixo apresento uma forma de trabalhar de forma colaborativa a distância.

O vídeo apresenta a idéia do Pair Programming, uma das práticas do eXtreme Programming, na qual:

a) existe uma interação síncrona.

b) e os colaboradores estão separados físicamente.

Você pode aplicar de forma colaborativa a distância:

a) o Pair Programming;

b) o Pair Use Case;

c) o Pair Diagrama de Classe;

d) o Pair Diagrama de Entidade e Relacionamento.

Espero ter colaborado.

por José Augusto Fabri

fabri@utfpr.edu.br

Arquitetura de software e UML

Arquitetura de software e UML

A arquitetura de software define quais componentes que irão compor as suas propriedades. A forma de relacionamento com os demais softwares e atores também fazem parte da arquitetura.

É possível construir uma tabela que compara alguns itens da arquitetura tradicional com a arquitetura de um software.

Tradicional (casa) Software
Fachada Interface
Interior (piso, pintura das paredes, tamanho dos cômodos) Dados (tabelas, arquivos)
Funcionalidades (formas de iluminação, automatização de portas e janelas, itens de segurança, aquecimento) Processos (funcionalidades ou requisitos funcionais)

Seguir um padrão arquitetônico é um fato extrema importância que deve ser levado em consideração no desenvolvimento de um software. Ao definir um tipo de revestimento da parede para o um determinado banheiro, você deve replicar o revestimento na totalidade da parede, salvaguardando alguns detalhes inerentes a decoração. O software segue na mesma linha, se você optar por implementar as funcionalidades seguindo o modelo de 3 camadas, você deve adotar o referido modelo como padrão para todas as funcionalidades (uma questão de coerência de desenvolvimento).

O que é o modelo 3 camadas?

O modelo 3 camadas é destinado as aplicações client-server amplamente utilizada no desenvolvimento de software. Esse modelo, quando adotado em uma arquitetura, pode gerar uma maior componentização, proporcionando assim um possível aumento do reuso dos artefatos codificados em um software. Uma maior componentização se traduz em um software mais limpo, fato este que facilita o seu entendimento e manutenção.

O modelo em questão é dividido em:

 

  • Camada de interface,
  • Camada de regras, negócio,
  • Camada de persistência.

 

  • Interface = formas de acesso.
  • Regras = Algoritmos para tratamento e processamento da informação/dados.
  • Persistência = Dados.

 

E a UML possui uma relação direta com o modelo 3 camadas?

Não. A UML é uma linguagem de modelagem, ela pode ser utilizada para especificar diversos tipos de padrões que podem ser instanciados em uma arquitetura de software, incluído o modelo em 3 camadas.

Vamos dar um exemplo.

Partimos do Caso de Uso: Armazenar Dados de Clientes

caso de uso - uml arquitetura

Utilizando o diagrama de sequência, podemos especificar o caso de uso de várias formas:

Forma 1 – O usuário manipula diretamente os dados.

seq1 - uml arquitetura

Forma 2 – O cliente acessa uma interface, informa os dados e os dados são persistidos no objeto cliente.

seq2 - uml arquitetura

Forma 3 – O cliente acessa uma interface, informa os dados, os dados são validados por meio de métodos inseridos na classe/objeto de Regras e, por fim, os dados são persistidos no objeto/classe cliente.

seq3 - uml arquitetura

A UML foi utilizada para especificar o mesmo caso de uso de 3 formas distintas.

Qual é correta?

Não existe uma forma correta, pois eu não sei nada sobre o seu documento de requisitos, não sei se você trabalhará em um modelo cliente-server e não sei qual tecnologia que você está imerso.

Arquitetura é Arquitetura e UML é UML.

Um abraço a todos.

por José Augusto Fabri.

 

Quais os diagramas são importantes na UML?

Uma excelente pergunta.

Antes de reponde-la é importante salientar que UML é uma linguagem de modelagem utilizada para especificar negócios e software.

A UML possui 9 diagramas

  1. Diagrama de caso de uso,
  2. Diagrama de classes,
  3. Diagrama de sequência,
  4. Diagrama de atividades,
  5. Diagrama de máquina de estados,
  6. Diagrama de comunicação,
  7. Diagrama de componentes,
  8. Diagrama de implantação,
  9. Diagrama de composição estruturada.

Enquanto engenheiro de software e com uma vasta experiência no mercado produtor de software posso garantir que a maioria dos projetos utilizam fortemente 3 diagramas.

Caso de uso: sua função é materializar (ou explicitar os atores) e as funcionalidades de um software ou processos de um negócio.

Diagrama de classes: Diagrama de grande importância, ele irá explicitar todas as classes que possibilitam a criação de objetos.

Diagrama de sequência: Utilizado na especificação de uma cena (ou caso de uso). Este diagrama possui na sua simbologia atores, objetos e a troca de mensagem entre esses. Este diagrama é criado de forma concomitante com o diagrama de classes, fato este que provê consistência entre eles.

E os demais?

Em meu ponto de vista você vai utilizar os demais quando necessitar de algo um pouco mais específico.

Fica a dica.

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

Definição genérica de processo

Pessoal, compartilho com vocês, por meio de uma aula, a definição genérica sobre processo. Antes de iniciar a aula distribua uma folha A4 para cada aluno. Leve para sala linha e tesoura.

Lembrando que …

Um processo é 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.

Boa aula a todos.

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

Curso de astah professional – pós – utfpr – parte 1

Pessoal,nas póximas 3 semanas estarei ministrando um curso de astah professional na Universidade Tecnológica Federal do Paraná – Campus Cornélio Procópio. O curso é destinado para os alunos da pós-gradução em tecnologia java.

Durante o curso irei gerar três posts, com o objetivo de disponibilizar a modelagem e exemplos utilizados no curso.

Segue a primeira parte da modelagem do software com o astah. Nela você pode encontrar o mapa mental delineando o escopo do produto, diagrama de fluxo de dados e o diagrama de entidade e relacionamento.

abraços e um bom trabalho a todos

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

Programando e contando

Desenvolva os algoritmos algoritmos abaixo:

1 – Comandos de decisão (lista).

2 – Comandos de repetição (lista).

3 – Lista 1 sobre vetores (lista).

4 – Lista 2 sobre vetores (lista).

5 – Lista 3 sobre vetores (lista).

Marque quanto tempo você levou para desenvolver cada exercícios de cada lista. Desenvolva a lista que você está aprendendo em sala de aula. 

Implemente todos os exercícios utilizando o visualG. Exemplos de programas utilizando o visualG podem ser encontrados neste arquivo.

Bom trabalho a todos

Um pouco de Sistemas Especialistas e Engenharia de Software

 

Os Sistemas Especialistas (SEs) são sistemas de automatizados capazes de representar e “raciocinar” sobre o conhecimento de um domínio específico, procurando resolver problemas ou aconselhar profissionais que tenham o poder de decisão.

Além do sucesso acadêmico e científico, os SEs têm sido a solução para muitos problemas na área comercial e industrial, com isso o número de empresas especializadas no desenvolvimento deste tipo de sistema vem crescendo aos poucos.

A relação entre processo de produção de software e sistemas especialistas, embora não pareça, é bastante íntima. No processo de automatização de um sistema especialista é necessário mapear, no mínimo, dois tipos requisitos:

1 – Requisitos funcionais: Por exemplo, um sistema especialista para análise de crédito deve armazenar os dados do cliente que está solicitando um empréstimo.

2 – Requisitos especialistas: Quais seriam as regras e fatos que possibilitam fornecer um empréstimo de valor x para um determinado cliente? 

Além do levantamento de requisitos, a automatização de tais sistemas deve ser projetada, codificada, testada, homologada e passar por um processo de implantação. Os atores que participam da automatização de um SE são:

Engenheiro de software: Responsável por executar as atividades do processo de produção;

Gerente de projetos: Responsável por planejar e controlar as atividades delineadas no projeto. Tempo, custo e prazo são pontos importantes a serem controlados.

Especialista do domínio. Responsável por fornecer o conhecimento para o sistema. Este conhecimento é construído pelo engenheiro do conhecimento. Por exemplo: Suponha que uma empresa desenvolverá um sistema especialista para área de medicina. Neste caso o especialista do domínio será um médico. Suponha também que no projeto do software foi estabelecido que o conhecimento do especialista do domínio será explicitado em Prolog. Fica sob a responsabilidade do engenheiro do conhecimento capturar o conhecimento junto ao especialista e explicitá-lo na linguagem em questão.

Outro ponto importante a ressaltar é que todo conhecimento de um sistema especialista está armazenado em uma base, em nosso caso a base de conhecimento. A inserção e manutenção deste conhecimento devem ser feitas pela interface de aquisição de conhecimento.  A união destes dois componentes deriva a subestrutura de armazenamento de um SE.

Além dos dois componentes apresentados no parágrafo anterior, todo sistema especialista possui uma máquina de inferência e uma interface com o usuário. A inferência refere-se a vários processos em que programas, de uma forma similar às pessoas, procuram chegar a conclusões, ou gerar novos conhecimentos a partir de fatos ou suposições. A interface com o usuário é o componente que permitirá a interação do usuário do sistema com o próprio sistema.   É por meio dela que o usuário poderá utilizar o conhecimento armazenado na BC e obter explicações referentes às decisões e as linhas de raciocínio que o sistema usa para alcançar uma conclusão. A união destes dois componentes deriva a subestrutura de consulta de um sistema especialista.

Uma área pouco explorada principalmente no contexto nacional. Um potencial imenso para solucionar problemas. Os sistemas especialistas podem se configurar com uma boa fonte de renda para empresas consolidadas ou para os jovens empreendedores. Pense nisso! Porém, lembre-se que para a automatização deste tipo de sistema você terá, no mínimo, que levantar requisitos do software e requisitos especialistas.

Você toparia este desafio?

Programando com um padrão de código

Faça a leitura do post: https://engenhariasoftware.wordpress.com/2008/09/30/a-qualidade-do-software-passa-pela-padronizacao-do-codigo-fonte/ 

Desenvolva os algoritmos abaixo. Desenvolva também os programas em JAVA (ou C) utilizando as técnicas de padronização de código, delimitadas pela Sun (http://java.sun.com/docs/codeconv/). Se optar por desenvolver em C, lembre-se que você terá adaptar o padrão de código.

Sugestão de trabalho: Por que não desenvolver o seu próprio padrão de código?

Bom divertimento:

Ah.. Lembre-se que a qualidade do software passa pela padronização do código.

1 – Faça um algoritmo que leia um vetor de 5 elementos, todos inteiros e imprima:
a) O maior número par;
b) O maior número impar;
c) O menor número par;
d) O menor número impar;
e) A média aritmética dos números;

2 – Desenvolva um algoritmo e posteriormente um programa na linguagem C que leia a nota de 20 alunos. Calcule a média das notas. Imprima as notas que estão acima da média.

3 – Faça um programa em C que armazene em um vetor de 12 posições, 12 números inteiros e, posteriormente, calcule a média dos números pares e dos números ímpares.

4 – Faça um algoritmo que leia um vetor de 5 posições e imprima os elementos ordenados na forma decrescente.

Aulas de engenharia de software

Hoje recebi a seguinte sugestão de um aluno: Professor, por que o senhor não posta suas aulas no blog? O senhor poderia disponibilizar, notas de aula, lista de exercícos ou resoluções de questões. Seria um importante espaço para a discussão dos alunos.

Acatei a sugestão e estarei criando nos próximos dias uma seção com este objetivo.

J. A. Fabri