• Nenhum resultado encontrado

CONCEITOS BÁSICOS DE PROJETO DE SOFTWARE Conhecer os conceitos básicos e fundamentais do projeto de software é essencial,

para passar ao arquiteto de software uma base para ele saber qual o método de projeto pode ser aplicado no sistema. Nessa fase é importante que os conceitos sejam assimilados e entendidos, para que se possa projetar um projeto de software com características desejáveis.

Conforme Pressman (2011, p. 212), os principais con- ceitos relacionados ao projeto de software são:

Abstração: o projeto deve considerar uma solução para qualquer problema com vários níveis de abstração, come- çando com um nível de abstração mais alto (solução mais abrangente) e depois para níveis de abstração mais baixos (solução mais detalhada). E que os elementos de projeto sejam representados por suas características essenciais, e os detalhes desnecessários sejam descartados.

Refinamento: processo de elaboração definida em alto nível de abstração e depois vai descendo a níveis de abstração mais baixos. Abstração e refinamento se comple- mentam, pois a abstração especifica os níveis mais altos e mais baixos e o refinamento ajuda a revelar os detalhes menores, conforme o projeto vai evoluindo.

Modularidade: o projeto é dividido em módulos/componentes que são inte- grados para corresponder aos requisitos levantados. Possui algumas vantagens como a facilidade de entendimento, pois cada módulo pode ser estudado sepa- radamente e com isso facilitar o desenvolvimento, uma vez que cada módulo pode ser projetado, implementado e testado separadamente, diminuindo os erros e facilitando a manutenção.

O projeto de software sempre deve começar levando em consideração os dados — a base para todos os demais elementos do projeto.

Repr odução pr oibida. A rt. 184 do C ódigo P enal e L ei 9.610 de 19 de f ev er eir o de 1998.

Padrões: fornece uma descrição ao arquiteto de software permitindo deter- minar qual o padrão a ser aplicado e quais podem ser reutilizados no sistema.

Arquitetura: estrutura ou organização dos módulos/componentes do programa e como eles interagem. O conceito de arquitetura está amplamente ligado aos aspec- tos da estrutura hierárquica dos módulos e as estruturas de dados de um software.

Hierarquia de Controle: é a representação da estrutura do software rela- cionando aos componentes. Aqui o objetivo não é apresentar os detalhes dos procedimentos e sim de estabelecer os relacionamentos entre os componentes de software, seus níveis de abstração e refinamentos.

Encapsulamento: define e impõe restrições de acesso tanto a detalhes pro- cedurais em um módulo quanto em qualquer estrutura de dados local usada pelo módulo. A interface que foi definida deve revelar o mínimo da sua estru- tura interna e com isso reduzir os efeitos colaterais que possam vir a ocorrer.

Estrutura de Dados: representam os relacionamentos lógicos, como estão organizados os métodos de acesso, as associações e as alternativas de processa- mento de informações, pois, à medida que o Projeto vai se aproximando da fase de Implementação, as representações vão se tornando cada vez mais importan- tes, já que as estruturas de dados exercem um grande impacto no projeto final.

Procedimentos de Software: expressam os detalhes da operação de cada módulo/componente do software individualmente. Estes detalhes são: como a informação é processada, pontos de decisão, quais as sequências de evento, e que operações serão repetitivas.

Ocultação de Informação: seu objetivo é propor uma maneira de decom- por o problema, assim, obter módulos menores do software no desenvolvimento. Com isso, o Arquiteto de Software ganha um alto grau de independência entre os módulos, facilitando a sua modificação, quando necessário, e em consequ- ência, a fase de testes.

Conceitos Básicos de Projeto de Software Repr odução pr oibida. A rt . 184 do C ódigo P enal e L ei 9.610 de 19 de f ev er eir o de 1998.

No próximo tópico vamos conhecer a qualidade do Projeto de software e entender porque a qualidade é tão importante e porque começamos a introdu- zi-la nessa fase. Boa leitura.

Um conjunto de conceitos fundamentais de projeto de software evoluiu ao longo da história da engenharia de software. Embora o grau de interesse em cada conceito tenha variado ao longo dos anos, cada um resistiu ao tempo. Esses conceitos fornecem ao projetista de software uma base a partir de qual métodos de projeto mais sofisticados podem ser aplicados. Ajudam- -nos a responder as seguintes questões:

• Quais critérios podem ser usados para particionar o software em compo- nentes individuais?

• Como os detalhes de função ou estrutura de dados são separados de uma representação conceitual do software?

• Quais critérios uniformes definem a qualidade técnica de um projeto de software?

Os conceitos fundamentais de projeto de software fornecem a organização necessária para estruturá-la e para “fazer com que ele funcione corretamen- te”.

Fonte: Pressman (2011).

Existe uma tendência de ir imediatamente até o último detalhe, pulando as etapas de refinamento. Isso induz a erros e omissões e torna o projeto muito mais difícil de ser revisado. Realize o refinamento gradual.

©shutterstock Repr odução pr oibida. A rt. 184 do C ódigo P enal e L ei 9.610 de 19 de f ev er eir o de 1998.

QUALIDADE DO PROJETO

Você deve estar se perguntando por que o Projeto de Software é considerado uma das fases mais importantes do desenvolvimento de um software? Ele é considerado impor- tante, porque é nele que iniciamos a etapa de qualidade e ele serve como base para as outras fases do processo.

