domingo, 20 de junho de 2010

Qualidade de Software - ISO/IEC 9126

ISO/IEC 9126



É uma norma ISO para qualidade de produto de software, que se enquadra no modelo de qualidade das normas da família 9000. A norma brasileira correspondente é a NBR ISO/IEC 9126.

Modelo de Qualidade de Software

A qualidade de um sistema de software pode ser entendida de diversas formas e utilizando diferentes abordagens.

A norma ISO/IEC 9126, ou conjunto de normas que tratam deste assunto no âmbito da ISO, estabelece um modelo de qualidade com os seguintes componentes:

Processo de desenvolvimento: cuja qualidade afeta a qualidade do produto de software gerado e é influenciado pela natureza do produto desenvolvido;
Produto: compreendendo os atributos de qualidade do produto (sistema) de software. Estes atributos de qualidade podem ser divididos entre atributos internos e externos. Estes se diferenciam pela forma como são aferidos (interna ou externamente ao produto de software) e em conjunto compõem a qualidade do produto de software em si;
Qualidade em uso: que consiste na aferição da qualidade do software em cada contexto específico de usuário. Esta é, também, a qualidade percebida pelo usuário.

Modelo de Qualidade da Norma ISO 9126

A norma 9126 se foca na qualidade do produto de software, propondo Atributos de Qualidade, distribuídos em seis características principais, com cada uma delas divididas em sub-características, conforme podemos ver na figura abaixo:



No nível mais alto temos as características de qualidade e nos quadros abaixo as suas sub-características. Cada característica/sub-característica compõe um Atributo de Qualidade do software.
Note que em todas as características temos uma sub- com o nome de Conformidade. A conformidade é utilizada para avaliar o quanto o software obedece aos requisitos de legislação e todo o tipo de padronização ou normalização aplicável ao contexto.

1. Funcionalidade

A capacidade de um software prover funcionalidades que satisfaçam o usuário em suas necessidades declaradas e implícitas, dentro de um determinado contexto de uso.

Suas sub-características são:
Adequação: que mede o quanto o conjunto de funcionalidades é adequado às necessidades do usuário;
Acurácia (ou precisão): representa a capacidade do software de fornecer resultados precisos ou com a precisão dentro do que foi acordado/solicitado;
Interoperabilidade: que trata da maneira como o software interage com outro(s) sistema(s) especificados;
Segurança: mede a capacidade do sistema de proteger as informações do usuário e fornecê-las apenas (e sempre) às pessoas autorizadas;

2. Confiabilidade

O produto se mantém no nível de desempenho nas condições estabelecidas.

Suas sub-características são:
Maturidade: entendida como sendo a capacidade do software em evitar falhas decorrentes de defeitos no software;
Tolerância a Falhas: representando a capacidade do software em manter o funcionamento adequado mesmo quando ocorrem defeitos nele ou nas suas interfaces externas;
Recuperabilidade: que foca na capacidade de um software se recuperar após uma falha, restabelecendo seus níveis de desempenho e recuperando os seus dados;

3. Usabilidade

A capacidade do produto de software ser compreendido, seu funcionamento aprendido, ser operado e ser atraente ao usuário.
Note que este conceito é bastante abrangente e se aplica mesmo a programas que não possuem uma interface para o usuário final. Por exemplo, um programa batch executado por uma ferramenta de programação de processos também pode ser avaliado quanto a sua usabilidade, no que diz respeito a ser facilmente compreendido, aprendido, etc. Além disto, a operação de um sistema é uma interface Humano-Computador (ver IHC) sujeita às avaliações de usabilidade.

Suas sub-características são:
Inteligibilidade: que representa a facilidade com que o usuário pode compreender as suas funcionalidades e avaliar se o mesmo pode ser usado para satisfazer as suas necessidades específicas;
Apreensibilidade: identifica a facilidade de aprendizado do sistema para os seus potenciais usuários;
Operacionalidade: é como o produto facilita a sua operação por parte do usuário, incluindo a maneira como ele tolera erros de operação;
Atratividade: envolve características que possam atrair um potencial usuário para o sistema, o que pode incluir desde a adequação das informações prestadas para o usuário até os requintes visuais utilizados na sua interface gráfica;

