Software partitioning is the process of mapping software functional re
quirements into a set of program modules for implementation. This pape
r analyzes concurrent software design techniques that are based on str
uctured analysis and design (SA/SD) in order to highlight their potent
ial and their shortcomings. A partitioning technique based on the anal
ysis of the data and control flow of a system's functional requirement
s is proposed next. This technique, called the Concurrent Software Des
ign Technique (CSDT), extends the current SA/SD techniques by identify
ing concurrent independent tasks for implementation in multitasking or
multiprocessing environments. Finally, the application of this techni
que is illustrated through an example.