Comparação Engenharia X Copa do Mundo

Aproveitando o clima de copa do mundo, resolvemos criar um artigo comparando a Engenharia de Software com a Copa do Mundo.

Se você, meu caro amigo leitor, leu alguns dos artigos do blog, saberá a funcionalidade da Engenharia de Software. Se você não leu nenhum artigo, essa é uma ótima oportunidade para melhorar seu conhecimento.

Como todos devem saber (pelo menos quem leu o artigo), engenharia de software é um processo para atender o cliente, e entregar um produto com qualidade atendendo as necessidades pré-estabelecidas.

Na copa do mundo, para uma seleção de futebol atingir o objetivo de ser campeão mundial (espero que seja o Brasil), ele deve possuir um planejamento estratégico intenso e concreto. Esse planejamento, às vezes é iniciado 4 anos antes do começo do torneio, ou seja: Quando acaba um torneio, são verificados os acertos e erros, e traçado uma nova estratégia para o próximo campeonato.

Na engenharia de software é exatamente igual. A única diferença é que na Engenharia, o cliente é único. Já na copa do mundo, o cliente é um país, onde todas as pessoas, por menos que gostem de futebol, dão a opinião a respeito do esporte.

A satisfação do cliente no recebimento do produto, tanto na engenharia, quando na copa, é a mesma. Felicidade e satisfação com um produto ou serviço realizado da forma correta, e atendendo as suas reais expectativas.

Vamos Brasil, rumo ao Hexa-Campeonato mundial de Futebol.

Read Users' Comments (1)comentários

Gerenciamento de Projetos - Huddle



Hoje vamos falar sobre uma ferramenta de gerenciamento de projetos on-line, chamada Huddle.

Para uma gestão organizada, torna-se necessária a criação de diversos tipos de documentos e artefatos. Alguns desses requisitos necessitam de revisores e controle de versões. Dependendo to tamanho do projeto, a quantidade de documentos torna-se enorme, fazendo com que haja brecha para desorganizações, e consequentemente falhas no sistema final.

Huddle é um sistema on-line que controla o fluxo de documentos e informações. Sua interface intuitiva faz com que o usuário se sinta a vontade para navegar pelas diversas funcionalidades. Através da ferramenta também é possível a troca de idéias em paralelo através de chats ou e-mails.

Para quem quer ter uma organização de documentos de projetos, e não quer dispor de muito dinheiro para comprar uma ferramenta, o Huddle é uma ótima opção. Ele é grátis para usar com apenas um projeto por usuário.

Esta é uma ferramenta interessante para quem está iniciando o estudo de engenharia de software e gostaria de aplicar os conceitos na criação de produtos com qualidade atendendo as expectativas do cliente.

Cadastramos um projeto, para verificarmos como seria o andamento da ferramenta, e nos pareceu muito interessante. Ele faz um gerenciamento eficaz, enviando e-mails de notificação para os usuários avisando que possuem atividades para exercerem. Um ponto negativo que notamos é que algumas vezes expiraram a seção por inatividade no site, isto pode ser uma segurança do próprio sistema, contra hackers, ao algum “esquecidinho” que deixou o usuário logado em alguma máquina estranha.

Clique aqui para acessar o site

Read Users' Comments (1)comentários

Engenharia de Requisitos

Esta semana foi muito corrida para mim, pois estou em treinamento e não consegui tempo suficiente para preparar um artigo mais interessante. Mas no treinamento, o palestrante explicou como funciona a Engenharia de Requisitos. Uma área da engenharia de software essencial para que o produto final seja entregue com qualidade e da forma que o cliente deseja.
Como toda regra tem uma exceção, na engenharia de requisitos isto não poderia ser diferente, ou seja, nem sempre a qualidade que se espera é alcançada.
Abaixo eu coloquei um desenho de como são gerados os requisitos em algumas empresas. A imagem explica bem como funciona a fabricação de um produto, sem sua devida documentação.
Se estiverem com dificuldades para visualizar a imagem, cliquem para ampliá-la.

Read Users' Comments (1)comentários

CMMI - Certificação

Semana passada, passei por uma entrevista de auditoria para a certificação do CMMI. Para quem não conhece CMMI (Capability Maturity Model Integration), é uma certificação para as empresas que usam um processo de engenharia de software para a criação de produtos com padrões de qualidade. Esta certificação analisa a maturidade que a organização possui, no uso do processo de engenharia de software. O CMMI é dividido em 5 níveis:

