As etapas de uma Projeto de Software

13
As Etapas de um Projeto de Software Design X Arquitetura X Desenvolvimento X Suporte Autor Henrique Pereira Oliveira d‟Eça Neves – http://www.hpodn.com.br Resumo Apresentando as Etapas de desenvolvimento de um software pretendo salientar a importância de cada uma, alem de trazer à tona os momentos de início e conclusão delas. A Documentação de cada Etapa é muito importante para o desenrolar tranquilo das Etapas seguintes e para um possível manutenção, alteração ou atualização do software desenvolvido. Palavras chave Projeto de Software. Design. Arquitetura. Introdução A uma Empresa de Software é solicitada para produção de um software que atenda as necessidades de seu Cliente. Após tal solicitação a Empresa envia uma equipe para recolher informações sobre o que realmente o Cliente deseja deste e neste software, seus requisitos entre entradas e saídas. Com estas informações nas mãos elas são processadas dentro das regras de negócio e uma apresentação é feita num esquema visual contendo os componentes que abrangem o software proposto, seu fluxo de informações e comunicações entre os componentes. Este esquema visual é representado por diagramas sendo eles apresentados ao Cliente para que ele entenda o funcionamento das partes do software opinando e/ou aprovando a proposta diagramada. Sendo essa apresentação elaborada na Etapa de Design do software aprovada ela é repassada a Etapa de Arquitetura onde surge há a preocupa com a tecnologia a ser utilizada no desenvolvimento e implantação do software como linguagem de programação, equipamentos e infraestrutura. É nesta Etapa que se desenha, pois até então não se codifica nada, o software dentro dos requisitos apresentados e solicitados pelo Cliente com técnicas e métodos de desenvolvimento, comunicação entre os componentes do software e demais

description

Apresentando as Etapas de desenvolvimento de um software pretendo salientar a importância de cada uma, alem de trazer à tona os momentos de início e conclusão delas. A Documentação de cada Etapa é muito importante para o desenrolar tranquilo das Etapas seguintes e para um possível manutenção, alteração ou atualização do software desenvolvido.

Transcript of As etapas de uma Projeto de Software

Page 1: As etapas de uma Projeto de Software

As Etapas de um Projeto de Software

Design X Arquitetura X Desenvolvimento X Suporte

Autor Henrique Pereira Oliveira d‟Eça Neves – http://www.hpodn.com.br

Resumo

Apresentando as Etapas de desenvolvimento de um

software pretendo salientar a importância de cada uma, alem de

trazer à tona os momentos de início e conclusão delas. A

Documentação de cada Etapa é muito importante para o

desenrolar tranquilo das Etapas seguintes e para um possível

manutenção, alteração ou atualização do software desenvolvido.

Palavras chave Projeto de Software. Design. Arquitetura.

Introdução

A uma Empresa de Software é solicitada para produção de um software

que atenda as necessidades de seu Cliente. Após tal solicitação a Empresa

envia uma equipe para recolher informações sobre o que realmente o Cliente

deseja deste e neste software, seus requisitos entre entradas e saídas. Com

estas informações nas mãos elas são processadas dentro das regras de

negócio e uma apresentação é feita num esquema visual contendo os

componentes que abrangem o software proposto, seu fluxo de informações e

comunicações entre os componentes. Este esquema visual é representado por

diagramas sendo eles apresentados ao Cliente para que ele entenda o

funcionamento das partes do software opinando e/ou aprovando a proposta

diagramada.

Sendo essa apresentação elaborada na Etapa de Design do software

aprovada ela é repassada a Etapa de Arquitetura onde surge há a preocupa

com a tecnologia a ser utilizada no desenvolvimento e implantação do software

como linguagem de programação, equipamentos e infraestrutura. É nesta

Etapa que se desenha, pois até então não se codifica nada, o software dentro

dos requisitos apresentados e solicitados pelo Cliente com técnicas e métodos

de desenvolvimento, comunicação entre os componentes do software e demais

Page 2: As etapas de uma Projeto de Software

outros softwares envolvidos. Nesta Etapa alem de apresentar uma estrutura de

alto nível do software ela indica como este software deve se tornar uma

realidade apresentando uma documentação e diagramação de mais baixo nível