Segundo Pressman (2011, p 358), a qualidade de software pode ser dividida em duas partes: Qualidade do Processo e Qualidade do Produto. Quando nos referimos à qualidade do produto, o foco maior está na qualidade dada ao pro- duto final, que é feita por meio de avaliações no software acabado. Já a qualidade do processo do software concentra-se no modo como o software foi produzido ao longo do seu desenvolvimento e como é feita a sua manutenção.

Segundo Weber et al. (2001), a qualidade de software é determinada pela qualidade dos processos que são usados durante a fase de desenvolvimento do software. Para Rezende (2005), a preocupação com a qualidade deve estar vol- tada para a melhoria do Processo que envolve o desenvolvimento do software. Se garantirmos, pois, a Qualidade do Processo, podemos também garantir a Qualidade do Software.

Segundo Gimenes (1994), o processo de software pode ser definido como um conjunto de todas as atividades relacionadas ao desenvolvimento, controle, vali- dação e manutenção de um software. Segundo Sommerville (2011), o resultado do processo é um produto que mostra a forma como o processo de desenvolvi- mento foi conduzido e ele define o processo de software como sendo um conjunto de atividades e resultados associados que produzem um produto de software.

O termo Qualidade possui várias definições as quais variam de acordo com a abordagem utilizada. A seguir uma que é bastante utilizada na literatura:

“Conformidade com as especificações” (CROSBY, 1990): Crosby sugere que o gerenciamento da qualidade deve ser feito desde o início do desenvolvimento, para tentar evitar defeitos e diminuir o retrabalho. No desenvolvimento de sof- tware, este conceito significa que devemos nos preocupar com a qualidade desde

Qualidade do Projeto Repr odução pr oibida. A rt . 184 do C ódigo P enal e L ei 9.610 de 19 de f ev er eir o de 1998.

o início do processo (levantamento de requisitos e a parte de modelagem), para reduzir os problemas nas fases finais (codificação e testes).

Falamos muito em qualidade, mas o que é um software com qualidade? Como avaliamos a qualidade de um projeto? Conforme Pressman (2011, p. 209), para que o nosso Projeto obtenha qualidade, ele sugere características que nos aju- dam na avaliação de um bom Projeto:

■ O projeto deve implementar todas as especificações definidas nos requisitos. ■ O projeto deve ser um guia legível para as próximas etapas do processo

de software (implementação e teste).

■ O projeto deve fornecer uma visão geral do software, como dados, pos- síveis funções e como ele deve se comportar.

Essas características ajudam na avaliação e na obtenção de um projeto com quali- dade. Mas o que é Qualidade de Projeto? Para Pressman (2011, p. 359), “refere-se às características que os projetistas especificam para um produto. A qualidade dos materiais, as tolerâncias e as especificações de desempenho, todos são fato- res que contribuem para a qualidade de um projeto. Quanto mais materiais de alta qualidade forem usados, tolerâncias mais rígidas e níveis de desempenho maiores forem especificados, a qualidade de projeto de um produto aumentará se o produto for fabricado de acordo com essas especificações”.

Quando se desenvolve um software, a qualidade de um projeto reúne tudo o que foi especificado no modelo de requisitos, suas funções e suas caracterís- ticas e se o sistema resultante atende às necessidades e às metas especificadas. Nos próximos tópicos você vai conhecer os modelos de projeto, como se divi- dem e como funcionam. Continue a sua leitura!

“O clamor por maior qualidade de software começou realmente quando o software passou a se tornar cada vez mais integrado em todas as atividades de nossas vidas.”

©shutterstock Repr odução pr oibida. A rt. 184 do C ódigo P enal e L ei 9.610 de 19 de f ev er eir o de 1998.

MODELO DO PROJETO

Conforme Pressman (2011, p. 221), o Modelo de Projeto pos- sui quatro elementos que são considerados os principais e mais importantes: arquitetura, dados, interfaces e componentes. Esse modelo pode ser dividido em duas dimensões: processo e abstração.

A dimensão de processo vai mostrando uma evolução do projeto conforme as tarefas vão sendo executadas, e a dimensão de abstração, mostra o nível de detalhamento de cada elemento do modelo de análise e que vão sendo transformados e refinados no modelo de projeto, conforme ilustrado na figura 2:

PREMISSAS DA QUALIDADE

Fazer acontecer: Qualidade requer comprometimento, particularmente vindo do topo do gerenciamento. Cooperação entre a equipe e o gerente deve ser fundamental para ”fazer acontecer”.

Zero-defeito: Muitas pessoas acreditam que existe o “zero-defeito” para serviços e produtos. Isso é irreal. O sensato é definir níveis aceitáveis de de- feitos.

Qualidade = alto custo: Qualidade é frequentemente associada a custo, significado de alta qualidade = alto custo. Falso. Isso causa uma confusão entre a qualidade do projeto e a qualidade de conformidade. ”Não posso testar o produto por que não tenho infraestrutura, e a infra-estrutura não permite o teste do produto. O que fazer?”. Qualidade demanda especifica- ção de requerimento e suficiente detalhamento deles.

Padrões inibem a criatividade: O pessoal ”técnico” acredita, em geral, que padrões inibem sua criatividade, e com isso padrões não são seguidos, en- tretanto, para a qualidade acontecer, padrões e procedimentos deve ser se- guido.