segunda-feira, 24 de setembro de 2012

Avaliação I Unidade - Analise e Nodelagem de Dados

Avaliação Individual
DATA: 27.09.2012
  • Diagrama de Caso de uso 
  • Diagrama de Atividades 
  • Diagrama de Componentes 
  • Diagrama de Colaboração 
  • Diagrama de estados 
  • Diagrama de Implantação 
  • Gestão de Projetos (introdução, elaboração e análise)

Avaliação em Equipe
DATA: 28.09.2012
  • Entrega escrita e digital do documento de visão (Metodologia usada, documento de requisitos, documento de cados de uso e descrição de casos de uso, etc.)
  • Apresentação do trabalho
Baixar material de apoio a I unidade (clique aqui).

aulas de Sistemas de Informação


Segue link de material interessante para apoio às aulas de Sistemas de Informação: http://www.cederj.edu.br/videoaulas/
 
Obs.: O material é de domínio público.

Atc,
 

Saulo Correa PeixotoPerito CriminalSSP-BA/DPT/CRPT-Jequié((73) 8849-1039 
Ê
(73) 3527-8834*saulopeixoto@hotmail.com

sexta-feira, 22 de junho de 2012

Resultado das Avaliações Individuais da II unidade - 2a chamada


ATENÇÃO:
Alunos que fizeram segunda chamada da Avaliação Individual da II Unidade das disciplinas:



  • ENGENHARIA DE SOFTWARE II
  • ANALISE E MODELAGEM DE SISTEMAS II
  • ANALISE E MODELAGEM DE SISTEMAS I


Assim que eu receber suas provas, atualizo as notas.

NA DÚVIDA, ESTUDE PARA A VERIFICAÇÃO FINAL!

As finais serão iniciadas na terça feira, de acordo com o calendário da FTC.

Boa sorte a todos.

quinta-feira, 21 de junho de 2012

Parabenizações as apresentações de TID I, II e III.

Fiquei, particularmente, muito contente com a qualidade das apresentações de todos os T.I.D.´s.

Obvio que alguns abordaram (quando) muito superficialmente a questão central do tema: "Como a computação pode ajudar as energias sustentáveis". Entretanto o ocorrido não desabona o resultado das pesquisas. 

Tenho convicção de que muitas das pesquisas apresentadas, com roupagem adequada, pode ser apresentada em congressos e transformados em artigos e trabalhos de conclusão de curso.

PARABÉNS A TODOS !
















quarta-feira, 20 de junho de 2012

Assuntos e Datas da Verificação Final


Disciplina _______________________________________ Data             

4ºSEM. Engenharia de Software II _________________ 27-06-2012

Assuntos: Processos de Software, Reengenharia, Gerencia de configuração, Desenvolvimento Distribuído de Software, Refatoração, Manutenção.

1ºSEM. Introdução a Sistemas de Informação _______ 28-06-2012

Assuntos: Conceito de dados, informação e conhecimento, Classificação dos Sistemas, Recursos e Tecnologias dos sistemas de informação.

5ºSEM. Analise e Modelagem II ____________________ 26-06-2012
6ºSEM. Analise e Modelagem II ____________________ 26-06-2012

Assuntos: Diagramas da UML (todos), Modelagem do Comportamento do Sistema, Introdução, Elaboração e Analise de Gestão de Projetos. 

4ºSEM. Analise e Modelagem I _____________________ 29-06-2012

Assuntos: Visão geral da modelagem aplicada ao processo de desenvolvimento de software, Diagramas da UML (uso, atividade, classe, estado, sequencia, componentes e implantação)


3ºSEM. Engenharia de Software I __________________ 29-06-2012

Assuntos: Processos de Software, Engenharia de Requisitos, Verificação e Validação, Teste de software, Métricas, Manutenção de Software.


BOA SORTE A TODOS!

quinta-feira, 14 de junho de 2012

Resultado das Avaliações da Unidade

Caros alunos, favor conferir sua caderneta eletrônica.

Parabéns à aqueles que foram aprovados sem necessidade de verificação final.

Para aqueles que, eventualmente, precisem da Verificação Final de Aprendizagem, breve será postado os assuntos por disciplina bem como as datas das avaliações.

Até breve e boa sorte a todos.

sexta-feira, 25 de maio de 2012

Avaliações 2012.1 - UNIDADE II

Atenção: as datas das avaliações podem ser mudadas em virtude das avaliações do VMD.
Avaliação VMD: 01/06/2012
Feriados em Junho: 07,13 e dia 24.

Resumo

Disciplina________________________________________AI_______AG
4ºSEM Engenharia de Software II _________________ 30/05/12 06.06.12
1ºSEM Introdução a Sistemas de Informação _______ 31/05/12 14.06.12
5ºSEM Analise e Modelagem II ____________________ 05/06/12 29.05.12
6ºSEM Analise e Modelagem II ____________________ 05/06/12 29.05.12
4ºSEM Analise e Modelagem I _____________________ 08/06/12 18.05.12
3ºSEM Engenharia de Software I __________________ 11/06/12 18.06.12
3ºSEM Trabalho Interdisciplinar Dirigido I ______ 20/06/12 
TEMA: COMO A COMPUTAÇÃO PODE AJUDAR AS ENERGIAS SUSTENTÁVEIS.




Detalhe

Analise e Modelagem de Sistemas I - 4º semestre
  • Avaliação Individual (08/06): classe, estado, sequencia. 
  • Avaliação Grupo (18/05): classe - concluído 
Engenharia de Software II - 4º semestre
  • Avaliação Individual (30/05): gerencia de configuração, DDS 
  • Avaliação Grupo (06/06): refatoração, manutenção (até três pessoas)
Analise e Modelagem de Sistemas II - 6º semestre
Analise e Modelagem de Sistemas II - 5º semestre

  • Avaliação Individual (data): 05/06/2012 
  • Modelagem do comportamento do Sistema 
  • Padrão para atribuir responsabilidades 
  • Gestão de projetos 
  • Diagramas da UML (uso, classe, atividade) 
  • Avaliação Grupo: 
  • 28/05/2012 (entrega dos projetos) - concluído 
  • 29/05/2012 (apresentações) - concluído 
Introdução a SI - 1º semestre
  • Avaliação Individual (31/05): 
  • Sistema de informação manual x computadorizados 
  • Recursos e Tecnologias dos sistemas de informação 
  • Avaliação Grupo (14/06): 
  • ERP. Dividir a sala em três equipes; Pesquise na internet um sistema ERPs e apresente em sala (não pode haver repetição de ERPs ). Com base nas características dos ERP’s, já estudados, visite uma empresa em sua cidade, faça levantamento das necessidades desta empresa e justifique tendo como base a literatura especializada se a empresa precisa de um ERP ou não levando em consideração a competitividade empresarial. 
Engenharia de Software I - 3º
  • Avaliação Grupo (18.06) (equipe com até três alunos):
  • Teste de software, Métricas (objetivo, motivação, definição, papeis, plano, tendência, etc.)
  • Avaliação Individual (11.06):
  • Introdução, Elaboração e Analise de Gestão de Projetos , manutenção
TID I - 3º Avaliação Individual:
  • (Banca de avaliação: Antônio Luís, Rômulo, Morais).
  • Apresentação dos projetos (20/06) : 

domingo, 15 de abril de 2012

MODELAGEM DE SOFTWARE


Pessoal, como a UML tem uma importância impar para o desenvolvimento das disciplinas Analise e Modelagem e Engenharia de Software - disciplinas que ministro, resolvi em tempo, disponibilizar aos interessados, mais um material complementar de estudo: o conteúdo abaixo.

Não se esqueçam de dar ênfase nos estudos sobre histórico da UML, na especificação da UML 2, na classificação quanto a organização da UML 2 e na definição dos Diagramas da UML 2 pois o domínio desses assuntos podem ajuda-los nas avaliações. 

Bons estudos e boa sorte.

MODELAGEM DE SOFTWARE

O crescimento vertiginoso dos softwares nas ultimas décadas teve, crescimento foi acentuado na década de 1990 com o início da massificação da tecnologia onde o número de novos softwares aumentou e ocasionando o surgimento de uma variedade muito grande de formas de modelagem para os sistemas orientados a objeto. Todavia, para se construir um software de qualidade são necessários grandes esforços e muita experiência. A esse respeito Silva e Videira (2001) afirmam:
Fazer software não é uma tarefa fácil. Fazer software de qualidade é ainda mais difícil. A generalidade dos resultados obtidos ao longo do tempo têm sistematicamente apresentado padrões de baixa qualidade, de custos e prazos completamente ultrapassados. (SILVA; VIDEIRA 2001, p.27)

Nesse sentido, com a necessidade de criar processos padronizados para o desenvolvimento de software, que surgiu o UML por volta de 1996 unificando as notações e diagramas. A UML (Unified Modeling Language ou Linguagem Unificada de Modelagem, em português) é uma linguagem visual para a modelagem de sistemas orientados a objeto, permitindo uma melhor visualização padronizada de um sistema.

A esse respeito Silva e Videira (2001) definem:

A ênfase do UML é na definição de uma linguagem de modelação standard, e, por conseguinte, o UML é independente das linguagens de programação, das ferramentas CASE, bem como dos processos de desenvolvimento. (SILVA; VIDEIRA 2001, p. 143)

A evolução da UML desde a sua criação até o ano de 2002 pode ser melhor visualizado a partir da análise da Figura abaixo.

Evolução da UML. 
Fonte: Adaptado de http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/uml/historia_uml/historia_uml.htm


Como principais objetivos da UML destacam-se: simplicidade, especificação, documentação e estruturação. 

Segundo Silva e Videira (2001, p.145) os tipos de diagramas da UML podem ser classificados, destacando-se: os Diagramas de Casos de Uso; Diagramas de Classes e de Objetos; Diagramas de Comportamento. Os Diagramas de Comportamento se subdividem ainda em Diagramas de Estados; Diagramas de Atividades e Diagramas de Colaboração. E, por fim os Diagramas de Arquitetura são classificados como Diagramas de Componentes e Diagramas de Instalação.

A especificação de UML é composta por quatro documentos: infra-estrutura de UML(OMG, 2006), superestrutura de UML (OMG, 2005c), Object Constraint Language (OCL) (OMG, 2005a) e Intercâmbio de Diagramas (OMG, 2005b). 


  • Infra-estrutura de UML: O conjunto de diagramas de UML constitui uma linguagem definida a partir de outra linguagem que define os elementos construtivos fundamentais. Esta linguagem que suporta a definição dos diagramas é apresentada no documento infra-estrutura de UML.
  • Superestrutura de UML: Documento que complementa o documento de infra-estrutura e que define os elementos da linguagem no nível do usuário.
  • Linguagem para Restrições de Objetos (OCL): Documento que apresenta a linguagem usada para descrever expressões em modelos UML, com pré-condições, pós-condições e invariantes.
  • Intercâmbio de diagramas de UML: Apresenta uma extensão do metamodelo voltado a informações gráficas. A extensão permite a geração de uma descrição no estilo XMI orientada a aspectos gráficos que, em conjunto com o XMI original permite produzir representações portáveis de especificações UML.


Quanto a organização dos diagramas da UML 2.0 pode-se classifica-los em Diagramas Estruturais, Diagramas de comportamento e diagramas de interação.  Veja a imagem abaixo:

Figura: Organização dos diagramas de UML 2


Diagramas Estruturais
Diagramas Comportamentais
Diagramas de Interação

Thânia Clair de Souza Vargas (http://www.lavailama.com.br/arquivo/2.pdf) descreve cada um dos 13 diagramas na UML 2 e diz "Um diagrama é uma representação gráfica de um conjunto de elementos (classes, interfaces, colaborações, componentes, nós, etc) e são usados para visualizar o sistema sob diferentes perspectivas. A UML define um número de diagramas que permite dirigir o foco para aspectos diferentes do sistema de maneira independente. Se bem usados, os diagramas facilitam a compreensão do sistema que está sendo desenvolvido". 


Embora a UML tenha oferecido inúmeros e inquestionáveis benefícios procurando padronizar, simplificar, especificar, documentar e estruturar os processos de desenvolvimento de software, independente da linguagem de programação ou plataforma de desenvolvimento, a UML ainda deixa algumas lacunas como o problema relacionado à semântica, onde desenvolvedores distintos podem diagramar um mesmo sistema de formas diferentes. Na essência do princípio do UML, um mesmo sistema deveria ser diagramado de apenas uma forma, seja pelo desenvolvedor A, seja pelo desenvolvedor B. Todavia esse objetivo ainda não é possível para o UML atual. Talvez, pensando nisso os idealizadores do UML deixaram espaço para que no futuro a questão da semântica do UML seja resolvida



ENGENHARIA DE SOFTWARE


Somente na década de 1968 na  NATO Conference on Software Engineering (Conferência sobre Engenharia de Software da OTAN) a Engenharia de Software ganhou destaque e passou a ser um termo oficialmente usado. Historicamente os primeiros passos do que é entendido como Engenharia de Software na atualidade foi na década de 1960.

Nesse sentido, Mazzola (2010, p. 06) afirma que “engenharia de software é um 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”. Já para Pressman (2006) a engenharia de software ocorre como resultado da engenharia de sistemas. A esse respeito ele diz:

Antes que o software possa ser submetido à engenharia, o “sistema” no qual ele reside deve ser entendido. Para conseguir isso, o objetivo geral do sistema deve ser determinado: o papel do hardware, software, pessoal, base de dados, procedimentos e outros elementos do sistema devem ser identificados; e requisitos operacionais devem ser conseguidos, analisados, especificados, modelados, validados e gerenciados. Essas atividades são à base da engenharia de sistemas. (PRESSMAN, 2006, p. 99).

Todavia, para a elaboração e implementação de um software ou programa de computador é necessário uma seqüência de práticas. Essa seqüência é conhecida como Processo de Software, ou Processo de Engenharia de Software e englobam as atividades de especificação, projeto, implementação, testes e caracterizam-se pela interação de ferramentas, pessoas e métodos.
Dentre várias possibilidades para o desenvolvimento de software, o desenvolvimento tradicional e o desenvolvimento ágil merecem atenção especial. Teles (2006, p.30) define “desenvolvimento tradicional” ou “clássico” quando os projetos de software são “baseados no modelo cascata” ou quando estão muitos próximos desse modelo como o RUP (Rational Unified Process). Esse modelo clássico foi o primeiro processo de desenvolvimento de software publicado (PRESSMAN, 2006).
Segundo Teles (2006) o modelo tradicional, sugere que a construção do programa de computador ou software deve seguir uma linha seqüencial ou fases: Análise onde o desenvolvedor procura buscar e entender as necessidades; Design é a projeção da arquitetura tendo como base a análise; Implementação que é quando a equipe define a arquitetura e as diversas partes do programa de computador; Teste que ajuda a identificar e verificar se o sistema atende aos requisitos específicos definidos pelo usuário; Implantação que é quando o sistema é colocado em operação; Manutenção que ocorre até o final da vida ou seja, até quando o software estiver em operação poderá sofrer alterações.

Para Sommerville (2003), como ilustrado na Figura 08 o ciclo de vida clássico do software tem cinco fases: definição de requisitos, projeto do software, implementação e teste unitário, integração e teste do sistema, operação e manutenção.


Fases do modelo de Desenvolvimento Clássico
Fonte: Adaptado de Sommerville (2003)


O Modelo em Cascata, também chamado de Ciclo de Vida Clássico, é um processo recomendado quando os requisitos de um problema são razoavelmente bem compreendidos, ou seja, quando o trabalho flui da comunicação até a implantação de um modo linear.O Modelo em Cascata, conforme ilustrado na figura 1, sugere uma abordagem sistemática e seqüencial para o desenvolvimento de softwares.
Fonte: http://julianakolb.com/2012/02/01/o-modelo-em-cascata/


Modelo em Cascata.
Fonte: PRESSMAN (2010).



Para o modelo de Desenvolvimento Ágil, Teles (2006, p. 31) refere-se ao desenvolvimento interativo ou espiral, de forma que todas as fases descritas no modelo cascata “sejam executadas diversas vezes ao longo do projeto, produzindo círculos”.

sexta-feira, 13 de abril de 2012

Trabalho Interdisciplinar Dirigido I

Atividade

Construir, individualmente, um artigo relacionando ao projeto de sua equipe tendo como base os documentos abaixo:
  • artigo - As energias renová veis e o futuro
  • artigo - Crise financeira energia e sustentabilidade no Brasil
  • artigo - Um futuro com com energia sustentável iluminando o caminho
_____________________
Obs1. para baixar os artigos acima acesse a pasta da disciplina  Trabalho Interdisciplinar Dirigido I , clicando aqui.

Obs2. usar as normas da ABNT para produção de documentos acadêmicos
(veja mais aqui http://www.firb.br/abntmonograf.htm)

Obs3. Entregar a atividade por email ( marcosmoraisdesousa@gmail.com ) e impresso até: 20-04-2012.

Boa sorte e bons estudos.

Fiquem com Deus.


quinta-feira, 12 de abril de 2012

Sistemas de Informação é a profissão ideal para mim?


Sistemas de Informação

Bacharelado 



É a administração do fluxo de informações geradas e distribuídas por redes de computadores dentro de uma organização. O bacharel em Sistemas de Informação planeja e organiza o processamento, o armazenamento e a recuperação de informações e disponibiliza esse material para usuários. Cria, adapta e instala programas para facilitar as consultas e administra redes de computadores. Nas redes internas das empresas e outras instituições e na internet, monta e gerencia bancos de dados e ainda desenha páginas de sites, que devem ser funcionais e elegantes, trabalho que exige versatilidade e criatividade. Pode atuar em qualquer tipo de empresa, pública ou privada, de quase todos os setores - comércio, indústria ou de serviços. É fundamental que esse profissional tenha domínio do idioma inglês, já que praticamente todos os programas o utilizam.

O mercado de trabalho

Esse é um mercado que vive uma demanda constante em razão da popularização da internet e do uso crescente dos sistemas de tecnologia da informação. Apesar disso, os bacharéis sofrem com a falta de obrigatoriedade de diploma para exercer a profissão. "Qualquer bom autodidata pode enfrentar o mercado sem preocupação. Mas tanto ele como o profissional formado devem estar atentos à qualidade de sua mão de obra. O próprio mercado está regulando isso", alerta Marco Rodrigo Costa, coordenador do curso da PUC Minas. O bacharel encontra trabalho na área de suporte técnico (hardware e software), na criação e monitoramento de programas de segurança da informação, manutenção e monitoramento de bancos de dados até como analistas e programadores. Empresas especializadas como Totvs, IBM, Microsoft e Google são tradicionais empregadoras. "Mas as pequenas empresas, com projetos menores, também estão funcionando a pleno vapor e contratando. Elas atendem diretamente o cliente final onde um software será instalado, ou funcionam como prestadoras de serviço às grandes empresas", afirma o professor Costa. A Região Sudeste concentra as oportunidades de trabalho, mas Sul e Nordeste estão crescendo e demandando mais profissionais. 

Salário inicial: R$ 1.105,71 (analista de sistemas; fonte: Sindicato dos Empregados das Empresas de Processamento de Dados Rio de Janeiro).

O curso

A exigência básica para quem vai ingressar no curso é gostar muito de matemática. Cálculos e raciocínio lógico acompanham o aluno durante os quatro anos de curso. Entre as matérias específicas estão linguagem de programação, bancos de dados, sistemas de informação, redes de computadores e inteligência artificial. Estágio e um projeto de conclusão de curso são obrigatórios. Fique de olho: Algumas faculdades se voltam mais para os aspectos administrativos da profissão, outras, para os de computação. Outras instituições, ainda, oferecem licenciatura. Na Ufra, em Belém (PA), o curso é de Informática Agrária. 

Duração média: quatro anos. 

Outros nomes: Adm. de Sist. de Inf.; Análise de Sist.; Análise de Sist. (sist. de inf.); Análise de Sist. e Tecnol. da Inf.; Análise de Sist. e Tecnol. da Inf. (sist. e tecnol. da inf.); Análise de Sist. e Tecnol. da Inf. (tecnol. da inf.); Comput.; Comput. (sist. de inf.); Inf. - Sist. de Inf.; Inform.; Inform. (análise de sist.); Inform. Agr.; Sist. de Inf. (análise de sist.); Sist. de Inf. (gestão de redes); Sist. de Inf. (inform.); Tecnol. da Inf. (web designer).

O que você pode fazer

Desenvolvimento de softwares

Projetar e desenvolver sistemas, bem como tratar da estética e da funcionalidade de sites em empresas de todos os setores.

Ensino

Lecionar em escolas públicas ou particulares de Ensino Fundamental, Médio e técnico ou em faculdades.

Fluxo de informação

Modernizar e agilizar o processo de comunicação de uma empresa, criando, adaptando e instalando programas.

Logística

Planejar e administrar rotas, sistemas de armazenagem e o tempo de entrega de produtos.

Marketing e vendas

Gerenciar a comercialização de equipamentos, periféricos e softwares.

Modelagem

Construir modelos matemáticos que simulem situações reais, a fim de antever e prevenir problemas.

Suporte técnico

Fazer a manutenção de sistemas e de redes de computadores de uma organização.

Disponível em: http://guiadoestudante.abril.com.br/profissoes/ciencias-exatas-informatica/sistemas-informacao-602514.shtml   Acesso em: 12/04/2012 10h57

terça-feira, 10 de abril de 2012

Introdução das premissas dos controles de versão

Introdução sobre algumas premissas sobre controles de versão. Muito útil para designers e iniciantes na área




Parece ser óbvio, mas muitos desenvolvedores desdenham de ter controle total sobre o código gerado no desenvolvimento. Muitos, por trabalharem sozinhos, entendem que não precisam manter um certo nível de organização do seu código exatamente porque talvez, somente eles, o verão.

Quem nunca ficou horas tentando debugar um código que você mesmo fez, mas não lembrava o que uma determinada função fazia… Esse código pode ter sido por você de madrugada, quando você estava pingando de sono, ou pior, bêbado… Vai saber…

Controlar seu código fonte deve ser uma premissa. Um princípio. Se você acha que o undo do seu editor predileto salva sua vida, imagina ter um undo do seu projeto inteiro. Imagine você ter a história de edição de cada um dos arquivos do seu projeto.

Os princípios abaixo servem para qualquer tipo de controle de versão que conhecemos hoje: GIT, SVN, Mercurial etc.

Branchs e trunks


A última revisão, a mais atual, normalmente é chamada de HEAD. Existem momentos onde teremos vários HEADs porque o projeto tem vários BRANCHES.

Um branch é uma cópia do projeto. Cada branch pode ser editado e evoluído independentemente.

Imagine que exista a versão de produção que é aquela que está no ar. É a versão o usuário está utilizando. É importante que nós não modifiquemos esta versão porque alguém pode commitar algo errado, quebrar tudo e o usuario reclamar. Por isso nós precisamos de outro ambiente, é aí que criamos um branch de desenvolvimento, onde podemos fazer o que quisermos ali, sem afetar o branch principal.


É muito útil criarmos novos trunks (tronco) quando precisamos fazer modificações drásticas de novas features, resolver bugs ou modificar layout.


Exemplo: imagine que você esteja trabalhando em uma nova feature, em um branch específico. O cliente liga e diz que encontrou um bug, originado de uma modificação feita na semana passada. Você sai do branch da nova feature e cria um novo branch. Este novo branch tem a cópia do código do branch de produção, que é o que o cliente está vendo. Você resolve o bug neste novo branch. Quando resolver o bug, você move as modificações deste branch para o branch de produção. Isso tudo sem ter que subir as modificações incompletas da nova feature que você estava trabalhando anteriormente.

Versionamento


Versionamento é uma das características mais básicas do controle de código. Quando comecei a desenvolver, normalmente eu trabalhava guardando pastas com nomes do tipo nomeDoProjeto-v1, nomeDoProjeto-v2 etc… Estas pastas guardavam apenas as versões com grandes modificações de projeto… algo como mudança geral de layout, uma feature importante ou algo do tipo. O problema são as pequenas edições… Quando juntamos as pequenas modificações, temos uma grande modificação. É muito provável que se você perder essa versão, você não se lembre de todas as pequenas modificações feitas e isso é um problemão.


Toda vez que o desenvolvedor termina uma determinada tarefa, ele geral um commit que por sua vez gera um ponto de referência, uma versão, daqueles arquivos modificados. Cada commit gera uma versão do seu código. A graça é que se você tem versões do código, você tem praticamente um undo gigante do seu projeto… Se depois de uma determinada modificação seu projeto começou a dar pau, você consegue entender com a história do seu versionamento – o famoso log – a partir de onde exatamente o problema foi iniciado.


Logs


Quando cada revisão é comitada, o desenvolvedor pode ou não adicionar uma mensagem explicando o que ele fez naquela tarefa. É importante que essa mensagem seja clara e rica em detalhes, mas não um texto gigante, apenas o suficiente para que você mesmo ou outras pessoas envolvidas entenda o que aquela submissão significa.


Diffs


Diffs são sensacionais. Imagine que você queira comparar duas versões de um mesmo arquivo para descobrir as linhas modificadas. Fazer um diff entre as versões do arquivo te possibilita encontrar exatamente onde está o erro e o melhor, quando juntamos com o Log, podemos saber exatamente o porque a pessoa incluiu aquela linha ou aquele código, e o melhor, quem fez aquela alteração.


Rollback


Mantendo uma história de commits, você tem pontos de volta na história do arquivo, possibilitando a facilidade de voltarmos para antes de alguma modificação. Você pode voltar a partir de um commit, por exemplo. Se o sistema ou o arquivo passou a dar problema depois de uma determinada revisão, é simples de você voltar o arquivo para a versão daquele determinado commit.


Edição multiusuário e merge


Isso é uma maravilha. Me lembro de equipes inteiras perdendo arquivos e partes de código porque dois membros abriam o mesmo arquivo para editar. Obviamente nunca, mas nunca dava certo. O que faziam que equipes inteiras criassem mecanismos da idade das pedras para avisar o resto do pessoal que determinado arquivo estava sendo usado. O trabalho em equipe remotamente nunca era possível. Com um controle de versão isso muda. Qualquer um pode editar qualquer arquivo a qualquer hora.

O sistema de controle de versão compara as modificações feitas no arquivo pelos dois (ou mais) desenvolvedores e junta os códigos automaticamente. Muito bonito, hein?

E quando os desenvolvedores modificam a mesma linha de código? Aí o controle de versão gera um conflito, esse conflito se resolve deve ser resolvido pelo desenvolvedor que executou o segundo commit. Funciona assim:

1. Dois desenvolvedores abrem o mesmo arquivo para editar.

2. Quando os desenvolvedores terminam, eles geram um commit. Se os desenvolvedores fizeram edições em partes diferentes do arquivo, por exemplo, um no topo do arquivo e o outro no final, o sistema junta os códigos fazendo um merge, e criando um arquivo atualizado com as duas revisões.

3. Se sistema percebe que os desenvolvedores fizeram as modificações na mesma linha, o sistema gera um conflito.

4. O conflito é resolvido pelo segundo desenvolvedor que comitar o código. Ou seja, o cara comitou a modificação dele primeiro que você. Quando você comitar a sua modificação, o controle de versão avisará que há um conflito em uma parte do seu código. O conflito é resolvido mostrando algo mais ou menos assim:
1
2
3
4
5
6
7
{
<<<<<<< HEAD:estilo.css
   color: red;
=======
   color: blue;
>>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:estilo.css
}

A primeira linha mostra a sua linha. A segunda linha mostra a modificação do outro dev. Aquele hash maluco no final é a identificação do commit do outro dev.

Bom, nesses casos você precisa ver qual código é o correto, e isso as vezes inclui ir perguntar para o outro brother que diachos é aquela coisa que ele fez. Tudo na camaradagem… as vezes.


Concluindo


Estas são algumas premissas sobre controles de versão utilizados hoje em dia. Os controles de versão mais usados hoje são o GIT, SVN e Mercurial. Cada um deles tem comandos diferentes para lidar com as premissas acima e cada um deles faz o controle de sua forma particular. Mesmo assim todos trazem as vantagens que citamos no artigo. Mesmo que você trabalhe sozinho, é recomendado que você trabalhe com controle de versão. Assim você guarda seu projeto de forma segura e tem um histórico das suas modificações durante o tempo. Boas práticas, my friend.




Por Diego Eis

Diego Eis criou o Tableless para disseminar os padrões web no Brasil. Como consultor já treinou equipes de empresas como Nokia, Globo.com, Yahoo! e iG. É palestrante e empreendedor.
Veja os outros posts de 



quarta-feira, 4 de abril de 2012

PodCast sobre XP

Para um maior aprendizado, recomendo que escutem e relatem os principais pontos do PodCast sobre XP a seguir:

Introdução ao agilcast e apresentação do Manifesto Ágil. 20:25, 18,7 MB.
Episódio 02 - Uma visão geral de Programação eXtrema (XP). 20:48, 19,1 MB.
Episódio 03 - Testes automatizados. 15:39, 14,7 MB.
Episódio 04 - Bancos de dados ágeis e refatoração de bancos de dados. 14:09, 19,2 MB.
Episódio 05 - Ensino de XP na universidade: a experiência do Sistema Cigarra com o Ministério da Cultura (participação especial: Gilberto Gil). 16:22, 15,7 MB.
Episódio 06 - Entrevista com Eduardo Teruiya, gerente de projetos PMP, sobre gerenciamento de projetos usando XP. 26:42, 24,3 MB.
Episódio 07 - Respondendo perguntas dos Ouvintes. 33:46, 30,9 MB
Episódio 08 - Debate sobre Banco de Dados e CMM. 25:01, 22,9 MB
Episódio 09 - Apresentação da ferramenta Selenium. 10:18, 9,44 MB
Episódio 10 - Uma visão geral de Scrum. 23:38, 22,7 MB
Episódio 11 - Padrões para introduzir novas idéias. 25:52 22,8 MB

Bons estudos, fiquem com Deus e boa sorte.

terça-feira, 3 de abril de 2012

Provas 2012.1 - UNIDADE I

Avaliações  



Caros colegas, está chegando a hora de nossas avaliações da Unidade I.
Fiquem alertas com relação as datas das avaliações indicadas abaixo.

Disciplina_________________________________ Data
Trabalho Interdisciplinar Dirigido I ______ avaliação contínua
Analise e Modelagem II ____________________ 10/04/2012
Introdução a Sistemas de Informação _______ 12/04/2012
Analise e Modelagem I _____________________ 13/04/2012
Engenharia de Software I __________________ 16/04/2012
Engenharia de Software II _________________ 18/04/2012

Importante: Não se prendam aos slides, estudem os assuntos pelos livros, internet, artigos e apostilas. O conteúdo das provas foi informado em sala de aula.

Não se prendam aos slides! Estudem!


Dicas e Assuntos para as avaliações:

Analise e Modelagem II ____________________ 10/04/2012
·      UML, Diagramas de sequencia, colaboração, estados, componentes, implantação, Processo de desenvolvimento de software e engenharia de Requisitos.

Introdução a Sistemas de Informação _______ 12/04/2012
·      Noções de sistemas de informação, princípios de sistemas de informação, Conceito de dados, informação e conhecimento, porque as empresas precisam de sistemas de informação, Teoria geral de Sistemas e Origem dos Sistemas, classificação dos Sistemas.

Analise e Modelagem I _____________________ 13/04/2012
·     UML, diagrama de caso de uso, diagrama de atividade e identificação de casos de uso.

Engenharia de Software I __________________ 16/04/2012
·     UML, Processos de Software, Engenharia de Requisitos, verificação e validação de software.

Engenharia de Software II _________________ 18/04/2012
·     Gestão de Qualidade, Processo de software, CMMI e MPS.BR,
ATIVIDADE 4 - Verificação de  Conhecimento ao MPS.BR e ATIVIDADE 5 - sobre MPS.BR e CMMI, Reuso de software, Reengenharia.


Fiquem com Deus, bons estudos e boa sorte.