As etapas de uma Projeto de Software
-
Upload
henrique-neves -
Category
Documents
-
view
216 -
download
2
description
Transcript of 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
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.
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
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
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
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.
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
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
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.
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
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.
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
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