<< Chapter < Page | Chapter >> Page > |
Por mais eficaz que um design seja, sua implementação pode não ser. O fato de haver um design bem elaborado para um determinado software não garante que na fase de implementação os desenvolvedores sigam as regras previamente especificadas e que o código produzido reflita fielmente o que foi especificado. Isto é certamente um grande problema na construção de sistemas de software, pois pode acarretar a construção de um produto que não era o esperado, e até mesmo levar ao insucesso em sua construção. Felizmente, na Engenharia de Software existem dois mecanismos que visam diminuir as divergências entre design e implementação. O primeiro mecanismo diz respeito à verificação de software, isto é, verificar se o software foi construído corretamente, se atendeu às especificações do design. Por outro lado, a validação de software está ligada à satisfação do cliente diante do produto, isto é, se o software construído é o desejado, se atende aos requisitos do cliente.
O processo de design pode ser descrito como o processo de escolha da representação de uma solução a partir de várias alternativas, dadas as restrições que um conjunto de objetivos envolve. Esse processo, ilustrado na [link] , pode ser dividido em duas fases: diversificação e convergência .
É durante a fase de diversificação em que as alternativas são geradas. Por alternativas, não nos referimos necessariamente a documentos descrevendo uma possível solução, mas também a ideias de solução. Essas alternativas são soluções em potencial e são geradas/obtidas a partir do conhecimento e da experiência do designer. Já na fase de convergência, o designer escolhe a alternativa (ou combinação de alternativas) que satisfaz(em) aos objetivos esperados. A escolha comporá a solução que se sujeitará às restrições impostas pelo domínio do problema. Essa solução será descrita por meio de alguma representação e essa representação escolhida deve estar de acordo com seus propósitos: descrever a solução e permitir a construção do sistema que melhor alcança os objetivos esperados.
Os elementos enfatizados no parágrafo anterior (objetivos, restrições, alternativas, representações e soluções), juntos, definem um arcabouço conceitual que nos ajuda a entender o processo de design de software.
O processo de design tem início com uma necessidade . Se algo é projetado, e consequentemente construído, é porque o produto proveniente do projeto suprirá essa necessidade. Em Engenharia de Software, a necessidade parte do cliente que especifica quais suas necessidades Vale lembrar que há transitividade nas necessidades do cliente. Um exemplo de quando acontece é quando clientes e usuários do sistema são entidades distintas. Então, entre as necessidades do cliente estarão: as necessidades do usuário devem ser atendidas. E, portanto, o software terá que atender terá que satisfazer também aos objetivos do usuário, além dos objetivos do cliente. e, portanto, quais os objetivos a serem atingidos pelo sistema de software a ser projetado. Assim, o objetivo do processo de design pode ser definido como:
Notification Switch
Would you like to follow the 'Arquitetura de software' conversation and receive update notifications?