4. Eficiência

O tempo de execução e os recursos envolvidos são compatíveis com o nível de desempenho do software.

Suas sub-características são:
Comportamento em Relação ao Tempo: que avalia se os tempos de resposta (ou de processamento) estão dentro das especificações;
Utilização de Recursos: que mede tanto os recursos consumidos quanto a capacidade do sistema em utilizar os recursos disponíveis;

5. Manutenibilidade

A capacidade (ou facilidade) do produto de software ser modificado, incluindo tanto as melhorias ou extensões de funcionalidade quanto as correções de defeitos.

Suas sub-características são:
Analisabilidade: identifica a facilidade em se diagnosticar eventuais problemas e identificar as causas das deficiências ou falhas;
Modificabilidade: caracteriza a facilidade com que o comportamento do software pode ser modificado;
Estabilidade: avalia a capacidade do software de evitar efeitos colaterais decorrentes de modificações introduzidas;
Testabilidade: representa a capacidade de se testar o sistema modificado, tanto quanto as novas funcionalidades quanto as não afetadas diretamente pela modificação;

6. Portabilidade

A capacidade do sistema ser transferido de um ambiente para outro.
Como "ambiente", devemos considerar todo os fatores de adaptação, tais como diferentes condições de infra-estrutura (sistemas operacionais, versões de bancos de dados, etc.), diferentes tipos e recursos de hardware (tal como aproveitar um número maior de processadores ou memória). Além destes, fatores como idioma ou a facilidade para se criar ambientes de testes devem ser considerados como características de portabilidade.

Suas sub-características são:
Adaptabilidade: representando a capacidade do software ser a adaptar a diferentes ambientes sem a necessidade de ações adicionais (configurações);
Capacidade para ser Instalado: identifica a facilidade com que pode se instalar o sistema em um novo ambiente;
Coexistência: mede o quão facilmente um software convive com outros instalados no mesmo ambiente;
Capacidade para Substituir: representa a capacidade que o sistema tem de substituir outro sistema especificado, em um contexto de uso e ambiente específicos. Este atributo interage tanto com adaptabilidade quanto com a capacidade para ser instalado;

quarta-feira, 16 de junho de 2010

Java - Introdução

Saudações.
Primeiramente quero agradecer a todos que participam e seguem meu blog.
Tenho grande orgulho de estar me responsabilizando por compartilhar informações tão importantes com voces.
Estou pedindo desculpa para todos que não estou com muito tempo para responder e-mail, pois meus compromissos diarios estão cada dia agitados, mas não irei deixar de postar os artigos.
Darei o maximo de atenção em meu "tempo livre" para poder passar mais informações a voces.
Iniciarei hoje com um assunto muito interessante: "JAVA".
Espero que gostem.

Java - Introdução



Java é uma linguagem de programação orientada a objeto desenvolvida na década de 90 por uma equipe de programadores chefiada por James Gosling, na empresa Sun Microsystems. Diferentemente das linguagens convencionais, que são compiladas para código nativo, a linguagem Java é compilada para um "bytecode" que é executado por uma máquina virtual. A linguagem de programação Java é a linguagem convencional da Plataforma Java, mas não sua única linguagem.

Utilizarei os metodos patricos em java, espero que façam a parte de voces.
DICA: Pesquise artigos, foruns de discuçõe e toda a parte teórica sobre Java para dar inicio a nossa "engrenagem de estudos" na linguagem de programação JAVA.

Sobre Aplicação

Java é uma linguagem de programação na qual podemos compilar seu código desde um Bloco de notas até os programas avançados como Eclipse, NetBeans entre outros.

Baixando o Java para aplicação

Acesse o link http://www.java.com/pt_BR/download/ e faça o download do arquivo.
Após o download iremos fazer algumas alterações para iniciarmos o estudo sobre java.

Configurações no sistemas

Para dar inicio em nossa jornada, iremos fazer algumas configurações. Primeiramente devemos declarar as variáveis de ambientes para utilizarmos as classes do Java. Para isso iremos fazer os seguintes passos:

