quinta-feira, 19 de março de 2009

Qualidade de Software

Resumo - Gerenciando a Qualidade de Software com Base em Requistos

Obter qualidade nos processos e produtos de engenharia de software não é uma tarefa tão fácil. São vários os fatores que dificultam atingir os objetivos de qualidade. Mas, o principal objetivo é o software atender a necessidade do usuário, E em muitos casos, muitos recursos são gastos, mas ainda assim ocorre uma grande frustração por parte dos clientes com o produto final. Muitos desses problemas são derivados da falta de atenção na divisão das tarefas durante a produção do software.

Para diminuição desse problema, e o melhoramento da qualidade do software, é necessário usar o chamado baseline de requisitos. Baseline é uma definição que toma por base as necessidades dos clientes, serve de referência para o desenvolvimento de software e está em constante evolução.

INTRODUÇÃO

Quando se fala em qualidade de software é necessário termos claro que o processo de produção também deve ter qualidade e não apenas o produto software.
Durante muito tempo, a qualidade do software era entendida da seguinte forma:

• Qualidade do produto é função principalmente de teste do produto
final.

• O processo de produção era centrado em fases caracterizadas por produtos bem
definidos.

• Tinha-se uma ênfase na qualidade das representações, isto é nas linguagens artificiais.

De fato, esses aspectos são também essenciais para a qualidade do produto. Todo software precisa dos testes finais que é onde se encontram os erros e os requisitos que se faltam. A escolha de qual linguagem de programação adotar é também um fator importante no processo. Se tem a visão de sequencialidade, onde acredita-se ser a chave para produtos bem definidos.

Hoje tem-se uma visão muito mais abrangente. Primeiro, sabe-se que o processo de produção é fundamental para obtenção de produtos de qualidade. Segundo, tem-se uma visão mais equilibrada dos aspectos essenciais e acidentais da engenharia de software. Terceiro, a sociedade passa a entender melhor os custos relacionados com a evolução do software. Hoje o processo de produção de software é composto por diferentes subsistemas, como Gerência, Análises e outras.

QUALIDADE

O software passou cada vez mais a fazer parte de outros produtos, e assim como eles exige-se qualidade e preço. Esse é o papel da Engenharia: procurar sistemas de melhor qualidade dentro de um custo compatível com essa qualidade, otimizando a redução de custos.

Como foi dito, ela envolve métodos, técnicas e ferramentas para este fim (Clique aqui para ver). O principal objetivo é que o software seja confiável, isto é seja eficaz e siga os padrões exigidos pelo contexto onde irá atuar. Freeman faz uma distinção entre qualidade básica e qualidade extra. Em qualidade básica ele lista: funcionalidade, confiabilidade, facilidade de uso, economia e segurança de uso. Em qualidade extra ele lista: flexibilidade, facilidade de reparo, adaptabilidade, facilidade de entendimento, boa documentação e facilidade de adicionar melhorias. Este tipo de classificação nos fornece uma idéia do que estamos falando, mas é importante ressaltar que dar prioridade à essas qualidades depende de cada caso e do custo de cada uma dessas qualidades. A qualidade deve estar presente não só nos produtos produzidos, como também nos processos utilizados para gerar esses produtos. Assegurar a qualidade dos produtos e dos processos é responsabilidade do subsistema GERÊNCIA, e este dever toda uma equipe onde o auxiliará. Com isso, percebe-se que é também muito importante não esquecer que a produção de software é um processo que envolve, como parte fundamental, seres humanos, portanto o ambiente de trabalho precisa ser o máximo “humanizado”, com tarefas definidas a cada pessoa e ele não se sobrecarregará com todo processo de produção.

REQUISITOS

Engeharia de Requisitos, é uma sub-área da Engeharia de Software, que tem por obejtivo melhorar a modelagem de sistemas e a capacidade de analisá-los, possibilitando assim, maior entendimento de suas características antes da implementação. É seu papel realizar a interação entre requisitantes e desenvolvedores, entre “o que” deve ser feito e “como” deve ser feito. Para isso estabelece um processo no qual é necessário, analisar conflitos, validar, priorizar, modificar e reusar requisitos.

O processo de engenharia de requisitos é composto por quatro atividades de alto nível (Soares, 2005):


1 - Indentifição.
2 - Análise e negociação.
3 - Especificação e documentação.
4 - Validação.

Os requisitos de softwares estão dividiso em dois:

1 - Requisitos Funcionais: está diretamente ligado a funcionalidade do software, isto é, uma operação, cujo qualquer usuário pode manter com o software, calcular um média de um aluno, por exemplo.