que permita aos desenvolvedores o entendimento e a elaboração do software.

Para criar um software tem-se a necessidade de pessoas conhecedoras

das partes técnicas definidas nas Etapas anteriores para assim codificá-lo,

estruturá-lo e realizar os testes dentro do previsto. Durante a Etapa de

Desenvolvimento, diversas solicitações, melhorias e problemas surgem vindos

de todas as Etapas do Projeto de Software podendo alterar o produto de

alguma forma, fazendo com que seja cíclico seu desenvolvimento.

Depois de codificar a proposta de software e do aceite do Cliente frente

ao produto oferecido pela Empresa de Software ele é disponibilizado ao

mesmo e é a partir daí que a Etapa de Suporte inicia seus trabalhos práticos de

sanar as dúvidas e relatos de erros que surgirem.

Este documento visa tratar sobre as relações entre cada uma das

Etapas num Projeto de Software, falo da relação entre Cliente X Design,

Design X Arquitetura, Arquitetura X Desenvolvimento, Desenvolvimento X

Cliente, Desenvolvimento X Suporte e Suporte X Cliente.

Todas as Etapas se relacionam de alguma forma criando uma

dependência entre elas e principalmente com as que possuem ligação direta na

sequência de um projeto, estando o Cliente em primeiro lugar com o Design

dependendo das informações que o Cliente fornece de onde surge uma visão

de alto nível do software dentro de normas e conceitos. Este trabalho segue

para a Arquitetura montar as metodologias, tecnologias e técnicas para melhor

atender o projeto que servirá para a Etapa de Desenvolvimento trabalhar com

as definições para codificar o software, deixando a cargo da Etapa de Suporte

atender as dúvidas do Cliente quanto ao uso do software e erros que surgirem

repassando-os quando necessário para uma rápida solução.

Page 3: As etapas de uma Projeto de Software

Cliente X Design

O Cliente deseja que seu trabalho seja mais automatizado levantando a

necessidade de ter um software que exerça tal trabalho. Uma Empresa de

Software é chamada para fazer a codificação deste trabalho e ao Cliente são

explicadas as Etapas que envolvem o processo de produção de um software.

Por sua vez o Cliente explana sobre suas necessidades e desejos, que são

definidos como os requisitos do software.

As diferentes metodologias e técnicas utilizadas para realizar um design

de software e suas representações são feitas em diagramas, como por

exemplo Busines Process Modeling (BMP), Unified Modeling Language (UML),

Diagrama de Fluxo de Dados (DFD), Diagrama de Entidade Relacionamento

(DER), entre outros de alto nível de software.

Tal Empresa inicia um esboço do que propõem fazer no software, sendo

este gerado a partir dos requistos informados pelo Cliente. A Etapa de Design,

dentro de um projeto, pode ser considerada uma das mais complicadas pela

necessidade de interpretar os desejos do Cliente, filtrando o que realmente é

necessário para o trabalho de um software.

Como diz José Macoratti em seu website: “Os requisitos expressam as

características e restrições do produto de software do ponto de vista de

satisfação das necessidades do Cliente, e, em geral independem da tecnologia

empregada na construção da solução sendo a parte mais crítica e propensa a

erros no desenvolvimento de software.” (MACORATTI, 05).

Design X Arquitetura

“A atividade de design de software ainda é uma das mais mal

compreendidas da engenharia de software. Muitos utilizam o termo para referir-

se a definição de „como‟ o software ser desenvolvido em contraste como a

definição do „que‟ o software deve fazer – determinado pela especificação dos

requisitos.” (LEITE, 07).

O Design de um software é a documentação gráfica e textual em alto

nível de um software chegando próximo a como ele deve ser elaborado.

A partir da Etapa de Design o trabalho passa para a Etapa de

Arquitetura do software onde são citadas as tecnologias envolvendo

equipamentos, infraestrutura, técnicas e metodologias para desenvolver tal

Page 4: As etapas de uma Projeto de Software

software. Nesta citação também são levantados os custos, especificações,

características, abrangência, restrições, usabilidades, funcionalidades,

desempenho e portabilidade.

Arquitetura X Desenvolvimento

“A arquitetura de software de um software consiste na definição dos