- Clicar com o botão direito em Meu Computador
- Propriedades
- Avançado
- Variáveis de Ambiente



- Clique duas vezes em Path
- Copie o caminho:
'C:\Arquivos de programas\Java\jdk1.6.0_18\bin'
Obs.: Certifique-se de que voce possui este caminho, caso nao possua, baixe o Java.
- Cole após o ultimo caractere em "Valor da variável" separando das outras variáveis com ';'
- De um Ok e iremos abrir o DOS
- Executar
- CMD > ok
- No DOS entre em:
- C:\Arquivos de programas\Java\jdk1.6.0_18\bin
- Digite o comando 'javac'

Javac é um compilador do java, no qual transforma arquivos .java em .class

Pronto! Configuramos nossa variáveis de ambiente.
Agora iremos Criar nossa primeira aplicação!

Primeira Aplicação - Criando e Compilando

Iremos criar nossa primeira aplicação em um bloco de notas.
- Abra o Bloco de Notas
- Jogue o comando:

// Programa de adição que exibe a soma de dois números.
import java.util.Scanner; // programa utiliza a classe Scanner
public class soma
{
// método principal inicia a execução do aplicativo Java
public static void main( String args[] )
{
// cria Scanner para obter entrada a partir da janela de comando
Scanner input = new Scanner( System.in );

int number1; // primeiro número a somar
int number2; // segundo número a adicionar
int sum; // soma de number1 e number2

System.out.print( "Entre com o primeiro numero: " ); // prompt
number1 = input.nextInt(); // lê primeiro o número fornecido pelo usuário

System.out.print( "Entre com o segundo numero: " ); // prompt
number2 = input.nextInt(); // lê o segundo número fornecido pelo usuário

sum = number1 + number2; // soma os números

System.out.printf( "A soma e %d\n", sum ); // exibe a soma

} // fim do método principal

} // fim da classe Addition

- Iremos salvar esse bloco de notas em uma pasta na Raiz com o seguinte nome:
- C:\Java\soma.java
- A extenção .java é a extenção não compilada de nossa aplicação.

Compilando e rodando nossa aplicação

Para compilar é bem simples.
- Abra o DOS
- Abra o caminho C:\Java
- digite o comando javac soma.java
Obs.: Caso não de nenhum erro, o java vai comilar a aplicação. Note que na pasta aonde salvamos nossa aplicação, logo após a compilação, aparecera um outro arquivo .class (a aplicação ja compilada)

Agora para testar o aplicativo é simples.
- No caminho do DOS C:\Java digite:
java soma

RESULTADO!



Obs.: Não se preocupe com o código pois itemos trabalhar mais a fundo sobre isso nas proximas aulas. Apenas coloquei as descrições de cada linha de comando para quem tem mais interesses.
Espero que tenham gostado dessa primeira aula de Java. Iremos trabalhar muito mais em relação a esta linguagem de programação.

Duvidas e Sugestões > ettorefrancobr@gmail.com

Muito obrigado a todos.

segunda-feira, 14 de junho de 2010

Analise e Projeto Orientada a Objetos - Diagramas

Diagrama de Casos de Uso

O Diagrama de Casos de Uso tem o objetivo de auxiliar a comunicação entre os analistas e o cliente.
Um diagrama de Caso de Uso descreve um cenário que mostra as funcionalidades do sistema do ponto de vista do usuário.
O cliente deve ver no diagrama de Casos de Uso as principais funcionalidades de seu sistema.

O diagrama de Caso de Uso é representado por:
* atores;
* casos de uso;
* relacionamentos entre estes elementos.

Estes relacionamentos podem ser:

* associações entre atores e casos de uso;
* generalizações entre os atores;
* generalizações, extends e includes entre os casos de uso.

casos de uso podem opcionalmente estar envolvidos por um retângulo que representa os limites do sistema.

Sistema

* Limites do sistema: representado por um retângulo envolvendo os casos de uso que compõem o sistema.
* Nome do sistema: Localizado dentro do retângulo.



Diagrama de Classes

Um diagrama de três faces

Descrever os vários tipos de objetos no sistema e o relacionamento entre eles.

Perspectivas