• Nível 1: Executado (Definido)
• Nível 2: Gerenciado / Gerido
• Nível 3: Definido
• Nível 4: Quantitativamente gerenciado / Gerido quantitativamente
• Nível 5: Em otimização (ou Optimizado)

Pensei que fosse mais complicado a entrevista com o Auditor. Confesso que fiquei muito mais tenso antes da entrevista, do que durante ela. Durante a entrevista, o auditor foi muito específico na área onde eu atuo (qualidade), perguntou várias coisas sobre o processo e sobre a utilização dele no dia-a-dia. Por incrível que pareça, eu consegui responder tudo o que ele me perguntou. Até eu fiquei assustado com o conhecimento que eu possuía sobre qualidade.

Após as perguntas sobre o processo de engenharia de software é normal o auditor perguntar se existe alguma idéia de melhoria no processo ou na execução dele no dia-a-dia. Falei para ele algumas melhorias que achava interessante.

Um dia após a entrevista, o auditor cria um relatório com os pontos de melhoria que o processo merece e envia a diretoria para tomada de decisões.

Na empresa onde trabalho sempre fui treinado para esse tipo de auditoria, mas nunca tive a oportunidade de realizar uma de verdade. Esta primeira experiência foi muito interessante para meu crescimento pessoal e profissional principalmente.

Read Users' Comments (0)

Qualidade de Software

Através da revolução industrial, houve uma explosão exponencial de sistemas de informação dentro das organizações com o intuito de melhorar produtividade e conseqüentemente gerar lucro. Como o crescimento de sistemas nas empresas aumentou, tornou-se necessário a criação de uma equipe especializada em qualidade.

A qualidade do software é uma área nova no processo de engenharia de software. Antigamente as empresas não sentiam a necessidade de entregar um produto com qualidade, pois havia pouca concorrência, e o cliente acabava se submetendo a ter um software de baixa qualidade.

Teste de Software é uma área de qualidade que garante que o sistema criado atende todas as especificações que o cliente deseja para seu projeto. O teste de software antecipa falhas que poderiam ser descoberta pelo cliente, fazendo com que ele se sinta a vontade para usar a nova funcionalidade, e trazendo cada vez mais, projetos para a empresa.

Com a forte concorrência da atualidade, o cliente passou a ter opção de escolher onde ele deseja comprar um determinado produto. As empresas tiveram que se adaptar a esse tipo de situação, e entregar o sistema com a melhor qualidade possível a um custo menor, fazendo com que o processo de teste se torne cada dia mais especializado.

Atualmente existem diversas certificações para que o profissional de teste comprove a qualidade do seu serviço. Em outro artigo irei discutir todas essas certificações. Quanto maior a quantidade de certificações o profissional possuir, melhor qualidade o software entregue para o cliente terá.

O processo de teste cresceu tão fortemente que hoje existem empresas especializadas apenas nos testes de sistemas. Empresas grandes criam o software, e usam outra empresa terceirizada para realizar o teste. Com a concorrência acirrada, as empresas estão usando todas as formas para conseguir e manter e conquistar um cliente em potencial.

Read Users' Comments (0)

Acessibilidade

Fazendo pesquisas na internet sobre a navegação em sites para deficientes visuais, descobri um site interessante, onde aborda diversos estudos e artigos sobre acessibilidade.

Acessibilidade é o direito de acessar a rede de informações fazendo com que nao exista barreiras arquitetônicas, de disponibilidade de comunicação, de acesso físico, de equipamentos e programas adequados, de conteúdo e apresentação da informação em formatos alternativos.

Aprofundando um pouco mais na minha pesquisa, descobri que poucos sites apresentam um código adequado e acessível, para que deficientes visuais possam realizar suas tarefas sem nenhuma dependência. No Brasil, apenas alguns sistemas governamentais possuem essa técnologia.

Em breve escreverei artigos exemplificando como criar um código acessível.

Clique aqui para mais informações

Read Users' Comments (1)comentários

Usabilidade