componentes de software, suas propriedades externas, e seus

relacionamentos com outros softwares. O termo também se refere

à documentação da arquitetura de software do software.” (WIKIPEDEA, 2011,

grifo do autor).

Definidos os componentes do projeto tem-se início a codificação do

software, seguindo a documentação e metodologia criada nas Etapas de

Design e Arquitetura, buscando atender o que foi planejado e definido para

atender as necessidades do Cliente.

Adentra-se a Etapa de Desenvolvimento quando há um entendimento

dos requisitos do software por parte da equipe de Desenvolvimento e na

ferramenta de codificação escolhida são implementadas as primeiras linhas do

código-fonte. Neste momento diversas surpresas, tanto as negativas como as

positivas surgiram e cabe ao líder da Equipe administrar-las.

Desenvolvimento X Cliente

“Desenvolvimento de software, como sugere Martins (2006), é uma

atividade criativa, diferente dos projetos tradicionais, baseados em atividades

produtivas e processos administrativos que possuem fluxo de trabalho

relativamente fixo. É muito difícil planejar antecipadamente o trabalho que será

feito antes de saber mais precisamente o que vai ser produzido.” (SILVEIRA,

2007).

Nesse relacionamento entre a Etapa de Desenvolvimento e o Cliente,

devem-se evitar contatos entre eles deixando assim o codificador livre para sua

mente fluir seguindo os padrões estabelecidos. O Cliente fazendo contato tira a

concentração e foco do codificador além de sugerir ou reclamar sobre coisas

que estão relacionadas a outras partes do software que não as que estão

sendo programadas. Nestes casos é indicado o Cliente fazer contato com a

Page 5: As etapas de uma Projeto de Software

pessoa do Arquiteto do software, ou líder da Equipe, eles têm a possibilidade e

capacidade de filtrar as informações recebidas para serem aderidas ao projeto.

Desenvolvimento X Suporte

Estando o software pronto, ou em vias do termino de acordo com o

combinado com o Cliente ele é apresentado e recebendo o aceito de quem

solicitou ele é disponibilizado ao Cliente, o que acarreta na necessidade de um

treinamento e muitas dúvidas e questionamentos surgem, mesmo havendo o

treinamento dos Clientes.

A equipe de Suporte entra em ação tirando as dúvidas dos Clientes e

encaminhando os problemas encontrados no software para suas soluções.

Estes problemas podem ser solucionados na equipe de suporte, ou

dependendo da complexidade são repassados para a equipe de codificação.

Essas duas equipes trabalham junto com a documentação do Projeto do

Software para seguirem as normas e técnicas do mesmo e assim fazer

correções e explicações dentro que foi planejado.

No caso de surgir uma atualização no software, ela tem de ser acordada

com o Cliente e passar por todas as Etapas anteriores do projeto antes de seu

Desenvolvimento, caso contrário será uma simples manutenção ficando a

cargo do Suporte executar tal tarefa.

Suporte X Cliente

A Etapa de Suporte se destina a prestar um serviço de apoio ao Cliente

atendendo as dúvidas quanto ao funcionamento do software, além de registrar

e buscar uma solução para os erros que surgirem. Quando os erros se repetem

numa similaridade constante significa que algo esta errado no código do

software, sendo ele corrigido pela equipe de Suporte e dependendo da

complexidade do mesmo, encaminhado para o Desenvolvimento acarretando

numa melhoria que altera também a documentação do projeto ou parte do

projeto.

Quando há uma abrangência de repetições de um erro observa-se a

necessidade de fazer uma atualização no software para corrigir tal problema.

Para isto o erro que já não é mais um erro e sim um problema, sendo

encaminhado para a Etapa de Arquitetura do software onde é analisada a

Page 6: As etapas de uma Projeto de Software

viabilidade de correção e as áreas que serão afetadas com a correção

almejada.

Todas as correções e atualização são concordadas com o Cliente e

quando prontas, repassadas a ele, buscando sempre manter o software em

funcionamento atendendo da melhor forma possível seus objetivos.

As Etapas

Design

É o levantando dos requisitos necessários com o Cliente, desenhando-

se com eles aquilo que o software se propõe a fazer, respeitando as regras de