2 - Requisitos não Funcionais: reflete os requisitos que expressam restrições que o software deve atender ou qualidades específicas que o software deve ter, por exemplo, num sistema acadêmico um aluno não pode ter acesso à alteração de notas, porém pode visualizar as notas.

EVOLUÇÃO

O processo de construção de software será cada dia mais baseado no conceito de evolução, ou seja estaremos sempre modificando algum software já existente, isso quer dizer que o software nunca estará 100% completo, por mais que ele esteja atendendo as necessidades do usuário, é o que chamanos de impossibilidade da completeza.

Acreditamos que para lidar com evolução é fundamental utilizar o conceito de baseline oriundo da área de configuração de sistemas. Um baseline é uma espécie de referencial que utilizamos num processo de mudança, por exemplo, uma 'imagem' de versão de cada artefato no repositório do projeto.

É claro que a complexidade de controlar essa baseline é não trivial, no entanto é uma maneira integrada de tentarmos garantir que a alocação dos requisitos, tanto funcionais como não funcionais seja registrada e rastreável. Assim, é possível efetivamente gerenciar os requisitos, principalmente num contexto volátil.

Qualidade de Software: Teoria e Prática, Orgs. Rocha, Maldonado, Weber, Prentice-Hall, São Paulo, 2001. Capítulo 17.

quarta-feira, 18 de março de 2009

BaseLines - Técnicas de Programação

Uma baseline é uma 'imagem' ou 'backup' de uma versão de cada artefato no repositório do projeto. Funciona como um padrão oficial básico para os trabalhos subseqüentes.

Somente mudanças autorizadas podem ser efetuadas na baseline. Depois do estabelecimento de uma baseline inicial, toda mudança feita na baseline será registrada como um elemento delta até a próxima baseline ser definida.

Segundo PRESSMAN no contexto de engenharia de software, definimos uma linha básica como um marco de referência no desenvolvimento de um software, que é caracterizado pela entrega de um ou mais itens de configuração (em inglês, Software Configuration Items - SCIs) e pela aprovação desses SCIs, obtida por meio de uma revisão técnica formal.


Os três principais motivos para a criação de baselines são:


Reprodutibilidade → é a capacidade de retroceder no tempo e reproduzir determinado release(release de software é uma distribuição, pública ou privada, de uma primeira ou uma nova versão atualizada de um determinado software), de um sistema de software ou determinado ambiente de desenvolvimento do projeto.


Rastreabilidade → estabelece o relacionamento entre predecessor e sucessor nos artefatos do projeto. Sua finalidade é garantir que o design atenda aos requisitos, o código implemente o design e os executáveis sejam criados como código correto.


Elaboração de relatórios → baseia-se na comparação do conteúdo das baselines. A comparação de baselines ajuda na depuração e criação de notas de release


A criação de baselines apresenta várias vantagens:

  • Um baseline oferece um ponto estável e uma imagem dos artefatos de desenvolvimento.

  • É a partir desse ponto estável que os novos projetos podem ser criados. o novo projeto, como uma ramificação separada, pode ser isolado das mudanças subseqüentes que serão efetuadas no projeto original (na ramificação principal).

  • Os desenvolvedores podem individualmente utilizar componentes de baseline como base para atualizações em seus espaços de trabalho privados e isolados.

  • Uma baseline permite que a equipe desfaça as mudanças caso as atualizações sejam consideradas instáveis ou não confiáveis.

  • Uma baseline permite reproduzir erros reportados, pois você pode recriar a configuração de determinado release.

segunda-feira, 16 de março de 2009

Engenharia de Software X Engenharia de Informação

A principal diferença entre a Engenharia de Software e a Engenharia de Sistemas é que a primeira engloba todos os aspectos do sistema, ou seja, hardware e software; enquanto a segunda, se preocupa apenas com a produção do software em si.

A engenharia de software aplica técnicas estruturadas a um projeto. A engenharia da informação aplica técnicas estruturadas à empresa como um todo, ou a um de seus setores(suporte, manutenção, análise).

domingo, 8 de março de 2009

Engenharia de Softwares X Ciências da Computação


A Engenharia de Software e a Ciência da Computação apesar de mesma área, possui algumas abordagens muito diferentes. A Engenharia de Software se preocupa apenas com as práticas de produção do software enquanto a Ciência da Computação aborda a teoria e os fundamentos. A Ciência da Computação se preocupa de como o software é executado internamente numa máquina, da interação do software com o hardware enquanto a Engenharia está preocupado apenas com o software, seus custos e prazos.