No texto intitulado “How Users Read on the Web” de Jakob Nielsen, o autor descreve a pesquisa realizada com usuários que acessam os textos publicados na internet identificando os problemas e as necessidades de a criação de um texto ágil, e algumas formas de desenvolver estes artigos publicados.
Através de sua pesquisa, Jacob identificou que os usuários que acessam a internet a procura de informações, não são adaptados a lerem todo o conteúdo de um texto, e sim palavras chaves, com o intuído de verificar se aquele artigo irá explicar o que ele está procurando.
Depois de descrever quais os tipos de usuários acessam a rede, Jacob desenvolveu alguns sites com um conteúdo igual, mas com formas de redação de hipertexto diferentes, e a partir daí, tirou algumas informações.

•Um texto com pouca formatação, e muita informação em um parágrafo, faz com que a atração de leitura seja de 0%.
•Um texto conciso e com informações chaves para o usuário faz com que a atração de leitura seja de 58%.
•Um texto onde as informações sejam divididas em tópicos possui uma atração de 47%.
•Um texto usando a técnica neuro-linguística, obteve 27% de atração de leitura do usuário.
•Um texto distribuído de forma concisa, pesquisável e objetiva, obteve um resultado de 124% da atração de leitura dos usuários pesquisados.


Jacob conclui que a pesquisa foi surpreendente, e afirma que para a criação de algum documento web, a usabilidade conta muito no desenvolvimento, pois cria um usuário fiel, e que acesse os textos desenvolvidos com freqüência.
A internet está se tornando cada dia mais dinâmica. Com essa velocidade de informação que trafega na rede, o usuário não possui tempo para filtrar todas as suas áreas de interesse. Para que um sistema ou um site web ganhe um publico fiel, é necessário possuir uma usabilidade atraente e agradável, fazendo com que o usuário se sinta a vontade para navegar ou usar uma determinada funcionalidade.

Link do texto original: http://www.useit.com/alertbox/9710a.html

Read Users' Comments (0)

Histórico

A Engenharia de Software surgiu em meados dos anos 1970 numa tentativa de contornar a crise do software e dar um tratamento de engenharia (mais sistemático e controlado) ao desenvolvimento de sistemas de software complexos. Um sistema de software complexo se caracteriza por um conjunto de componentes abstratos de software (estruturas de dados e algoritmos) encapsulados na forma de procedimentos, funções, módulos, objetos ou agentes interconectados entre si, compondo a arquitetura do software, que deverão ser executados em sistemas computacionais.

Read Users' Comments (0)

Video Aula Parte 2

Parte 2 da video aula.

Read Users' Comments (0)

Diagrama de Fuxo de Dados

O DFD ou Diagrama de Fluxos de Dados é uma ferramenta para a modelagem de sistemas. Ela fornece apenas uma visão estruturada do sistema e das funções, ou seja, o fluxo dos dados. Se estivermos desenvolvendo um sistema no qual os relacionamentos entre os dados sejam mais importantes que as funções, podemos dar menos importância ao DFD e dedicar-nos aos Diagramas de Entidade-Relacionamento (DER).

"Um DFD é uma ferramenta de modelagem que nos permite imaginar um sistema como uma rede de processos funcionais, interligados por “dutos” e “tanques de armazenamento de dados". (Edward Yourdon)

A imagem abaixo é um exemplo de DFD:

Read Users' Comments (0)

Para descontrair

Sabemos que Engenharia de Software é um assunto chato, mas de extrema importância. Por isso, hoje vamos descontrarir um pouco. Assistam este video engraçado comparando um bebado com a engenharia de software. Esperamos que gostem!


Read Users' Comments (0)

Áreas de Conhecimento

Segundo o SWEBOK (Corpo de Conhecimento da Engenharia de Software), versão 2004, as áreas de conhecimento da Engenharia de Software são:

Requisitos (Requirements) de Software
Projeto (Design) de Software
Construção (Construction) de Software
Teste (Testing) de Software
Manutenção (Maintenance) de software
Gerência de Configuração de Software
Gerência de Engenharia de Software
Processos de Engenharia de Software
Ferramentas e Métodos de Engenharia de Software
Qualidade (Quality) de Software
Conforme Pressman, a Engenharia de Software (ES) é uma tecnologia em camadas, onde a base de todas essas camadas é o foco na qualidade do software desenvolvido. Portanto, do ponto de vista didático, é interessante estudarmos a ES em suas camadas de Processo, Métodos e Ferramentas.