negócio e vontades do Cliente. O Design de software “Baseia-se nos requisitos

do software tipicamente estabelecidos em termos relevantes ao domínio do

problema, produzindo uma descrição de uma solução que solucionará os

aspectos do problema relacionados com o software” (SWEBOK, 2000).

Ilustração do processo de design

Fonte: Germoglio (2009)

Existem algumas ferramentas de desenho gráfico para representar

através de diagramas o que se imagina que o software deva fazer para atender

as necessidades do Cliente e algumas metodologias são usadas entre elas os

Fluxogramas, a UML, o BPM, além outras.

Page 7: As etapas de uma Projeto de Software

Em alto nível do software esses diagramas buscam apresentar o que o

software se propõem a fazer e quando o aceite do Cliente vier sobre a proposta

oferecida encaminha-se o estudo para a Etapa de Arquitetura do software.

Arquitetura

“A arquitetura de software de um sistema consiste na definição dos

componentes de software, suas propriedades externas, e seus

relacionamentos com outros softwares. O termo também se refere

à documentação da arquitetura de software do software. A documentação da

arquitetura do software facilita: a comunicação entre os stakeholders, registra

as decisões iniciais acerca do projeto de alto-nível, e permite o reuso do projeto

dos componentes e padrões entre projetos.” (WIKIPEDIA, 2011, grifo do autor).

Trata-se então da descrição de como e onde o software deverá

funcionar e trabalhar, definido sua ergonomia e seu comportamento,

apresentando as partes técnicas que envolvem o software como linguagem de

programação, os equipamentos envolvidos, a comunicação entre os módulos

do software buscando sempre aperfeiçoar e facilitar o trabalho exercido em tal

tarefa, tudo para atender a solicitação e necessidade do Cliente, definindo

assim a questão de prazos do projeto.

“Vamos deixar por instantes as definições formais de arquitetura. Seja

pelo ANSI/IEEE, SEI (Software Engineering Institute) ou TOGAF

(www.togaf.org) (entre outros), a arquitetura é sempre vista como

uma atividade estruturante, tendo como partida uma missão de negócios e

como fim um conjunto de soluções de TI seja software (arquitetura de solução),

infraestrutura (arquitetura de infraestrutura), ou conjunto coordenado entre

ambos (arquitetura da empresa).” (COELHO, 2006, grifo do autor).

Na Etapa de Arquitetura é comum serem utilizadas as mesmas

metodologias usadas na Etapa de Design.

Desenvolvimento

“Desenvolver produtos de software é um exercício complexo. Já passou

o tempo romântico em que ter uma idéia e um teclado na mão eram suficientes.

Para os que não estavam aqui no início da década de 80, naquele tempo

existia uma janela de oportunidades: um mercado em crescimento, como era o

Page 8: As etapas de uma Projeto de Software

mercado do computador pessoal, e sem produtos para consumir. Neste tempo,

muitas empresas de software iniciaram em garagens até se tornarem empresas

respeitáveis com processos de engenharia e produção mais estruturados.”

(COELHO, 2006).

Com uma diversidade de linguagens de programação, ferramentas e

técnicas é possível fazer muita coisa, mas não se pode jamais romantizar o

desenvolvimento de um software simplesmente porque já é conhecida a idéia,

tem que haver uma estruturação a ser seguida dentro das normas e

metodologias determinadas pelo Design e Arquitetura do Projeto de Software.

A Arquitetura e o Design geram uma documentação suficiente para

iniciar o processo de desenvolvimento e por ela há de se seguir para que não

hajam fugas nos processos e negócios do software mantendo um padrão.

É na Etapa de Desenvolvimento onde os testes devem ser feitos para

observar se a qualidade do software atende os requisitos desenhados e

planejados, se estão corretos e dentro dos padrões. Caso algum erro ou falha

forem encontrados, eles retornam a codificação.

Existem inúmeras técnicas de teste (Caixa-Preta, Caixa-Branca, Caixa-

Cinza, Regressão e Técnicas Não Funcionais) e dentro de cada uma dessas

técnicas existem métodos distintos de aplicá-las. (Wikipedia, 2011) Para um

Projeto de Software escolhe-se a que mais se encaixa com o que se imagina

