软件设计可以分为概要设计和详细设计两个阶段。实际上软件设计的主要任务是将软件成模块是指能实现某个功能的数据和程序说明、可执行程序的程序单元。可以是一个函数、过程、子程序、一段带有程序说明的独立的程序和数据,也可以是可组合、可和可换的功能单元。模块,然后进行模块设计。概要设计是结构设计,其主要目标是给出软件的模块结构,用软件结构图表示。
详细设计的首要任务是设计模块的程序流程、算法和数据结构,次要任务是设计数据库,常用方法还是结构化程序设计方法。
软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的“源程序清单”。充分了解软件开发语言、工具的特性和编程风格,有助于开发工具的选择以及软件产品的开发质量。当前软件开发中除在场合,已经很少使用二十世纪80年代的语言了,取而代之的是面向对象的开发语言。而且面向对象的开发语言和开发环境大都合为一体,大大了开发的速度。