Read Users' Comments (0)

Engenharia de software

Engenharia de software é uma área do conhecimento da computação voltada para a especificação, desenvolvimento e manutenção de sistemas de software aplicando tecnologias e práticas de gerência de projetos e outras disciplinas, objetivando organização, produtividade e qualidade.

Atualmente, essas tecnologias e práticas englobam linguagens de programação, banco de dados, ferramentas, plataformas, bibliotecas, padrões, processos e a questão da Qualidade de Software.

Os fundamentos científicos para a engenharia de software envolvem o uso de modelos abstratos e precisos que permitem ao engenheiro especificar, projetar, implementar e manter sistemas de software, avaliando e garantindo suas qualidades. Além disso, a engenharia de software deve oferecer mecanismos para se planejar e gerenciar o processo de desenvolvimento de um sistema de informação Sistema Computacional, pois ambos se confundem.

Read Users' Comments (0)

Video Aula Parte 1

Achei uma video-aula interessante sobre o assunto, explicando sobre um diagrama de atividades.

Parte 1 da video aula.

Read Users' Comments (0)

Modelos de Maturidade

Os modelos de maturidade são um metamodelo de processo. Eles surgiram para avaliar a qualidade dos processos de software aplicados em uma organização (empresa ou instituição). O mais conhecido é o Capability Maturity Model Integration (CMMi), do Software Engineering Institute - SEI.

O CMMi (Capability Maturity Model Integration), pode ser organizado através de duas formas, contínua e estagiada. Pelo modelo estagiado, mais tradicional e mantendo compatibilidade com o CMM, uma organização pode ter sua maturidade medida em 5 níveis:

Nível 1 - Caótico;
Nível 2 - Capacidade de repetir sucessos anteriores pelo acompanhamento de custos, cronogramas e funcionalidades;
Nível 3 - O processo de software é bem definido, documentado e padronizado;
Nível 4 - Realiza uma gerência quantitativa do processo de software e do produto;
Nível 5 - Usa a informação quantitativa para melhorar continuamente e gerenciar o processo de software.

O (MPS.BR), ou Melhoria de Processos do Software Brasileiro, é simultaneamente um movimento para a melhoria e um modelo de qualidade de processo voltada para a realidade do mercado de pequenas e médias empresas de desenvolvimento de software no Brasil.

Read Users' Comments (0)

Modelos de Processo de Software

Um modelo de processo de desenvolvimento de software, ou simplesmente modelo de processo, pode ser visto como uma representação, ou abstração dos objetos e atividades envolvidas no processo de software. Além disso, oferece uma forma mais abrangente e fácil de representar o gerenciamento de processo de software e consequentemente o progresso do projeto.

Exemplos de alguns modelos de processo de software;

Modelos ciclo de vida

Sequencial ou Cascata - com fases distintas de especificação, projeto e desenvolvimento.
Desenvolvimento iterativo e incremental - desenvolvimento é iniciado com um subconjunto simples de Requisitos de Software e interativamente alcança evoluções subseqüentes das versões até o sistema todo estar implementado
Evolucional ou Prototipação - especificação, projeto e desenvolvimento de protótipos.
V-Model - Parecido com o modelo cascata, mas com uma organização melhor, que permite que se compare com outros modelos mais modernos.
Espiral - evolução através de vários ciclos completos de especificação, projeto e desenvolvimento.
Componentizado - reuso através de montagem de componentes já existentes.
Formal - implementação a partir de modelo matemático formal.
Ágil
RAD
Quarta geração

Read Users' Comments (0)

O que é Engenharia de Software

Engenharia de software é a área de conhecimento da computação onde são realizadas as especificações, desenvolvimento e manutenção de softwares. São aplicadas diversas tecnologias de gerencia de projetos, tendo como objetivo a organização, produtividade e qualidade.

Essas tecnologias e praticas envolvem linguagem de programação, diversas ferramentas e plataformas, padrões de processos e qualidade de software.

Os fundamentos para a engenharia de software envolvem o uso de modelos precisos e abstratos que permitem especificar, projetar, programar os sistemas (softwares), avaliando e garantindo a qualidade do produto final.

Read Users' Comments (0)