Um diagrama de classes pode oferecer três perspectivas, cada uma para um tipo de usuário diferente. São elas:

Conceitos ou Entidades



o Representa os conceitos do domínio em estudo.
o Perspectiva destinada ao cliente.

Classes



o Tem foco nas principais interfaces da arquitetura, nos principais métodos, e não como eles irão ser implementados.o Perspectiva destinada as pessoas que não precisam saber detalhes de desenvolvimento, tais como gerentes de projeto.

Classes de Software



o Aborda vários detalhes de implementação, tais como navegabilidade, tipo dos atributos, etc.
o Perspectiva destinada ao time de desenvolvimento.

Diagramas de Seqüência


Consiste em um diagrama que tem o objetivo de mostrar como as mensagens entre os objetos são trocadas no decorrer do tempo para a realização de uma operação.

Em um diagrama de seqüência, os seguintes elementos podem ser encontrados:

* Linhas verticais representando o tempo de vida de um objeto (lifeline);
* Estas linhas verticais são preenchidas por barras verticais que indicam exatamente quando um objeto passou a existir. Quando um objeto desaparece, existe um "X" na parte inferior da barra;
* Linhas horizontais ou diagonais representando mensagens trocadas entre objetos. Estas linhas são acompanhadas de um rótulo que contém o nome da mensagem e, opcionalmente, os parâmetros da mesma. Observe que também podem existir mensagens enviadas para o mesmo objeto, representando uma iteração;
* Uma condição é representada por uma mensagem cujo rótulo é envolvido por colchetes;
* Mesagens de retorno são representadas por linhas horizontais tracejadas. Este tipo de mensagem não é freqüentemente representada nos diagramas, muitas vezes porque sua utilização leva a um grande número de setas no diagrama, atrapalhando o entendimento do mesmo. Este tipo de mensagem só deve ser mostrada quando forfundamental para a clareza do diagrama.

Observe a figura abaixo.



Diagrama de Atividades

O objetivo do diagrama de atividades é mostrar o fluxo de atividades em um único processo. O diagrama mostra como um atividade depende uma da outra.
Um diagrama de atividade pode ser regiões denominadas swimlanes. Estas regiões esão associadas a um objeto do modelo. Desta forma, dentro de cada região, encontram-se as atividades relativas ao objeto da região.
As atividades são conectadas através de arcos (transições), que mostram as dependências entre elas.

Exemplo:
Descrição do exemplo: Retirando dinheiro de um caixa eletrônico (para cartões de crédito).



Diagrama de Estados

Em um diagrama de estado, um objeto possui um comportamento e um estado.
O estado de um objeto depende da atividade na qual ele está processando.
Um diagrama de estado mostra os possíveis estados de um objeto e as transações responsáveis pelas suas mudanças de estado.

Exemplo:
Descrição do exemplo: Modelagem do sistema de login. Para que o usuário seja autenticado, ele deve fornecer dois valores: SSN (Social Security Number) e o PIN (Personal ID Number). Após a submissão é feita uma validação.

Diagrama de estado para o objeto Login.



Diagrama de Comunicação

Ele normalmente é utilizado como complemento do diagrama de seqüência, porem possui um enfoque diferente, concentrando-se em como os objetos estão vinculados através de mensagens. Pode ser gerado a partir do diagrama de seqüências por representar os mesmos dados. Outra característica do diagrama de comunicação é que as mensagens possuem numeração para designar seqüência.



Nesta figura é mostrado o diagrama de comunicação do caso de uso realizar submissão. É mostrado as mensagens trocadas entre o Submissor, a página do congresso, o controlador do congresso, o tema e a Submissão.

Diagramas de Implementação


Os diagramas de implementação são empregados para a modelagem da visão estática da implementação de um sistema. Na maior parte, isso envolve a modelagem da topologia do
hardware em que o sistema é executado.
São utilizados para visualizar, especificar e documentar sistemas embutidos, cliente/servidor, distribuídos e gerenciamento de sistemas executáveis.



Ao criar um software, você como programador focaliza a arquitetura e a implementação dele, entretanto, como engenheiro de sistemas, seu foco principal está no hardware e no software e no gerenciamento da compatibilidade dos dois.