Apesar disso, todo engenheiro de software deve ter uma boa base em ciência da computação, assim como um engenheiro mecânico, civil ou elétrico deve ter em física.

Ciclo de Vida de um Software

O processo de desenvolvimento e manutenção de um programa é normalmente conhecido por “ciclo de vida” do software. Este descreve as fases pelas quais o software passa, desde a sua concepção até não possuir mais nenhum uso ao ser humano. Um dos principais objetivos do ciclo de vida de um software, é criar cada vez mais softwares bem mais estruturados e documentado, tendo assim, maior agilidade, fexilidade e etc.

O ciclo de vida de um software, passa por várias fases, cada fase inclui um conjunto de atividades ou disciplinas que devem ser realizadas pelas partes envolvidas. "Independentemente do paradigma a ser utilizado na construção do software, três fases genéricas dividem a fase de desenvolvimento do mesmo (Pressman)".

Definição: esta fase focaliza o "o quê" (análise do sistema, planejamento do projeto de software e análise de requisitos).

Desenvolvimento: focaliza-se o "como" (projeto de software, codificação e realização de testes do software).

Manutenção: concentra-se nas "mudanças" (correção, adaptação e melhoramento funcional).

Métodos, Ferramentas e Processos

Engenharia de Software é uma disciplina que se utiliza de métodos, ferramentas e procedimentos para o desenvolvimento de software de computador. Onde:
  • Métodos -> Está mais envolvido com os ciclos. Inclui o planejamento, o projeto físico, a análise dos requisitos, a especificação, a implementação(escrita do código), os testes e a manutenção do software.
  • Ferramentas -> São softwares que têm o objetivo fornecer um suporte automatizado para as atividades da produção de outros softwares.
  • Processos : constituem o elo de ligação que mantém juntos os métodos e as ferramentas para desenvolvimento do software.

O que é Engenharia de Software


Em Meados dos anos 70, devido a aceleração da procura por softwares para tarefas mais complexas, a produção do softwares enfrentou uma crise. A Engenharia de Software (ES) surgiu nesse contexto com o objetivo de contornar e dar um tratamento de engenharia (mais sistemático e controlado) ao desenvolvimento de sistemas de software complexos.

O principal objetivo da engenharia de software é oferecer mecanismos para se planejar e gerenciar o processo de desenvolvimento, para criar modelos de produção, dinamizar a produção de software, ou seja, desenvolver softwares com melhor qualidade.

OUTRAS DEFINIÇÕES:

  • "Serve para estabelecer uma sistemática abordagem de desenvolvimento, através de ferramentas e técnicas apropriadas, dependendo do problema a ser abordado, considerando restrições e recursos disponíveis."
  • "A Engenharia de Softwares trata de aspectos relacionados ao estabelecimento de processos, métodos, técnicas, ambientes e ferramentas de suporte ao bom desenvolvimento do software."
  • "Disciplina que se utiliza dos princípios de engenharia para produzir e manter softwares dentro de prazo e custos estimados."
  • "Surgiu com o intuito de melhorar a qualidade de software e aumentar a produtividade e satisfação profissional de engenheiros de software."
  • "Aplicação prática de conhecimento científico ao projeto e construção de software."

quinta-feira, 5 de março de 2009

Engenharia de Software de Roger Pressman - Download

Roger S. Pressman é autor e consultor na área de Engenharia de Software, sendo internacionalmente reconhecido. Por mais de três décadas, trabalhou como engenheiro de software, administrador, professor, consultor e autor.

É presidente da R.S. Pressman & Associates, Inc. (uma empresa de consultoria especializada em ajudar companhias a estabelecerem práticas de Engenharia de Software efetivas), e também responsável por vários treinamentos na área, bem como produtos de melhoria de processo, usados por milhares de companhias ao redor do mundo. Além disso, desenvolveu um novo currículo para Engenharia de Software baseada em Web, eSchool, em conjunto com QAI.

Dr. Pressman é autor de sete livros e vários artigos técnicos e gerenciais. Seu livro Engenharia de Software: Uma Abordagem Prática (Mc Graw-Hill, 6/e, 2005), é o livro-texto da área mais usado em todo o mundo, tendo sido traduzido para oito idiomas, inclusive o português. Também já escreveu dois romances, sendo que um destes, The Aymara Bridge é um thriller tecnológico com um tema claramente sul-americano.

Atualmente, está trabalhando em um novo livro dedicado à Web Engineering. Tem participado dos comitês editoriais de várias publicações, incluindo a IEEE Software. É membro da IEEE, ACM e Tau Beta Pi.

Título: Engenharia de Software
Autor: Roger S. Pressman
Editora: MAKRON BOOKS
Ano de Edição: 1995
Nº de Páginas: 1056