dentro das funcionalidades de um software, onde nos diversos módulos e

funções há sempre uma técnica de teste mais adequada a ser utilizada.

Para o desenvolvimento procura-se utilizar as metodologias e técnicas

de Scrum, XP, MVC, entre outras. O objetivo delas é otimizar e organizar os

trabalhos de desenvolvimento dos métodos e funções do software.

Suporte

O suporte é a última Etapa a entrar em ação, vindo depois do Design,

Arquitetura e Desenvolvimento do software e com produto disponibilizado ao

Cliente há a necessidade de sanar as dúvidas e problemas que surgirem ao

Cliente direto.

Normalmente antes da implantação de um software, os Clientes

recebem treinamento e explicações seu funcionamento, funções e módulos.

Sabendo que sempre haverá dúvidas posteriores ao treinamento é elaborado

Page 9: As etapas de uma Projeto de Software

um documento de manual sobre o software, que tem início na Etapa de

desenvolvimento e entregue junto com o software na sua disponibilização.

No treinamento e manual há explicações sobre os procedimentos a

serem tomados quando uma dúvida ou algo anômalo surge no software.

Quando isto ocorre o procedimento pede para se reportar a equipe de Suporte,

comercialmente nomeada de HelpDesk, é ela quem escuta os problemas do

Cliente e buscando uma solução para tal, pode ser somente uma dúvida e a

equipe de suporte oferece as explicações necessárias para sanar tal dúvida,

quando surge um erro de fácil resolução, a equipe mesmo resolve, mas caso

não consigam dar uma solução, ele é repassado a outras pessoas mais

qualificadas para solucionar, normalmente a equipe de desenvolvimento.

Detalhe, enquanto o software estiver em funcionamento a equipe de

Suporte tem que estar atuante para solucionar os incidentes e recolher as

ocorrências mais frequentes, localizando uma falha no software e repassando-

os a equipe de desenvolvimento para que esta falha não se torne um problema,

objetivando uma melhoria e observando caso esta não afete a Arquitetura do

software.

As mesmas metodologias e técnicas utilizadas na Etapa de

Desenvolvimento são utilizadas no Suporte.

Ciclo de vida de um Projeto de Software

Diferente do Ciclo de Vida de um Software um Projeto de Software tem

seu ciclo de vida mais determinados pelos prazos pré-definidos. Um software

tem seu ciclo de vida finalizado quando seu uso não tem mais necessidade de

uso, já um Projeto tem início com a confirmação da solicitação do Cliente à

Empresa de Software, dando início a produção do software e seu fim ocorre

logo após a entrega do mesmo ao Cliente, passando por um período de análise

de seu funcionamento junto ao solicitante para perceber algum problema não

percebido na hora dos testes.

Das Etapas que envolvem um Projeto de Software, descritas

anteriormente e colocando-as em ordem de acontecimento tem-se a ilustração

abaixo representando seus momentos de ocorrência e atuação no projeto.

Page 10: As etapas de uma Projeto de Software

Ilustração das Etapas do Projeto de Softwares

Fonte: Do Autor (2011)

A ilustração apresentada leva em consideração que o Ciclo de Vida de

um Projeto inicia na parte superior com a solicitação do Cliente à Empresa para

desenvolver um software. Com isto, a Empresa faz um estudo e levantamento

dos requisitos necessários para elaboração do software junto ao Cliente,

elaborando um esquema em alto nível do software e sendo ele aceito são

iniciados os trabalhos internos começando com a Etapa de Arquitetura. Na

Etapa de Design há um grande contato com o Cliente que o define como um

contato externo.

Passando para a Etapa de Arquitetura onde a Empresa define a

metodologia que será utilizada, os equipamentos que irão comportar o

software, a linguagem de programação com que será desenvolvido e os prazos

a fim de atender os requisitos e necessidades do Cliente com a máxima

qualidade possível.

Nessas duas Etapas recém comentadas é onde ocorrem as principais

documentações sobre o software, na primeira documenta-se o que se deseja

do software, na segunda documenta-se como ele será produzido e o que

Page 11: As etapas de uma Projeto de Software

haverá neste para atender tais desejos. Estas documentações serão bem

