A fase de design envolve a definição da arquitetura do projeto. As etapas principais são descrever a negação do software, as interfaces de usuário, o design do banco de dados e muito mais.
Os engenheiros de software revisam os requisitos para determinar a melhor maneira de construir o software desejado. Eles consideram como o software se encaixa no cenário existente de aplicativos e serviços de uma organização, tanto upstream quanto downstream, e quaisquer outras dependências que ele tenha.
A equipe de desenvolvimento também pode começar a lidar com preocupações cibersegurança durante a fase de design usando exercícios de modelagem de ameaças para identificar riscos potenciais para o software. Por exemplo, se o roubo de identidade for determinado como um risco significativo, a equipe sabe incorporar medidas de autenticação fortes no design.
Muitas novas aplicações de software usam uma arquitetura de microsserviços, uma abordagem nativa da nuvem na qual uma única aplicação é composta por muitos componentes ou serviços menores, vagamente acoplados e implementáveis de forma independente
Para ajudar a organizar o fluxo de desenvolvimento, os desenvolvedores de software podem usar um design modular. Módulos de software são unidades de código independentes que executam uma função específica. Esses módulos podem ser conectados para criar um software maior. O design modular permite que os desenvolvedores reutilizem módulos existentes e trabalhem em várias partes do software ao mesmo tempo, o que pode reduzir gargalos.
A fase de design geralmente culmina na criação de um protótipo inicial ou de vários protótipos, que podem ser mostrados aos stakeholders e aos usuários finais para solicitar feedback. A IA generativa pode ajudar a acelerar a criação de protótipos. Por exemplo, os desenvolvedores podem inserir projetos e requisitos funcionais detalhados em uma ferramenta de IA e fazer com que ela retorne um primeiro rascunho do código do software.
O trabalho da fase de design é reunido em um documento de design de software (SDD), que é repassado aos desenvolvedores como um roteiro a ser usado durante a codificação.