Encontre esse Livro Aqui.

quarta-feira, 4 de março de 2009

Downloads de Livros e Artigos

Aqui estão sendo postados links para outros materiais disponíveis na Internet como apostilas, slides e outros artigos.

DOWNLOADS

Engenharia de Softwares de Roger S. Pressman - LINK

Qualidade de Software - André Koscianski, Michel dos Santos Soares - LINK

Classificação e Tipos de Softwares

Os Softwares podem ser classificados de acordo com sua distribuição em:
  • Sistemas Genéricos - São aqueles softwares que qualquer pessoa pode baixar ou comprar. Eles são feitos para distribuição seja grátis ou não, são iguais em qualquer lugar que se instala. Um exemplo de Sistema Genérico é o sistema operacional windows.
  • Sistemas Específicos - São os softwares feitos por encomenda. Nesse caso, o cliente deverá falar o que de específico terá esse software. Ele só poderá ser instalado nas máquinas do cliente que encomendou ou se apenas ele autorizar a distribuição a outras.
TIPOS DE SISTEMAS DE SOFTWARES

SISTEMAS LEGADOS - Um Sistema Legado é um software antigo que foi escrito até mesmo a décadas atrás e ainda continua sendo usado. Esses softwares foram escritos em linguagens que muito dificilmente são ainda usados pelos desenvolvedores, o que torna ainda mais custos a manutenção deles. Os sistemas legados são encontrados principalmente em empresas e entidades que já estão á muito tempo no mercado como, por exemplo, a Petrobrás e entidades públicas.

SISTEMAS DE TEMPO REAL - Os Sistemas em Tempo Real são softwares cujo resultados necessários não são apenas, os resultados lógicos das operações, mas também, o tempo em que esses resultados são produzidos . Eles têm que ter tempo de resposta curto ou pelo menos previsível. Os jogos por exemplo devem ter respostas rápidas ou ocorrem os chamados travamentos, assim como os softwares de manipulação de dados que precisam executar as atualizações e retornar as consultas rapidamente.

SISTEMAS EMBARCADOS OU EMBUTIDOS - Os Sistemas Embarcados são softwares desenvolvidos para funcionar fora de um computador. Seus recursos de processamento são restritos a executar apenas uma tarefa específica. Os eletrodomésticos por exemplo, existe um software por trás que faz com que o aparelho execute aquela determinada tarefa. Os softwares embutidos são encontrados em telefones celulares, relógios digitais, condicionadores de ar, calculadoras e etc.

SISTEMAS PARA WEB - Sistemas para WEB são softwares produzidos para funcionar através da internet. Neles os arquivos para execução do software não são carregados localmente, é feita através de um servidor assim como o tráfego de dados. Hoje em dia, devido a popularidade da internet, são muito usados substituindo os sistemas Desktop. Através deles já é possível fazer transações bancárias, compras, tranferências de arquivos e vários outros serviços.

Sistemas Científicos
- São sistemas destinados a contribuir as varias áreas da ciência, tal como o geoprocessamento.

O que é Software:

Muitas pessoas hoje pensam que entender de "informática é saber usar o mouse", digitar um documento no word ou saber todos os truques do orkut. Pensam que o monitor é a parte mais importante do computador pois é onde tudo é exibido. Na verdade elas não sabem que por trás de todo o funcionamento do computador existe os SOFTWARES.

Software é uma sentença escrita em uma linguagem computável, para a qual existe uma máquina (computável) capaz de interpretá-la. A sentença (o software) é composta por uma seqüência de instruções (comandos) e declarações de dados, armazenável em meio digital. Ao interpretar o software, a máquina computável é direcionada à realização de tarefas especificamente planejadas, para as quais o software foi projetado. Abaixo exemplo de softwares:

terça-feira, 3 de março de 2009

Quem Somos:

Este Blog foi criado pelos alunos Railan Xisto Silva e Hyago Santana Santa Rosa, do Curso Técnico de Programação em Sistemas de Informação pelos IFS (Instituto Federal de Educação, Ciência e Tecnologia de Sergipe), Campus Lagarto.

Todo o trabalho aqui desenvolvido, começou sendo orientado pela professora Clênia Melo Araújo, com o intuito de ajudar colegas, e até mesmo internautas que tenham algum interresse em Engenharia de Softwares. Aqui são postados conceitos, dicas e links, de acordo com o que for apresentado em sala de aula pela professora orientadora.
Engenharia de Software © 2008. Design by :Yanku Templates Sponsored by: Tutorial87 Commentcute