utilizadas pelas duas próximas Etapas, a de Desenvolvimento e Suporte.

Na Etapa de Desenvolvimento utilizam-se as documentações como base

para gerar uma linha de trabalho na codificação dentro de padrões e técnicas.

A última Etapa é a que demanda mais tempo de atuação necessitando

ter experiência no software trata-se da Etapa de Suporte. É ela quem faz o

contato direto com o Cliente quando algo esta duvidoso, ou surgiu um erro.

Na vida de um projeto ela é a última na vida de um projeto e que tem fim

quando há certeza de que a implantação ou disponibilização do software

atendeu os requisitos do projeto, quando a funcionalidade do software é tida

como correta por ambas as parte (Cliente e Empresa), quando o uso do

software não se trata mais como um mistério, quando os primeiros erros (eles

sempre existiram) foram sanados e o software voltou a atingir a satisfação do

Cliente. Somente assim pode-se dizer que o Projeto esta finalizado.

Conclusão

Quando se fala em software, os leigos pensam que é aquilo que aparece

na tela do computador para executar uma tarefa, mas não tem ideia de todo o

trabalho que há para produzi-lo e deixá-lo com a aparência apresentada ao

Cliente.

Muita pesquisa é feita, dentro de cada Etapa aqui citada, pesquisa sobre

os desejos do Cliente, pesquisa dentro das metodologias a fim de auxiliar a

produção do software requerido, pesquisa sobre o ambiente onde o software

esta sendo executado, sua função, deveres e necessidades, além da pesquisa

de como sanar as dúvidas referentes ao software e as possibilidades e técnicas

para sanar os problemas que viram a acontecer.

A documentação de todas as Etapas e processos internos do projeto é

muito importante para que haja um bom entendimento do software como um

todo e geração de um bom e entendível manual do produto final e

disponibilizado ao Cliente. Caso um dia alguém ou alguma equipe não estejam

mais junto à Empresa, deixando um vácuo no conhecimento, os processos

executados caso documentados podem ser entendidos num todo ou

melhorados.

Page 12: As etapas de uma Projeto de Software

Abstract

Showing the steps of developing a software I want to stress the

importance of each, besides bringing to the fore the start and

finish of these moments. The documentation for each step is very

important for the peaceful conduct of the next steps and for a

possible maintenance, modification or update of the software

developed.

Referência bibliográfica

COELHO, Otavio Pecego. A Arquitetura e o Desenvolvimento de Produtos de

Software, set. 2006. Disponível em: http://msdn.microsoft.com/pt-

br/library/cc518039.aspx. Acesso em 30 nov. 2011

FERNANDES, Prof. Dr. Jorge H. C.. Design de Software, maio 2001.

Disponível em:

http://www.cic.unb.br/~jhcf/MyBooks/iess/Design/SoftwareDesign.htm. Acesso

em 28 nov. 2011

GERMOGLIO, Guilherme. Introdução a Design de Software: Elementos do

processo de design de software. Disponível em:

http://cnx.org/content/m17494/latest/. Acesso em 01 dez. 2011

SILVEIRA, Daniela Franco, Gestão de Projetos de desenvolvimento de

software. Disponível em:

http://www.ietec.com.br/site/techoje/categoria/detalhe_artigo/37. Acesso em 30

nov. 2011

LEITE, Jair C., Engenharia de Software: Design de Software, jul. 2007.

Disponível em: http://engenhariadesoftware.blogspot.com/2007/07/design-de-

software.html. Acesso em 28 nov. 2011

MACARATTI, José Carlos, Eng. de Software: Gestão de Requisitos, maio.

2005. Disponível em: http://www.macoratti.net/vb_conc2.htm. Acesso em 29

nov. 2011

WIKIPEDIA, Enciclopédia livre. Arquitetura de software, nov. 2011. Disponível

em: http://pt.wikipedia.org/wiki/Arquitetura_de_software. Acesso em 29 nov.

2011

Page 13: As etapas de uma Projeto de Software

WIKIPEDIA, Enciclopedia livre. Teste de software. Disponível em:

http://pt.wikipedia.org/wiki/Teste_de_software#T.C3.A9cnicas_n.C3.A3o_funcio

nais. Acesso em 29 nov. 2011