Os diagramas de implementação são utilizados para analisar a topologia dos processadores e dispositivos nos quais o software é executado.

DICA: Vejam e revejam todos esses diagramas, tivemos 1 semestre inteiro para aprender todos esses diagramas, mas com muito estudo garanto que voces aprende isso em questão de um mes. Procure fazer diagramas representando diversos tipos de exemplo.

Fonte: http://www.dsc.ufcg.edu.br/

Até a próxima.

Duvidas e sugestões: ettorefrancobr@gmail.com

domingo, 13 de junho de 2010

Engenharia de Software - Introdução

O que é Engenharia de Software?

Voltada para a especificação, desenvolvimento e manutenção de sistemas de software, aplicando tecnologias e práticas.
Objetivo: construir sistema organizado, visando produtividade e qualidade.

Porque Engenharia de Software?



Áreas de conhecimento de Engenharia de Software


-Requisitos de Software
-Projeto (Design) de Software
-Implementação de Software
-Teste de Software
-Manutenção 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 de Software

Crise do Software – anos 70




-Projetos estourando o orçamento
-Projetos estourando o prazo
-Software de baixa qualidade
-Software muitas vezes não atingiam os requisitos
-Projetos não gerenciáveis e o código difícil de manter.

Solução da Crise do Software

-O uso de melhores técnicas, métodos e ferramentas
-Mais treinamento e educação
-A mudança de paradigma sobre o que é desenvolver software e como deveria ser feito.

Processo de Software



Conjunto de atividades cujo objetivo é o desenvolvimento ou evolução do software.
Atividades genéricas:

Especificação – definição da funcionalidade do software e as restrições em sua operação
Desenvolvimento - produção do software de modo que atenda as especificações.
Validação – garantir os interesses do cliente.
Evolução - atender às necessidades mutáveis do cliente.

Modelo de Processo

Uma representação, ou abstração dos objetos e atividades envolvidas no processo de software.

-Modelos genéricos = Paradigmas
-Modelo em Cascata
-Espiral
-Prototipação
-Desenvolvimento iterativo e evolutivo
-Ágil

Métodos

Um processo com uma série de passos, para construir um software.
Um método de Engenharia de Software pode ser considerado como parte da metodologia

Por exemplo:

Metodologias de Desenvolvimento Ágil
Métodos: XP, Desenvolvimento Ágil
Metodologia Orientada a Objetos
Métodos: RUP

Sistemas CASE

Sistemas CASE são freqüentemente utilizados para apoiar a aplicação dos métodos.
Upper-CASE : ferramentas de apoio às fases iniciais do processo de software
Lower-CASE : ferramentas de apoio às fases finais processo de software (implementação e testes)

Responsabilidade Profissional




-Confidencialidade
-Competência
-Direitos de propriedade
-Má utilização de computadores

Código de ética

Engenheiros de software se comprometerão a fazer da análise, da especificação, do projeto, do desenvolvimento, dos testes e da manutenção de software uma profissão benéfica respeitada. De acordo com seu compromisso com a saúde, a segurança e o bem estar do público, os engenheiros de software deverão assegurar que seus produtos e as alterações a eles relacionadas cumpram o mais alto padrão profissional possível.

PÚBLICO
Os engenheiros de software agirão consistentemente com o interesse público.

CLIENTE E EMPREGADOR
Os engenheiros de software agirão de acordo com os melhores interesses de seus clientes e empregadores de modo consistente com o interesse público.

PRODUTO
Engenheiros de software deverão assegurar que seus produtos e as alterações a eles relacionadas cumpram o mais alto padrão profissional possível.

JULGAMENTO
Os engenheiros de software manterão integridade e independência em seu julgamento profissional.

GERENCIAMENTO
Os gerentes e líderes de engenharia de software adotarão e promoverão uma abordagem ética para o gerenciamento do desenvolvimento e da manutenção do software.

PROFISSÃO
Os engenheiros de software seguirão a integridade e reputação da profissão, de modo consistente com o interesse público.

COLEGAS
Os engenheiros de software serão justos e darão apoio aos seus colegas.

PESSOAL
Os engenheiros de software participarão de aprendizado constante com relação à prática de sua profissão e promoverão uma abordagem ética dessa prática.

Resumindo

A engenharia de software é uma disciplina da engenharia que se ocupa de todos os aspectos da produção de software

Produtos de software consistem de programas desenvolvidos e da documentação associada. Os atributos essenciais dos produtos são a facilidade de manutenção, a confiança e a evolução do software.

O processo de software consiste em atividades envolvidas no desenvolvimento de produtos de software. As atividades básicas são a especificação, o desenvolvimento, a validação e a evolução do software.

Métodos são os meios organizados de produzir software. Eles incluem sugestões sobre o processo a ser seguido, as notações a serem utilizadas, as regras que regem as descrições de sistema produzidas e as diretrizes do projeto.

Ferramentas CASE são sistemas de software projetados para dar apoio às atividades de rotina no processo de software, tais como editar diagramas de projeto, verificar a consistência de diagramas e manter o controle dos testes de programas.

Os engenheiros de software tem responsabilidades para com a engenharia como profissão e a sociedade. Eles não devem se preocupar exclusivamente com questões técnicas.


DUVIDAS e SUGESTÕES - ettorefrancobr@gmail.com

terça-feira, 8 de junho de 2010

Delphi - Conhecendo o Ambiente

Saudações.
Até agora postei uma parte de meu sistema criado apenas para estudos.
Agora, vou postar aulas sobre como montar este sistemas.
As aulas estão divididas por módulos e farei da forma mais clara possível.
Qualquer duvida e sugestões, podem comentar nos tópicos que irei estar respondendo ou através do e-mail ettorefrancobr@gmail.com.

1 - INTRODUÇÃO AO DELPHI

Conhecer o "Ambiente" de um programa é essencial para começarmos a trabalhar com ele, então nesse estudo irei estar mostrando todo o ambiente Delphi.

AMBIENTE DELPHI



Este é o ambiente do Delphi 7 no qual iremos realizar nosso estudo.

BARRA DE MENU



A Barra de Menu do Delphi é aonde esta todas as opções que desejamos trabalhar no Delphi.
DICA: DICA: Para aproveitar mais sobre o estudo verifique todo o menu do Delphi.

ICONES DE ATALHO



São alguns icones de atalhos no quais consideramos principais.
DICA: Para aproveitar mais sobre o estudo verifique a funcionalidade de cada icone de atalho.

CAIXA DE COMPONENTES



A Caixa de Componentes envolve todos os objetos visuais e lógicos do Delphi como Buttom que é o botão, Database que é o componente que liga o Delphi com o banco de dados e etc...
DICA: Acesse cada palheta de componente e verifique quais componentes existem no delphi como padrão.

OBJECT TREEVIEW



Essa janela mostra a "Árvore" de nosso projeto. É como se fosse um mapa de objetos de nosso projeto.
DICA: Observe que ja existe um obejto dentro de nosso Object Treeview, conforme voce for colocando componentes, verifique de que forma é montada essa "Árvore de Objetos".

OBJECT INSPECTOR



Essa é a janela no qual editamos o nosso objeto. Essa janela possui duas funcionalidades principais, as Propriedades (Cor, tamanho, posição, valor e etc) e os eventos (Ao abrir, ao fechar, ao clicar e etc) de cada objeto.
DICA: Verifique todas as propriedades dos objetos e todos os eventos que existe.

FORMULÁRIO



Pode-se dizer que o formulário é o componente mais utilizado no Delphi, pois é nos formulários que monstamos nossa aplicação.
Cada formulário é salvo na extenção .dpr

UNIT



A unit é todo o código fonte de formulário.
Cada Unit é salvo na extenção .pas
DICA: Procure saber mais como é dividido uma Unit, qual a função de cada linha de comnado dessa unit simples que postei (USES, TYPE, VAR, IMPLEMENTATION e ETC)
Claro que conforme as aulas irei explicar tudo isso a voces.

Bom espero que tenham gostado de nosso primeiro estudo sobre Delphi.

ettore.state = 'Em busca de um estágio'

- DUVIDAS e SUGESTÕES - ettorefrancobr@gmail.com